This just needs a couple of tweaks. First, the upload_name_for_path should be rewritten for this purpose to preserve the filename whenever possible, replace Upload Image in the dialog box with Upload File, and indicate that the text entered will be the text of the URL. The HTML portion that you've included is incorrect and needs to be something more like: print %Q{<a href="#{url}">#{alt}</a>}. Alt could come back as just plain text without underscores or anything and there's no need for width and height.
Your def is also missing two end statements at the end of it... just for reference ;-).
I also think that, for the sake of inclusiveness, the command should be scoped to handle just about anything besides images but ask first before uploading with a quick yes/no dialog.
I've got a working version right now but am adding some of the above ideas. If anyone is interested I'll tweak it up and send it along to add to the discussion.
Brett
On Nov 1, 2006, at 2:03 PM, Daniel Käsmayr wrote:
Hello Allan,
I don't know about patches, but this will, at least upload files and insert Markdown/<a href> links to the uploaded file… I don't know about textile, so feel free to add that. Of course, it would be much more clean if one had just one method for uploading but the hack works, I believe.
As for the dragged URLs: this would need to be done on a TextMate level, but the dragged item should be noted as URL by the OS, and as such we would just need some mechanism for accepting it ;) I guess it would take Allan about -56 seconds to do so, and yes I have read the "bug reporting how to" by ranchero.com ;)
Just add this to blogging.rb
def upload_file require "#{ENV['TM_SUPPORT_PATH']}/lib/progress.rb" require "#{ENV['TM_SUPPORT_PATH']}/lib/escape.rb" require 'xmlrpc/base64'
# Makes sure endpoint is determined and elements are parsed current_password = password # The packet we will be constructing data = {} full_path = ENV['TM_DROPPED_FILEPATH'] upload_name, alt = upload_name_for_path(full_path) data['name'] = upload_name data['bits'] = XMLRPC::Base64.new(IO.read(full_path)) TextMate.call_with_progress(:title => "Upload File", :message
=> "Uploading to Server “#{@host}”…") do begin result = client.newMediaObject(self.blog_id, self.username, current_password, data) url = result['url'] if url case ENV['TM_SCOPE'] when /.markdown/ print "[${1:#{alt}}](#{url})" else print %Q{<a href="#{url}" alt="${1:#{CGI::escapeHTML alt}}"#{height_width}#{ENV['TM_XHTML']}>} end else TextMate.exit_show_tool_tip("Error uploading file.") end rescue XMLRPC::FaultException => e TextMate.exit_show_tool_tip("Error uploading file. Check your configuration and try again.") end
Dan
PS: Thanks to the original blogging.rb code and the fact that ruby is so easy to read and understand, even for non-rubyists like myself ;) ______________________________________________________________________ For new threads USE THIS: textmate@lists.macromates.com (threading gets destroyed and the universe will collapse if you don't) http://lists.macromates.com/mailman/listinfo/textmate
Brett Terpstra : Art Director Circle Six Design, Inc. 111 Riverfront Dr, Suite 204 .................................................. p: 507.459.4398 877.858.4332 f: 1.866.540.3063 e: brett@circlesixdesign.com http://www.circlesixdesign.com ..................................................