3 * StatusNet - the distributed open-source microblogging tool
4 * Copyright (C) 2008-2011, StatusNet, Inc.
6 * Show version information for this software and plugins
10 * This program is free software: you can redistribute it and/or modify
11 * it under the terms of the GNU Affero General Public License as published by
12 * the Free Software Foundation, either version 3 of the License, or
13 * (at your option) any later version.
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU Affero General Public License for more details.
20 * You should have received a copy of the GNU Affero General Public License
21 * along with this program. If not, see <http://www.gnu.org/licenses/>.
25 * @author Evan Prodromou <evan@status.net>
26 * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
27 * @link http://status.net/
30 if (!defined('GNUSOCIAL')) { exit(1); }
35 * A page that shows version information for this site. Helpful for
36 * debugging, for giving credit to authors, and for linking to more
37 * complete documentation for admins.
41 * @author Evan Prodromou <evan@status.net>
42 * @author Craig Andrews <candrews@integralblue.com>
43 * @copyright 2009-2011 Free Software Foundation, Inc http://www.fsf.org
44 * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
45 * @link http://status.net/
47 class VersionAction extends Action
49 var $pluginVersions = array();
52 * Return true since we're read-only.
54 * @param array $args other arguments
56 * @return boolean is read only action?
58 function isReadOnly($args)
64 * Returns the page title
66 * @return string page title
70 // TRANS: Title for version page. %1$s is the engine name, %2$s is the engine version.
71 return sprintf(_('%1$s %2$s'), GNUSOCIAL_ENGINE, GNUSOCIAL_VERSION);
77 * Fire off an event to let plugins report their
80 * @param array $args array misc. arguments
82 * @return boolean true
84 protected function prepare(array $args=array())
86 parent::prepare($args);
88 Event::handle('PluginVersion', array(&$this->pluginVersions));
96 * Shows a page with the version information in the
99 * @param array $args ignored.
103 protected function handle()
111 * Override to add h-entry, and content-inner classes
115 function showContentBlock()
117 $this->elementStart('div', array('id' => 'content', 'class' => 'h-entry'));
118 $this->showPageTitle();
119 $this->showPageNoticeBlock();
120 $this->elementStart('div', array('id' => 'content_inner',
121 'class' => 'e-content'));
122 // show the actual content (forms, lists, whatever)
123 $this->showContent();
124 $this->elementEnd('div');
125 $this->elementEnd('div');
129 * Overrride to add entry-title class
133 function showPageTitle() {
134 $this->element('h1', array('class' => 'entry-title'), $this->title());
139 * Show version information
143 function showContent()
145 $this->elementStart('p');
147 // TRANS: Content part of engine version page.
148 // TRANS: %1$s is the engine name (GNU social) and %2$s is the GNU social version.
149 $this->raw(sprintf(_('This site is powered by %1$s version %2$s, '.
150 'Copyright 2008-2013 StatusNet, Inc. '.
151 'and contributors.'),
152 XMLStringer::estring('a', array('href' => GNUSOCIAL_ENGINE_URL),
153 // TRANS: Engine name.
156 $this->elementEnd('p');
158 // TRANS: Header for engine software contributors section on the version page.
159 $this->element('h2', null, _('Contributors'));
161 sort($this->contributors);
162 $this->element('p', null, implode(', ', $this->contributors));
164 // TRANS: Header for engine software license section on the version page.
165 $this->element('h2', null, _('License'));
167 $this->element('p', null,
168 // TRANS: Content part of engine software version page. %1s is engine name
169 sprintf(_('%1$s is free software: you can redistribute it and/or modify '.
170 'it under the terms of the GNU Affero General Public License as published by '.
171 'the Free Software Foundation, either version 3 of the License, or '.
172 '(at your option) any later version.'), GNUSOCIAL_ENGINE));
174 $this->element('p', null,
175 // TRANS: Content part of engine software version page.
176 _('This program is distributed in the hope that it will be useful, '.
177 'but WITHOUT ANY WARRANTY; without even the implied warranty of '.
178 'MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the '.
179 'GNU Affero General Public License for more details.'));
181 $this->elementStart('p');
182 // TRANS: Content part of engine version page.
183 // TRANS: %s is a link to the AGPL license with link description "http://www.gnu.org/licenses/agpl.html".
184 $this->raw(sprintf(_('You should have received a copy of the GNU Affero General Public License '.
185 'along with this program. If not, see %s.'),
186 XMLStringer::estring('a', array('href' => 'http://www.gnu.org/licenses/agpl.html'),
187 'http://www.gnu.org/licenses/agpl.html')));
188 $this->elementEnd('p');
190 // XXX: Theme information?
192 if (count($this->pluginVersions)) {
193 // TRANS: Header for engine plugins section on the version page.
194 $this->element('h2', null, _('Plugins'));
196 $this->elementStart('table', array('id' => 'plugins_enabled'));
198 $this->elementStart('thead');
199 $this->elementStart('tr');
200 // TRANS: Column header for plugins table on version page.
201 $this->element('th', array('id' => 'plugin_name'), _m('HEADER','Name'));
202 // TRANS: Column header for plugins table on version page.
203 $this->element('th', array('id' => 'plugin_version'), _m('HEADER','Version'));
204 // TRANS: Column header for plugins table on version page.
205 $this->element('th', array('id' => 'plugin_authors'), _m('HEADER','Author(s)'));
206 // TRANS: Column header for plugins table on version page.
207 $this->element('th', array('id' => 'plugin_description'), _m('HEADER','Description'));
208 $this->elementEnd('tr');
209 $this->elementEnd('thead');
211 $this->elementStart('tbody');
212 foreach ($this->pluginVersions as $plugin) {
213 $this->elementStart('tr');
214 if (array_key_exists('homepage', $plugin)) {
215 $this->elementStart('th');
216 $this->element('a', array('href' => $plugin['homepage']),
218 $this->elementEnd('th');
220 $this->element('th', null, $plugin['name']);
223 $this->element('td', null, $plugin['version']);
225 if (array_key_exists('author', $plugin)) {
226 $this->element('td', null, $plugin['author']);
229 if (array_key_exists('rawdescription', $plugin)) {
230 $this->elementStart('td');
231 $this->raw($plugin['rawdescription']);
232 $this->elementEnd('td');
233 } else if (array_key_exists('description', $plugin)) {
234 $this->element('td', null, $plugin['description']);
236 $this->elementEnd('tr');
238 $this->elementEnd('tbody');
239 $this->elementEnd('table');
244 var $contributors = array('Evan Prodromou (StatusNet)',
245 'Zach Copley (StatusNet)',
246 'Earle Martin (StatusNet)',
247 'Marie-Claude Doyon (StatusNet)',
248 'Sarven Capadisli (StatusNet)',
249 'Robin Millette (StatusNet)',
260 'Tryggvi Björgvinsson',
264 'Leslie Michael Orchard',
268 'Tobias Diekershoff',
279 'Brion Vibber (StatusNet)',
281 'Samantha Doherty (StatusNet)',
282 'Mikael Nordfeldth (FSF)');