2022-02-21 21:03:07 +00:00
const mustache = require ( 'mustache' ) ;
const fs = require ( 'fs' ) ;
2022-11-17 23:12:52 +00:00
const menuContents = fs . readFileSync ( 'includes/templates/MenuContents.mustache' , 'utf8' ) ;
2022-02-21 21:03:07 +00:00
const userLinksTemplate = fs . readFileSync ( 'includes/templates/UserLinks.mustache' , 'utf8' ) ;
2022-11-02 23:00:04 +00:00
const dropdownOpenTemplate = fs . readFileSync ( 'includes/templates/Dropdown/Open.mustache' , 'utf8' ) ;
const dropdownCloseTemplate = fs . readFileSync ( 'includes/templates/Dropdown/Close.mustache' , 'utf8' ) ;
2022-12-09 23:32:43 +00:00
const pinnedContainerOpenTemplate = fs . readFileSync ( 'includes/templates/PinnableContainer/Pinned/Open.mustache' , 'utf8' ) ;
const pinnedContainerCloseTemplate = fs . readFileSync ( 'includes/templates/PinnableContainer/Close.mustache' , 'utf8' ) ;
const unpinnedContainerOpenTemplate = fs . readFileSync ( 'includes/templates/PinnableContainer/Unpinned/Open.mustache' , 'utf8' ) ;
2022-11-28 21:08:40 +00:00
const pinnableElementOpenTemplate = fs . readFileSync ( 'includes/templates/PinnableElement/Open.mustache' , 'utf8' ) ;
const pinnableElementCloseTemplate = fs . readFileSync ( 'includes/templates/PinnableElement/Close.mustache' , 'utf8' ) ;
2022-11-04 19:45:33 +00:00
const pinnableHeaderTemplate = fs . readFileSync ( 'includes/templates/PinnableHeader.mustache' , 'utf8' ) ;
const menuTemplate = fs . readFileSync ( 'includes/templates/Menu.mustache' , 'utf8' ) ;
2023-01-06 01:45:38 +00:00
const IconLink = fs . readFileSync ( 'includes/templates/IconLink.mustache' , 'utf8' ) ;
const MenuListItem = fs . readFileSync ( 'includes/templates/MenuListItem.mustache' , 'utf8' ) ;
2022-02-21 21:03:07 +00:00
const templateData = {
'is-wide' : false ,
2022-04-19 17:50:01 +00:00
'data-user-menu-overflow' : {
2022-02-21 21:03:07 +00:00
id : 'p-personal-more' ,
2022-04-19 17:50:01 +00:00
class : 'mw-portlet mw-portlet-vector-user-menu-overflow vector-user-menu-overflow' ,
2022-02-21 21:03:07 +00:00
label : 'Toggle sidebar' ,
'html-items' : `
< li id = "ca-uls" class = "user-links-collapsible-item mw-list-item active" > < a href = "#" class = "uls-trigger mw-ui-button mw-ui-quiet" > < span class = "mw-ui-icon mw-ui-icon-wikimedia-language" > < / s p a n > < s p a n > E n g l i s h < / s p a n > < / a > < / l i >
2022-04-19 17:50:01 +00:00
< li id = "pt-userpage-2" class = "user-links-collapsible-item mw-list-item" > < a href = "/wiki/User:Admin" class = "mw-ui-button mw-ui-quiet" title = "Your user page [⌃⌥.]" accesskey = "." > < span > Admin < / s p a n > < / a > < / l i >
< li id = "pt-notifications-alert" class = "mw-list-item" > < a href = "/wiki/Special:Notifications" class = "mw-echo-notifications-badge mw-echo-notification-badge-nojs oo-ui-icon-bell mw-echo-notifications-badge-all-read" data - counter - num = "0" data - counter - text = "0" title = "Your alerts" > < span > Alerts ( 0 ) < / s p a n > < / a > < / l i >
< li id = "pt-notifications-notice" class = "mw-list-item" > < a href = "/wiki/Special:Notifications" class = "mw-echo-notifications-badge mw-echo-notification-badge-nojs oo-ui-icon-tray mw-echo-notifications-badge-all-read" data - counter - num = "0" data - counter - text = "0" title = "Your notices" > < span > Notices ( 0 ) < / s p a n > < / a > < / l i >
< li id = "pt-watchlist-2" class = "user-links-collapsible-item mw-list-item" > < a href = "/wiki/Special:Watchlist" class = "mw-ui-button mw-ui-quiet mw-ui-icon mw-ui-icon-element mw-ui-icon-watchlist mw-ui-icon-wikimedia-watchlist" title = "A list of pages you are monitoring for changes [⌃⌥l]" accesskey = "l" > < span > Watchlist < / s p a n > < / a > < / l i >
2022-02-21 21:03:07 +00:00
`
} ,
2022-12-13 20:28:22 +00:00
'data-user-menu-dropdown' : {
2022-02-21 21:03:07 +00:00
id : 'p-personal' ,
2022-05-04 22:20:23 +00:00
class : 'mw-portlet mw-portlet-personal vector-user-menu vector-user-menu-logged-in vector-menu-dropdown' ,
2023-01-06 01:45:38 +00:00
label : 'Personal tools'
} ,
'data-dropdown-menu' : {
2022-02-21 21:03:07 +00:00
'html-items' : `
< li id = "pt-userpage" class = "user-links-collapsible-item mw-list-item" > < a class = "mw-ui-icon mw-ui-icon-before mw-ui-icon-userAvatar mw-ui-icon-wikimedia-userAvatar" href = "/wiki/User:Admin" title = "Your user page [.]" accesskey = "." > < span > Admin < / s p a n > < / a > < / l i >
< li id = "pt-mytalk" class = "mw-list-item" > < a class = "mw-ui-icon mw-ui-icon-before mw-ui-icon-userTalk mw-ui-icon-wikimedia-userTalk" href = "/wiki/User_talk:Admin" title = "Your talk page [n]" accesskey = "n" > < span > Talk < / s p a n > < / a > < / l i >
< li id = "pt-sandbox" class = "new mw-list-item" > < a class = "mw-ui-icon mw-ui-icon-before mw-ui-icon-sandbox mw-ui-icon-wikimedia-sandbox" href = "/w/index.php?title=User:Admin/sandbox&action=edit&redlink=1" title = "Your sandbox (page does not exist)" > < span > Sandbox < / s p a n > < / a > < / l i >
< li id = "pt-preferences" class = "mw-list-item" > < a class = "mw-ui-icon mw-ui-icon-before mw-ui-icon-settings mw-ui-icon-wikimedia-settings" href = "/wiki/Special:Preferences" title = "Your preferences" > < span > Preferences < / s p a n > < / a > < / l i >
< li id = "pt-betafeatures" class = "mw-list-item" > < a class = "mw-ui-icon mw-ui-icon-before mw-ui-icon-labFlask mw-ui-icon-wikimedia-labFlask" href = "/wiki/Special:Preferences#mw-prefsection-betafeatures" title = "Beta features" > < span > Beta < / s p a n > < / a > < / l i >
< li id = "pt-watchlist" class = "user-links-collapsible-item mw-list-item" > < a class = "mw-ui-icon mw-ui-icon-before mw-ui-icon-watchlist mw-ui-icon-wikimedia-watchlist" href = "/wiki/Special:Watchlist" title = "A list of pages you are monitoring for changes [l]" accesskey = "l" > < span > Watchlist < / s p a n > < / a > < / l i >
< li id = "pt-uploads" class = "mw-list-item" > < a class = "mw-ui-icon mw-ui-icon-before mw-ui-icon-imageGallery mw-ui-icon-wikimedia-imageGallery" href = "/w/index.php?title=Special:ListFiles/Admin&ilshowall=1" title = "List of files you have uploaded" > < span > Uploads < / s p a n > < / a > < / l i >
< li id = "pt-mycontris" class = "mw-list-item" > < a class = "mw-ui-icon mw-ui-icon-before mw-ui-icon-userContributions mw-ui-icon-wikimedia-userContributions" href = "/wiki/Special:Contributions/Admin" title = "A list of your contributions [y]" accesskey = "y" > < span > Contributions < / s p a n > < / a > < / l i >
< li id = "pt-custom" class = "mw-list-item mw-list-item-js" > Gadget added item < / l i >
`
2023-01-06 01:45:38 +00:00
} ,
'data-account-links' : [
{
'data-items' : [
{
'item-id' : 'pt-logout' ,
'item-class' : 'vector-user-menu-logout' ,
href : '/logout' ,
text : 'Log out'
}
]
}
]
2022-02-21 21:03:07 +00:00
} ;
2022-11-02 23:00:04 +00:00
const dropdownPartials = {
'Dropdown/Open' : dropdownOpenTemplate ,
'Dropdown/Close' : dropdownCloseTemplate ,
2022-12-09 23:32:43 +00:00
'PinnableContainer/Pinned/Open' : pinnedContainerOpenTemplate ,
'PinnableContainer/Close' : pinnedContainerCloseTemplate ,
'PinnableContainer/Unpinned/Open' : unpinnedContainerOpenTemplate ,
2022-11-28 21:08:40 +00:00
'PinnableElement/Open' : pinnableElementOpenTemplate ,
'PinnableElement/Close' : pinnableElementCloseTemplate ,
2022-11-04 19:45:33 +00:00
PinnableHeader : pinnableHeaderTemplate ,
2022-11-17 23:12:52 +00:00
Menu : menuTemplate ,
2023-01-06 01:45:38 +00:00
MenuContents : menuContents ,
IconLink ,
MenuListItem
2022-11-02 23:00:04 +00:00
} ;
const renderedHTML = mustache . render ( userLinksTemplate , templateData , dropdownPartials ) ;
2022-02-21 21:03:07 +00:00
module . exports = {
2022-11-02 23:00:04 +00:00
dropdownPartials ,
2022-02-21 21:03:07 +00:00
userLinksHTML : renderedHTML
} ;