www/members/check_boardstmt.cgi (78 lines of code) (raw):
#!/usr/bin/env ruby
PAGETITLE = "Review existing Board statements" # Wvisible:meeting
$LOAD_PATH.unshift '/srv/whimsy/lib'
require 'wunderbar/bootstrap'
require 'whimsy/asf'
require 'whimsy/asf/forms'
require 'whimsy/asf/member-files'
require 'whimsy/asf/meeting-util'
_html do
_body? do
latest_meeting_dir = ASF::MeetingUtil.latest_meeting_dir
timelines = ASF::MeetingUtil.get_timeline(latest_meeting_dir)
_whimsy_body(
title: PAGETITLE,
related: {
'meeting.cgi' => 'Member Meeting FAQ and info',
'nominate_board.cgi' => 'Nominate someone for the Board',
'check_membernoms.cgi' => 'Cross-check existing New Member nominations',
ASF::SVN.svnpath!('Meetings') => 'Official Meeting Agenda Directory'
},
helpblock: -> {
_b "For: #{timelines['meeting_type']} Meeting on: #{timelines['meeting_iso']}"
_ 'This script displays a list of currently nominated directors and both statements from the Nominator/seconds, and (when present) Candidate statements from the nominees themselves.'
_br
_ 'IMPORTANT: many director candidates may not add statements until near the nomination close deadline; this is just a preview!'
_br
_ 'This only works in the period shortly before or after a Members meeting!'
}
) do
_h2 id: 'board-statement-list' do
_ 'All Board Nominations and Candidate Statements'
end
statements = ASF::MemberFiles.board_all
statements.each do |availid, shash|
listid = availid
public_name = shash.fetch('Public Name', availid) # Fallback if missing
_div.panel.panel_primary id: listid do
_div.panel_heading do
_h3!.panel_title do
_! 'Nominee for Director: '
_a! "#{public_name} (#{availid})", href: "/roster/committer/#{availid}"
end
end
_div.panel_body do
_div.panel_group id: listid, role: 'tablist', aria_multiselectable: 'true' do
_whimsy_accordion_item(listid: listid, itemid: "#{availid}-nomination", itemtitle: "Nominated by: #{shash['nombycn']}", n: 1, itemclass: 'panel-info') do
_p do
_strong "Nominated By: #{shash['nombycn']} (#{shash['nombyeavailid']})"
_br
_ "Seconded by: #{shash['Seconded by'].join(', ')}"
_br
_ "Nomination and Seconds Statements:"
end
_p do
allnoms = shash.fetch('Nomination Statement', '(no statement entered)')
allnoms.split('\n') do |l| # FIXME: add styles to key lines or (availids)
_! l
_br
end
end
end
_whimsy_accordion_item(listid: listid, itemid: "#{availid}-statement", itemtitle: "Candidate Statement for (#{availid})", n: 2, itemclass: 'panel-primary') do
_p do
# FIXME: display message for blank/one line or when DECLINE
candidate_stmt = shash.fetch('candidate_statement', '') # See also lib/whimsy/asf/member-files.rb::board_statements
candidate_stmt.each do |l| # TODO: consider adding styles or markdown processing
_! l
_br
end
end
end
end
end
end
end
end
end
end