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 2010 Free Software Foundation, Inc.'),
151 XMLStringer::estring('a', array('href' => GNUSOCIAL_ENGINE_URL),
152 // TRANS: Engine name.
155 $this->elementEnd('p');
157 // TRANS: Header for engine software contributors section on the version page.
158 $this->element('h2', null, _('Contributors'));
160 $this->elementStart('p');
161 $this->raw(sprintf('See %s for a full list of contributors.',
162 XMLStringer::estring('a', array('href' => 'https://notabug.org/diogo/gnu-social/src/nightly/CREDITS.md'),
163 'https://notabug.org/diogo/gnu-social/src/nightly/CREDITS.md')));
164 $this->elementEnd('p');
166 // TRANS: Header for engine software license section on the version page.
167 $this->element('h2', null, _('License'));
169 $this->element('p', null,
170 // TRANS: Content part of engine software version page. %1s is engine name
171 sprintf(_('%1$s is free software: you can redistribute it and/or modify '.
172 'it under the terms of the GNU Affero General Public License as published by '.
173 'the Free Software Foundation, either version 3 of the License, or '.
174 '(at your option) any later version.'), GNUSOCIAL_ENGINE));
176 $this->element('p', null,
177 // TRANS: Content part of engine software version page.
178 _('This program is distributed in the hope that it will be useful, '.
179 'but WITHOUT ANY WARRANTY; without even the implied warranty of '.
180 'MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the '.
181 'GNU Affero General Public License for more details.'));
183 $this->elementStart('p');
184 // TRANS: Content part of engine version page.
185 // TRANS: %s is a link to the AGPL license with link description "http://www.gnu.org/licenses/agpl.html".
186 $this->raw(sprintf(_('You should have received a copy of the GNU Affero General Public License '.
187 'along with this program. If not, see %s.'),
188 XMLStringer::estring('a', array('href' => 'https://www.gnu.org/licenses/agpl.html'),
189 'https://www.gnu.org/licenses/agpl.html')));
190 $this->elementEnd('p');
192 // XXX: Theme information?
194 if (count($this->pluginVersions)) {
195 // TRANS: Header for engine plugins section on the version page.
196 $this->element('h2', null, _('Plugins'));
198 $this->elementStart('table', array('id' => 'plugins_enabled'));
200 $this->elementStart('thead');
201 $this->elementStart('tr');
202 // TRANS: Column header for plugins table on version page.
203 $this->element('th', array('id' => 'plugin_name'), _m('HEADER','Name'));
204 // TRANS: Column header for plugins table on version page.
205 $this->element('th', array('id' => 'plugin_version'), _m('HEADER','Version'));
206 // TRANS: Column header for plugins table on version page.
207 $this->element('th', array('id' => 'plugin_authors'), _m('HEADER','Author(s)'));
208 // TRANS: Column header for plugins table on version page.
209 $this->element('th', array('id' => 'plugin_description'), _m('HEADER','Description'));
210 $this->elementEnd('tr');
211 $this->elementEnd('thead');
213 $this->elementStart('tbody');
214 foreach ($this->pluginVersions as $plugin) {
215 $this->elementStart('tr');
216 if (array_key_exists('homepage', $plugin)) {
217 $this->elementStart('th');
218 $this->element('a', array('href' => $plugin['homepage']),
220 $this->elementEnd('th');
222 $this->element('th', null, $plugin['name']);
225 $this->element('td', null, $plugin['version']);
227 if (array_key_exists('author', $plugin)) {
228 $this->element('td', null, $plugin['author']);
231 if (array_key_exists('rawdescription', $plugin)) {
232 $this->elementStart('td');
233 $this->raw($plugin['rawdescription']);
234 $this->elementEnd('td');
235 } else if (array_key_exists('description', $plugin)) {
236 $this->element('td', null, $plugin['description']);
238 $this->elementEnd('tr');
240 $this->elementEnd('tbody');
241 $this->elementEnd('table');