Pwirth has submitted this change and it was merged. Change subject: AboutBlueSpice extension: initial commit ......................................................................
AboutBlueSpice extension: initial commit This extension brings a special page which shows up-to-date information about BlueSpice. Links to that page are rendered in several menus. There is a preference setting to opt out of the menu links if needed. Patch Set 4: Handled i18n comment Change-Id: Iad8893e53b67b70b2cbf21b5b9ebafff395b45c0 --- A AboutBlueSpice/AboutBlueSpice.class.php A AboutBlueSpice/AboutBlueSpice.setup.php A AboutBlueSpice/i18n/de.json A AboutBlueSpice/i18n/en.json A AboutBlueSpice/i18n/qqq.json A AboutBlueSpice/includes/specials/SpecialAboutBlueSpice.alias.php A AboutBlueSpice/includes/specials/SpecialAboutBlueSpice.class.php A AboutBlueSpice/resources/bluespice.aboutbluespice.js M BlueSpiceExtensions.php.template 9 files changed, 309 insertions(+), 0 deletions(-) Approvals: Pwirth: Looks good to me, approved Raimond Spekking: Looks good to me, but someone else must approve jenkins-bot: Verified diff --git a/AboutBlueSpice/AboutBlueSpice.class.php b/AboutBlueSpice/AboutBlueSpice.class.php new file mode 100644 index 0000000..3f25bc0 --- /dev/null +++ b/AboutBlueSpice/AboutBlueSpice.class.php @@ -0,0 +1,100 @@ +<?php +/** + * BlueSpice for MediaWiki + * Extension: AboutBlueSpice + * Description: Show user additional options of the pro version. + * Authors: Markus Glaser + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/gpl.html + * + * For further information visit http://www.bluespice.com + * + * @author Markus Glaser <[email protected]> + * @version 2.23.2 + * @package BlueSpice_Extensions + * @subpackage AboutBlueSpice + * @copyright Copyright (C) 2015 Hallo Welt! - Medienwerkstatt GmbH, All rights reserved. + * @license http://www.gnu.org/copyleft/gpl.html GNU Public License v2 or later + * @filesource + */ + +class AboutBlueSpice extends BsExtensionMW { + + public function __construct() { + wfProfileIn( 'BS::'.__METHOD__ ); + + // Base settings + $this->mExtensionFile = __FILE__; + $this->mExtensionType = EXTTYPE::VARIABLE; + $this->mInfo = array( + EXTINFO::NAME => 'AboutBlueSpice', + EXTINFO::DESCRIPTION => 'bs-aboutbluespice-desc', + EXTINFO::AUTHOR => 'Markus Glaser', + EXTINFO::VERSION => 'default', + EXTINFO::STATUS => 'default', + EXTINFO::PACKAGE => 'default', + EXTINFO::URL => 'http://www.hallowelt.com', + EXTINFO::DEPS => array ( 'bluespice' => '2.23.1' ) + ); + $this->mExtensionKey = 'MW::AboutBluespice'; + wfProfileOut( 'BS::'.__METHOD__ ); + } + + protected function initExt() { + wfProfileIn( 'BS::'.__METHOD__ ); + // Hooks + $this->setHook( 'BeforePageDisplay' ); + $this->setHook( 'BSWikiAdminMenuItems' ); + + BsConfig::registerVar( 'MW::AboutBlueSpice::ShowMenuLinks', true, BsConfig::LEVEL_PUBLIC | BsConfig::TYPE_BOOL, 'bs-aboutbluespice-show-menu-links', 'toggle' ); + + wfProfileOut( 'BS::'.__METHOD__ ); + } + + /** + * + * @param OutputPage $out + * @param Skin $skin + * @return boolean + */ + public static function onBeforePageDisplay( &$out, &$skin ) { + if ( BsConfig::get( 'MW::AboutBlueSpice::ShowMenuLinks' )) { + $out->addModules( 'ext.bluespice.aboutbluespice' ); + } + return true; + } + + /** + * Returns a list item with a link to the "About BlueSpice" special page + * @param array $aOutSortable Indexed list of menu items. Add item in HTML form. + * @return string Link to the "About BlueSpice" special page + */ + public static function onBSWikiAdminMenuItems( &$aOutSortable ) { + $oSpecialPage = SpecialPage::getTitleFor( 'AboutBlueSpice' ); + $sLink = Html::element( + 'a', + array ( + 'id' => 'bs-admin-aboutbluespice', + 'href' => $oSpecialPage->getLocalURL(), + 'title' => wfMessage( 'bs-aboutbluespice-about-bluespice' )->plain() + ), + wfMessage( 'bs-aboutbluespice-about-bluespice' )->plain() + ); + $aOutSortable[wfMessage( 'bs-aboutbluespice-about-bluespice' )->escaped()] = '<li>' . $sLink . '</li>'; + return true; + } + +} \ No newline at end of file diff --git a/AboutBlueSpice/AboutBlueSpice.setup.php b/AboutBlueSpice/AboutBlueSpice.setup.php new file mode 100644 index 0000000..6cac4f2 --- /dev/null +++ b/AboutBlueSpice/AboutBlueSpice.setup.php @@ -0,0 +1,27 @@ +<?php + +BsExtensionManager::registerExtension( 'AboutBlueSpice', BsRUNLEVEL::FULL | BsRUNLEVEL::REMOTE ); + +$GLOBALS['wgAutoloadClasses']['AboutBlueSpice'] = __DIR__ . '/AboutBlueSpice.class.php'; +$wgAutoloadClasses['SpecialAboutBlueSpice'] = __DIR__ . '/includes/specials/SpecialAboutBlueSpice.class.php'; + +$wgMessagesDirs['AboutBlueSpice'] = __DIR__ . '/i18n'; + +$wgSpecialPages['AboutBlueSpice'] = 'SpecialAboutBlueSpice'; +$wgExtensionMessagesFiles['ExtendedStatisticsAlias'] = __DIR__ . '/includes/specials/SpecialAboutBlueSpice.alias.php'; + +$aResourceModuleTemplate = array ( + 'localBasePath' => __DIR__ . '/resources', + 'remoteExtPath' => 'BlueSpiceExtensions/AboutBlueSpice/resources' +); + +$wgResourceModules['ext.bluespice.aboutbluespice'] = array ( + 'scripts' => array ( + 'bluespice.aboutbluespice.js' + ), + 'messages' => array ( + 'bs-aboutbluespice-about-bluespice' + ) +) + $aResourceModuleTemplate; + +unset( $aResoureModuleTemplate ); diff --git a/AboutBlueSpice/i18n/de.json b/AboutBlueSpice/i18n/de.json new file mode 100644 index 0000000..f9c9ad3 --- /dev/null +++ b/AboutBlueSpice/i18n/de.json @@ -0,0 +1,12 @@ +{ + "@metadata": { + "authors": [ + "Markus Glaser <[email protected]>" + ] + }, + "bs-aboutbluespice-desc": "Informationen über BlueSpice.", + "bs-aboutbluespice-about-bluespice": "Über BlueSpice", + "aboutbluespice": "Über BlueSpice", + "prefs-aboutbluespice": "Über BlueSpice", + "bs-aboutbluespice-show-menu-links": "Link \"{{int:bs-aboutbluespice-about-bluespice}}\" im Top- und Hauptmenü anzeigen" +} \ No newline at end of file diff --git a/AboutBlueSpice/i18n/en.json b/AboutBlueSpice/i18n/en.json new file mode 100644 index 0000000..18d2ceb --- /dev/null +++ b/AboutBlueSpice/i18n/en.json @@ -0,0 +1,12 @@ +{ + "@metadata": { + "authors": [ + "Markus Glaser <[email protected]>" + ] + }, + "bs-aboutbluespice-desc": "Information about BlueSpice.", + "bs-aboutbluespice-about-bluespice": "About BlueSpice", + "aboutbluespice": "About BlueSpice", + "prefs-aboutbluespice": "About BlueSpice", + "bs-aboutbluespice-show-menu-links": "Show link \"{{int:bs-aboutbluespice-about-bluespice}}\" in top and main menu" +} diff --git a/AboutBlueSpice/i18n/qqq.json b/AboutBlueSpice/i18n/qqq.json new file mode 100644 index 0000000..4222d05 --- /dev/null +++ b/AboutBlueSpice/i18n/qqq.json @@ -0,0 +1,12 @@ +{ + "@metadata": { + "authors": [ + "Markus Glaser <[email protected]>" + ] + }, + "bs-aboutbluespice-desc": "Used in [{{canonicalurl:Special:WikiAdmin|mode=ExtensionInfo}} Special:WikiAdmin?mode=ExtensionInfo], description of AboutBlueSpice extension", + "bs-aboutbluespice-about-bluespice": "Label for menu item in various menus", + "aboutbluespice": "Label for special page in list of special pages", + "prefs-aboutbluespice": "Header for extension's preferences settings", + "bs-aboutbluespice-show-menu-links": "Label for option to show the \"{{int:bs-aboutbluespice-about-bluespice}}\" link in top and main menu" +} \ No newline at end of file diff --git a/AboutBlueSpice/includes/specials/SpecialAboutBlueSpice.alias.php b/AboutBlueSpice/includes/specials/SpecialAboutBlueSpice.alias.php new file mode 100644 index 0000000..738bf01 --- /dev/null +++ b/AboutBlueSpice/includes/specials/SpecialAboutBlueSpice.alias.php @@ -0,0 +1,25 @@ +<?php +/** + * Internationalisation file for About BlueSpice special page. + * + * Part of BlueSpice for MediaWiki + * + * @author Markus Glaser <[email protected]> + + * @package BlueSpice_Extensions + * @subpackage AboutBlueSpice + * @copyright Copyright (C) 2015 Hallo Welt! - Medienwerkstatt GmbH, All rights reserved. + * @license http://www.gnu.org/copyleft/gpl.html GNU Public License v2 or later + * @filesource + */ +$specialPageAliases = array(); + +/** English */ +$specialPageAliases['en'] = array( + 'AboutBlueSpice' => array( 'About BlueSpice' ), +); + +/** German (Deutsch) */ +$specialPageAliases['de'] = array( + 'AboutBlueSpice' => array( 'Über BlueSpice' ), +); \ No newline at end of file diff --git a/AboutBlueSpice/includes/specials/SpecialAboutBlueSpice.class.php b/AboutBlueSpice/includes/specials/SpecialAboutBlueSpice.class.php new file mode 100644 index 0000000..b5da6be --- /dev/null +++ b/AboutBlueSpice/includes/specials/SpecialAboutBlueSpice.class.php @@ -0,0 +1,58 @@ +<?php + +/** + * Renders the About BlueSpice special page. + * + * Part of BlueSpice for MediaWiki + * + * @author Markus Glaser <[email protected]> + + * @package BlueSpice_Extensions + * @subpackage AboutBlueSpice + * @copyright Copyright (C) 2015 Hallo Welt! - Medienwerkstatt GmbH, All rights reserved. + * @license http://www.gnu.org/copyleft/gpl.html GNU Public License v2 or later + * @filesource + */ + +class SpecialAboutBlueSpice extends BsSpecialPage { + + /** + * Constructor of SpecialAboutBlueSpice class + */ + public function __construct() { + wfProfileIn( 'BS::'.__METHOD__ ); + parent::__construct( 'AboutBlueSpice' ); + wfProfileOut( 'BS::'.__METHOD__ ); + } + + /** + * Renders special page output. + * @param string $sParameter Not used. + * @return bool Allow other hooked methods to be executed. Always true. + */ + public function execute( $sParameter ) { + parent::execute( $sParameter ); + + $sLang = $this->getLanguage()->getCode(); + switch ( substr( $sLang, 0, 2 ) ) { + case "de" : + $sUrl = "http://de.bluespice.com"; + break; + default : + $sUrl = "http://www.bluespice.com"; + }; + + $sOutHTML = '<iframe src="' . $sUrl . '" id="aboutbluespiceremote" style="width:100%;border:0px;min-height:400px;"></iframe>'; + + $oOutputPage = $this->getOutput(); + + $oOutputPage->addHTML( $sOutHTML ); + + return true; + } + + protected function getGroupName() { + return 'bluespice'; + } + +} \ No newline at end of file diff --git a/AboutBlueSpice/resources/bluespice.aboutbluespice.js b/AboutBlueSpice/resources/bluespice.aboutbluespice.js new file mode 100644 index 0000000..6911919 --- /dev/null +++ b/AboutBlueSpice/resources/bluespice.aboutbluespice.js @@ -0,0 +1,62 @@ +/** + * About BlueSpice extension + * + * @author Markus Glaser <[email protected]> + * @version 1.0.0 beta + + * @package Bluespice_Extensions + * @subpackage AboutBlueSpice + * @copyright Copyright (C) 2015 Hallo Welt! - Medienwerkstatt GmbH, All rights reserved. + * @license http://www.gnu.org/copyleft/gpl.html GNU Public License v2 or later + * @filesource + */ + +/** +* Adds items for About BlueSpice to top and main menu. +*/ + +$(function () { + // Add About BlueSpice link to top menu + var sAboutBlueSpiceTopLink = mw.html.element( + 'a', + { + href: mw.util.getUrl('Special:AboutBlueSpice'), + class: 'menu-item-single level-1' + }, + mw.message('bs-aboutbluespice-about-bluespice').plain() + ); + var sAboutBlueSpiceTopMenuItem = mw.html.element( + 'li', + {}, + new mw.html.Raw( sAboutBlueSpiceTopLink ) + ); + $('#bs-apps').find('ul').append( sAboutBlueSpiceTopMenuItem ); + + // Add About BlueSpice link to main navigation + var sAboutBlueSpiceMainLink = mw.html.element( + 'a', + { + href: mw.util.getUrl('Special:AboutBlueSpice'), + class: 'menu-item-single level-1' + }, + new mw.html.Raw( + mw.html.element( + 'span', + {class: 'icon24'} + ) + + mw.html.element( + 'span', + {class: 'bs-nav.item-text'}, + mw.message('bs-aboutbluespice-about-bluespice').plain() + ) + ) + ); + var sAboutBlueSpiceMainMenuItem = mw.html.element( + 'li', + { + class: 'clearfix' + }, + new mw.html.Raw( sAboutBlueSpiceMainLink ) + ); + $('#p-navigation').find('ul').append( sAboutBlueSpiceMainMenuItem ); +}); \ No newline at end of file diff --git a/BlueSpiceExtensions.php.template b/BlueSpiceExtensions.php.template index 9db77ba..ac11c4b 100644 --- a/BlueSpiceExtensions.php.template +++ b/BlueSpiceExtensions.php.template @@ -12,6 +12,7 @@ //Other Extendsions require_once( __DIR__."/StateBar/StateBar.setup.php" ); require_once( __DIR__."/RSSFeeder/RSSFeeder.setup.php" ); +require_once( __DIR__."/AboutBlueSpice/AboutBlueSpice.setup.php" ); require_once( __DIR__."/ArticleInfo/ArticleInfo.setup.php" ); require_once( __DIR__."/Authors/Authors.setup.php" ); require_once( __DIR__."/Blog/Blog.setup.php" ); -- To view, visit https://gerrit.wikimedia.org/r/249764 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iad8893e53b67b70b2cbf21b5b9ebafff395b45c0 Gerrit-PatchSet: 5 Gerrit-Project: mediawiki/extensions/BlueSpiceExtensions Gerrit-Branch: master Gerrit-Owner: Mglaser <[email protected]> Gerrit-Reviewer: Mglaser <[email protected]> Gerrit-Reviewer: Pwirth <[email protected]> Gerrit-Reviewer: Raimond Spekking <[email protected]> Gerrit-Reviewer: Robert Vogel <[email protected]> Gerrit-Reviewer: Siebrand <[email protected]> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
