8. Install Message Box Templates

Message box templates are a prerequisite for license templates, and they will be used later to customize the wiki.

  1. Start the virtual machine and log in:

    ssh -p 8015 hjc@dynamicshjc.case.edu
    
  2. Check for and install system updates on the virtual machine:

    sudo apt-get update
    sudo apt-get dist-upgrade
    sudo apt-get autoremove
    
  3. Install the message box templates. Message boxes highlight important information by placing a colorful text box on the page (examples can be seen here). These appear frequently on Wikipedia to indicate, for example, that a page needs attention or that it presents a biased viewpoint. They are highly customizable and could be used to draw students’ attention to key ideas. On NeuroWiki, we use message boxes to highlight links to simulations.

    To install the message box templates, first download this XML file (message-box-templates-1.27.xml), and import it into the wiki using Special:Import (choose “Import to default locations”).

    Complete the installation by editing this wiki page and appending the following:

    • MediaWiki:Common.css

      message box template styles

      /**********************************************
       *        MESSAGE BOX TEMPLATE STYLES         *
       **********************************************/
      
      /* Messagebox templates */
      .messagebox {
          border: 1px solid #aaa;
          background-color: #f9f9f9;
          width: 80%;
          margin: 0 auto 1em auto;
          padding: .2em;
      }
      .messagebox.merge {
          border: 1px solid #c0b8cc;
          background-color: #f0e5ff;
          text-align: center;
      }
      .messagebox.cleanup {
          border: 1px solid #9f9fff;
          background-color: #efefff;
          text-align: center;
      }
      .messagebox.standard-talk {
          border: 1px solid #c0c090;
          background-color: #f8eaba;
          margin: 4px auto;
      }
      /* For old WikiProject banners inside banner shells. */
      .mbox-inside .standard-talk,
      .messagebox.nested-talk {
          border: 1px solid #c0c090;
          background-color: #f8eaba;
          width: 100%;
          margin: 2px 0;
          padding: 2px;
      }
      .messagebox.small {
          width: 238px;
          font-size: 85%;
          /* @noflip */
          float: right;
          clear: both;
          /* @noflip */
          margin: 0 0 1em 1em;
          line-height: 1.25em;
      }
      .messagebox.small-talk {
          width: 238px;
          font-size: 85%;
          /* @noflip */
          float: right;
          clear: both;
          /* @noflip */
          margin: 0 0 1em 1em;
          line-height: 1.25em;
          background: #F8EABA;
      }
      
      /* Cell sizes for ambox/tmbox/imbox/cmbox/ombox/fmbox/dmbox message boxes */
      th.mbox-text, td.mbox-text {   /* The message body cell(s) */
          border: none;
          /* @noflip */
          padding: 0.25em 0.9em;     /* 0.9em left/right */
          width: 100%;               /* Make all mboxes the same width regardless of text length */
      }
      td.mbox-image {                /* The left image cell */
          border: none;
          /* @noflip */
          padding: 2px 0 2px 0.9em;  /* 0.9em left, 0px right */
          text-align: center;
      }
      td.mbox-imageright {           /* The right image cell */
          border: none;
          /* @noflip */
          padding: 2px 0.9em 2px 0;  /* 0px left, 0.9em right */
          text-align: center;
      }
      td.mbox-empty-cell {           /* An empty narrow cell */
          border: none;
          padding: 0;
          width: 1px;
      }
      
      /* Article message box styles */
      table.ambox {
          margin: 0 10%;                  /* 10% = Will not overlap with other elements */
          border: 1px solid #aaa;
          /* @noflip */
          border-left: 10px solid #1e90ff;  /* Default "notice" blue */
          background: #fbfbfb;
      }
      table.ambox + table.ambox {      /* Single border between stacked boxes. */
          margin-top: -1px;
      }
      .ambox th.mbox-text,
      .ambox td.mbox-text {            /* The message body cell(s) */
          padding: 0.25em 0.5em;       /* 0.5em left/right */
      }
      .ambox td.mbox-image {           /* The left image cell */
          /* @noflip */
          padding: 2px 0 2px 0.5em;    /* 0.5em left, 0px right */
      }
      .ambox td.mbox-imageright {      /* The right image cell */
          /* @noflip */
          padding: 2px 0.5em 2px 0;    /* 0px left, 0.5em right */
      }
      
      table.ambox-notice {
          /* @noflip */
          border-left: 10px solid #1e90ff;    /* Blue */
      }
      table.ambox-speedy {
          /* @noflip */
          border-left: 10px solid #b22222;    /* Red */
          background: #fee;                   /* Pink */
      }
      table.ambox-delete {
          /* @noflip */
          border-left: 10px solid #b22222;    /* Red */
      }
      table.ambox-content {
          /* @noflip */
          border-left: 10px solid #f28500;    /* Orange */
      }
      table.ambox-style {
          /* @noflip */
          border-left: 10px solid #f4c430;    /* Yellow */
      }
      table.ambox-move {
          /* @noflip */
          border-left: 10px solid #9932cc;    /* Purple */
      }
      table.ambox-protection {
          /* @noflip */
          border-left: 10px solid #bba;       /* Gray-gold */
      }
      
      /* Image message box styles */
      table.imbox {
          margin: 4px 10%;
          border-collapse: collapse;
          border: 3px solid #1e90ff;    /* Default "notice" blue */
          background: #fbfbfb;
      }
      .imbox .mbox-text .imbox {  /* For imboxes inside imbox-text cells. */
          margin: 0 -0.5em;       /* 0.9 - 0.5 = 0.4em left/right.        */
          display: block;         /* Fix for webkit to force 100% width.  */
      }
      .mbox-inside .imbox {       /* For imboxes inside other templates.  */
          margin: 4px;
      }
      
      table.imbox-notice {
          border: 3px solid #1e90ff;    /* Blue */
      }
      table.imbox-speedy {
          border: 3px solid #b22222;    /* Red */
          background: #fee;             /* Pink */
      }
      table.imbox-delete {
          border: 3px solid #b22222;    /* Red */
      }
      table.imbox-content {
          border: 3px solid #f28500;    /* Orange */
      }
      table.imbox-style {
          border: 3px solid #f4c430;    /* Yellow */
      }
      table.imbox-move {
          border: 3px solid #9932cc;    /* Purple */
      }
      table.imbox-protection {
          border: 3px solid #bba;       /* Gray-gold */
      }
      table.imbox-license {
          border: 3px solid #88a;       /* Dark gray */
          background: #f7f8ff;          /* Light gray */
      }
      table.imbox-featured {
          border: 3px solid #cba135;    /* Brown-gold */
      }
      
      /* Category message box styles */
      table.cmbox {
          margin: 3px 10%;
          border-collapse: collapse;
          border: 1px solid #aaa;
          background: #DFE8FF;    /* Default "notice" blue */
      }
      
      table.cmbox-notice {
          background: #D8E8FF;    /* Blue */
      }
      table.cmbox-speedy {
          margin-top: 4px;
          margin-bottom: 4px;
          border: 4px solid #b22222;    /* Red */
          background: #FFDBDB;          /* Pink */
      }
      table.cmbox-delete {
          background: #FFDBDB;    /* Red */
      }
      table.cmbox-content {
          background: #FFE7CE;    /* Orange */
      }
      table.cmbox-style {
          background: #FFF9DB;    /* Yellow */
      }
      table.cmbox-move {
          background: #E4D8FF;    /* Purple */
      }
      table.cmbox-protection {
          background: #EFEFE1;    /* Gray-gold */
      }
      
      /* Other pages message box styles */
      table.ombox {
          margin: 4px 10%;
          border-collapse: collapse;
          border: 1px solid #aaa;       /* Default "notice" gray */
          background: #f9f9f9;
      }
      
      table.ombox-notice {
          border: 1px solid #aaa;       /* Gray */
      }
      table.ombox-speedy {
          border: 2px solid #b22222;    /* Red */
          background: #fee;             /* Pink */
      }
      table.ombox-delete {
          border: 2px solid #b22222;    /* Red */
      }
      table.ombox-content {
          border: 1px solid #f28500;    /* Orange */
      }
      table.ombox-style {
          border: 1px solid #f4c430;    /* Yellow */
      }
      table.ombox-move {
          border: 1px solid #9932cc;    /* Purple */
      }
      table.ombox-protection {
          border: 2px solid #bba;       /* Gray-gold */
      }
      
      /* Talk page message box styles */
      table.tmbox {
          margin: 4px 10%;
          border-collapse: collapse;
          border: 1px solid #c0c090;    /* Default "notice" gray-brown */
          background: #f8eaba;
      }
      .mediawiki .mbox-inside .tmbox { /* For tmboxes inside other templates. The "mediawiki" class ensures that */
          margin: 2px 0;               /* this declaration overrides other styles (including mbox-small above)   */
          width: 100%;                 /* For Safari and Opera */
      }
      .mbox-inside .tmbox.mbox-small { /* "small" tmboxes should not be small when  */
          line-height: 1.5em;          /* also "nested", so reset styles that are   */
          font-size: 100%;             /* set in "mbox-small" above.                */
      }
      
      table.tmbox-speedy {
          border: 2px solid #b22222;    /* Red */
          background: #fee;             /* Pink */
      }
      table.tmbox-delete {
          border: 2px solid #b22222;    /* Red */
      }
      table.tmbox-content {
          border: 2px solid #f28500;    /* Orange */
      }
      table.tmbox-style {
          border: 2px solid #f4c430;    /* Yellow */
      }
      table.tmbox-move {
          border: 2px solid #9932cc;    /* Purple */
      }
      table.tmbox-protection,
      table.tmbox-notice {
          border: 1px solid #c0c090;    /* Gray-brown */
      }
      
      /* Disambig and set index box styles */
      table.dmbox {
          clear: both;
          margin: 0.9em 1em;
          border-top: 1px solid #ccc;
          border-bottom: 1px solid #ccc;
          background: transparent;
      }
      
      /* Footer and header message box styles */
      table.fmbox {
          clear: both;
          margin: 0.2em 0;
          width: 100%;
          border: 1px solid #aaa;
          background: #f9f9f9;     /* Default "system" gray */
      }
      table.fmbox-system {
          background: #f9f9f9;
      }
      table.fmbox-warning {
          border: 1px solid #bb7070;  /* Dark pink */
          background: #ffdbdb;        /* Pink */
      }
      table.fmbox-editnotice {
          background: transparent;
      }
      /* Div based "warning" style fmbox messages. */
      div.mw-warning-with-logexcerpt,
      div.mw-lag-warn-high,
      div.mw-cascadeprotectedwarning,
      div#mw-protect-cascadeon,
      div.titleblacklist-warning,
      div.locked-warning {
          clear: both;
          margin: 0.2em 0;
          border: 1px solid #bb7070;
          background: #ffdbdb;
          padding: 0.25em 0.9em;
      }
      /* Div based "system" style fmbox messages.
         Used in [[MediaWiki:Readonly lag]]. */
      div.mw-lag-warn-normal,
      div.fmbox-system {
          clear: both;
          margin: 0.2em 0;
          border: 1px solid #aaa;
          background: #f9f9f9;
          padding: 0.25em 0.9em;
      }
      
      /* These mbox-small classes must be placed after all other
         ambox/tmbox/ombox etc classes. "html body.mediawiki" is so
         they override "table.ambox + table.ambox" above. */
      html body.mediawiki .mbox-small {   /* For the "small=yes" option. */
          /* @noflip */
          clear: right;
          /* @noflip */
          float: right;
          /* @noflip */
          margin: 4px 0 4px 1em;
          box-sizing: border-box;
          width: 238px;
          font-size: 88%;
          line-height: 1.25em;
      }
      html body.mediawiki .mbox-small-left {   /* For the "small=left" option. */
          /* @noflip */
          margin: 4px 1em 4px 0;
          box-sizing: border-box;
          overflow: hidden;
          width: 238px;
          border-collapse: collapse;
          font-size: 88%;
          line-height: 1.25em;
      }
      
      /* Style for compact ambox */
      /* Hide the images */
      .compact-ambox table .mbox-image,
      .compact-ambox table .mbox-imageright,
      .compact-ambox table .mbox-empty-cell {
          display: none;
      }
      /* Remove borders, backgrounds, padding, etc. */
      .compact-ambox table.ambox {
          border: none;
          border-collapse: collapse;
          background: transparent;
          margin: 0 0 0 1.6em !important;
          padding: 0 !important;
          width: auto;
          display: block;
      }
      body.mediawiki .compact-ambox table.mbox-small-left {
          font-size: 100%;
          width: auto;
          margin: 0;
      }
      /* Style the text cell as a list item and remove its padding */
      .compact-ambox table .mbox-text {
          padding: 0 !important;
          margin: 0 !important;
      }
      .compact-ambox table .mbox-text-span {
          display: list-item;
          line-height: 1.5em;
          list-style-type: square;
          list-style-image: url(/w/skins/MonoBook/bullet.gif);
      }
      .skin-vector .compact-ambox table .mbox-text-span {
          list-style-type: disc;
          list-style-image: url(/w/skins/Vector/images/bullet-icon.svg);
          list-style-image: url(/w/skins/Vector/images/bullet-icon.png)\9;
      }
      /* Allow for hiding text in compact form */
      .compact-ambox .hide-when-compact {
          display: none;
      }
      

    Details about how the XML file was created can be found here [1]. The CSS code above was extracted from a version of MediaWiki:Common.css on Wikipedia contemporary with the templates included in the XML file.

  4. Test that the message box templates are working by pasting this text into any wiki page and pressing the “Show Preview” button:

    {{ambox
     | type  = notice
     | small = {{{small|left}}}
     | text  = This is a test using a small, left-aligned message box.
    }}
    
    {{ambox
     | type = content
     | text = This is a test using a large, centered message box. It even has an exclamation point!
    }}
    
    {{ambox
     | type = speedy
     | text = Danger, Will Robinson!
    }}
    

    The boxes that appear should be colored blue, orange, and red sequentially, with circle-“i”, circle-“!”, and triangle-“!” icons (perform a hard refresh in your browser if you do not see the boxes).

    If this test is successful, you can press “Cancel” instead of “Save page” to avoid saving the test code.

    Todo

    Add screenshots showing what the message box test result should look like.

  5. Shut down the virtual machine:

    sudo shutdown -h now
    
  6. Using VirtualBox, take a snapshot of the current state of the virtual machine. Name it “Message box templates installed”.

Footnotes

[1]

The XML file message-box-templates-1.27.xml contains versions of the following pages, originally exported from Wikipedia, that are compatible with MediaWiki 1.27 and contemporary extensions (e.g., Scribunto on branch REL1_27):

Module:Arguments
Module:Category handler
Module:Category handler/blacklist
Module:Category handler/config
Module:Category handler/data
Module:Category handler/shared
Module:Message box
Module:Message box/configuration
Module:Namespace detect/config
Module:Namespace detect/data
Module:No globals
Module:Yesno
Template:Ambox
Template:Cmbox
Template:Fmbox
Template:Imbox
Template:Mbox
Template:Ombox
Template:Tmbox

Versions compatible with MediaWiki 1.27 were found by first trying the versions of these pages currently on Wikipedia, exported using Special:Export on 2016-08-21. At the time, Wikipedia was running an alpha-phase version of MediaWiki 1.28.0. Luckily, this just worked without errors or rendering glitches. If it had not, I would have used the method described in Updating Templates Exported from Wikipedia to find working versions of these pages.

The final result is the file message-box-templates-1.27.xml.