diff --git a/lib/galaxy/web/controllers/dataset.py b/lib/galaxy/web/controllers/dataset.py
index 97b60cc5726..fc10d5cb5da 100644
--- a/lib/galaxy/web/controllers/dataset.py
+++ b/lib/galaxy/web/controllers/dataset.py
@@ -418,17 +418,25 @@ class DatasetInterface( BaseController, UsesAnnotations, UsesHistoryDatasetAssoc
return self.stored_list_grid( trans, status=status, message=message, **kwargs )
@web.expose
- def imp( self, trans, id=None, **kwd ):
+ def imp( self, trans, dataset_id=None, **kwd ):
""" Import another user's dataset via a shared URL; dataset is added to user's current history. """
msg = ""
+ # Set referer message.
+ referer = trans.request.referer
+ if referer is not "":
+ referer_message = "return to the previous page" % referer
+ else:
+ referer_message = "go to Galaxy's start page" % url_for( '/' )
+
# Error checking.
- if not id:
- return trans.show_error_message( "You must specify an ID for a dataset to import." )
+ if not dataset_id:
+ return trans.show_error_message( "You must specify a dataset to import. You can %s." % referer_message, use_panels=True )
# Do import.
cur_history = trans.get_history( create=True )
- status, message = self._copy_datasets( trans, [ id ], [ cur_history ] )
+ status, message = self._copy_datasets( trans, [ dataset_id ], [ cur_history ] )
+ message = message + "
You can start using the dataset or %s." % ( url_for('/'), referer_message )
return trans.show_message( message, type=status )
@web.expose
diff --git a/lib/galaxy/web/controllers/history.py b/lib/galaxy/web/controllers/history.py
index b867fccca93..41711c25ba7 100644
--- a/lib/galaxy/web/controllers/history.py
+++ b/lib/galaxy/web/controllers/history.py
@@ -505,16 +505,27 @@ class HistoryController( BaseController, Sharable, UsesAnnotations, UsesHistory
msg = ""
user = trans.get_user()
user_history = trans.get_history()
+ # Set referer message
+ if 'referer' in kwd:
+ referer = kwd['referer']
+ else:
+ referer = trans.request.referer
+ if referer is not "":
+ referer_message = "return to the previous page" % referer
+ else:
+ referer_message = "go to Galaxy's start page" % url_for( '/' )
+
+ # Do import.
if not id:
- return trans.show_error_message( "You must specify a history you want to import." )
+ return trans.show_error_message( "You must specify a history you want to import.
You can %s." % referer_message, use_panels=True )
import_history = self.get_history( trans, id, check_ownership=False )
if not import_history:
- return trans.show_error_message( "The specified history does not exist.")
+ return trans.show_error_message( "The specified history does not exist.
You can %s." % referer_message, use_panels=True )
if not import_history.importable:
- error( "The owner of this history has disabled imports via this link." )
+ return trans.show_error_message( "The owner of this history has disabled imports via this link.
You can %s." % referer_message, use_panels=True )
if user:
if import_history.user_id == user.id:
- return trans.show_error_message( "You cannot import your own history." )
+ return trans.show_error_message( "You cannot import your own history.
You can %s." % referer_message, use_panels=True )
new_history = import_history.copy( target_user=user )
new_history.name = "imported: " + new_history.name
new_history.user_id = user.id
@@ -530,9 +541,9 @@ class HistoryController( BaseController, Sharable, UsesAnnotations, UsesHistory
trans.sa_session.flush()
if not user_history.datasets:
trans.set_history( new_history )
- return trans.show_ok_message( """
- History "%s" has been imported. Click here
- to begin.""" % ( new_history.name, web.url_for( '/' ) ) )
+ return trans.show_ok_message(
+ message="""History "%s" has been imported.
You can start using this history or %s."""
+ % ( new_history.name, web.url_for( '/' ), referer_message ), use_panels=True )
elif not user_history or not user_history.datasets or confirm:
new_history = import_history.copy()
new_history.name = "imported: " + new_history.name
@@ -548,13 +559,13 @@ class HistoryController( BaseController, Sharable, UsesAnnotations, UsesHistory
trans.sa_session.add( new_history )
trans.sa_session.flush()
trans.set_history( new_history )
- return trans.show_ok_message( """
- History "%s" has been imported. Click here
- to begin.""" % ( new_history.name, web.url_for( '/' ) ) )
+ return trans.show_ok_message(
+ message="""History "%s" has been imported.
You can start using this history or %s."""
+ % ( new_history.name, web.url_for( '/' ), referer_message ), use_panels=True )
return trans.show_warn_message( """
Warning! If you import this history, you will lose your current
- history. Click here to confirm.
- """ % web.url_for( id=id, confirm=True ) )
+ history.
You can continue and import this history or %s.
+ """ % ( web.url_for( id=id, confirm=True, referer=trans.request.referer ), referer_message ), use_panels=True )
@web.expose
def view( self, trans, id=None ):
diff --git a/lib/galaxy/web/controllers/workflow.py b/lib/galaxy/web/controllers/workflow.py
index 2e794f986ff..5d241d66b4a 100644
--- a/lib/galaxy/web/controllers/workflow.py
+++ b/lib/galaxy/web/controllers/workflow.py
@@ -278,18 +278,28 @@ class WorkflowController( BaseController, Sharable, UsesStoredWorkflow, UsesAnno
@web.expose
@web.require_login( "use Galaxy workflows" )
def imp( self, trans, id, **kwargs ):
+ # Set referer message.
+ referer = trans.request.referer
+ if referer is not "":
+ referer_message = "return to the previous page" % referer
+ else:
+ referer_message = "go to Galaxy's start page" % url_for( '/' )
+
+ # Do import.
session = trans.sa_session
stored = self.get_stored_workflow( trans, id, check_ownership=False )
if stored.importable == False:
- error( "The owner of this workflow has disabled imports via this link" )
+ return trans.show_error_message( "The owner of this workflow has disabled imports via this link.
You can %s" % referer_message, use_panels=True )
elif stored.user == trans.user:
- error( "You are already the owner of this workflow, can't import" )
+ return trans.show_error_message( "You can't import this workflow because you own it.
You can %s" % referer_message, use_panels=True )
elif stored.deleted:
- error( "This workflow has been deleted, can't import" )
+ return trans.show_error_message( "You can't import this workflow because it has been deleted.
You can %s" % referer_message, use_panels=True )
elif session.query( model.StoredWorkflowUserShareAssociation ) \
.filter_by( user=trans.user, stored_workflow=stored ).count() > 0:
- error( "This workflow is already shared with you" )
+ # TODO: this is only reasonable as long as import creates a sharing relation.
+ return trans.show_error_message( "You can't import this workflow because it is already shared with you.
You can %s" % referer_message, use_panels=True )
else:
+ # TODO: Shouldn't an import provide a copy of a workflow?
share = model.StoredWorkflowUserShareAssociation()
share.stored_workflow = stored
share.user = trans.user
@@ -297,7 +307,9 @@ class WorkflowController( BaseController, Sharable, UsesStoredWorkflow, UsesAnno
session.add( share )
session.flush()
# Redirect to load galaxy frames.
- return trans.response.send_redirect( url_for( controller='workflow' ) )
+ return trans.show_ok_message(
+ message="""Workflow "%s" has been imported.
You can start using this workflow or %s."""
+ % ( stored.name, web.url_for( controller='workflow' ), referer_message ), use_panels=True )
@web.expose
@web.require_login( "use Galaxy workflows" )
diff --git a/lib/galaxy/web/framework/__init__.py b/lib/galaxy/web/framework/__init__.py
index ccc2ea41ce1..6dad4bc6d5c 100644
--- a/lib/galaxy/web/framework/__init__.py
+++ b/lib/galaxy/web/framework/__init__.py
@@ -561,7 +561,7 @@ class UniverseWebTransaction( base.DefaultWebTransaction ):
context.
"""
return self.template_context['message']
- def show_message( self, message, type='info', refresh_frames=[], cont=None ):
+ def show_message( self, message, type='info', refresh_frames=[], cont=None, use_panels=False ):
"""
Convenience method for displaying a simple page with a single message.
@@ -571,22 +571,22 @@ class UniverseWebTransaction( base.DefaultWebTransaction ):
`refresh_frames`: names of frames in the interface that should be
refreshed when the message is displayed
"""
- return self.fill_template( "message.mako", message_type=type, message=message, refresh_frames=refresh_frames, cont=cont )
- def show_error_message( self, message, refresh_frames=[] ):
+ return self.fill_template( "message.mako", message_type=type, message=message, refresh_frames=refresh_frames, cont=cont, use_panels=use_panels )
+ def show_error_message( self, message, refresh_frames=[], use_panels=False ):
"""
Convenience method for displaying an error message. See `show_message`.
"""
- return self.show_message( message, 'error', refresh_frames )
- def show_ok_message( self, message, refresh_frames=[] ):
+ return self.show_message( message, 'error', refresh_frames, use_panels=use_panels )
+ def show_ok_message( self, message, refresh_frames=[], use_panels=False ):
"""
Convenience method for displaying an ok message. See `show_message`.
"""
- return self.show_message( message, 'done', refresh_frames )
- def show_warn_message( self, message, refresh_frames=[] ):
+ return self.show_message( message, 'done', refresh_frames, use_panels=use_panels )
+ def show_warn_message( self, message, refresh_frames=[], use_panels=False ):
"""
Convenience method for displaying an warn message. See `show_message`.
"""
- return self.show_message( message, 'warning', refresh_frames )
+ return self.show_message( message, 'warning', refresh_frames, use_panels=use_panels )
def show_form( self, form, header=None, template="form.mako" ):
"""
Convenience method for displaying a simple page with a single HTML
diff --git a/templates/dataset/display.mako b/templates/dataset/display.mako
index ad0bfd74676..2dd8d20c226 100644
--- a/templates/dataset/display.mako
+++ b/templates/dataset/display.mako
@@ -23,7 +23,8 @@
<%def name="render_item_links( data )">
## Provide links to save data and TODO: import dataset.
- save
+
+
%def>
<%def name="render_item( data, data_to_render )">
@@ -49,11 +50,12 @@
+
+ + + %endif +%def> + diff --git a/templates/grid_base.mako b/templates/grid_base.mako index d80b2674575..d9c5125016d 100644 --- a/templates/grid_base.mako +++ b/templates/grid_base.mako @@ -9,6 +9,7 @@ return '/base.mako' %> <%inherit file="${inherit(context)}"/> +<%namespace file="/display_common.mako" import="render_message" /> <%def name="init()"> <% @@ -663,23 +664,13 @@-
- - - %endif -%def> - ## Render grid header. <%def name="render_grid_header( grid, render_title=True)">