www/roster/views/ppmc/mod.js.rb (73 lines of code) (raw):
#
# Modify People's role in a podling
#
class PPMCMod < Vue
mixin ProjectMod
options mod_tag: 'ppmcmod', mod_action: 'actions/ppmc'
def initialize
@people = []
end
def render
_div.modal.fade id: $options.mod_tag, tabindex: -1 do
_div.modal_dialog do
_div.modal_content do
_div.modal_header.bg_info do
_button.close 'x', data_dismiss: 'modal'
_h4.modal_title "Modify People's Roles in the " +
@@project.display_name + ' Podling'
end
_div.modal_body do
_div.container_fluid do
_table.table do
_thead do
_tr do
_th 'id'
_th 'name'
end
end
_tbody do
@people.each do |person|
_tr do
_td person.id
_td person.name
end
end
end
end
end
end
_div.modal_footer do
_span.status 'Processing request...' if @disabled
_button.btn.btn_default 'Cancel', data_dismiss: 'modal',
disabled: @disabled
if @@auth.ppmc
# show add to PPMC button only if every person is not on the PPMC
if @people.all? {|person| !@@project.owners.include? person.id}
_button.btn.btn_primary 'Add to PPMC',
data_action: 'add ppmc',
onClick: self.post, disabled: (@people.empty?)
end
end
# show add as mentor button only if every person is not a mentor
if @@auth.ipmc
if @people.all? {|person| !@@project.mentors.include? person.id}
plural = (@people.length > 1 ? 's' : '')
action = 'add mentor'
if @people.any? {|person| !@@project.owners.include? person.id}
action += ' ppmc'
end
_button.btn.btn_primary "Add as Mentor#{plural}",
data_action: action, onClick: self.post,
disabled: (@people.empty?)
end
end
# remove from all relevant locations
remove_from = ['committer']
if @people.any? {|person| @@project.owners.include? person.id}
remove_from << 'ppmc'
end
if @people.any? {|person| @@project.mentors.include? person.id}
remove_from << 'mentor'
end
_button.btn.btn_primary "Remove from project (#{remove_from.join(', ')})", onClick: self.post,
data_action: "remove #{remove_from.join(' ')}"
end
end
end
end
end
end