const mustache = require( 'mustache' ); const fs = require( 'fs' ); const menuContents = fs.readFileSync( 'includes/templates/MenuContents.mustache', 'utf8' ); const userLinksTemplate = fs.readFileSync( 'includes/templates/UserLinks.mustache', 'utf8' ); const dropdownOpenTemplate = fs.readFileSync( 'includes/templates/Dropdown/Open.mustache', 'utf8' ); const dropdownCloseTemplate = fs.readFileSync( 'includes/templates/Dropdown/Close.mustache', 'utf8' ); 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' ); const pinnableElementOpenTemplate = fs.readFileSync( 'includes/templates/PinnableElement/Open.mustache', 'utf8' ); const pinnableElementCloseTemplate = fs.readFileSync( 'includes/templates/PinnableElement/Close.mustache', 'utf8' ); const pinnableHeaderTemplate = fs.readFileSync( 'includes/templates/PinnableHeader.mustache', 'utf8' ); const menuTemplate = fs.readFileSync( 'includes/templates/Menu.mustache', 'utf8' ); const IconLink = fs.readFileSync( 'includes/templates/IconLink.mustache', 'utf8' ); const MenuListItem = fs.readFileSync( 'includes/templates/MenuListItem.mustache', 'utf8' ); const templateData = { 'is-wide': false, 'data-user-menu-overflow': { id: 'p-personal-more', class: 'mw-portlet mw-portlet-vector-user-menu-overflow vector-user-menu-overflow', label: 'Toggle sidebar', 'html-items': `
  • Alerts (0)
  • Notices (0)
  • ` }, 'data-user-menu-dropdown': { id: 'p-personal', class: 'mw-portlet mw-portlet-personal vector-user-menu vector-user-menu-logged-in vector-menu-dropdown', label: 'Personal tools' }, 'data-dropdown-menu': { 'html-items': `
  • Talk
  • Sandbox
  • Preferences
  • Beta
  • Uploads
  • Contributions
  • Gadget added item
  • ` }, 'data-account-links': [ { 'data-items': [ { 'item-id': 'pt-logout', 'item-class': 'vector-user-menu-logout', href: '/logout', text: 'Log out' } ] } ] }; const dropdownPartials = { 'Dropdown/Open': dropdownOpenTemplate, 'Dropdown/Close': dropdownCloseTemplate, 'PinnableContainer/Pinned/Open': pinnedContainerOpenTemplate, 'PinnableContainer/Close': pinnedContainerCloseTemplate, 'PinnableContainer/Unpinned/Open': unpinnedContainerOpenTemplate, 'PinnableElement/Open': pinnableElementOpenTemplate, 'PinnableElement/Close': pinnableElementCloseTemplate, PinnableHeader: pinnableHeaderTemplate, Menu: menuTemplate, MenuContents: menuContents, IconLink, MenuListItem }; const renderedHTML = mustache.render( userLinksTemplate, templateData, dropdownPartials ); module.exports = { dropdownPartials, userLinksHTML: renderedHTML };