www/board/agenda/views/actions/status.json.rb (26 lines of code) (raw):
#
# Add action item status updates to pending list
#
Pending.update(env.user, @agenda) do |pending|
pending['status'] ||= []
# identify the action to be updated
update = {
owner: @owner,
text: @text,
pmc: @pmc,
date: @date
}
# search for a match against previously pending status updates
match = nil
pending['status'].each do |status|
found = true
update.each do |key, value|
found=false if value != status[key]
end
match = status if found
end
# if none found, add update to the list
pending['status'] << update if not match
# change the status in the update
(match || update)[:status] =
@status.strip.gsub(/\s+/, ' ').
gsub(/(.{1,62})(\s+|\Z)/, '\\1' + "\n".ljust(15)).strip
# if change is reverted, remove item from the pending queue
if match
parsed = Agenda.parse(@agenda, :quick)
actions = parsed.find {|item| item['title'] == 'Action Items'}
pending['status'].delete match if actions['actions'].include? match
end
end