', Ht::submit("assign", "Prepare assignments", ["class" => "btn-primary"]),
diff --git a/bulkassign.php b/bulkassign.php
index ef347d8e44..72ab9c147b 100644
--- a/bulkassign.php
+++ b/bulkassign.php
@@ -95,12 +95,12 @@ function complete_assignment($qreq, $callback) {
$Conf->header("Assignments", "bulkassign", ["subtitle" => "Bulk update"]);
-echo '
';
// upload review form action
diff --git a/conflictassign.php b/conflictassign.php
index 6c481a7f6f..389d7b4a0a 100644
--- a/conflictassign.php
+++ b/conflictassign.php
@@ -9,12 +9,12 @@
$Me->add_overrides(Contact::OVERRIDE_CONFLICT);
$Conf->header("Assignments", "assignpc", ["subtitle" => "Conflicts"]);
-echo '
';
diff --git a/manualassign.php b/manualassign.php
index 728cfd40bb..1359b8281c 100644
--- a/manualassign.php
+++ b/manualassign.php
@@ -113,12 +113,12 @@ function saveAssignments($qreq, $reviewer) {
$Conf->header("Assignments", "assignpc", ["subtitle" => "Manual"]);
-echo '
';
// Help list
diff --git a/scripts/script.js b/scripts/script.js
index 9eff3df131..07f8bbbb81 100644
--- a/scripts/script.js
+++ b/scripts/script.js
@@ -8652,7 +8652,7 @@ if (siteinfo.paperid) {
// profile UI
handle_ui.on("js-cannot-delete-user", function (event) {
var hc = popup_skeleton({near: this});
- hc.push('
This user cannot be deleted because they are the sole contact for ' + $(this).data("soleAuthor") + '. To delete the user, first remove these papers from the database or give the papers more contacts.
');
+ hc.push('
This user cannot be deleted because they are the sole contact for ' + $(this).data("soleAuthor") + '. To delete the user, first remove those submissions from the database or give them more contacts.
');
hc.push_actions(['
Cancel ']);
hc.show();
});
diff --git a/settings.php b/settings.php
index 18ad6d6075..f86b815796 100644
--- a/settings.php
+++ b/settings.php
@@ -86,6 +86,7 @@ function choose_setting_group($qreq, SettingValues $sv) {
$Sv->report(isset($Qreq->update) && $Qreq->valid_post());
$Sv->render_group(strtolower($Group), ["top" => true]);
+$Sv->echo_close_subhead();
echo '
',
diff --git a/src/settings/s_options.php b/src/settings/s_options.php
index c3fdd8fb38..a5ebfd03c6 100644
--- a/src/settings/s_options.php
+++ b/src/settings/s_options.php
@@ -317,7 +317,7 @@ private function render_option(SettingValues $sv, PaperOption $io = null, $ipos,
static function render(SettingValues $sv) {
$self = new Options_SettingRenderer;
- echo "
\n";
+ $sv->echo_subhead("Submission fields");
echo "
\n",
Ht::hidden("has_options", 1),
Ht::hidden("options:version", (int) $sv->conf->setting("options")),
diff --git a/src/settings/s_reviews.php b/src/settings/s_reviews.php
index 0b704154e7..fdeeff41eb 100644
--- a/src/settings/s_reviews.php
+++ b/src/settings/s_reviews.php
@@ -70,7 +70,7 @@ static function render(SettingValues $sv) {
// Deadlines
- echo "
\n";
+ $sv->echo_subhead("Deadlines & rounds", ["id" => "rounds"]);
echo '
Reviews are due by the deadline, but cannot be modified after the hard deadline. Most conferences don’t use hard deadlines for reviews.
';
echo '
', ($sv->type_hint("date") ? : ""), '
';
diff --git a/src/settings/s_subform.php b/src/settings/s_subform.php
index b0e91a9802..dd2e681f0c 100644
--- a/src/settings/s_subform.php
+++ b/src/settings/s_subform.php
@@ -225,7 +225,7 @@ static function parse($suffix, $sv, $check) {
class SubForm_SettingRenderer {
static function render(SettingValues $sv) {
- echo "
\n";
+ $sv->echo_subhead("Abstract and PDF");
echo '
';
echo '
',
@@ -246,8 +246,8 @@ static function render(SettingValues $sv) {
echo '
';
- echo "
\n",
- '
\n";
$sv->echo_checkbox("sub_pcconf", "Collect authors’ PC conflicts", ["class" => "uich js-foldup"]);
$cflt = array();
diff --git a/src/settings/s_tags.php b/src/settings/s_tags.php
index b804ff8897..f0bdfe8007 100644
--- a/src/settings/s_tags.php
+++ b/src/settings/s_tags.php
@@ -44,7 +44,7 @@ static function render_tag_rank(SettingValues $sv) {
static function render(SettingValues $sv) {
// Tags
$tagmap = $sv->conf->tags();
- echo "
\n";
+ $sv->echo_subhead("Tags");
echo '
';
$sv->render_group("tags/main");
@@ -55,7 +55,7 @@ static function render(SettingValues $sv) {
echo "
\n";
}
static function render_tag_seeall(SettingValues $sv) {
- echo '
';
+ echo '
';
$sv->echo_checkbox('tag_seeall', "PC can see tags for conflicted submissions");
echo '
';
}
@@ -80,8 +80,8 @@ static function render_styles(SettingValues $sv) {
. "
";
}
+ $sv->echo_subhead("Colors and styles", ["id" => "colors-and-styles"]);
echo Ht::hidden("has_tag_color", 1),
- '
',
"
Submissions tagged with a style name, or with an associated tag, appear in that style in lists. This also applies to PC tags.
",
'
Style name Tags ',
join("", $tag_colors_rows), "
\n";
diff --git a/src/settings/s_topics.php b/src/settings/s_topics.php
index 68601007c7..872cbcc820 100644
--- a/src/settings/s_topics.php
+++ b/src/settings/s_topics.php
@@ -16,7 +16,7 @@ static function render(SettingValues $sv) {
}
Dbl::free($result);
- echo "
\n";
+ $sv->echo_subhead("Topics", ["id" => "topics"]);
echo "
Authors select the topics that apply to their submissions. PC members can indicate topics they’re interested in or search using the “topic:” keyword. Use a colon to create topic groups, as in “Systems: Correctness” and “Systems: Performance”.";
if ($sv->conf->has_topics()) {
echo " To delete an existing topic, remove its name.";
diff --git a/src/settings/s_users.php b/src/settings/s_users.php
index 35ab8dd64d..70d91ff2e8 100644
--- a/src/settings/s_users.php
+++ b/src/settings/s_users.php
@@ -4,7 +4,7 @@
class Users_SettingRenderer {
static function render(SettingValues $sv) {
- echo "
";
+ $sv->echo_subhead("Program committee & system administrators");
echo '
Create PC accounts · ',
"Select a user’s name to edit a profile.
\n";
$pl = new ContactList($sv->user, false);
diff --git a/src/settingvalues.php b/src/settingvalues.php
index d754d0ca20..8ff39fb900 100644
--- a/src/settingvalues.php
+++ b/src/settingvalues.php
@@ -555,7 +555,9 @@ class SettingValues extends MessageSet {
private $null_mailer;
/** @var ?GroupedExtensions */
- private $_gxt = null;
+ private $_gxt;
+ /** @var bool */
+ private $_in_subhead = false;
function __construct(Contact $user) {
parent::__construct();
@@ -658,6 +660,23 @@ function crosscheck() {
function render_group($g, $options = null) {
$this->gxt()->render_group($g, $options);
}
+ /** @param string $html
+ * @param array $opts */
+ function echo_subhead($html, $opts = null) {
+ $this->echo_close_subhead();
+ echo '
';
+ $this->_in_subhead = true;
+ }
+ function echo_close_subhead() {
+ if ($this->_in_subhead) {
+ echo "
\n\n";
+ $this->_in_subhead = false;
+ }
+ }
/** @return bool */
diff --git a/stylesheets/style.css b/stylesheets/style.css
index de9636efef..5a1cc90ce4 100644
--- a/stylesheets/style.css
+++ b/stylesheets/style.css
@@ -1365,17 +1365,19 @@ th.settings-simplehead {
margin-top: 0;
margin-bottom: 0;
}
-.form-g,
.settings-rf, .settings-rf-deleted {
margin-bottom: 2em;
}
-.settings-opt {
+.form-hg, .settings-opt {
margin-bottom: 3em;
}
-.form-g-2 {
+.form-g, .form-g-5 {
+ margin-bottom: 2.25em;
+}
+.form-g-3 {
margin-bottom: 1em;
}
-.form-g-1 {
+.form-g-2 {
margin-bottom: 0.5em;
}
.form-g + .form-nearby {