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}}
+
+ -
+
+
+
+ -
+
+
+
+
+ {{/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
+