plugins/trello_plugin.rb in ladder_drive-0.6.5 vs plugins/trello_plugin.rb in ladder_drive-0.6.6
- old
+ new
@@ -100,10 +100,15 @@
Thread.start {
thread_proc
}
end
+ def label_in_board_with_color board, color
+ l = board.labels.find{|l| l.name == color}
+ l ||= Trello::Label.create board_id:board.id, name:color, color:color
+ end
+
def thread_proc
while arg = @worker_queue.pop
begin
event = arg[:event]
@@ -112,19 +117,26 @@
card_name = event[:card_name].dup || ""
card_name.gsub!(/__value__/, arg[:value] || "") if arg[:value].is_a? String
next if (card_name || "").empty?
- list_name = event[:list_name]
- next unless list_name
- list = board.lists.find{|l| l.name == list_name}
- next unless list
+ card = board.cards.find{|c| c.name == card_name}
+ card ||= Trello::Card.create name:card_name
- card = board.lists.map{|l| l.cards.map{|c| c}}.flatten.find{|c| c.name == card_name}
- if card
- card.move_to_list list
- else
- card = Trello::Card.create name:card_name, list_id:list.id
+ # move card into a list
+ list = board.lists.find{|l| l.name == event[:list_name]} if event[:list_name]
+ card.move_to_list list if list
+
+ # set color label
+ if event[:color]
+ if event[:color][:add]
+ label = label_in_board_with_color board, event[:color][:add]
+ card.add_label label
+ end
+ if event[:color][:remove]
+ label = label_in_board_with_color board, event[:color][:remove]
+ card.remove_label label
+ end
end
rescue => e
# TODO: Resend if it fails.
p e