function echo_unparse_display() { $this->set_my_conflicts(); $bypaper = array(); foreach ($this->assigners as $assigner) { if ($text = $assigner->unparse_display($this)) { $c = $assigner->contact; if ($c && !isset($c->sorter)) { Contact::set_sorter($c); } arrayappend($bypaper[$assigner->pid], (object) array("text" => $text, "sorter" => $c ? $c->sorter : $text)); } } AutoassignmentPaperColumn::$header = "Assignment"; $assinfo = array(); PaperColumn::register(new AutoassignmentPaperColumn()); foreach ($bypaper as $pid => $list) { uasort($list, "Contact::compare"); $t = ""; foreach ($list as $x) { $t .= ($t ? ", " : "") . '<span class="nw">' . $x->text . '</span>'; } if (isset($this->my_conflicts[$pid])) { if ($this->my_conflicts[$pid] !== true) { $t = '<em>Hidden for conflict</em>'; } else { $t = PaperList::wrapChairConflict($t); } } $assinfo[$pid] = $t; } ksort($assinfo); AutoassignmentPaperColumn::$info = $assinfo; if ($this->unparse_search) { $query_order = "(" . $this->unparse_search . ") THEN HEADING:none " . join(" ", array_keys($assinfo)); } else { $query_order = count($assinfo) ? join(" ", array_keys($assinfo)) : "NONE"; } foreach ($this->unparse_columns as $k => $v) { $query_order .= " show:{$k}"; } $query_order .= " show:autoassignment"; $search = new PaperSearch($this->contact, array("t" => defval($_REQUEST, "t", "s"), "q" => $query_order)); $plist = new PaperList($search); echo $plist->table_html("reviewers", ["nofooter" => 1]); $deltarev = new AssignmentCountSet(); foreach ($this->assigners as $assigner) { $assigner->account($deltarev); } if (count(array_intersect_key($deltarev->bypc, pcMembers()))) { $summary = []; $tagger = new Tagger($this->contact); $nrev = new AssignmentCountSet(); $deltarev->rev && $nrev->load_rev(); $deltarev->lead && $nrev->load_lead(); $deltarev->shepherd && $nrev->load_shepherd(); foreach (pcMembers() as $p) { if ($deltarev->get($p->contactId)->ass) { $t = '<div class="ctelt"><div class="ctelti'; if ($k = $p->viewable_color_classes($this->contact)) { $t .= ' ' . $k; } $t .= '"><span class="taghl">' . $this->contact->name_html_for($p) . "</span>: " . plural($deltarev->get($p->contactId)->ass, "assignment") . self::review_count_report($nrev, $deltarev, $p, "After assignment: ") . "<hr class=\"c\" /></div></div>"; $summary[] = $t; } } if (count($summary)) { echo "<div class=\"g\"></div>\n", "<h3>Summary</h3>\n", '<div class="pc_ctable">', join("", $summary), "</div>\n"; } } }
foreach ($pctags as $tagname => $pctag) { if ($tagname !== "pc" && Tagger::strip_nonviewable($tagname, $Me)) { $pctyp_sel[] = array($pctag, "pc_tags_members(\"{$tagname}\")", "#{$pctag}"); } } } $pctyp_sel[] = array("__flip__", -1, "flip"); $sep = ""; foreach ($pctyp_sel as $pctyp) { echo $sep, "<a href='#pc_", $pctyp[0], "' onclick='", "papersel(", $pctyp[1], ",\"pcs[]\");\$\$(\"pctyp_sel\").checked=true;return false'>", $pctyp[2], "</a>"; $sep = ", "; } echo ")</td></tr>\n<tr><td></td><td>"; $summary = []; $tagger = new Tagger($Me); $nrev = new AssignmentCountSet(); $nrev->load_rev(); foreach (pcMembers() as $p) { $t = '<div class="ctelt"><div class="ctelti'; if ($k = $p->viewable_color_classes($Me)) { $t .= ' ' . $k; } $t .= '"><table><tr><td class="nw">' . Ht::checkbox("pcs[]", $p->contactId, isset($pcsel[$p->contactId]), ["id" => "pcsel" . (count($summary) + 1), "onclick" => "rangeclick(event,this);\$\$('pctyp_sel').checked=true"]) . ' </td><td><span class="taghl">' . $Me->name_html_for($p) . '</span>' . AssignmentSet::review_count_report($nrev, null, $p, "") . "</td></tr></table><hr class=\"c\" />\n</div></div>"; $summary[] = $t; } echo '<div class="pc_ctable">', join("", $summary), "</div>\n", "</td></tr></table>\n"; // Bad pairs function bpSelector($i, $which) { static $badPairSelector, $Qreq; if (!$badPairSelector) {