Files
galaxy/templates/sharing_base.mako
T
Martin Cech 9c89d43875 fix shared mako templates that would not work with TS
by also looking for 'app' within context when 'webapp' is not present
and defaulting to 'galaxy' afterwards
2015-06-04 10:31:44 -04:00

274 lines
13 KiB
Mako

##
## Base template for sharing or publishing an item. Template expects the following parameters:
## (a) item - item to be shared.
##
<%!
def inherit(context):
if context.get('use_panels', False) == True:
if context.get('webapp'):
app_name = context.get('webapp')
elif context.get('app'):
app_name = context.get('app').name
else:
app_name = 'galaxy'
return '/webapps/%s/base_panels.mako' % app_name
else:
return '/base.mako'
%>
<%inherit file="${inherit(context)}"/>
<%namespace file="/display_common.mako" import="*" />
<%namespace file="/message.mako" import="render_msg" />
##
## Page methods.
##
<%def name="init()">
<%
self.has_left_panel=False
self.has_right_panel=False
self.message_box_visible=False
self.overlay_visible=False
self.message_box_class=""
self.active_view=""
self.body_class=""
%>
</%def>
<%def name="title()">
Sharing and Publishing ${get_class_display_name( item.__class__ )} '${get_item_name( item ) | h}'
</%def>
<%def name="javascripts()">
${parent.javascripts()}
<script type="text/javascript">
$(document).ready( function() {
//
// Set up slug-editing functionality.
//
var on_start = function( text_elt ) {
// Replace URL with URL text.
$('#item-url').hide();
$('#item-url-text').show();
// Allow only lowercase alphanumeric and '-' characters in slug.
text_elt.keyup(function(){
text_elt.val( $(this).val().replace(/\s+/g,'-').replace(/[^a-zA-Z0-9\-]/g,'').toLowerCase() )
});
};
var on_finish = function( text_elt ) {
// Replace URL text with URL.
$('#item-url-text').hide();
$('#item-url').show();
// Set URL to new value.
var new_url = $('#item-url-text').text();
var item_url_obj = $('#item-url');
item_url_obj.attr( "href", new_url );
item_url_obj.text( new_url );
};
<% controller_name = get_controller_name( item ) %>
async_save_text("edit-identifier", "item-identifier", "${h.url_for( controller=controller_name, action='set_slug_async', id=trans.security.encode_id( item.id ) )}", "new_slug", null, false, 0, on_start, on_finish);
});
</script>
</%def>
<%def name="stylesheets()">
${parent.stylesheets()}
<style>
## Put some whitespace before each section header.
h3 {
margin-top: 2em;
}
input.action-button {
margin-left: 0;
}
## If page is displayed in panels, pad from edges for readability.
%if context.get('use_panels'):
div#center {
padding: 10px;
}
%endif
</style>
</%def>
<%def name="center_panel()">
${self.body()}
</%def>
<%def name="body()">
## Set use_panels var for use in page's URLs.
<% use_panels = context.get('use_panels', False) %>
<% controller_name = get_controller_name( item ) %>
## Render message.
%if message:
${render_msg( message, status )}
%endif
<%
#
# Setup and variables needed for page.
#
# Get class name strings.
item_class_name = get_class_display_name( item.__class__ )
item_class_name_lc = item_class_name.lower()
item_class_plural_name = get_class_plural_display_name( item.__class__ )
item_class_plural_name_lc = item_class_plural_name.lower()
# Get item name.
item_name = get_item_name(item)
%>
<h2>Share or Publish ${item_class_name} '${item_name | h}'</h2>
## Require that user have a public username before sharing or publishing an item.
%if trans.get_user().username is None or trans.get_user().username is "":
<p>To make a ${item_class_name_lc} accessible via link or publish it, you must create a public username:</p>
<form action="${h.url_for( controller=controller_name, action='set_public_username', id=trans.security.encode_id( item.id ) )}"
method="POST">
<div class="form-row">
<label>Public Username:</label>
<div class="form-row-input">
<input type="text" name="username" size="40"/>
</div>
</div>
<div style="clear: both"></div>
<div class="form-row">
<input class="action-button" type="submit" name="Set Username" value="Set Username"/>
</div>
</form>
%else:
## User has a public username, so private sharing and publishing options.
<h3>Make ${item_class_name} Accessible via Link and Publish It</h3>
<div>
%if item.importable:
<%
item_status = "accessible via link"
if item.published:
item_status = item_status + " and published"
%>
This ${item_class_name_lc} is currently <strong>${item_status}</strong>.
<div>
<p>Anyone can view and import this ${item_class_name_lc} by visiting the following URL:
<blockquote>
<%
url = h.url_for( controller=controller_name, action='display_by_username_and_slug', username=trans.get_user().username, slug=item.slug, qualified=True )
url_parts = url.split("/")
%>
<a id="item-url" href="${url}" target="_top">${url}</a>
<span id="item-url-text" style="display: none">
${"/".join( url_parts[:-1] )}/<span id='item-identifier'>${url_parts[-1]}</span>
</span>
<a href="#" id="edit-identifier"><img src="${h.url_for('/static/images/fugue/pencil.png')}"/></a>
</blockquote>
%if item.published:
This ${item_class_name_lc} is publicly listed and searchable in Galaxy's <a href='${h.url_for( controller=controller_name, action='list_published' )}' target="_top">Published ${item_class_plural_name}</a> section.
%endif
</div>
<p>You can:
<div>
<form action="${h.url_for( controller=controller_name, action='sharing', id=trans.security.encode_id( item.id ) )}" method="POST">
%if not item.published:
## Item is importable but not published. User can disable importable or publish.
<input class="action-button" type="submit" name="disable_link_access" value="Disable Access to ${item_class_name} Link">
<div class="toolParamHelp">Disables ${item_class_name_lc}'s link so that it is not accessible.</div>
<br />
<input class="action-button" type="submit" name="publish" value="Publish ${item_class_name}" method="POST">
<div class="toolParamHelp">Publishes the ${item_class_name_lc} to Galaxy's <a href='${h.url_for( controller=controller_name, action='list_published' )}' target="_top">Published ${item_class_plural_name}</a> section, where it is publicly listed and searchable.</div>
<br />
%else: ## item.published == True
## Item is importable and published. User can unpublish or disable import and unpublish.
<input class="action-button" type="submit" name="unpublish" value="Unpublish ${item_class_name}">
<div class="toolParamHelp">Removes this ${item_class_name_lc} from Galaxy's <a href='${h.url_for(controller=controller_name, action='list_published' )}' target="_top">Published ${item_class_plural_name}</a> section so that it is not publicly listed or searchable.</div>
<br />
<input class="action-button" type="submit" name="disable_link_access_and_unpublish" value="Disable Access to ${item_class_name} via Link and Unpublish">
<div class="toolParamHelp">Disables this ${item_class_name_lc}'s link so that it is not accessible and removes ${item_class_name_lc} from Galaxy's <a href='${h.url_for(controller=controller_name, action='list_published' )}' target='_top'>Published ${item_class_plural_name}</a> section so that it is not publicly listed or searchable.</div>
%endif
</form>
</div>
%else:
<p>This ${item_class_name_lc} is currently restricted so that only you and the users listed below can access it. You can:</p>
<form action="${h.url_for(controller=controller_name, action='sharing', id=trans.security.encode_id(item.id) )}" method="POST">
<input class="action-button" type="submit" name="make_accessible_via_link" value="Make ${item_class_name} Accessible via Link">
<div class="toolParamHelp">Generates a web link that you can share with other people so that they can view and import the ${item_class_name_lc}.</div>
<br />
<input class="action-button" type="submit" name="make_accessible_and_publish" value="Make ${item_class_name} Accessible and Publish" method="POST">
<div class="toolParamHelp">Makes the ${item_class_name_lc} accessible via link (see above) and publishes the ${item_class_name_lc} to Galaxy's <a href='${h.url_for(controller=controller_name, action='list_published' )}' target='_top'>Published ${item_class_plural_name}</a> section, where it is publicly listed and searchable.</div>
</form>
%endif
##
## Sharing with Galaxy users.
##
<h3>Share ${item_class_name} with Individual Users</h3>
<div>
%if item.users_shared_with:
<p>
The following users will see this ${item_class_name_lc} in their ${item_class_name_lc} list and will be
able to view, import, and run it.
</p>
<table class="colored" border="0" cellspacing="0" cellpadding="0" width="100%">
<tr class="header">
<th>Email</th>
<th></th>
</tr>
%for i, association in enumerate( item.users_shared_with ):
<% user = association.user %>
<tr>
<td>
<div class="menubutton popup" id="user-${i}-popup">${user.email}</div>
</td>
<td>
<div popupmenu="user-${i}-popup">
<a class="action-button" href="${h.url_for(controller=controller_name, action='sharing', id=trans.security.encode_id( item.id ), unshare_user=trans.security.encode_id( user.id ), use_panels=use_panels )}">Unshare</a>
</div>
</td>
</tr>
%endfor
</table>
<p>
<a class="action-button"
href="${h.url_for(controller=controller_name, action='share', id=trans.security.encode_id(item.id), use_panels=use_panels )}">
<span>Share with another user</span>
</a>
%else:
<p>You have not shared this ${item_class_name_lc} with any users.</p>
<a class="action-button"
href="${h.url_for(controller=controller_name, action='share', id=trans.security.encode_id(item.id), use_panels=use_panels )}">
<span>Share with a user</span>
</a>
<br />
%endif
</div>
</div>
%endif
<br /><br />
<a href="${h.url_for(controller=controller_name, action="list" )}">Back to ${item_class_plural_name} List</a>
</%def>