myexperiment-hackers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[myexperiment-hackers] [2624] trunk/app: Add ability for external sites


From: noreply
Subject: [myexperiment-hackers] [2624] trunk/app: Add ability for external sites to become 'launch' destinations by letting
Date: Mon, 4 Jul 2011 12:07:58 -0400 (EDT)

Revision
2624
Author
dtm
Date
2011-07-04 12:07:58 -0400 (Mon, 04 Jul 2011)

Log Message

Add ability for external sites to become 'launch' destinations by letting
them add an extra download option.

Modified Paths

Diff

Modified: trunk/app/controllers/workflows_controller.rb (2623 => 2624)


--- trunk/app/controllers/workflows_controller.rb	2011-07-04 15:29:33 UTC (rev 2623)
+++ trunk/app/controllers/workflows_controller.rb	2011-07-04 16:07:58 UTC (rev 2624)
@@ -9,6 +9,7 @@
 
   before_filter :login_required, :except => [:index, :show, :download, :named_download, :galaxy_tool, :galaxy_tool_download, :statistics, :launch, :search]
   
+  before_filter :store_callback, : [:index, :search]
   before_filter :find_workflows_rss, : [:index]
   before_filter :find_workflow_auth, :except => [:search, :index, :new, :create]
   
@@ -646,6 +647,26 @@
 
 protected
 
+  def store_callback
+    if params[:callback]
+      session_object={ :url ="" URI.parse(params[:callback]), :label => 'Launch', :additional => 'externally', :format => 'xml' }
+      if params[:callback_contenttypes]
+        session_object[:types] =
+            params[:callback_contenttypes].split(',').map {|x| x.to_i }
+      end
+      if params[:callback_label]
+        session_object[:label] = params[:callback_label]
+      end 
+      if params[:callback_additional]
+        session_object[:additional] = params[:callback_additional]
+      end 
+      if params[:callback_format]
+        session_object[:format] = params[:callback_format]
+      end 
+      session[:callback]=session_object
+    end
+  end
+
   def find_workflows_rss
     # Only carry out if request is for RSS
     if params[:format] and params[:format].downcase == 'rss'

Modified: trunk/app/helpers/application_helper.rb (2623 => 2624)


--- trunk/app/helpers/application_helper.rb	2011-07-04 15:29:33 UTC (rev 2623)
+++ trunk/app/helpers/application_helper.rb	2011-07-04 16:07:58 UTC (rev 2624)
@@ -1557,4 +1557,22 @@
     return "Your OpenID URL is: #{user.openid_url}" if user.openid_url
   end
 
+  def callback_url(item)
+    item_url = nil
+    if session && session[:callback]:
+      case session[:callback][:format]
+      when 'uri'
+        item_url = rest_resource_uri(item)
+      when 'xml'
+        item_url = rest_access_uri(item)
+      else
+        return nil
+      end
+    end
+    if item_url
+      return session[:callback][:url].merge('?myexp_url='+URI.escape(item_url))
+    else
+      return nil
+    end
+  end
 end

Modified: trunk/app/views/workflows/_table.rhtml (2623 => 2624)


--- trunk/app/views/workflows/_table.rhtml	2011-07-04 15:29:33 UTC (rev 2623)
+++ trunk/app/views/workflows/_table.rhtml	2011-07-04 16:07:58 UTC (rev 2624)
@@ -120,7 +120,12 @@
 			<% end -%>
 			    <td class="actions" style="width: 120px;">
 			      <%= icon "show", workflow_path(workflow), nil, nil, "View" %>
-				  	<% if Authorization.is_authorized?("download", nil, workflow, current_user) %><%= icon "download", download_workflow_path(workflow), nil, nil, "Download (v#{workflow.versions.count})" %><% end %>
+				  	<% if Authorization.is_authorized?("download", nil, workflow, current_user) -%>
+						<%= icon "download", download_workflow_path(workflow), nil, nil, "Download (v#{workflow.versions.count})" %>
+						<% if ( session[:callback] && (session[:callback][:types].include?(workflow.content_type_id))) -%>
+							<%= icon "download", callback_url(workflow).to_s, nil, {:rel => 'nofollow'}, session[:callback][:label] -%>
+						<% end %>
+					<% end %>
 			      <% if mine?(workflow) %><%= icon "manage", edit_workflow_path(workflow), nil, nil, "Manage" %><% end %>
 						<br/><br/>
 						

Modified: trunk/app/views/workflows/show.rhtml (2623 => 2624)


--- trunk/app/views/workflows/show.rhtml	2011-07-04 15:29:33 UTC (rev 2623)
+++ trunk/app/views/workflows/show.rhtml	2011-07-04 16:07:58 UTC (rev 2624)
@@ -224,7 +224,13 @@
           <ul class="sectionIcons">
             <li style="margin-left: 0;"><%= icon('workflow', @named_download_url, "Download Workflow file/package (for version address@hidden)", nil, "Download Workflow File/Package (address@hidden)") -%></li>
           </ul>
-
+          <% if session[:callback] &&
+                session[:callback][:types].include?(@workflow.content_type_id) -%>
+            <br />
+            <ul class="sectionIcons">
+              <li style="margin-left: 0;"><%= icon('workflow', callback_url(@workflow).to_s, "#{session[:callback][:label]} Workflow file/package (for version address@hidden)", {:rel => 'nofollow'}, "#{session[:callback][:label]} Workflow #{session[:callback][:additional]}") -%></li>
+            </ul>
+          <% end %>
           <% if @workflow.content_type.title == "Taverna 2" %>
             <br />
 

reply via email to

[Prev in Thread] Current Thread [Next in Thread]