]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
add a version action to give credit and list plugins
authorEvan Prodromou <evan@status.net>
Fri, 8 Jan 2010 01:26:40 +0000 (17:26 -0800)
committerEvan Prodromou <evan@status.net>
Fri, 8 Jan 2010 01:26:40 +0000 (17:26 -0800)
actions/version.php [new file with mode: 0644]
lib/action.php
lib/router.php

diff --git a/actions/version.php b/actions/version.php
new file mode 100644 (file)
index 0000000..92a59ed
--- /dev/null
@@ -0,0 +1,227 @@
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2008, 2009, StatusNet, Inc.
+ *
+ * Show version information for this software and plugins
+ *
+ * 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 Info
+ * @package  StatusNet
+ * @author   Evan Prodromou <evan@status.net>
+ * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
+ * @link     http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+    exit(1);
+}
+
+/**
+ * Version info page
+ *
+ * A page that shows version information for this site. Helpful for
+ * debugging, for giving credit to authors, and for linking to more
+ * complete documentation for admins.
+ *
+ * @category Info
+ * @package  StatusNet
+ * @author   Evan Prodromou <evan@status.net>
+ * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
+ * @link     http://status.net/
+ */
+
+class VersionAction extends Action
+{
+    var $pluginVersions = array();
+
+    /**
+     * Return true since we're read-only.
+     *
+     * @param array $args other arguments
+     *
+     * @return boolean is read only action?
+     */
+
+    function isReadOnly($args)
+    {
+        return true;
+    }
+
+    /**
+     * Returns the page title
+     *
+     * @return string page title
+     */
+
+    function title()
+    {
+        return sprintf(_("StatusNet %s"), STATUSNET_VERSION);
+    }
+
+    /**
+     * Prepare to run
+     *
+     * Fire off an event to let plugins report their
+     * versions.
+     *
+     * @param array $args array misc. arguments
+     *
+     * @return boolean true
+     */
+
+    function prepare($args)
+    {
+        parent::prepare($args);
+
+        Event::handle('PluginVersion', array(&$this->pluginVersions));
+
+        return true;
+    }
+
+    /**
+     * Execute the action
+     *
+     * Shows a page with the version information in the
+     * content area.
+     *
+     * @param array $args ignored.
+     *
+     * @return void
+     */
+
+    function handle($args)
+    {
+        parent::handle($args);
+        $this->showPage();
+    }
+
+    /**
+     * Show version information
+     *
+     * @return void
+     */
+
+    function showContent()
+    {
+        $this->elementStart('p');
+
+        $this->raw(sprintf(_('This site is powered by %s version %s, '.
+                             'Copyright 2008-2010 StatusNet, Inc. '.
+                             'and contributors.'),
+                           XMLStringer::estring('a', array('href' => 'http://status.net/'),
+                                                _('StatusNet')),
+                           STATUSNET_VERSION));
+        $this->elementEnd('p');
+
+        $this->element('h2', null, _('Contributors'));
+
+        $this->element('p', null, implode(', ', $this->contributors));
+
+        $this->element('h2', null, _('License'));
+
+        $this->element('p', null,
+                       _('StatusNet 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->element('p', null,
+                       _('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. '));
+
+        $this->elementStart('p');
+        $this->raw(sprintf(_('You should have received a copy of the GNU Affero General Public License '.
+                             'along with this program.  If not, see %s.'),
+                           XMLStringer::estring('a', array('href' => 'http://www.gnu.org/licenses/agpl.html'),
+                                                'http://www.gnu.org/licenses/agpl.html')));
+        $this->elementEnd('p');
+
+        // XXX: Theme information?
+
+        if (count($this->pluginVersions)) {
+            $this->element('h2', null, _('Plugins'));
+
+            foreach ($this->pluginVersions as $plugin) {
+                $this->elementStart('dl');
+                $this->element('dt', null, _('Name'));
+                if (array_key_exists('homepage', $plugin)) {
+                    $this->elementStart('dd');
+                    $this->element('a', array('href' => $plugin['homepage']),
+                                   $plugin['name']);
+                    $this->elementEnd('dd');
+                } else {
+                    $this->element('dd', null, $plugin['name']);
+                }
+                $this->element('dt', null, _('Version'));
+                $this->element('dd', null, $plugin['version']);
+                if (array_key_exists('author', $plugin)) {
+                    $this->element('dt', null, _('Author(s)'));
+                    $this->element('dd', null, $plugin['author']);
+                }
+                if (array_key_exists('rawdescription', $plugin)) {
+                    $this->element('dt', null, _('Description'));
+                    $this->elementStart('dd');
+                    $this->raw($plugin['rawdescription']);
+                    $this->elementEnd('dd');
+                } else if (array_key_exists('description', $plugin)) {
+                    $this->element('dt', null, _('Description'));
+                    $this->element('dd', null, $plugin['description']);
+                }
+                $this->elementEnd('dl');
+            }
+        }
+
+    }
+
+    var $contributors = array('Evan Prodromou (StatusNet)',
+                              'Zach Copley (StatusNet)',
+                              'Earle Martin (StatusNet)',
+                              'Marie-Claude Doyon (StatusNet)',
+                              'Sarven Capadisli (StatusNet)',
+                              'Robin Millette (StatusNet)',
+                              'Ciaran Gultnieks',
+                              'Michael Landers',
+                              'Ori Avtalion',
+                              'Garret Buell',
+                              'Mike Cochrane',
+                              'Matthew Gregg',
+                              'Florian Biree',
+                              'Erik Stambaugh',
+                              'drry',
+                              'Gina Haeussge',
+                              'Tryggvi Björgvinsson',
+                              'Adrian Lang',
+                              'Meitar Moscovitz',
+                              'Sean Murphy',
+                              'Leslie Michael Orchard',
+                              'Eric Helgeson',
+                              'Ken Sedgwick',
+                              'Brian Hendrickson',
+                              'Tobias Diekershoff',
+                              'Dan Moore',
+                              'Fil',
+                              'Jeff Mitchell',
+                              'Brenda Wallace',
+                              'Jeffery To',
+                              'Federico Marani',
+                              'Craig Andrews',
+                              'mEDI',
+                              'Brett Taylor');
+}
index 35df03566b4fd008e917faf70ded6d25e7f5441c..715072d1ee1c40c76067308ea628cc95a3cc6aad 100644 (file)
@@ -736,6 +736,8 @@ class Action extends HTMLOutputter // lawsuit
                             _('Privacy'));
             $this->menuItem(common_local_url('doc', array('title' => 'source')),
                             _('Source'));
+            $this->menuItem(common_local_url('version'),
+                            _('Version'));
             $this->menuItem(common_local_url('doc', array('title' => 'contact')),
                             _('Contact'));
             $this->menuItem(common_local_url('doc', array('title' => 'badge')),
index 7ec962460fec96c000bb256e8a1c16de72012f6c..287d3c79fd8c0d567c73dd91dc9415d51a6f58d8 100644 (file)
@@ -101,7 +101,9 @@ class Router
                           'silence', 'unsilence',
                           'repeat',
                           'deleteuser',
-                          'geocode');
+                          'geocode',
+                          'version',
+                          );
 
             foreach ($main as $a) {
                 $m->connect('main/'.$a, array('action' => $a));