Difference between revisions of "Extension inventory"

From Freephile Wiki
Jump to navigation Jump to search
(Restating goal for removal of DcsNuke)
(add column to number the extension list)
Line 24: Line 24:
  
 
{| class="wikitable sortable"
 
{| class="wikitable sortable"
 +
!#
 
!Extension
 
!Extension
 
!What does it do? (explain functionality by role: regular-user, talk-editor, client-admin, or sysop)
 
!What does it do? (explain functionality by role: regular-user, talk-editor, client-admin, or sysop)
Line 32: Line 33:
 
!Example / Notes / Alternatives?
 
!Example / Notes / Alternatives?
 
|-
 
|-
 +
|1
 
|[[mw:Extension:CirrusSearch|CirrusSearch]]
 
|[[mw:Extension:CirrusSearch|CirrusSearch]]
 
|Extends the core search for MediaWiki to be able to use [[Elasticsearch]]. Elasticsearch provides a much better search capability to all users of the wiki. In particular, it allows DCS to index documents (file uploads).
 
|Extends the core search for MediaWiki to be able to use [[Elasticsearch]]. Elasticsearch provides a much better search capability to all users of the wiki. In particular, it allows DCS to index documents (file uploads).
Line 40: Line 42:
 
|CirrusSearch (Elasticsearch) is vital to the ability to index uploaded files
 
|CirrusSearch (Elasticsearch) is vital to the ability to index uploaded files
 
|-
 
|-
 +
|2
 
|[[mw:Extension:Elastica|Elastica]]
 
|[[mw:Extension:Elastica|Elastica]]
 
|Base Elasticsearch functionality by providing the Elastica library; required by CirrusSearch.
 
|Base Elasticsearch functionality by providing the Elastica library; required by CirrusSearch.
Line 48: Line 51:
 
|Required as part of Search
 
|Required as part of Search
 
|-
 
|-
 +
|3
 
|[[mw:Extension:Nuke|Nuke]]
 
|[[mw:Extension:Nuke|Nuke]]
 
|The Nuke extension makes it possible for sysops to [https://demo.qualitybox.us/wiki/Special:Nuke mass delete pages].
 
|The Nuke extension makes it possible for sysops to [https://demo.qualitybox.us/wiki/Special:Nuke mass delete pages].
Line 59: Line 63:
  
 
The custom DcsNuke extension does not provide features different from the regular Nuke extension. The regular Nuke extension shall be included for DCS.
 
The custom DcsNuke extension does not provide features different from the regular Nuke extension. The regular Nuke extension shall be included for DCS.
 
 
|-
 
|-
 +
|4
 
|[[mw:Extension:ParserFunctions|ParserFunctions]]
 
|[[mw:Extension:ParserFunctions|ParserFunctions]]
 
|Enhances the wikitext parser with helpful functions, mostly related to logic and string-handling.
 
|Enhances the wikitext parser with helpful functions, mostly related to logic and string-handling.
Line 69: Line 73:
 
|At the bottom of the Special:Version page, you'll see a list of "Parser Function Hooks" that includes the following custom parser functions defined by DCS extensions: '''amendments''', '''companycomments''', '''compliancechecklist''', '''loans''', '''loansinuse''', '''section'''. Many of the others are provided by the Parser Functions extension: if, ifeq, switch, ifexist, ifexpr, iferror, time, timel, expr, rel2abs, titleparts, len, pos, rpos, sub, count, replace, explode
 
|At the bottom of the Special:Version page, you'll see a list of "Parser Function Hooks" that includes the following custom parser functions defined by DCS extensions: '''amendments''', '''companycomments''', '''compliancechecklist''', '''loans''', '''loansinuse''', '''section'''. Many of the others are provided by the Parser Functions extension: if, ifeq, switch, ifexist, ifexpr, iferror, time, timel, expr, rel2abs, titleparts, len, pos, rpos, sub, count, replace, explode
 
|-
 
|-
 +
|5
 
|[[mw:Extension:Pipe_Escape|PipeEscape]]
 
|[[mw:Extension:Pipe_Escape|PipeEscape]]
 
|The Pipe Escape extension allows for pipe characters in parser function arguments (and template argument calls) avoid being interpreted as an argument delimiter. This is primarily for the purpose of using wiki tables (or parts thereof) inside parser function calls or templates.
 
|The Pipe Escape extension allows for pipe characters in parser function arguments (and template argument calls) avoid being interpreted as an argument delimiter. This is primarily for the purpose of using wiki tables (or parts thereof) inside parser function calls or templates.
Line 77: Line 82:
 
|Included via DcsSetup
 
|Included via DcsSetup
 
|-
 
|-
 +
|6
 
|[[mw:Extension:SimpleMathJax|SimpleMathJax]]
 
|[[mw:Extension:SimpleMathJax|SimpleMathJax]]
 
|The SimpleMathJax extension enables MathJax, a Javascript library, for typesetting TeX formula in MediaWiki inside math environments. This extension will load resources from cdnjs.cloudflare.com on all wiki pages that have math or chem tags.
 
|The SimpleMathJax extension enables MathJax, a Javascript library, for typesetting TeX formula in MediaWiki inside math environments. This extension will load resources from cdnjs.cloudflare.com on all wiki pages that have math or chem tags.
Line 85: Line 91:
 
|included by DcsSetup.php
 
|included by DcsSetup.php
 
|-
 
|-
 +
|7
 
|[[mw:Extension:WikiEditor|WikiEditor]]
 
|[[mw:Extension:WikiEditor|WikiEditor]]
 
|The WikiEditor extension provides an improved interface for editing wikitext. It is the wikitext editing interface that Wikipedia started using in 2010 for desktop users, and so it is sometimes called the "2010 wikitext editor".
 
|The WikiEditor extension provides an improved interface for editing wikitext. It is the wikitext editing interface that Wikipedia started using in 2010 for desktop users, and so it is sometimes called the "2010 wikitext editor".
Line 93: Line 100:
 
|
 
|
 
|-
 
|-
 +
|8
 
|[https://github.com/debtcompliance/mediawiki/wiki/Extensions#dcsamendments DcsAmmendments]
 
|[https://github.com/debtcompliance/mediawiki/wiki/Extensions#dcsamendments DcsAmmendments]
 
|Adds ammendments section to DCS loan pages. Sysop (only) can add/delete/edit/re-order (up/down) the ammendments; UX [https://github.com/debtcompliance/mediawiki/blob/master/extensions/DcsAmmendments/modules/dcsammendments.js implemented in JavaScript]. Extends the API with the same functions. Adds new log type: amendments; and logs all actions.
 
|Adds ammendments section to DCS loan pages. Sysop (only) can add/delete/edit/re-order (up/down) the ammendments; UX [https://github.com/debtcompliance/mediawiki/blob/master/extensions/DcsAmmendments/modules/dcsammendments.js implemented in JavaScript]. Extends the API with the same functions. Adds new log type: amendments; and logs all actions.
Line 101: Line 109:
 
|https://clienttest.dm.dcstemporary.com/ARCA14:1.5_Time_References
 
|https://clienttest.dm.dcstemporary.com/ARCA14:1.5_Time_References
 
|-
 
|-
 +
|9
 
|[https://github.com/debtcompliance/mediawiki/wiki/Extensions#dcsbaskets DcsBaskets]
 
|[https://github.com/debtcompliance/mediawiki/wiki/Extensions#dcsbaskets DcsBaskets]
 
|This extension allows the utilization column of the Baskets tables to be edited directly using AJAX and saving values into 'basket' tables rather than in the traditional wiki-text revision tables.
 
|This extension allows the utilization column of the Baskets tables to be edited directly using AJAX and saving values into 'basket' tables rather than in the traditional wiki-text revision tables.
Line 111: Line 120:
 
'''We've tested the Visual Editor and found it to be to "clunky" for practical use, that was a year or so back, but based on my own experience I think it would still be considered that way if it was tested again now'''
 
'''We've tested the Visual Editor and found it to be to "clunky" for practical use, that was a year or so back, but based on my own experience I think it would still be considered that way if it was tested again now'''
 
|-
 
|-
 +
|10
 
|[https://github.com/debtcompliance/mediawiki/wiki/Extensions#dcscommon DcsCommon]
 
|[https://github.com/debtcompliance/mediawiki/wiki/Extensions#dcscommon DcsCommon]
 
|Cookie handling was [https://github.com/debtcompliance/mediawiki/commit/41b4c2a9af447c25143da7e39d959dae3affd0c8#diff-dfec3a4f5a263c72b06f5ceafcac3408 added on June 14, 2017]. The code (the cookie.js part) is from a project called [https://github.com/js-cookie/js-cookie/blob/master/src/js.cookie.js 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 [https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw.cookie mw.cookie] (Does '''not''' use the $wgCookieSecure configuration variable since 'detect' could not work with
 
|Cookie handling was [https://github.com/debtcompliance/mediawiki/commit/41b4c2a9af447c25143da7e39d959dae3affd0c8#diff-dfec3a4f5a263c72b06f5ceafcac3408 added on June 14, 2017]. The code (the cookie.js part) is from a project called [https://github.com/js-cookie/js-cookie/blob/master/src/js.cookie.js 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 [https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw.cookie mw.cookie] (Does '''not''' use the $wgCookieSecure configuration variable since 'detect' could not work with
Line 132: Line 142:
 
|pervasive
 
|pervasive
 
|-
 
|-
 +
|11
 
|[https://github.com/debtcompliance/mediawiki/wiki/Compliance-Checklist DcsComplianceChecklist]
 
|[https://github.com/debtcompliance/mediawiki/wiki/Compliance-Checklist DcsComplianceChecklist]
 
|Provides a dropdown list of loans and responsibility terms by which the table can be filtered on the Checklist page (by convention). The parser function creates the page contents and form controls.
 
|Provides a dropdown list of loans and responsibility terms by which the table can be filtered on the Checklist page (by convention). The parser function creates the page contents and form controls.
Line 140: Line 151:
 
|e.g. https://clienttest.dm.dcstemporary.com/Checklist
 
|e.g. https://clienttest.dm.dcstemporary.com/Checklist
 
|-
 
|-
 +
|12
 
|DcsComplianceChecklist2
 
|DcsComplianceChecklist2
 
|purpose?
 
|purpose?
Line 150: Line 162:
 
'''This is in progress, the requirements of the checklist are simpler now and version 2 is just about stripping out a bunch of obsolete functionality.'''
 
'''This is in progress, the requirements of the checklist are simpler now and version 2 is just about stripping out a bunch of obsolete functionality.'''
 
|-
 
|-
 +
|13
 
|[https://github.com/debtcompliance/mediawiki/tree/master/extensions/DcsEmailLink DcsEmailLink]
 
|[https://github.com/debtcompliance/mediawiki/tree/master/extensions/DcsEmailLink DcsEmailLink]
 
|Allows you to send a link to a page in the wiki. Activated by the "Email Link" item in the primary navigation across the top of the page. Similar to the "Email Page" extension by Aran, which is also used.
 
|Allows you to send a link to a page in the wiki. Activated by the "Email Link" item in the primary navigation across the top of the page. Similar to the "Email Page" extension by Aran, which is also used.
Line 158: Line 171:
 
|visit any page
 
|visit any page
 
|-
 
|-
 +
|14
 
|[https://github.com/debtcompliance/mediawiki/wiki/Extensions#dcsexportterms DcsExportTerms]
 
|[https://github.com/debtcompliance/mediawiki/wiki/Extensions#dcsexportterms DcsExportTerms]
 
|Allows terms to be downloaded in Comma Separated Value (CSV) format. CSV is easily imported to a spreadsheet.
 
|Allows terms to be downloaded in Comma Separated Value (CSV) format. CSV is easily imported to a spreadsheet.
Line 166: Line 180:
 
|Visit https://clienttest.dm.dcstemporary.com/Category:Terms and you will see a "Export Terms" action in the primary navigation across the top of the page.
 
|Visit https://clienttest.dm.dcstemporary.com/Category:Terms and you will see a "Export Terms" action in the primary navigation across the top of the page.
 
|-
 
|-
 +
|15
 
|[https://github.com/debtcompliance/mediawiki/wiki/Extensions#dcsfindtitle DcsFindTitle]
 
|[https://github.com/debtcompliance/mediawiki/wiki/Extensions#dcsfindtitle DcsFindTitle]
 
|helps to find a title regardless of case-sensitivity of the system.
 
|helps to find a title regardless of case-sensitivity of the system.
Line 176: Line 191:
 
'''This uses ApiBeforeMain and APIAfterExecute hooks to modify the API query prop=info to make it case-insensitive.'''
 
'''This uses ApiBeforeMain and APIAfterExecute hooks to modify the API query prop=info to make it case-insensitive.'''
 
|-
 
|-
 +
|16
 
|[https://github.com/debtcompliance/mediawiki/wiki/Extensions#dcsgroupadmin DcsGroupAdmin]
 
|[https://github.com/debtcompliance/mediawiki/wiki/Extensions#dcsgroupadmin DcsGroupAdmin]
 
|Leverages the DcsBlockPageAccess hook to allow/disallow access to files and namespaces.
 
|Leverages the DcsBlockPageAccess hook to allow/disallow access to files and namespaces.
Line 184: Line 200:
 
|https://clienttest.dm.dcstemporary.com/Special:DcsGroupAdmin/equality
 
|https://clienttest.dm.dcstemporary.com/Special:DcsGroupAdmin/equality
 
|-
 
|-
 +
|17
 
|[https://github.com/debtcompliance/mediawiki/tree/master/extensions/DcsJobAdmin DcsJobAdmin]
 
|[https://github.com/debtcompliance/mediawiki/tree/master/extensions/DcsJobAdmin DcsJobAdmin]
 
|See [https://github.com/debtcompliance/mediawiki/wiki/Background-jobs Background info on Background jobs]. Creates a Special Page [https://clienttest.dm.dcstemporary.com/Special:DcsJobAdmin Special:DcsJobAdmin] where you can start a new job; or view current and historical jobs.  Each job type loads it's own form into the Admin page. The job runner extends the Maintenance class, and loops over running jobs to provide some progress reporting. It saves the most recent 10 jobs to a 'history' list.
 
|See [https://github.com/debtcompliance/mediawiki/wiki/Background-jobs Background info on Background jobs]. Creates a Special Page [https://clienttest.dm.dcstemporary.com/Special:DcsJobAdmin Special:DcsJobAdmin] where you can start a new job; or view current and historical jobs.  Each job type loads it's own form into the Admin page. The job runner extends the Maintenance class, and loops over running jobs to provide some progress reporting. It saves the most recent 10 jobs to a 'history' list.
Line 214: Line 231:
 
|
 
|
 
|-
 
|-
 +
|18
 
|[https://github.com/debtcompliance/mediawiki/wiki/Extensions#dcsloanpages DcsLoanPages]
 
|[https://github.com/debtcompliance/mediawiki/wiki/Extensions#dcsloanpages DcsLoanPages]
 
|creates "backlinks" which are links to content that contain a particular keyword or phrase found in a loan document. It also creates the <nowiki>"< Prev" and "Next >"</nowiki> navigation links (called 'breadcrumbs' in the code, but actually these are 'pager' links not breadcrumbs).
 
|creates "backlinks" which are links to content that contain a particular keyword or phrase found in a loan document. It also creates the <nowiki>"< Prev" and "Next >"</nowiki> navigation links (called 'breadcrumbs' in the code, but actually these are 'pager' links not breadcrumbs).
Line 224: Line 242:
 
'''They wanted the backlinks at the bottom of the page not in a separate special page'''
 
'''They wanted the backlinks at the bottom of the page not in a separate special page'''
 
|-
 
|-
 +
|19
 
|[https://github.com/debtcompliance/mediawiki/wiki/Extensions#dcsnamespaces DcsNamespaces]
 
|[https://github.com/debtcompliance/mediawiki/wiki/Extensions#dcsnamespaces DcsNamespaces]
 
|Manages the segregation of loan documents into their own separate namespaces. Also provides some functionality around moving/deleting/renaming namespaces via the https://clienttest.dm.dcstemporary.com/Special:DcsNamespaces special page.
 
|Manages the segregation of loan documents into their own separate namespaces. Also provides some functionality around moving/deleting/renaming namespaces via the https://clienttest.dm.dcstemporary.com/Special:DcsNamespaces special page.
Line 232: Line 251:
 
|e.g. https://clienttest.dm.dcstemporary.com/Special:DcsNamespaces
 
|e.g. https://clienttest.dm.dcstemporary.com/Special:DcsNamespaces
 
|-
 
|-
 +
|20
 
|DcsNuke
 
|DcsNuke
 
|purpose?
 
|purpose?
Line 242: Line 262:
 
'''See notes in Nuke above, this is not a replica of Nuke'''
 
'''See notes in Nuke above, this is not a replica of Nuke'''
 
|-
 
|-
 +
|21
 
|DcsSearch
 
|DcsSearch
 
|Extends the Elasticsearch backend with additional business logic, and new features and UX (saving search "favorites" and indexing link paths traversed in connection with a search query). See https://github.com/debtcompliance/mediawiki/wiki/Search-&-sorting
 
|Extends the Elasticsearch backend with additional business logic, and new features and UX (saving search "favorites" and indexing link paths traversed in connection with a search query). See https://github.com/debtcompliance/mediawiki/wiki/Search-&-sorting
Line 250: Line 271:
 
|e.g. See the "heart" symbol next to the search box which implements the "favorites" feature.
 
|e.g. See the "heart" symbol next to the search box which implements the "favorites" feature.
 
|-
 
|-
 +
|22
 
|[https://github.com/debtcompliance/mediawiki/wiki/Extensions#dcssection DcsSection]
 
|[https://github.com/debtcompliance/mediawiki/wiki/Extensions#dcssection DcsSection]
 
|Allows for loan documents to be imported into the wiki as multiple articles.  Creates a 'section reference' capability.
 
|Allows for loan documents to be imported into the wiki as multiple articles.  Creates a 'section reference' capability.
Line 258: Line 280:
 
|
 
|
 
|-
 
|-
 +
|23
 
|DcsSection2
 
|DcsSection2
 
|purpose?
 
|purpose?
Line 268: Line 291:
 
'''There is a lot of obsolete and patched functionality in this extension, a version 2 was about to be started to strip all this out'''
 
'''There is a lot of obsolete and patched functionality in this extension, a version 2 was about to be started to strip all this out'''
 
|-
 
|-
 +
|24
 
|[https://github.com/debtcompliance/mediawiki/wiki/SSO-2017-specification DcsSingleSignOn]
 
|[https://github.com/debtcompliance/mediawiki/wiki/SSO-2017-specification DcsSingleSignOn]
 
|Create a master/slave relationship with the Ruby on Rails application as the authentication and group mangement source; with the MediaWiki application synchronizing user information into it's local database.
 
|Create a master/slave relationship with the Ruby on Rails application as the authentication and group mangement source; with the MediaWiki application synchronizing user information into it's local database.
Line 276: Line 300:
 
|For testing, you can access /wiki/extensions/dcs/DcsSingleSignOn/testLogin.php
 
|For testing, you can access /wiki/extensions/dcs/DcsSingleSignOn/testLogin.php
 
|-
 
|-
 +
|25
 
|[https://github.com/debtcompliance/mediawiki/wiki#the-dcs-skin DcsSkin]
 
|[https://github.com/debtcompliance/mediawiki/wiki#the-dcs-skin DcsSkin]
 
|Custom 'style' to match DCS website / frontend QAR app
 
|Custom 'style' to match DCS website / frontend QAR app
Line 284: Line 309:
 
|Skin by Aran Dunkley
 
|Skin by Aran Dunkley
 
|-
 
|-
 +
|26
 
|[https://github.com/debtcompliance/mediawiki/wiki/The-DcsTitle-class DcsTitle]
 
|[https://github.com/debtcompliance/mediawiki/wiki/The-DcsTitle-class DcsTitle]
 
|Extends the regular MediaWiki title object class. Creates a custom cache of the TOC.
 
|Extends the regular MediaWiki title object class. Creates a custom cache of the TOC.
Line 292: Line 318:
 
|yes
 
|yes
 
|-
 
|-
 +
|27
 
|[https://github.com/debtcompliance/mediawiki/wiki/Extensions#dcsuploadedfiles DcsUploadedFiles]
 
|[https://github.com/debtcompliance/mediawiki/wiki/Extensions#dcsuploadedfiles DcsUploadedFiles]
 
|Creates a special page listing all the files uploaded to loan documents orderd by loan namepsace then by article
 
|Creates a special page listing all the files uploaded to loan documents orderd by loan namepsace then by article
Line 300: Line 327:
 
|https://clienttest.dm.dcstemporary.com/Special:DcsUploadedFiles
 
|https://clienttest.dm.dcstemporary.com/Special:DcsUploadedFiles
 
|-
 
|-
 +
|28
 
|DcsUserDisable
 
|DcsUserDisable
 
|Adds 'enable/disable' links to the User list
 
|Adds 'enable/disable' links to the User list
Line 308: Line 336:
 
|https://clienttest.dm.dcstemporary.com/Special:ListUsers Why not use the [https://clienttest.dm.dcstemporary.com/Special:Block Special:Block] functionality built into core?I believe it's every bit as accessible through the API and thus could be used from QAR.
 
|https://clienttest.dm.dcstemporary.com/Special:ListUsers Why not use the [https://clienttest.dm.dcstemporary.com/Special:Block Special:Block] functionality built into core?I believe it's every bit as accessible through the API and thus could be used from QAR.
 
|-
 
|-
 +
|29
 
|[https://github.com/debtcompliance/mediawiki/wiki/Extensions#dcswatchcomments DcsWatchComments]
 
|[https://github.com/debtcompliance/mediawiki/wiki/Extensions#dcswatchcomments DcsWatchComments]
 
|Adds subscription to talk pages.
 
|Adds subscription to talk pages.
Line 318: Line 347:
 
'''This functionality doesn't apply to the MW watchlist, it's on the Company Comments page'''
 
'''This functionality doesn't apply to the MW watchlist, it's on the Company Comments page'''
 
|-
 
|-
 +
|30
 
|[https://github.com/OrganicDesign/extensions/tree/master/MediaWiki/AjaxComments AjaxComments]
 
|[https://github.com/OrganicDesign/extensions/tree/master/MediaWiki/AjaxComments AjaxComments]
 
|
 
|
Line 326: Line 356:
 
|
 
|
 
|-
 
|-
 +
|31
 
|[[mw:Extension:EmailPage|EmailPage]]
 
|[[mw:Extension:EmailPage|EmailPage]]
 
|Adds a special page that allows you to send the rendered HTML contents of a wiki page to a recipient (or list). Dependant on PHPMailer (5.2.23)
 
|Adds a special page that allows you to send the rendered HTML contents of a wiki page to a recipient (or list). Dependant on PHPMailer (5.2.23)
Line 334: Line 365:
 
|Activated by the "Email" item in the primary navigation across the top of the page.
 
|Activated by the "Email" item in the primary navigation across the top of the page.
 
|-
 
|-
 +
|32
 
|[https://github.com/OrganicDesign/extensions/blob/master/MediaWiki/ExtraMagic/ExtraMagic_body.php ExtraMagic]
 
|[https://github.com/OrganicDesign/extensions/blob/master/MediaWiki/ExtraMagic/ExtraMagic_body.php ExtraMagic]
 
|Adds extra [[mw:Help:Magic_words|Magic Words]] and Parser functions.
 
|Adds extra [[mw:Help:Magic_words|Magic Words]] and Parser functions.
Line 342: Line 374:
 
|
 
|
 
|-
 
|-
|[https://github.com/OrganicDesign/extensions/tree/master/MediaWiki/jQueryUpload jQueryUpload]
+
 
|
 
|v1.4.5, 2016-08-28
 
|
 
|no
 
|no
 
|
 
|-
 
|[[mw:Extension:PdfBook|PdfBook]]
 
|The PdfBook extension composes a book from articles in a category, bullet list, or DPL query; and exports as a PDF file. Depends on [https://www.msweet.org/projects.php?Z1 HTMLDoc]
 
|1.5.1 (2017-05-14)
 
|Used by [[wikiapiary:Extension:PdfBook|at least 154 wikis]]
 
|no
 
|no
 
|
 
|-
 
|[[mw:Extension:TreeAndMenu|TreeAndMenu]]
 
|Makes bullet lists into folder trees or dynamic drop-down menus.<br /><br />The drop-down menu functionality uses Son of Suckerfish which is 99% CSS, and the tree component is now using the FancyTree jQuery plugin rather than the dTree used in previous version of the TreeAndMenu extension. The new FancyTree has many options and plugins and is very extendable, please view the site and examples for more detail.
 
|4.2.2 (2018-01-31)
 
|Used by [[wikiapiary:Extension:TreeAndMenu|at least 137 wikis]]
 
|no
 
|no
 
|
 
|-
 
|}
 
  
 
== Double Check ==
 
== Double Check ==

Revision as of 16:23, 18 June 2018

This page serves to inventory and assess the mix of extensions that are in use for the DCS wiki:

Regular
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. Regular is in quotes because all extensions modify the behavior and capabilities of MediaWiki. Those that are used by the WMF in their projects or are distributed in the official download should be considered stable, tested, and maintained. Over time, some extensions become part of MediaWiki core; and rarely core features are extracted into extensions.
DCS Custom
Code for the DCS extensions is in the private Debt Compliance GitHub repo
Organic Design
Organic Design extensions are in the 'MediaWiki' tree of the Organic Design GitHub repo. Just because it's an OD extension doesn't mean it's not used by the wider MediaWiki community. We try to note usage below.


The ultimate goal is two-fold: not only understand 'What does it do?', but also understand related questions like:

  • "How critical is it? (Used all the time / occasionally, but still essential / never)"
  • "Does it need work? (known bugs or missing functionality)"
  • "Can or should this extension be replaced (with a more widely supported "regular" extension) to improve maintainability, features, security and lower cost?

Of course some features or functions are not really "user-centric" but might provide security or other features important to stakeholders like "Owner" or "Developer". For example: The DcsSkin provides a look and feel that is consistent with the company brand and makes the user experience more seamless while navigating between Website / Rails App / Wiki.

I've put information about "Source lines of code" into a sub-article.

Double Check[edit | edit source]

You can visit the "Special:Version" page of the wiki. This page shows you exactly what extensions and versions of software are installed and activated on your wiki.


References[edit | edit source]

# Extension What does it do? (explain functionality by role: regular-user, talk-editor, client-admin, or sysop) Maintenance / Last release Used by WMF Used by Meza Used by QualityBox Example / Notes / Alternatives?
1 CirrusSearch Extends the core search for MediaWiki to be able to use Elasticsearch. Elasticsearch provides a much better search capability to all users of the wiki. In particular, it allows DCS to index documents (file uploads). Continuous Yes Yes Yes CirrusSearch (Elasticsearch) is vital to the ability to index uploaded files
2 Elastica Base Elasticsearch functionality by providing the Elastica library; required by CirrusSearch. Continuous Yes Yes Yes Required as part of Search
3 Nuke The Nuke extension makes it possible for sysops to mass delete pages. Continuous Bundled 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.

DcsNuke is not just a clone, as described in the Github wiki Extensions page: it adds a new field for supplying a title pattern to select the deletion candidates by. Other criteria could be added later such as restricting to category.

The custom DcsNuke extension does not provide features different from the regular Nuke extension. The regular Nuke extension shall be included for DCS.

4 ParserFunctions Enhances the wikitext parser with helpful functions, mostly related to logic and string-handling. Continuous maintenance Bundled Yes Yes At the bottom of the Special:Version page, you'll see a list of "Parser Function Hooks" that includes the following custom parser functions defined by DCS extensions: amendments, companycomments, compliancechecklist, loans, loansinuse, section. Many of the others are provided by the Parser Functions extension: if, ifeq, switch, ifexist, ifexpr, iferror, time, timel, expr, rel2abs, titleparts, len, pos, rpos, sub, count, replace, explode
5 PipeEscape The Pipe Escape extension allows for pipe characters in parser function arguments (and template argument calls) avoid being interpreted as an argument delimiter. This is primarily for the purpose of using wiki tables (or parts thereof) inside parser function calls or templates. Old but stable Bundled Yes Yes Included via DcsSetup
6 SimpleMathJax The SimpleMathJax extension enables MathJax, a Javascript library, for typesetting TeX formula in MediaWiki inside math environments. This extension will load resources from cdnjs.cloudflare.com on all wiki pages that have math or chem tags. Regular maintenance No, WMF uses the Math extension Yes Yes included by DcsSetup.php
7 WikiEditor The WikiEditor extension provides an improved interface for editing wikitext. It is the wikitext editing interface that Wikipedia started using in 2010 for desktop users, and so it is sometimes called the "2010 wikitext editor". 0.5.1 (2016-04-15) some oversight by WMF Bundled Yes Yes
8 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 no no no https://clienttest.dm.dcstemporary.com/ARCA14:1.5_Time_References
9 DcsBaskets This extension allows the utilization column of the Baskets tables to be edited directly using AJAX and saving values into 'basket' tables rather than in the traditional wiki-text revision tables. 1.4.3, 2018-05-25 no no no "Baskets" can be found in the hierarchy list of the leftnav under the 'Compliance' folder. The page name, by convention, is 'Baskets' e.g. https://clienttest.dm.dcstemporary.com/Baskets This is really neat, and very advanced. However, now that Visual Editor is available, I'd suspect that the user experience of editing large tables in Visual Editor would be much better. Replace Baskets with Visual Editor

We've tested the Visual Editor and found it to be to "clunky" for practical use, that was a year or so back, but based on my own experience I think it would still be considered that way if it was tested again now

10 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.

Check if the passed page title string is in a loan namespace, returns boolean. Note that this function only checks if the namespace is in the list of all loan namespaces, it doesn't do any checks for whether the namespace is in use, or whether the title is in a DCS_TOC article like the DcsCommon::isLoanPage PHP function.

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.

set/getData is for storing arbitrary DCS data in the dcs db table. Agreed that this extension needs cleaning up.

recent no no no pervasive
11 DcsComplianceChecklist Provides a dropdown list of loans and responsibility terms by which the table can be filtered on the Checklist page (by convention). The parser function creates the page contents and form controls. recent (2017 - 2018) no no no e.g. https://clienttest.dm.dcstemporary.com/Checklist
12 DcsComplianceChecklist2 purpose? release? no no no only used in the checktest subdomain, or when `wgLocalTesting`; intention is to use a timestamp condition.

This is in progress, the requirements of the checklist are simpler now and version 2 is just about stripping out a bunch of obsolete functionality.

13 DcsEmailLink Allows you to send a link to a page in the wiki. Activated by the "Email Link" item in the primary navigation across the top of the page. Similar to the "Email Page" extension by Aran, which is also used. 11 months ago no no no visit any page
14 DcsExportTerms Allows terms to be downloaded in Comma Separated Value (CSV) format. CSV is easily imported to a spreadsheet. recent no no no Visit https://clienttest.dm.dcstemporary.com/Category:Terms and you will see a "Export Terms" action in the primary navigation across the top of the page.
15 DcsFindTitle helps to find a title regardless of case-sensitivity of the system. recent no no no integrates with the API, however I'm unsure where it's visible/usable to the user. I believe it's used from the Ruby side to create links that will match a wiki page even if there is a case mismatch. If you wish to navigate to https://clienttest.dm.dcstemporary.com/ARCA14:TOC but request https://clienttest.dm.dcstemporary.com/arca14:toc instead, you'll get a 404 Not Found error. If you request https://clienttest.dm.dcstemporary.com/arca14:toc?action=findtitle then you will be redirected to the proper article.

This uses ApiBeforeMain and APIAfterExecute hooks to modify the API query prop=info to make it case-insensitive.

16 DcsGroupAdmin Leverages the DcsBlockPageAccess hook to allow/disallow access to files and namespaces. recent no no no https://clienttest.dm.dcstemporary.com/Special:DcsGroupAdmin/equality
17 DcsJobAdmin See Background info on Background jobs. Creates a Special Page Special:DcsJobAdmin where you can start a new job; or view current and historical jobs. Each job type loads it's own form into the Admin page. The job runner extends the Maintenance class, and loops over running jobs to provide some progress reporting. It saves the most recent 10 jobs to a 'history' list.

There are functions in the code for:

  • Return a list of the currently running jobs sorted by start time.
  • Add a job to the 'history' list of jobs executed (list is limited to 10 items).
  • Get a 'history' list of the last 10 jobs
  • Get job data (both current and history)
  • shell_exec() to the process table to find DcsJobRunner. Return the currently running jobs by Process ID (PID)
  • register the PHP code classes for each job type:
    • Change Namespace
    • EditTest
    • Import
    • ImportXML
    • Links
    • PhpTest
    • ReplaceText
    • UpgradeAttachments

Each (or almost all?) PHP file is backed by a perl file which was the basis for the PHP development. Everything is written twice because it all started back when the best framework for handling MediaWiki jobs was a perl bot framework. Things have changed significantly over the recent past for MediaWiki's job queue.

According to the documentation, it allows you to manage jobs. But, I'm wondering how much this is actually used? The job queue should be run automatically by cron, and the administrative user shouldn't have to worry about it really. If there is a usage pattern where job execution is time sensitive, there is a use for an Admin function; but I'm curious about the usage patterns that create large or numerous jobs. Otherwise, set wgJobRunRate to zero, and put it into cron `0 0 * * * root /usr/bin/php /var/www/example.com/www/w/maintenance/runJobs.php > /var/log/runJobs.log 2>&1`

These jobs aren't just the standard MW maintenance jobs, they're DCS-specific jobs that need to run in the background as they often need to do intensive manipulation of thousands of articles. The special page is the interface to these jobs allowing parameters to be set for them and stopping/starting/cancelling/pausing them etc, as well as getting feedback on their progress or errors etc.

2018-05-25 no no no
18 DcsLoanPages creates "backlinks" which are links to content that contain a particular keyword or phrase found in a loan document. It also creates the "< Prev" and "Next >" navigation links (called 'breadcrumbs' in the code, but actually these are 'pager' links not breadcrumbs). recent no no no If you go to a page like https://clienttest.dm.dcstemporary.com/ARCA14:Agreement You will see a large section of content called 'Index to ARCA14 pages containing "Agreement"" So, in other words, it's a list of links to pages of the ARCA14 loan that have the word "Agreement" in them. These links are created by the extension.

They wanted the backlinks at the bottom of the page not in a separate special page

19 DcsNamespaces Manages the segregation of loan documents into their own separate namespaces. Also provides some functionality around moving/deleting/renaming namespaces via the https://clienttest.dm.dcstemporary.com/Special:DcsNamespaces special page. recent no no no e.g. https://clienttest.dm.dcstemporary.com/Special:DcsNamespaces
20 DcsNuke purpose? release? no no no REPLACE with standard Nuke extension

See notes in Nuke above, this is not a replica of Nuke

21 DcsSearch Extends the Elasticsearch backend with additional business logic, and new features and UX (saving search "favorites" and indexing link paths traversed in connection with a search query). See https://github.com/debtcompliance/mediawiki/wiki/Search-&-sorting a year ago no no no e.g. See the "heart" symbol next to the search box which implements the "favorites" feature.
22 DcsSection Allows for loan documents to be imported into the wiki as multiple articles. Creates a 'section reference' capability. in progress (v2) no no no
23 DcsSection2 purpose? release? no no no Unused - at least not on the development machine which is a clone of production.

There is a lot of obsolete and patched functionality in this extension, a version 2 was about to be started to strip all this out

24 DcsSingleSignOn Create a master/slave relationship with the Ruby on Rails application as the authentication and group mangement source; with the MediaWiki application synchronizing user information into it's local database. 2017 major update no no no For testing, you can access /wiki/extensions/dcs/DcsSingleSignOn/testLogin.php
25 DcsSkin Custom 'style' to match DCS website / frontend QAR app 3.0.2, 2016-07-01 no no no Skin by Aran Dunkley
26 DcsTitle Extends the regular MediaWiki title object class. Creates a custom cache of the TOC. recent no no no yes
27 DcsUploadedFiles Creates a special page listing all the files uploaded to loan documents orderd by loan namepsace then by article a year ago no no no https://clienttest.dm.dcstemporary.com/Special:DcsUploadedFiles
28 DcsUserDisable Adds 'enable/disable' links to the User list a year ago no no no https://clienttest.dm.dcstemporary.com/Special:ListUsers Why not use the Special:Block functionality built into core?I believe it's every bit as accessible through the API and thus could be used from QAR.
29 DcsWatchComments Adds subscription to talk pages. release? no no no When I view my normal MediaWiki 'WatchList', I don't see any loan talk pages added. I only see my user page.

This functionality doesn't apply to the MW watchlist, it's on the Company Comments page

30 AjaxComments
31 EmailPage Adds a special page that allows you to send the rendered HTML contents of a wiki page to a recipient (or list). Dependant on PHPMailer (5.2.23) 2.4.4 (2017-04-26) Used by at least 38 wikis no no Activated by the "Email" item in the primary navigation across the top of the page.
32 ExtraMagic Adds extra Magic Words and Parser functions.