diff options
author | coadde [Márcio Alexandre Silva Delgado] <coadde@parabola.nu> | 2016-07-04 15:23:37 -0300 |
---|---|---|
committer | coadde [Márcio Alexandre Silva Delgado] <coadde@parabola.nu> | 2016-07-04 15:23:37 -0300 |
commit | 7d0449d39e55602d28191895a747fa0a2ef3575b (patch) | |
tree | af8ab3dcd1d0dc10472ca69ca4b60af2cf4021ef /skins/Parabola | |
parent | a1d705e541e0d10baa6bb03935ffd38d9478d0e6 (diff) |
rename ArchLinux to Parabola skin
Diffstat (limited to 'skins/Parabola')
30 files changed, 2155 insertions, 0 deletions
diff --git a/skins/Parabola/ArchLinux.php b/skins/Parabola/ArchLinux.php new file mode 120000 index 00000000..b99dddef --- /dev/null +++ b/skins/Parabola/ArchLinux.php @@ -0,0 +1 @@ +Parabola.php
\ No newline at end of file diff --git a/skins/Parabola/ArchLinuxTemplate.php b/skins/Parabola/ArchLinuxTemplate.php new file mode 120000 index 00000000..4f4e1d4f --- /dev/null +++ b/skins/Parabola/ArchLinuxTemplate.php @@ -0,0 +1 @@ +Template.php
\ No newline at end of file diff --git a/skins/Parabola/COPYING b/skins/Parabola/COPYING new file mode 100644 index 00000000..d159169d --- /dev/null +++ b/skins/Parabola/COPYING @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + 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. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/skins/Parabola/Gruntfile.js b/skins/Parabola/Gruntfile.js new file mode 100644 index 00000000..9c56558a --- /dev/null +++ b/skins/Parabola/Gruntfile.js @@ -0,0 +1,20 @@ +/*jshint node:true */ +module.exports = function ( grunt ) { + grunt.loadNpmTasks( 'grunt-banana-checker' ); + grunt.loadNpmTasks( 'grunt-jsonlint' ); + + grunt.initConfig( { + banana: { + all: 'i18n/' + }, + jsonlint: { + all: [ + '**/*.json', + '!node_modules/**' + ] + } + } ); + + grunt.registerTask( 'test', [ 'jsonlint', 'banana' ] ); + grunt.registerTask( 'default', 'test' ); +}; diff --git a/skins/Parabola/IE60Fixes.css b/skins/Parabola/IE60Fixes.css new file mode 100644 index 00000000..a5beed5d --- /dev/null +++ b/skins/Parabola/IE60Fixes.css @@ -0,0 +1,125 @@ +/* 6.0 - only fixes */ +/* content area */ +/* workaround for various ie float bugs */ +div#column-content { + float: none; + margin-left: 0; + height: 1%; +} + +div#column-content .mw-body { + margin-left: 12.2em; + margin-top: 3em; + height: 1%; +} + +.rtl div#column-content .mw-body { + margin-right: 12.2em; + margin-left: 0; +} + +div#column-one { + position: absolute; + top: 0; + left: 0; + z-index: 4; +} + +.rtl div#column-one { + left: auto; + right: 0; +} + +div#footer { + margin-left: 13.6em; + border-left: 1px solid #fabd23; +} + +.rtl div#footer { + margin-left: 0; + margin-right: 13.6em; + border-left: none; + border-right: 1px solid #fabd23; +} + +/* float/negative margin brokenness */ +* html div#footer { + margin-top: 0; +} + +* html div#column-content { + display: inline; + margin-bottom: 0; +} + +/* the tabs */ + +#p-cactions { + z-index: 3; +} + +#p-cactions li { + padding-bottom: 0 !important; + border: none; + background-color: transparent; + cursor: default; + float: none !important; +} + +#p-cactions li a { + display: inline-block !important; + vertical-align: top; + padding-bottom: 0; + border: solid #aaa; + border-width: 1px 1px 0; +} + +#p-cactions li.selected a { + border-color: #fabd23; + padding-bottom: 0.17em; +} + +#p-cactions li a:hover { + padding-bottom: 0.17em; +} + +#p-navigation a { + display: inline-block; + width: 100%; +} + +#portal-personaltools { + padding-bottom: 0.1em; +} + +.rtl a.feedlink { + background-position: right; + padding-right: 0; + padding-left: 16px; +} + +/* show the hand */ +#p-logo a, +#p-logo a:hover { + cursor: pointer; +} + +div.visualClear { + width: 100%; + line-height: 0; +} + +textarea { + width: 96%; +} + +#catlinks, +div.tright, +div.tleft { + position: relative; +} + +/* bug 12846 */ +body.rtl #preftoc a, body.rtl #preftoc a:active { + float: left; +} diff --git a/skins/Parabola/IE70Fixes.css b/skins/Parabola/IE70Fixes.css new file mode 100644 index 00000000..e82d57a3 --- /dev/null +++ b/skins/Parabola/IE70Fixes.css @@ -0,0 +1,96 @@ +/* 7.0 - only fixes */ +/* content area */ +/* workaround for various ie float bugs */ + +/* This bit is needed to make links clickable... WTF */ +div#column-content .mw-body { + margin-left: 12.2em; + margin-top: 3em; + height: 1%; +} + +.rtl div#column-content .mw-body { + margin-right: 12.2em; + margin-left: 0; +} + +.rtl div#column-one { + /* For some reason it tries to inherit the padding-top into every div, + * and I can't figure out how to get it back off. + * Margin works correctly for this use, though. + */ + padding-top: 0; + margin-top: 160px; +} + +/* These elements also have padding-left: 20px; in main.css, but in RTL mode this is flipped. + * That's good in normal browsers, but in IE7 it needs to not be flipped for some daft reason. + * Also clear the right margin (originally margin-left: 1em) + */ +li#pt-userpage, li#pt-anonuserpage, li#pt-login { + padding-left: 20px; + margin-right: 0; +} + +.rtl a.feedlink { + background-position: right; + padding-right: 0; + padding-left: 16px; +} + +/* the tabs */ + +#p-cactions { + z-index: 3; +} + +#p-cactions li { + padding-bottom: 0 !important; + border: none; + background-color: transparent; + cursor: default; + float: none !important; +} + +#p-cactions li a { + display: inline-block !important; + vertical-align: top; + padding-bottom: 0; + border: solid #aaa; + border-width: 1px 1px 0; +} + +#p-cactions li.selected a { + border-color: #fabd23; + padding-bottom: 0.17em; +} + +#p-cactions li a:hover { + padding-bottom: 0.17em; +} + +#p-navigation a { + display: inline-block; + width: 100%; +} + +#portal-personaltools { + padding-bottom: 0.1em; +} + +textarea { + width: 96%; +} + +/* +#catlinks, +div.tright, +div.tleft { + position: relative; +} +*/ + +div#footer li { + /* Work around bug with inline <li> tags with right margins and nowrap */ + margin-right: 0; +} diff --git a/skins/Parabola/Parabola.php b/skins/Parabola/Parabola.php new file mode 100644 index 00000000..abc6c7c6 --- /dev/null +++ b/skins/Parabola/Parabola.php @@ -0,0 +1,14 @@ +<?php + +if ( function_exists( 'wfLoadSkin' ) ) { + wfLoadSkin( 'Parabola' ); + // Keep i18n globals so mergeMessageFileList.php doesn't break + $wgMessagesDirs['MonoBook'] = __DIR__ . '/i18n'; + /* wfWarn( + 'Deprecated PHP entry point used for MonoBook skin. Please use wfLoadSkin instead, ' . + 'see https://www.mediawiki.org/wiki/Extension_registration for more details.' + ); */ + return true; +} else { + die( 'This version of the Parabola skin requires MediaWiki 1.25+' ); +} diff --git a/skins/Parabola/Skin.php b/skins/Parabola/Skin.php new file mode 100644 index 00000000..92edc05d --- /dev/null +++ b/skins/Parabola/Skin.php @@ -0,0 +1,54 @@ +<?php +/** + * Parabola skin, based on Arch (the GNU/Linux distribution) and MonoBook skins + * + * Arch (the GNU/Linux distribution) skin: + * * Translated from gwicke's previous TAL template version to remove + * dependency on PHPTAL. + * + * 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 + * + * @file + * @ingroup Skins + */ + +/** + * Inherit main code from SkinTemplate, set the CSS and template filter. + * @ingroup Skins + */ +class Skin extends SkinTemplate { + /** Using Parabola. */ + public $skinname = 'parabola'; + public $stylename = 'Parabola'; + public $template = 'Template'; + + /** + * @param OutputPage $out + */ + function setupSkinUserCss( OutputPage $out ) { + parent::setupSkinUserCss( $out ); + + $out->addModuleStyles( array( + 'mediawiki.skinning.interface', + 'mediawiki.skinning.content.externallinks', + 'skins.archlinux.styles' + ) ); + + // TODO: Migrate all of these + $out->addStyle( $this->stylename . '/IE60Fixes.css', 'screen', 'IE 6' ); + $out->addStyle( $this->stylename . '/IE70Fixes.css', 'screen', 'IE 7' ); + } +} diff --git a/skins/Parabola/SkinArchLinux.php b/skins/Parabola/SkinArchLinux.php new file mode 120000 index 00000000..23d725a4 --- /dev/null +++ b/skins/Parabola/SkinArchLinux.php @@ -0,0 +1 @@ +Skin.php
\ No newline at end of file diff --git a/skins/Parabola/Template.php b/skins/Parabola/Template.php new file mode 100644 index 00000000..55ff43aa --- /dev/null +++ b/skins/Parabola/Template.php @@ -0,0 +1,409 @@ +<?php +/** + * Parabola skin, based on Arch (the GNU/Linux distribution) and MonoBook skins + * + * Arch (the GNU/Linux distribution) skin: + * * Translated from gwicke's previous TAL template version to remove + * dependency on PHPTAL. + * + * 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 + * + * @file + * @ingroup Skins + */ + +/** + * @ingroup Skins + */ +class Template extends BaseTemplate { + + /** + * Template filter callback for Parabola skin. + * Takes an associative array of data set from a SkinTemplate-based + * class, and a wrapper for MediaWiki's localization database, and + * outputs a formatted page. + * + * @access private + */ + function execute() { + global $wgNavBar, $wgHome, $wgNavBarSelected, $wgNavBarSelectedDefault; + // Suppress warnings to prevent notices about missing indexes in $this->data + wfSuppressWarnings(); + + $this->html( 'headelement' ); + ?> + + <div id="navbar"><!-- Parabola global navigation bar --> + <div id="navbarlogo"><h1><a href="https://www.parabola.nu/">Parabola GNU/Linux-libre</a></h1></div> + <div id="navbarmenu"> + <ul id="navbarlist"> + <li id="anb-home"><a href="https://www.parabola.nu/" title="Parabola news, packages, projects and more">Home</a></li> + <li id="anb-packages"><a href="https://www.parabola.nu/packages/" title="Package Database">Packages</a></li> + <li id="anb-wiki" class="anb-selected"><a href="https://wiki.parabola.nu/" title="Community documentation">Wiki</a></li> + <li id="anb-bugs"><a href="https://labs.parabola.nu" title="Issue Tracker">Bugs</a></li> + <li id="anb-projects"><a href="https://projects.parabola.nu/" title="Our Code">Projects</a></li> + <li id="anb-download"><a href="https://wiki.parabola.nu/Get_Parabola" title="Get Parabola">Download</a></li> + </ul> + </div> + </div><!-- #navbar --> + + <div id="globalWrapper"> + <div id="column-content"> + <div id="content" class="mw-body" role="main"> + <a id="top"></a> + <?php + if ( $this->data['sitenotice'] ) { + ?> + <div id="siteNotice"><?php + $this->html( 'sitenotice' ) + ?></div><?php + } + ?> + + <?php + echo $this->getIndicators(); + // Loose comparison with '!=' is intentional, to catch null and false too, but not '0' + if ( $this->data['title'] != '' ) { + ?> + <h1 id="firstHeading" class="firstHeading" lang="<?php + $this->data['pageLanguage'] = + $this->getSkin()->getTitle()->getPageViewLanguage()->getHtmlCode(); + $this->text( 'pageLanguage' ); + ?>"><?php $this->html( 'title' ) ?></h1> + <?php } ?> + + <div id="bodyContent" class="mw-body-content"> + <div id="siteSub"><?php $this->msg( 'tagline' ) ?></div> + <div id="contentSub"<?php + $this->html( 'userlangattributes' ) ?>><?php $this->html( 'subtitle' ) + ?></div> + <?php if ( $this->data['undelete'] ) { ?> + <div id="contentSub2"><?php $this->html( 'undelete' ) ?></div> + <?php +} + ?><?php + if ( $this->data['newtalk'] ) { + ?> + <div class="usermessage"><?php $this->html( 'newtalk' ) ?></div> + <?php + } + ?> + <div id="jump-to-nav" class="mw-jump"><?php + $this->msg( 'jumpto' ) + ?> <a href="#column-one"><?php + $this->msg( 'jumptonavigation' ) + ?></a><?php + $this->msg( 'comma-separator' ) + ?><a href="#searchInput"><?php + $this->msg( 'jumptosearch' ) + ?></a></div> + + <!-- start content --> + <?php $this->html( 'bodytext' ) ?> + <?php + if ( $this->data['catlinks'] ) { + $this->html( 'catlinks' ); + } + ?> + <!-- end content --> + <?php + if ( $this->data['dataAfterContent'] ) { + $this->html( 'dataAfterContent' + ); + } + ?> + <div class="visualClear"></div> + </div> + </div> + </div> + <div id="column-one"<?php $this->html( 'userlangattributes' ) ?>> + <h2><?php $this->msg( 'navigation-heading' ) ?></h2> + <?php $this->cactions(); ?> + <div class="portlet" id="p-personal" role="navigation"> + <h3><?php $this->msg( 'personaltools' ) ?></h3> + + <div class="pBody"> + <ul<?php $this->html( 'userlangattributes' ) ?>> + <?php foreach ( $this->getPersonalTools() as $key => $item ) { ?> + <?php echo $this->makeListItem( $key, $item ); ?> + + <?php +} + ?> + </ul> + </div> + </div> + <div class="portlet" id="p-logo" role="banner"> + <?php + echo Html::element( 'a', array( + 'href' => $this->data['nav_urls']['mainpage']['href'], + 'class' => 'mw-wiki-logo', + ) + + Linker::tooltipAndAccesskeyAttribs( 'p-logo' ) + ); ?> + + </div> + <?php + $this->renderPortals( $this->data['sidebar'] ); + ?> + </div><!-- end of the left (by default at least) column --> + <div class="visualClear"></div> + <?php + $validFooterIcons = $this->getFooterIcons( "icononly" ); + $validFooterLinks = $this->getFooterLinks( "flat" ); // Additional footer links + + if ( count( $validFooterIcons ) + count( $validFooterLinks ) > 0 ) { + ?> + <div id="footer" role="contentinfo"<?php $this->html( 'userlangattributes' ) ?>> + <?php + $footerEnd = '</div>'; + } else { + $footerEnd = ''; + } + + foreach ( $validFooterIcons as $blockName => $footerIcons ) { + ?> + <div id="f-<?php echo htmlspecialchars( $blockName ); ?>ico"> + <?php foreach ( $footerIcons as $icon ) { ?> + <?php echo $this->getSkin()->makeFooterIcon( $icon ); ?> + + <?php +} + ?> + </div> + <?php + } + + if ( count( $validFooterLinks ) > 0 ) { + ?> + <ul id="f-list"> + <?php + foreach ( $validFooterLinks as $aLink ) { + ?> + <li id="<?php echo $aLink ?>"><?php $this->html( $aLink ) ?></li> + <?php + } + ?> + </ul> + <?php + } + + echo $footerEnd; + ?> + + </div> + <?php + $this->printTrail(); + echo Html::closeElement( 'body' ); + echo Html::closeElement( 'html' ); + echo "\n"; + wfRestoreWarnings(); + } // end of execute() method + + /*************************************************************************************************/ + + /** + * @param array $sidebar + */ + protected function renderPortals( $sidebar ) { + if ( !isset( $sidebar['SEARCH'] ) ) { + $sidebar['SEARCH'] = true; + } + if ( !isset( $sidebar['TOOLBOX'] ) ) { + $sidebar['TOOLBOX'] = true; + } + if ( !isset( $sidebar['LANGUAGES'] ) ) { + $sidebar['LANGUAGES'] = true; + } + + foreach ( $sidebar as $boxName => $content ) { + if ( $content === false ) { + continue; + } + + // Numeric strings gets an integer when set as key, cast back - T73639 + $boxName = (string)$boxName; + + if ( $boxName == 'SEARCH' ) { + $this->searchBox(); + } elseif ( $boxName == 'TOOLBOX' ) { + $this->toolbox(); + } elseif ( $boxName == 'LANGUAGES' ) { + $this->languageBox(); + } else { + $this->customBox( $boxName, $content ); + } + } + } + + function searchBox() { + ?> + <div id="p-search" class="portlet" role="search"> + <h3><label for="searchInput"><?php $this->msg( 'search' ) ?></label></h3> + + <div id="searchBody" class="pBody"> + <form action="<?php $this->text( 'wgScript' ) ?>" id="searchform"> + <input type='hidden' name="title" value="<?php $this->text( 'searchtitle' ) ?>"/> + <?php echo $this->makeSearchInput( array( "id" => "searchInput" ) ); ?> + + <?php + echo $this->makeSearchButton( + "go", + array( "id" => "searchGoButton", "class" => "searchButton" ) + ); + + if ( $this->config->get( 'UseTwoButtonsSearchForm' ) ) { + ?>  + <?php echo $this->makeSearchButton( + "fulltext", + array( "id" => "mw-searchButton", "class" => "searchButton" ) + ); + } else { + ?> + + <div><a href="<?php + $this->text( 'searchaction' ) + ?>" rel="search"><?php $this->msg( 'powersearch-legend' ) ?></a></div><?php + } ?> + + </form> + + <?php $this->renderAfterPortlet( 'search' ); ?> + </div> + </div> + <?php + } + + /** + * Prints the cactions bar. + * Shared between MonoBook and Modern + */ + function cactions() { + ?> + <div id="p-cactions" class="portlet" role="navigation"> + <h3><?php $this->msg( 'views' ) ?></h3> + + <div class="pBody"> + <ul><?php + foreach ( $this->data['content_actions'] as $key => $tab ) { + echo ' + ' . $this->makeListItem( $key, $tab ); + } ?> + + </ul> + <?php $this->renderAfterPortlet( 'cactions' ); ?> + </div> + </div> + <?php + } + + /*************************************************************************************************/ + function toolbox() { + ?> + <div class="portlet" id="p-tb" role="navigation"> + <h3><?php $this->msg( 'toolbox' ) ?></h3> + + <div class="pBody"> + <ul> + <?php + foreach ( $this->getToolbox() as $key => $tbitem ) { + ?> + <?php echo $this->makeListItem( $key, $tbitem ); ?> + + <?php + } + Hooks::run( 'TemplateToolboxEnd', array( &$this ) ); + Hooks::run( 'SkinTemplateToolboxEnd', array( &$this, true ) ); + ?> + </ul> + <?php $this->renderAfterPortlet( 'tb' ); ?> + </div> + </div> + <?php + } + + /*************************************************************************************************/ + function languageBox() { + if ( $this->data['language_urls'] !== false ) { + ?> + <div id="p-lang" class="portlet" role="navigation"> + <h3<?php $this->html( 'userlangattributes' ) ?>><?php $this->msg( 'otherlanguages' ) ?></h3> + + <div class="pBody"> + <ul> + <?php foreach ( $this->data['language_urls'] as $key => $langlink ) { ?> + <?php echo $this->makeListItem( $key, $langlink ); ?> + + <?php +} + ?> + </ul> + + <?php $this->renderAfterPortlet( 'lang' ); ?> + </div> + </div> + <?php + } + } + + /*************************************************************************************************/ + /** + * @param string $bar + * @param array|string $cont + */ + function customBox( $bar, $cont ) { + $portletAttribs = array( + 'class' => 'generated-sidebar portlet', + 'id' => Sanitizer::escapeId( "p-$bar" ), + 'role' => 'navigation' + ); + + $tooltip = Linker::titleAttrib( "p-$bar" ); + if ( $tooltip !== false ) { + $portletAttribs['title'] = $tooltip; + } + echo ' ' . Html::openElement( 'div', $portletAttribs ); + $msgObj = wfMessage( $bar ); + ?> + + <h3><?php echo htmlspecialchars( $msgObj->exists() ? $msgObj->text() : $bar ); ?></h3> + <div class='pBody'> + <?php + if ( is_array( $cont ) ) { + ?> + <ul> + <?php + foreach ( $cont as $key => $val ) { + ?> + <?php echo $this->makeListItem( $key, $val ); ?> + + <?php + } + ?> + </ul> + <?php + } else { + # allow raw HTML block to be defined by extensions + print $cont; + } + + $this->renderAfterPortlet( $bar ); + ?> + </div> + </div> + <?php + } +} // end of class diff --git a/skins/Parabola/arch.css b/skins/Parabola/arch.css new file mode 120000 index 00000000..ac1a9154 --- /dev/null +++ b/skins/Parabola/arch.css @@ -0,0 +1 @@ +parabola.css
\ No newline at end of file diff --git a/skins/Parabola/archlogo.png b/skins/Parabola/archlogo.png new file mode 120000 index 00000000..bd36e718 --- /dev/null +++ b/skins/Parabola/archlogo.png @@ -0,0 +1 @@ +logo.png
\ No newline at end of file diff --git a/skins/Parabola/archnavbar.css b/skins/Parabola/archnavbar.css new file mode 120000 index 00000000..b1808e79 --- /dev/null +++ b/skins/Parabola/archnavbar.css @@ -0,0 +1 @@ +navbar.css
\ No newline at end of file diff --git a/skins/Parabola/bullet.gif b/skins/Parabola/bullet.gif Binary files differnew file mode 100644 index 00000000..b43de48a --- /dev/null +++ b/skins/Parabola/bullet.gif diff --git a/skins/Parabola/composer.json b/skins/Parabola/composer.json new file mode 100644 index 00000000..fd380fb7 --- /dev/null +++ b/skins/Parabola/composer.json @@ -0,0 +1,10 @@ +{ + "require-dev": { + "jakub-onderka/php-parallel-lint": "0.9" + }, + "scripts": { + "test": [ + "parallel-lint . --exclude node_modules --exclude vendor" + ] + } +} diff --git a/skins/Parabola/favicon.ico b/skins/Parabola/favicon.ico Binary files differnew file mode 100644 index 00000000..c67bbd61 --- /dev/null +++ b/skins/Parabola/favicon.ico diff --git a/skins/Parabola/headbg.jpg b/skins/Parabola/headbg.jpg Binary files differnew file mode 100644 index 00000000..5491c6e4 --- /dev/null +++ b/skins/Parabola/headbg.jpg diff --git a/skins/Parabola/hooks.txt b/skins/Parabola/hooks.txt new file mode 100644 index 00000000..b456a669 --- /dev/null +++ b/skins/Parabola/hooks.txt @@ -0,0 +1,8 @@ +Hooks provided by the MonoBook skin. + +'MonoBookTemplateToolboxEnd': DEPRECATED. Called by Monobook skin after toolbox +links have been rendered (useful for adding more). Note: this is only run for +the Monobook skin. To add items to the toolbox you should use the +SkinTemplateToolboxEnd hook instead, which works for all "SkinTemplate"-type +skins. +$tools: array of tools diff --git a/skins/Parabola/link_icon.gif b/skins/Parabola/link_icon.gif Binary files differnew file mode 100644 index 00000000..168c1a2f --- /dev/null +++ b/skins/Parabola/link_icon.gif diff --git a/skins/Parabola/logo.png b/skins/Parabola/logo.png Binary files differnew file mode 100644 index 00000000..8726397a --- /dev/null +++ b/skins/Parabola/logo.png diff --git a/skins/Parabola/magnify-clip.png b/skins/Parabola/magnify-clip.png Binary files differnew file mode 100644 index 00000000..ffd7637f --- /dev/null +++ b/skins/Parabola/magnify-clip.png diff --git a/skins/Parabola/main.css b/skins/Parabola/main.css new file mode 100644 index 00000000..0abc7b31 --- /dev/null +++ b/skins/Parabola/main.css @@ -0,0 +1,827 @@ +/* +** MediaWiki 'monobook' style sheet for CSS2-capable browsers. +** Copyright Gabriel Wicke - http://wikidev.net/ +** License: GPL (http://www.gnu.org/copyleft/gpl.html) +** +** Loosely based on http://www.positioniseverything.net/ordered-floats.html by Big John +** and the Plone 2.0 styles, see http://plone.org/ (Alexander Limi,Joe Geldart & Tom Croucher, +** Michael Zeltner and Geir Bækholt) +** All you guys rock :) +*/ + +div#column-content { + width: 100%; + float: right; + margin: 0 0 .6em -12.2em; + padding: 0; +} + +.mw-body { + margin: 2.8em 0 0 12.2em; + padding: 1em; + position: relative; + z-index: 2; + background: white; + color: black; + border: 1px solid #aaa; + border-right: none; + line-height: 1.5em; +} + +div#column-one { + padding-top: 160px; +} + +/* Hide, but keep accessible for screen-readers */ +#column-one h2 { + position: absolute; + top: -9999px; +} + +/* the left column width is specified in class .portlet */ + +/* Font size: +** We take advantage of keyword scaling- browsers won't go below 9px +** More at http://www.w3.org/2003/07/30-font-size +** http://style.cleverchimp.com/font_size_intervals/altintervals.html +*/ + +body { + font: x-small sans-serif; + /* @embed */ + background: #f9f9f9 url(headbg.jpg) 0 0 no-repeat; + color: black; + margin: 0; + padding: 0; + direction: ltr; /* Needed for RTL flipping */ + unicode-bidi: embed; +} + +/* scale back up to a sane default */ +div#globalWrapper { + font-size: 127%; + width: 100%; + margin: 0; + padding: 0; + position: relative; + z-index: 0; +} + +/* general styles */ +a { + color: #002bb8; +} + +a:visited { + color: #5a3696; +} + +a.new, +#p-personal a.new { + color: #cc2200; +} + +ul { + list-style-type: square; + /* @embed */ + list-style-image: url(bullet.gif); +} + +pre, .mw-code { + line-height: 1.1em; +} + +#firstHeading { + padding-top: 0; + overflow: visible; +} + +.mw-indicators { + float: right; + line-height: 1.5em; + font-size: 95%; +} + +.mw-indicator { + display: -moz-inline-block; + display: inline-block; + zoom: 1; + *display: inline; +} + +/* +** the main content area +*/ + +#siteNotice { + font-size: 95%; + padding: 0 0.9em; +} + +#localNotice { + margin: 0; +} + +#siteNotice p { + margin: 0; + padding: 0; +} + +/* +** classes for special content elements like town boxes +** intended to be referenced directly from the wiki src +*/ + +/* +** User styles +*/ +/* table standards */ +table.rimage { + float: right; + position: relative; + margin-left: 1em; + margin-bottom: 1em; + text-align: center; +} + +/* +** edit views etc +*/ +.special li { + line-height: 1.4em; + margin: 0; + padding: 0; +} + +/* +** Structural Elements +*/ + +/* +** general portlet styles (elements in the quickbar) +*/ +.portlet { + border: none; + margin: 0 0 .5em; + padding: 0; + float: none; + width: 11.6em; + overflow: hidden; +} + +.portlet h3 { + background: transparent; + padding: 0 1em 0 .5em; + display: inline; + height: 1em; + text-transform: lowercase; + font-size: 91%; + font-weight: normal; + white-space: nowrap; +} + +.pBody { + font-size: 95%; + background-color: white; + color: black; + border-collapse: collapse; + border: 1px solid #aaa; + padding: 0 .8em .3em .5em; +} + +/* allows .pBody styles to wrap around content added via BaseTemplateAfterPortlet hook */ +.pBody:after { + content: ''; + clear: both; + display: block; +} + +.portlet ul { + line-height: 1.5em; + font-size: 95%; +} + +.portlet li { + padding: 0; + margin: 0; +} + +/* +** Logo properties +*/ + +#p-logo { + top: 0; + left: 0; + position: absolute; /*needed to use z-index */ + z-index: 3; + height: 155px; + width: 12em; + overflow: visible; +} + +#p-logo h3 { + display: none; +} + +#p-logo a, +#p-logo a:hover { + display: block; + height: 155px; + width: 12.2em; + background-repeat: no-repeat; + background-position: 35% 50% !important; + text-decoration: none; +} + +/* +** Search portlet +*/ +#p-search { + position: relative; + z-index: 3; +} + +input.searchButton { + margin-top: 1px; + font-size: 95%; +} + +#searchGoButton { + padding-left: .5em; + padding-right: .5em; + font-weight: bold; +} + +#searchInput { + width: 10.9em; + margin: 0; + font-size: 95%; +} + +#p-search .pBody { + padding: .5em .4em .4em .4em; + text-align: center; +} + +#p-search #searchform div div { + margin-top: .4em; + font-size: 95%; +} + +/* +** the personal toolbar +*/ +#p-personal { + position: absolute; + left: 0; + top: 0; + z-index: 3; +} + +#p-personal { + width: 100%; + white-space: nowrap; + padding: 0; + margin: 0; + border: none; + background: none; + overflow: visible; + line-height: 1.2em; +} + +#p-personal h3 { + display: none; +} + +#p-personal .portlet, +#p-personal .pBody { + z-index: 0; + padding: 0; + margin: 0; + border: none; + overflow: visible; + background: none; +} + +/* this is the ul contained in the portlet */ +#p-personal ul { + border: none; + line-height: 1.4em; + color: #2f6fab; + padding: 0; + padding-right: 2em; + /* Avoid overlap with the logo. */ + padding-left: 14em; + margin: 0; + text-align: right; + list-style-type: none; + list-style-image: none; + z-index: 0; + background: none; + cursor: default; +} + +#p-personal li { + z-index: 0; + border: none; + padding: 0; + display: inline; + color: #2f6fab; + margin-left: 1em; + line-height: 1.2em; + background: none; +} + +#p-personal li a { + text-decoration: none; + color: #005896; + padding-bottom: .2em; +} + +#p-personal li a:hover { + background-color: white; + text-decoration: none; +} + +#p-personal li.active a:hover { + background-color: transparent; +} + +/* The icon in front of the username / login link */ +li#pt-userpage, +li#pt-anonuserpage, +li#pt-login { + /* @embed */ + background: url(user.gif) top left no-repeat; + padding-left: 20px; +} + +#p-personal ul { + text-transform: lowercase; +} + +/* Don't lowercase username or IP addresses (IPv6) */ +li#pt-userpage, +li#pt-anonuserpage { + text-transform: none; +} + +#p-personal li.active { + font-weight: bold; +} + +/* +** the page-related actions- page/talk, edit etc +*/ +#p-cactions { + position: absolute; + top: 1.3em; + left: 11.5em; + margin: 0; + white-space: nowrap; + width: 76%; + line-height: 1.1em; + overflow: visible; + background: none; + border-collapse: collapse; + padding-left: 1em; + font-size: 95%; +} + +#p-cactions ul { + list-style-type: none; + list-style-image: none; +} + +#p-cactions li { + display: inline; + border: 1px solid #aaa; + border-bottom: none; + padding: 0 0 1em 0; + margin: 0 .3em 0 0; + overflow: visible; + background: white; +} + +#p-cactions li.selected { + border-color: #fabd23; + font-weight: bold; +} + +#p-cactions li a { + background-color: #fbfbfb; + color: #002bb8; + border: none; + padding: 0 .8em .3em; + position: relative; + z-index: 0; + margin: 0; + text-decoration: none; +} + +#p-cactions li.selected a { + z-index: 3; + background-color: white; +} + +#p-cactions .new a { + color: #ba0000; +} + +#p-cactions li a:hover { + z-index: 3; + text-decoration: none; + background-color: white; +} + +#p-cactions h3 { + display: none; +} + +#p-cactions li.istalk { + margin-right: 0; +} + +#p-cactions li.istalk a { + padding-right: .5em; +} + +#p-cactions #ca-addsection a { + padding-left: .4em; + padding-right: .4em; +} + +/* offsets to distinguish the tab groups */ +li#ca-talk { + margin-right: 1.6em; +} + +li#ca-watch, +li#ca-unwatch, +li#ca-varlang-0, +li#ca-print { + margin-left: 1.6em; +} + +#p-cactions .pBody { + font-size: 1em; + background-color: transparent; + color: inherit; + border-collapse: inherit; + border: 0; + padding: 0; +} + +#p-cactions li a { + text-transform: lowercase; +} + +#p-lang { + position: relative; + z-index: 3; +} + +/* Override text-transform on languages where capitalization is significant */ +.capitalize-all-nouns .portlet h3, +.capitalize-all-nouns #p-personal ul, +.capitalize-all-nouns #p-cactions ul li a { + text-transform: none; +} + +/* TODO: #t-iscite is only used by the Cite extension, come up with some + * system which allows extensions to add to this file on the fly + */ +#t-ispermalink, #t-iscite { + color: #999; +} + +/* +** footer +*/ +div#footer { + background-color: white; + border-top: 1px solid #fabd23; + border-bottom: 1px solid #fabd23; + margin: .6em 0 1em 0; + overflow: hidden; + padding: .4em 0 .3em 0; + text-align: center; + font-size: 90%; +} + +div#footer li { + display: inline; + margin: 0 1.3em; +} + +#f-poweredbyico, #f-copyrightico { + margin: 0 8px; + position: relative; + top: -2px; /* Bump it up just a tad */ +} + +#f-poweredbyico { + float: right; + height: 1%; +} + +#f-copyrightico { + float: left; + height: 1%; +} + +.mw-htmlform-submit { + font-weight: bold; + padding-left: .3em; + padding-right: .3em; + margin-right: 2em; +} + +/* js pref toc */ +#preftoc { + margin: 0; + padding: 0; + width: 100%; + clear: both; +} + +#preftoc li { + background-color: #f0f0f0; + color: #000; +} + +#preftoc li { + margin: 1px -2px 1px 2px; + float: left; + padding: 2px 0 3px 0; + border: 1px solid #fff; + border-right-color: #716f64; + border-bottom: 0; + position: relative; + white-space: nowrap; + list-style-type: none; + list-style-image: none; + z-index: 3; +} + +#preftoc li.selected { + font-weight: bold; + background-color: #f9f9f9; + border: 1px solid #aaa; + border-bottom: none; + cursor: default; + top: 1px; + padding-top: 2px; + margin-right: -3px; +} + +#preftoc > li.selected { + top: 2px; +} + +#preftoc a, +#preftoc a:active { + display: block; + color: #000; + padding: 0 .7em; + position: relative; + text-decoration: none; +} + +#preftoc li.selected a { + cursor: default; + text-decoration: none; +} + +#preferences { + margin: 0; + border: 1px solid #aaa; + clear: both; + padding: 1.5em; + background-color: #F9F9F9; +} + +.prefsection { + border: none; + padding: 0; + margin: 0; +} + +.prefsection legend { + font-weight: bold; +} + +.prefsection table, .prefsection legend { + background-color: #F9F9F9; +} + +.mainLegend { + display: none; +} + +td.htmlform-tip { + font-size: x-small; + padding: .2em 2em; + color: #666; +} + +.preferences-login { + clear: both; + margin-bottom: 1.5em; +} + +.prefcache { + font-size: 90%; + margin-top: 2em; +} + +#userloginprompt, #languagelinks { + font-size: 85%; +} + +#login-sectiontip { + font-size: 85%; + line-height: 1.2; + padding-top: 2em; +} + +#userloginlink a, #wpLoginattempt, #wpCreateaccount { + font-weight: bold; +} + +/** + * This was originally added by Gabriel Wicke in r3681 (committed on 25 May 2004) + * with the commit message "tweaks to page history". + * Unlike the other IE/Mac fixes that used to be present here, this seems to get + * applied on more modern browsers, so let's keep it here until someone has the + * time to properly test it out. + */ +#pagehistory li.selected { + position: relative; +} + +.redirectText { + font-size: 150%; + margin: 5px; +} + +div.patrollink { + clear: both; +} + +.sharedUploadNotice { + font-style: italic; +} + +span.updatedmarker { + color: black; + background-color: #0f0; +} + +.editExternally { + border: 1px solid gray; + background-color: #ffffff; + padding: 3px; + margin-top: 0.5em; + float: left; + font-size: small; + text-align: center; +} + +.editExternallyHelp { + font-style: italic; + color: gray; +} + +.toggle { + margin-left: 2em; + text-indent: -2em; +} + +/* @bug 1714 */ +input#wpSave, +input#wpDiff { + margin-right: 0.33em; +} + +#wpSave { + font-weight: bold; +} + +/* noarticletext */ +div.noarticletext { + border: 1px solid #ccc; + background: #fff; + padding: .2em 1em; + color: #000; +} + +div#searchTargetContainer { + left: 10px; + top: 10px; + width: 90%; + background: white; +} + +div#searchTarget { + padding: 3px; + margin: 5px; + background: #F0F0F0; + border: solid 1px blue; +} + +div#searchTarget ul li { + list-style-type: none; + list-style-image: none; +} + +div#searchTarget ul li:before { + color: orange; + content: "\00BB \0020"; +} + +div#searchTargetHide { + float: right; + border: solid 1px black; + background: #DCDCDC; + padding: 2px; +} + +#powersearch p { + margin-top: 0; +} + +div.multipageimagenavbox { + border: solid 1px silver; + padding: 4px; + margin: 1em; + background: #f0f0f0; +} + +div.multipageimagenavbox div.thumb { + border: none; + margin-left: 2em; + margin-right: 2em; +} + +div.multipageimagenavbox hr { + margin: 6px; +} + +table.multipageimage td { + text-align: center; +} + +.templatesUsed { + margin-top: 1.5em; +} + +.mw-summary-preview { + margin: 0.1em 0; +} + +/* Friendlier slave lag warnings */ +div.mw-lag-warn-normal, +div.mw-lag-warn-high { + padding: 3px; + text-align: center; + margin: 3px auto; +} + +div.mw-lag-warn-normal { + border: 1px solid #FFCC66; + background-color: #FFFFCC; +} + +div.mw-lag-warn-high { + font-weight: bold; + border: 2px solid #FF0033; + background-color: #FFCCCC; +} + +.MediaTransformError { + background-color: #ccc; + padding: 0.1em; +} + +.MediaTransformError td { + text-align: center; + vertical-align: middle; + font-size: 90%; +} + +/* Sometimes people don't want personal tools to be lowercase! */ +.no-text-transform { + text-transform: none; +} + +/* Tooltips are outside of the normal body code, so this helps make the size of the text sensible */ +.tipsy { + font-size: 127%; +} + +/* mediawiki.notification */ +.skin-monobook .mw-notification { + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.125); +} diff --git a/skins/Parabola/navbar.css b/skins/Parabola/navbar.css new file mode 100644 index 00000000..95e7575d --- /dev/null +++ b/skins/Parabola/navbar.css @@ -0,0 +1,24 @@ +/* + * GLOBAL NAVBAR + * We're forcing all generic selectors with !important + * to help prevent other stylesheets from interfering. + */ + +/* container for the entire bar */ +#navbar { height: 40px !important; padding: 10px 15px !important; background: #000 !important; border-bottom: 5px #787DAB solid !important; } +#navbarlogo { float: left !important; margin: -5px 0 0 0 !important; padding: 0 !important; height: 50px !important; width: 324px !important; background: url('logo.png') no-repeat !important; } + +/* move the heading/paragraph text offscreen */ +#navbarlogo p { margin: 0 !important; padding: 0 !important; text-indent: -9999px !important; } +#navbarlogo h1 { margin: 0 !important; padding: 0 !important; text-indent: -9999px !important; border-bottom: 0px !important; } + +/* make the link the same size as the logo */ +#navbarlogo a { display: block !important; height: 50px !important; width: 324px !important; } + +/* display the list inline, float it to the right and style it */ +#navbar ul { display: inline !important; float: right !important; list-style: none !important; margin: 0 !important; padding: 0 !important; } +#navbar ul li { float: left !important; font-size: 14px !important; font-family: sans-serif !important; line-height: 45px !important; padding-right: 15px !important; padding-left: 15px !important; } + +/* style the links */ +#navbar ul#navbarlist li a { color: #999; font-weight: bold !important; text-decoration: none !important; } +#navbar ul li a:hover { color: white !important; text-decoration: underline !important; } diff --git a/skins/Parabola/parabola.css b/skins/Parabola/parabola.css new file mode 100644 index 00000000..9d15dd6a --- /dev/null +++ b/skins/Parabola/parabola.css @@ -0,0 +1,178 @@ +/* general styling */ +body { + background: #f6f9fc; +} +body, +#content, +table, +h1, +h2, +h3, +h4, +h5, +pre, +code, +tt { + color: #222; +} +h1 { + font-weight: bold; +} +pre, +code, +tt { + background-color: #ebf1f5; + font-family: monospace; +} +pre { + border: 1px solid #bcd; + overflow: auto; +} +code, +tt { + /* Inline-block prevents code from wrapping when starting too close to the + end of a line; it also lets select the entire code line with a triple + click */ + display: inline-block; + padding: 0 0.3em; + /* A border would be inherited by the default style sheets, but we don't + want it */ + border-width: 0; + border-radius: 0; +} +ul, +.portlet ul { + list-style-image: none; +} +#bodyContent table { + border-collapse: collapse; + padding: 2px; +} +#bodyContent td { + padding: 2px; +} + +/* links (including page tabs and personal toolbar) */ +#bodyContent > div.mw-content-ltr a, +#bodyContent > div.mw-content-rtl a, +#wikiPreview > div.mw-content-ltr a, +#wikiPreview > div.mw-content-rtl a { + font-weight: bold; +} +#bodyContent #toc a, +#bodyContent .special li > a, +#bodyContent .special li span a, +#bodyContent #pagehistory a { + font-weight: normal; +} +a:link, +#toc a, +#p-cactions li a, +#p-personal li a, +#p-cactions li a:visited, +#p-personal li a:visited, +#bodyContent a.external, +#bodyContent a.extiw { + text-decoration: none; + outline: none; + color: #07b; +} +a:visited, +#bodyContent a:visited.external { + color: #666; +} +a:hover, +#p-personal li a:hover, +#bodyContent #toc a:hover, +#bodyContent a:hover.external { + text-decoration: underline; + background-color: transparent; + color: #999; +} +a:focus, +a:active, +#toc a:focus, +#toc a:active, +#p-cactions li a:focus, +#p-cactions li a:active, +#p-personal li a:focus, +#p-personal li a:active, +#bodyContent a:focus.external, +#bodyContent a:active.external, +#bodyContent a:focus.extiw, +#bodyContent a:active.extiw { + color: #e90 !important; +} +a.new, +#p-cactions .new a, +#p-personal a.new { + color: #b00 !important; +} + +/* bump down the personal toolbar (top menu) */ +#p-personal { + top: 5px; +} + +/* bump down the action tabs (page, discuss, edit, etc.) */ +#p-cactions { + top: 27px; +} + +/* bump down the main content to make room for navbar */ +#content { + top: 10px; +} + +/* shrink the content just enough to show off the borders */ +div#globalWrapper { + width: 99%; +} + +/* article Table of Contents */ +#toc, +.toc, +.mw-warning { + background-color: #f9faff; + border: 1px solid #d7dfe3; +} + +/* sidebar menus and content borders */ +.pBody { + border: 1px solid #ddd; +} +div#content { + border: 1px solid #ccc; +} + +/* disable default mediawiki logo and close the gap it leaves behind */ +#p-logo { + display: none !important; +} +div#column-one { + padding-top: 36px; +} + +/* disable footer logos TODO: see if this can be done in LocalSettings.php */ +#f-poweredbyico, +#f-copyrightico { + display: none; +} + +/* clean up the footer */ +div#footer { + color: #888; + background-color: transparent; + border-top: none; + border-bottom: none; +} + +/* bring footer text inline with content */ +#footer ul { + margin-left: 170px; +} + +/* highlight current website in the navbar */ +#navbar ul li.anb-selected a { + color: white !important; +} diff --git a/skins/Parabola/print.css b/skins/Parabola/print.css new file mode 100644 index 00000000..2c0e2093 --- /dev/null +++ b/skins/Parabola/print.css @@ -0,0 +1,3 @@ +#navbar { + display: none; +} diff --git a/skins/Parabola/required.gif b/skins/Parabola/required.gif Binary files differnew file mode 100644 index 00000000..bd719769 --- /dev/null +++ b/skins/Parabola/required.gif diff --git a/skins/Parabola/skin.json b/skins/Parabola/skin.json new file mode 100644 index 00000000..dc04491e --- /dev/null +++ b/skins/Parabola/skin.json @@ -0,0 +1,42 @@ +{ + "name": "Parabola", + "author": [ "Parabola Hackers, based on Pierre Schmitz (derivative work)" ], + "url": "https://www.parabola.nu", + "description": "MediaWiki skin based on Arch (the GNU/Linux distribution) and MonoBook", + "license-name": "GPL-2.0+", + "type": "skin", + "ValidSkinNames": { + "parabola": "Parabola" + }, + "SkinOOUIThemes": { + "parabola": "Apex" + }, + "ResourceModules": { + "skins.parabola.styles": { + "position": "top", + "styles": { + "main.css": { + "media": "screen" + }, + "navbar.css": { + "media": "screen" + }, + "parabola.css": { + "media": "screen" + }, + "print.css": { + "media": "print" + } + } + } + }, + "ResourceFileModulePaths": { + "localBasePath": "", + "remoteSkinPath": "Parabola" + }, + "AutoloadClasses": { + "Skin": "Skin.php", + "Template": "Template.php" + }, + "manifest_version": 1 +} diff --git a/skins/Parabola/user.gif b/skins/Parabola/user.gif Binary files differnew file mode 100644 index 00000000..34b4839d --- /dev/null +++ b/skins/Parabola/user.gif diff --git a/skins/Parabola/wiki-indexed.png b/skins/Parabola/wiki-indexed.png Binary files differnew file mode 100644 index 00000000..799ebac8 --- /dev/null +++ b/skins/Parabola/wiki-indexed.png diff --git a/skins/Parabola/wiki.png b/skins/Parabola/wiki.png Binary files differnew file mode 100644 index 00000000..8c421183 --- /dev/null +++ b/skins/Parabola/wiki.png |