diff --git a/apps/unfuddle/assets/images/icon.jpg b/apps/unfuddle/assets/images/icon.jpg new file mode 100644 index 0000000..c228406 Binary files /dev/null and b/apps/unfuddle/assets/images/icon.jpg differ diff --git a/apps/unfuddle/assets/images/screenshot.png b/apps/unfuddle/assets/images/screenshot.png new file mode 100644 index 0000000..8583a89 Binary files /dev/null and b/apps/unfuddle/assets/images/screenshot.png differ diff --git a/apps/unfuddle/assets/views/button/overlay.hbs b/apps/unfuddle/assets/views/button/overlay.hbs new file mode 100644 index 0000000..d0825b7 --- /dev/null +++ b/apps/unfuddle/assets/views/button/overlay.hbs @@ -0,0 +1,18 @@ +

Edit the message details

+{{#each tickets}} + {{#ticket}} +
    +
  1. + + +
  2. +
  3. + + +
  4. +
+ {{/ticket}} +{{/each}} \ No newline at end of file diff --git a/apps/unfuddle/config.yml b/apps/unfuddle/config.yml new file mode 100644 index 0000000..9154696 --- /dev/null +++ b/apps/unfuddle/config.yml @@ -0,0 +1,31 @@ +name: Unfuddle +slug: unfuddle +access: public + +description: "Send messages to Unfuddle" + +category: project-management + +tags: +- unfuddle +- project management + +developer: + name: Mohnish G J + email: mohnishgj@gmail.com + twitter: "mohnishgj" + github: boddhisattva + +# The following config keys are used by Action Handlers +# Set button 'overlay' to true, if you want to have an overlay +# The valid values for screens are [ticket, all, unassigned, my, groups] +# Remove the following section if you do not want to define Action Handlers + +action: + button: + overlay: true + screens: + - ticket + - all + - unassigned + label: Send To Unfuddle diff --git a/apps/unfuddle/unfuddle.rb b/apps/unfuddle/unfuddle.rb new file mode 100644 index 0000000..e58a47c --- /dev/null +++ b/apps/unfuddle/unfuddle.rb @@ -0,0 +1,50 @@ +module Unfuddle + module ActionHandler + def button + ticket = payload.tickets.first + html = '' + http.basic_auth(settings.username, settings.password) + begin + response = create_message(payload.overlay.title,payload.overlay.body) + html = message_html_comment(response['Location'], payload.overlay.title) if response and response['Location'] + comment_on_ticket(ticket, html) + response + rescue Exception => e + return [500, e.message] + end + [200, "Message successfully created on Unfuddle"] + end + end +end + +module Unfuddle + class Base < SupportBeeApp::Base + string :subdomain, :required => true, :label => 'Subdomain' + string :username, :required => true, :label => 'Username' + password :password, :required => true + string :project_id, :required => true, :label => 'Enter Project ID' + boolean :use_ssl, :default => true, :label => 'Use SSL' + + white_list :subdomain, :username, :use_ssl, :project_id + + private + + def create_message(title, body) + response = http.post "https://#{settings.subdomain}.unfuddle.com/api/v1/projects/#{settings.project_id}/messages.json" do |req| + req.headers['Content-Type'] = 'application/json' + req.body = {message:{title:title, body:body}}.to_json + end + response.status == 201 ? response : false + end + + def message_html_comment(target_url, message_title) + "Message created in Unfuddle
#{message_title}" + end + + def comment_on_ticket(ticket, html) + ticket.comment(:html => html) + end + + end +end +