This page serves to inventory and assess the mix of extensions that are in use for the DCS wiki. Code for "regular" extensions are hosted on Gerrit at the WMF (which is also mirrored to GitHub) with documentation at https://www.mediawiki.org/wiki. Code for the DCS extensions is in the private Debt Compliance GitHub repo; and the Organic Design extensions are in the 'MediaWiki' tree of the Organic Design GitHub repo.
Contents
Mime Report
In the DCS custom extensions, here are the file counts by file-type:
14 .css 6 .gif 1 .ico 1 .jpg 9 .js 43 .json 69 .php 8 .pl 4 .png 1 .svg
Source Code Summary
SLOC | Directory | SLOC-by-Language (Sorted) |
---|---|---|
1873 | DcsJobAdmin | perl=985,php=779,javascript=109 |
751 | DcsCommon | php=548,javascript=203 |
551 | DcsSearch | javascript=282,php=269 |
481 | DcsNamespaces | php=425,javascript=56 |
379 | DcsAmmendments | php=203,javascript=176 |
315 | DcsTitle | php=315 |
269 | DcsSingleSignOn | php=269 |
258 | DcsSection | php=258 |
230 | DcsNuke | php=230 |
208 | DcsComplianceChecklist | php=208 |
178 | DcsExportTerms | php=178 |
168 | DcsComplianceChecklist2 | php=168 |
158 | DcsGroupAdmin | php=158 |
139 | DcsWatchComments | php=139 |
123 | DcsUserDisable | php=78,javascript=45 |
110 | DcsLoanPages | php=110 |
104 | DcsBaskets | php=57,javascript=47 |
90 | DcsSkin | php=90 |
88 | DcsFindTitle | php=88 |
70 | DcsUploadedFiles | php=70 |
40 | DcsEmailLink | php=40 |
0 | DcsSection2 | (none) |
php: | 4680 (71.09%) |
---|---|
perl: | 985 (14.96%) |
javascript: | 918 (13.95%) |
Total Physical Source Lines of Code (SLOC) = 6,583
Development Effort Estimate, Person-Years (Person-Months) = 1.45 (17.36)
(Basic COCOMO model, Person-Months = 2.4 * (KSLOC**1.05))
Schedule Estimate, Years (Months) = 0.62 (7.40)
(Basic COCOMO model, Months = 2.5 * (person-months**0.38))
Estimated Average Number of Developers (Effort/Schedule) = 2.35
Total Estimated Cost to Develop = $ 195,428
(average salary = $56,286/year, overhead = 2.40).
=== And for the 'tools' directory ===
!SLOC ! Directory ! SLOC-by-Language (Sorted) | ||
---|---|---|
4817 | top_dir | perl=3838,php=648,sh=331 |
345 | crowdrating.org | perl=345 |
172 | jobs | perl=121,php=51 |
63 | bm-gateway | python=63 |
4 | meditation | perl=4 |
3 | docker | sh=3 |
0 | atom | (none) |
0 | icons | (none) |
0 | nginx | (none) |
perl: | 4308 (79.72%) |
---|---|
php: | 699 (12.93%) |
sh: | 334 (6.18%) |
python: | 63 (1.17%) |
Total Physical Source Lines of Code (SLOC) = 5,404 Development Effort Estimate, Person-Years (Person-Months) = 1.18 (14.11) (Basic COCOMO model, Person-Months = 2.4 * (KSLOC**1.05)) Schedule Estimate, Years (Months) = 0.57 (6.84) (Basic COCOMO model, Months = 2.5 * (person-months**0.38)) Estimated Average Number of Developers (Effort/Schedule) = 2.06 Total Estimated Cost to Develop = $ 158,852 (average salary = $56,286/year, overhead = 2.40).
"Regular" Extensions
Extension | Used by WMF projects? | What does it do? | Maintenance / Last release | Used by Meza | Used by QualityBox | Alternative Extension |
---|---|---|---|---|---|---|
CirrusSearch | YES | Extends the core search for MediaWiki to be able to use Elasticsearch | Continuous | Yes | Yes | |
Cite | Bundled | Provides <references /> and <ref></ref> tags | Continuous | Yes | Yes | |
CiteThisPage | Bundled | Provides Cite This Page Special Page. | Continuous | No | Yes | UNUSED |
ConfirmEdit | Bundled | Adds CAPTCHAs for page saves and other user actions to protect against spam and password-guessing | Continuous | No | Yes | UNUSED |
Elastica | YES | Base Elasticsearch functionality by providing the Elastica library; required by CirrusSearch. | Continuous | Yes | Yes | |
Gadgets | Bundled | Provides a way for users to pick JavaScript or CSS based "gadgets" that other wiki users provide. | Continuous | No | Yes | UNUSED |
ImageMap | Bundled | The ImageMap extension allows clickable image maps. | Continuous | Yes | Yes | UNUSED |
InputBox | Bundled | The InputBox extension adds already created HTML forms to wiki pages. | Continuous | Yes | Yes | UNUSED |
Interwiki | Bundled | The Interwiki extension adds the "Special:Interwiki" page to MediaWiki, to view and edit the interwiki table, and a log of any actions made with it. | Continuous | Yes | Yes | UNUSED |
LocalisationUpdate | Bundled | allows to update the localizations for MediaWiki messages at any time, without needing to upgrade the MediaWiki software. | Continuous | No | No | UNUSED |
Nuke | Bundled | The Nuke extension makes it possible for sysops to mass delete pages. | Continuous | No | Yes | For whatever reason, the DCSNuke extension intercepts page requests for the Nuke special page. DCSNuke has no added functionality. The DCSNuke code is roughly equivalent to the REL1_20 release of Nuke; and the current Nuke extension offers more functionality. I thought that potentially the reason to use a cloned extension was to totally customize the interface language strings, but that's not the case[1]. Remove DCSNuke. |
ParserFunctions | Bundled? | What does it do? | Maintenance / Last release | Meza? | QB? | UNUSED? |
PdfHandler | Bundled? | What does it do? | Maintenance / Last release | Meza? | QB? | UNUSED? |
PipeEscape | Bundled? | What does it do? | Maintenance / Last release | Meza? | QB? | UNUSED? |
Poem | Bundled? | What does it do? | Maintenance / Last release | Meza? | QB? | UNUSED? |
Renameuser | Bundled? | What does it do? | Maintenance / Last release | Meza? | QB? | UNUSED? |
SimpleMathJax | Bundled? | What does it do? | Maintenance / Last release | Meza? | QB? | UNUSED? |
SpamBlacklist | Bundled? | What does it do? | Maintenance / Last release | Meza? | QB? | UNUSED? |
SyntaxHighlight_GeSHi | Bundled? | What does it do? | Maintenance / Last release | Meza? | QB? | UNUSED? |
TitleBlacklist | Bundled? | What does it do? | Maintenance / Last release | Meza? | QB? | UNUSED? |
WikiEditor | Bundled? | What does it do? | Maintenance / Last release | Meza? | QB? | UNUSED? |
Custom DCS Extensions
Extension | Purpose | Last release | Confirm used? + notes |
---|---|---|---|
DcsAmmendments | Adds ammendments section to DCS loan pages. Sysop (only) can add/delete/edit/re-order (up/down) the ammendments; UX implemented in JavaScript. Extends the API with the same functions. Adds new log type: amendments; and logs all actions. | Jan 2018 - new sort functionality ready for testing | yes |
DcsBaskets | purpose? | release? | yes |
DcsCommon | https://github.com/debtcompliance/mediawiki/wiki/Extensions#dcscommon | Cookie handling was added on June 14, 2017. The code (the cookie.js part) is from a project called js-cookie. So, we could update that code. Or, we could replace it with internal functions so we don't rely on 3rd party code. See the API documentation for mw.cookie (Does not use the $wgCookieSecure configuration variable since 'detect' could not work with
ResourceLoaderStartUpModule; as module cache is not fragmented by protocol.) The mw.cookie (JavaScript) code is syntactically and functionally similar to the server-side cookie API (`WebRequest#getCookie` and `WebResponse#setcookie`). https://www.mediawiki.org/wiki/Manual:Hooks/UserSetCookies is deprecated as of REL1_27, and session-handling extensions should be subclassing CookieSessionProvider. $wgSessionProviders The class creates methods for outputting messages, notices, dates, getting raw content. It loads some javascript (through resource loader). That javascript could more easily be maintained as MediaWiki:Common.js? although there may be load order issues. The JS defines like-named methods with varying features. E.g.
The series of extensions create DcsInit() (in DcsEmailLink), DcsBlockPageAccess(), and DcsReady() hook functions. DcsReady() implementations are different across different classes from Basket to DcsSingleSignOn. |
The 'common' extension creates a singleton instance of the DcsCommon class that does a bunch of things according to notes in the wiki. The permissions shouldn't really be hidden away in the class code. They should simply be in LocalSettings.php. onUserGetRights() is a big function. The 'self:cache' is mostly called in connection with 'isLocal'. Any true caching should just be offloaded to APC and memcache. Although there is no 'dcs' table in the database on dcsTemporary, the setData() method is used throughout the codebase so should update wiki about where this data is stored. |
DcsComplianceChecklist | purpose? | release? | yes |
DcsComplianceChecklist2 | purpose? | release? | only used in the checktest subdomain, or when `wgLocalTesting`; intention is to use a timestamp condition |
DcsEmailLink | purpose? | release? | yes |
DcsExportTerms | purpose? | release? | yes |
DcsFindTitle | purpose? | release? | yes |
DcsGroupAdmin | purpose? | release? | yes |
DcsJobAdmin | purpose? | release? | yes |
DcsLoanPages | purpose? | release? | yes |
DcsNamespaces | purpose? | release? | yes |
DcsNuke | purpose? | release? | yes. REPLACE with standard Nuke extension |
DcsSearch | purpose? | release? | yes |
DcsSection | purpose? | release? | yes |
DcsSection2 | purpose? | release? | NO |
DcsSingleSignOn | purpose? | release? | yes |
DcsSkin | purpose? | release? | usage? |
DcsTitle | purpose? | release? | yes |
DcsUploadedFiles | purpose? | release? | yes |
DcsUserDisable | purpose? | release? | yes |
DcsWatchComments | purpose? | release? | yes |
Organic Design extensions
- Accordian
- AddLinkClasses
- AjaxComments
- ArticleProperties
- Bliki
- CodeTidy
- CurrentPages
- CurrentUsers
- Download
- EmailPage
- EmailToWiki
- EximMailList
- ExtraMagic
- FileAttach
- FormMailer
- HighlightJS
- InterWiki
- jQueryUpload
- jQueryUpload2
- Ligmincha
- LinkAttributes
- LinkTree
- NukeDPL
- ODMaps
- OrganicDesign
- PdfBook
- RecentActivity
- SimpleCalendar
- TransformChanges
- TreeAndMenu
- UserLoginLog
- UserProfiles
- Variables
- WebSocket
- WikiaAdmin
- WikiaInfo
Special:Version
This is what you'll see reported by the "Special:Version" page of the wiki
Installed skins
Skin | Version | License | Description | Authors |
Cologne Blue | – | GPL-2.0+ | A lightweight skin with minimal formatting | Lee Daniel Crocker and others |
DcsSkin | 3.0.2, 2016-07-01 | Copyright © 2007-2018 Debt Compliance Services | DCS skin desgined to match the QAR app | Aran Dunkley |
Modern | – | GPL-2.0+ | A blue/gray theme with sidebar and top bar. Derived from MonoBook | River Tarnell and others |
MonoBook | – | GPL-2.0+ | The classic MediaWiki skin since 2004, named after the black-and-white photo of a book in the page background | Gabriel Wicke and others |
Vector | – | GPL-2.0+ | Modern version of MonoBook with fresh look and many usability improvements | Trevor Parscal, Roan Kattouw and others
|
Installed extensions
Special pages | ||||
Extension | Version | License | Description | Authors |
DcsGroupAdmin | 1.2.0, 2015-06-26 | Copyright © 2007-2018 Debt Compliance Services | A special page for managing DCS groups and access | Aran Dunkley |
DcsJobAdmin | 4.0.0, 2017-06-28 | Copyright © 2007-2018 Debt Compliance Services | A special page for managing DCS jobs that run in the background | Aran Dunkley |
DcsSearch | 2.4.2, 2017-01-27 | Copyright © 2007-2018 Debt Compliance Services | Renders the search dropdown with favourite terms list, and allows users to track the pages they've visited from search results of their favorite terms | Aran Dunkley |
DcsUploadedFiles | 1.3.0, 2017-07-08 | Copyright © 2007-2018 Debt Compliance Services | A special page for listing the files uploaded to loan pages | Aran Dunkley |
EmailPage | 2.4.4, 2017-04-26 | GPL-2.0+ | Send rendered HTML page to an e-mail address or list of addresses using phpmailer | Aran Dunkley |
jQueryUpload | 1.4.5, 2016-08-28 | GNU General Public Licence 2.0 or later | Allows files to be uploaded to the wiki or to specific pages using the jQueryFileUpload module | Aran Dunkley and Sebastian Tschan |
Nuke | 1.2.0 | GPL-2.0+ | Gives administrators the ability to mass delete pages | Brion Vibber and Jeroen De Dauw |
Parser hooks | ||||
Extension | Version | License | Description | Authors |
DcsComplianceChecklist | 1.24.2, 2016-05-10 | Copyright © 2007-2018 Debt Compliance Services | Creates the #ComplianceChecklist parser-function | Aran Dunkley |
ExtraMagic | 3.8.0, 2015-010-04 | GNU General Public Licence 2.0 or later | Adds useful variables and parser functions | Aran Dunkley |
ParserFunctions | 1.6.0 | GPL-2.0 | Enhance parser with logical functions | Tim Starling, Robert Rohde, Ross McClure and Juraj Simlovic |
PdfBook | 1.5.2, 2017-05-15 | GNU General Public Licence 2.0 or later | pdfbook-desc | Aran Dunkley |
Pipe Escape | 2.0.0. (a36d2d6)23:54, 4 May 2016 | GPL-2.0+ | Parser function #! for when you want a pipe character to be just a pipe character | David M. Sledge and Purodha Blissenbach |
TreeAndMenu | 4.2.1, 2016-05-24 | GNU General Public Licence 2.0 or later | Adds #tree and #menu parser functions which contain bullet-lists to be rendered as collapsible treeviews or dropdown menus. The treeviews use the FancyTree JavaScript tree menu, and the dropdown menus use Son of Suckerfish | Aran Dunkley |
Other | ||||
Extension | Version | License | Description | Authors |
AjaxComments | 2.7.2, 2017-03-08 | GNU General Public Licence 2.0 or later | Add comments to the end of the page that can be edited, deleted or replied to instead of using the talk pages | Aran Dunkley |
CirrusSearch | 0.2 (dcb0cf9)21:22, 4 May 2016 | GPL-2.0+ | Elasticsearch-powered search for MediaWiki | Nik Everett, Chad Horohoe, Erik Bernhardson and others |
DcsAmmendments | 1.1.0, 2018-01-20 | Copyright © 2015-2018 Debt Compliance Services | Adds ammendments section to DCS loan pages | Aran Dunkley |
DcsBaskets | 1.4.2, 2016-08-08 | Copyright © 2007-2018 Debt Compliance Services | Allows fields in Baskets table to be updated via AJAX | Aran Dunkley |
DcsCommon | 5.1.1, 2018-01-25 | Copyright © 2007-2018 Debt Compliance Services | DCS common functionality | Aran Dunkley |
DcsEmailLink | 0.0.1, 2017-07-12 | Copyright © 2017-2018 Debt Compliance Services | Adds a new "EmailLink" action which can match a title case-insensitvely | Aran Dunkley |
DcsExportTerms | 2.0.1, 2017-03-20 | Copyright © 2007-2018 Debt Compliance Services | Add an export action to the that allows terms to be downloaded in CSV format | Aran Dunkley |
DcsFindTitle | 1.1.0, 2017-01-30 | Copyright © 2007-2018 Debt Compliance Services | Adds a new "find" action which can match a title case-insensitvely | Aran Dunkley |
DcsLoanPages | 2.5.2, 2016-05-17 | Copyright © 2007-2018 Debt Compliance Services | Adds breadcrumbs, comments and backlinks to DCS loan pages | Aran Dunkley |
DcsNamespaces | 2.5.0, 2015-12-12 | Copyright © 2007-2018 Debt Compliance Services | A special page for administering loan documents in their own namepsaces | Aran Dunkley |
DcsNuke | 1.2.2, 2017-01-19 | Copyright © 2007-2018 Debt Compliance Services | Gives administrators the ability to mass delete pages | Aran Dunkley |
DcsSection2 | 2.0.0, 2018-01-12 | Copyright © 2007-2018 Debt Compliance Services | DCS article section handling extension - new version 2 with individual sub-section article support removed | Aran Dunkley |
DcsSingleSignOn | 5.1.5, 2017-07-14 | Copyright © 2007-2018 Debt Compliance Services | Allows the Rails application to manage the login, logout and session expiry for the DCS wikis | Aran Dunkley |
DcsTitle | 1.0.0, 2017-02-13 | Copyright © 2017-2018 Debt Compliance Services | Creates a new DCS-specific Title class that includes TOC info such as sortkey, next and prev | Aran Dunkley |
DcsUserDisable | 1.3.0, 2015-06-26 | Copyright © 2007-2018 Debt Compliance Services | Adds acount enable/disable links to the user list | Aran Dunkley |
DcsWatchComments | 1.4, 2017-03-09 | Copyright © 2007-2018 Debt Compliance Services | Removes default watchlist functionality and makes all loan comment articles auto-watched | Aran Dunkley |
Elastica | 1.3.0.0 (4607acf)22:52, 4 May 2016 | GPL-2.0+ | Base Elasticsearch functionality for other extensions by providing Elastica library | Nik Everett and Chad Horohoe |
WikiEditor | 0.5.0 | GPL-2.0+ | Provides an extendable wikitext editing interface and many feature-providing modules | Derk-Jan Hartman, Trevor Parscal, Roan Kattouw, Nimish Gautam and Adam Miller |