}
     print $newRow;
 }
 // Close out the table.
 print '</table>' . PHP_EOL;
 // Generate the javascript that lets users create new mapping rows.
 $nrScript = AC_GenerateNewRowScript($highestMapping + 1, "'" . WP88_CATEGORY_MAPPING_PREFIX . "'", "'#wp_category_mappings_table'", $categories, WP88_ANY, $listHash, WP88_NONE, $groupHash, WP88_ANY, $templatesHash, WP88_NONE);
 // Add in the "new row" script.  Clicking on this executes the javascript to
 // create a new row to map categories, lists, groups, and templates.
 print '<p><a href="#" id="addNewCategoyMappingRow" onclick="' . $nrScript . '">Add new post category mapping</a></p>' . PHP_EOL;
 print '</p>';
 //
 // Custom UI from third party publish plugins go here
 //
 $publishPlugins = new ACPublishPlugins();
 $publishPlugins->GenerateMappingsUI($listHash, $groupHash, $templatesHash, $javaScript);
 // Create a checkbox asking the user if they want to send campaigns right away
 print '<p><input type=CHECKBOX value="on_send_now" name="on_send_now" ';
 if ('0' === $sendNow || empty($sendNow)) {
 } else {
     print 'checked';
 }
 print '> Send campaign <em>as soon as</em> a post is published. Not checking this option will save a draft version of your new MailChimp campaign.</p>';
 // Create a checkbox asking if the user wants to generate only excerpts
 print '<p><input type=CHECKBOX value="on_excerpt_only" name="on_excerpt_only"';
 if ('1' === $excerptOnly) {
     echo 'checked';
 }
 print '></input> Only use an excerpt of the post (AutoChimp will include a link back to the post). <em>If you wrote an excerpt, that excerpt will be used.  Otherwise, the first 50 words of the post will be used.</em></p>';
 // Create a checkbox asking the user if they want to suppress additional campaigns when posts are updated
 print '<p><input type=CHECKBOX value="on_create_once" name="on_create_once" ';