reorganize toolshed repo page, add more fields

provide clipboard, provide more links
This commit is contained in:
Martin Cech
2015-03-23 16:52:19 -04:00
parent 3e65ea520c
commit a24e206ff7
4 changed files with 101 additions and 76 deletions
@@ -2252,6 +2252,8 @@ class RepositoryController( BaseUIController, ratings_util.ItemRatings ):
repo = hg_util.get_repo_for_repository( trans.app, repository=None, repo_path=repo_dir, create=False ) repo = hg_util.get_repo_for_repository( trans.app, repository=None, repo_path=repo_dir, create=False )
repo_name = kwd.get( 'repo_name', repository.name ) repo_name = kwd.get( 'repo_name', repository.name )
changeset_revision = kwd.get( 'changeset_revision', repository.tip( trans.app ) ) changeset_revision = kwd.get( 'changeset_revision', repository.tip( trans.app ) )
repository.share_url = suc.generate_sharable_link_for_repository_in_tool_shed( repository, changeset_revision=changeset_revision )
repository.clone_url = common_util.generate_clone_url_for_repository_in_tool_shed( trans.user, repository )
remote_repository_url = kwd.get( 'remote_repository_url', repository.remote_repository_url ) remote_repository_url = kwd.get( 'remote_repository_url', repository.remote_repository_url )
homepage_url = kwd.get( 'homepage_url', repository.homepage_url ) homepage_url = kwd.get( 'homepage_url', repository.homepage_url )
description = kwd.get( 'description', repository.description ) description = kwd.get( 'description', repository.description )
@@ -3297,6 +3299,8 @@ class RepositoryController( BaseUIController, ratings_util.ItemRatings ):
repo = hg_util.get_repo_for_repository( trans.app, repository=repository, repo_path=None, create=False ) repo = hg_util.get_repo_for_repository( trans.app, repository=repository, repo_path=None, create=False )
avg_rating, num_ratings = self.get_ave_item_rating_data( trans.sa_session, repository, webapp_model=trans.model ) avg_rating, num_ratings = self.get_ave_item_rating_data( trans.sa_session, repository, webapp_model=trans.model )
changeset_revision = kwd.get( 'changeset_revision', repository.tip( trans.app ) ) changeset_revision = kwd.get( 'changeset_revision', repository.tip( trans.app ) )
repository.share_url = suc.generate_sharable_link_for_repository_in_tool_shed( repository, changeset_revision=changeset_revision )
repository.clone_url = common_util.generate_clone_url_for_repository_in_tool_shed( trans.user, repository )
display_reviews = kwd.get( 'display_reviews', False ) display_reviews = kwd.get( 'display_reviews', False )
alerts = kwd.get( 'alerts', '' ) alerts = kwd.get( 'alerts', '' )
alerts_checked = CheckboxField.is_checked( alerts ) alerts_checked = CheckboxField.is_checked( alerts )
@@ -1,6 +1,7 @@
<%def name="common_javascripts(repository)"> <%def name="common_javascripts(repository)">
<script type="text/javascript"> <script type="text/javascript">
$(function(){ $(function(){
$("#tree").ajaxComplete(function(event, XMLHttpRequest, ajaxOptions) { $("#tree").ajaxComplete(function(event, XMLHttpRequest, ajaxOptions) {
_log("debug", "ajaxComplete: %o", this); // dom element listening _log("debug", "ajaxComplete: %o", this); // dom element listening
}); });
@@ -158,6 +159,14 @@
}; };
$(function() { $(function() {
init_dependencies(); init_dependencies();
$('#clone_clipboard').on('click', function( event ) {
event.preventDefault();
window.prompt("Copy to clipboard: Ctrl+C, Enter", "hg clone ${ repository.clone_url }");
});
$('#share_clipboard').on('click', function( event ) {
event.preventDefault();
window.prompt("Copy to clipboard: Ctrl+C, Enter", "${ repository.share_url }");
});
}); });
</script> </script>
</%def> </%def>
@@ -210,16 +219,13 @@
from tool_shed.util.shed_util_common import generate_sharable_link_for_repository_in_tool_shed from tool_shed.util.shed_util_common import generate_sharable_link_for_repository_in_tool_shed
sharable_link = generate_sharable_link_for_repository_in_tool_shed( repository, changeset_revision=changeset_revision ) sharable_link = generate_sharable_link_for_repository_in_tool_shed( repository, changeset_revision=changeset_revision )
%> %>
<a href="${sharable_link}">${sharable_link}</a> <a href="${ sharable_link }" target="_blank">${ sharable_link }</a>
</%def> </%def>
<%def name="render_clone_str( repository )"> <%def name="render_clone_str( repository )"><%
<%
from tool_shed.util.common_util import generate_clone_url_for_repository_in_tool_shed from tool_shed.util.common_util import generate_clone_url_for_repository_in_tool_shed
clone_str = generate_clone_url_for_repository_in_tool_shed( trans.user, repository ) clone_str = generate_clone_url_for_repository_in_tool_shed( trans.user, repository )
%> %>hg clone ${ clone_str }</%def>
hg clone <a href="${clone_str}">${clone_str}</a>
</%def>
<%def name="render_folder( folder, folder_pad, parent=None, row_counter=None, is_root_folder=False, render_repository_actions_for='tool_shed' )"> <%def name="render_folder( folder, folder_pad, parent=None, row_counter=None, is_root_folder=False, render_repository_actions_for='tool_shed' )">
<% <%
@@ -157,49 +157,32 @@ ${render_tool_shed_repository_actions( repository, metadata=metadata, changeset_
<p/> <p/>
%endif %endif
<div class="toolForm"> <div class="toolForm">
<div class="toolFormTitle">Repository '${repository.name | h}'</div> <div class="toolFormTitle">Repository <b>${repository.name | h}</b></div>
<div class="toolFormBody"> <div class="toolFormBody">
<form name="edit_repository" id="edit_repository" action="${h.url_for( controller='repository', action='manage_repository', id=trans.security.encode_id( repository.id ) )}" method="post" > <form name="edit_repository" id="edit_repository" action="${h.url_for( controller='repository', action='manage_repository', id=trans.security.encode_id( repository.id ) )}" method="post" >
<div class="form-row"> <div class="form-row">
<label>${sharable_link_label}</label> <b>Name:</b>
${render_sharable_str( repository, changeset_revision=sharable_link_changeset_revision )}
</div>
%if can_download or can_push:
<div class="form-row">
<label>Clone this repository:</label>
${render_clone_str( repository )}
</div>
%endif
<div class="form-row">
<label>Name:</label>
%if repository.times_downloaded > 0: %if repository.times_downloaded > 0:
${repository.name} <a title="Browse the contents of this repository" href="${h.url_for( controller='repository', action='browse_repository', id=trans.app.security.encode_id( repository.id ) )}">${repository.name}</a>
<div class="toolParamHelp" style="clear: both;">
Repository names cannot be changed if the repository has been cloned.
</div>
%else: %else:
<input name="repo_name" type="textfield" value="${repository.name | h}" size="40"/> <input name="repo_name" type="textfield" value="${repository.name | h}" size="40"/>
%endif %endif
<div class="toolParamHelp" style="clear: both;">
Repository names cannot be changed if the repository has been cloned.
</div>
<div style="clear: both"></div>
</div>
${render_repository_type_select_field( repository_type_select_field, render_help=True )}
<div class="form-row">
<label>Remote repository URL:</label>
<input name="remote_repository_url" type="textfield" value="${remote_repository_url | h}" size="80"/>
<div style="clear: both"></div> <div style="clear: both"></div>
</div> </div>
<div class="form-row"> <div class="form-row">
<label>Homepage URL:</label> <b>Owner:</b>
<input name="homepage_url" type="textfield" value="${homepage_url | h}" size="80"/> <a title="See all repositories owned by ${ repository.user.username | h }" href="${h.url_for( controller='repository', action='browse_repositories_by_user', user_id=trans.app.security.encode_id( repository.user.id ) )}">${ repository.user.username | h }</a>
<div style="clear: both"></div>
</div> </div>
<div class="form-row"> <div class="form-row">
<label>Synopsis:</label> <b>Synopsis:</b>
<input name="description" type="textfield" value="${description | h}" size="80"/> <input name="description" type="textfield" value="${description | h}" size="80"/>
<div style="clear: both"></div> <div style="clear: both"></div>
</div> </div>
<div class="form-row"> <div class="form-row">
<label>Detailed description:</label> <b>Detailed description:</b>
%if long_description: %if long_description:
<pre><textarea name="long_description" rows="3" cols="80">${long_description | h}</textarea></pre> <pre><textarea name="long_description" rows="3" cols="80">${long_description | h}</textarea></pre>
%else: %else:
@@ -208,32 +191,51 @@ ${render_tool_shed_repository_actions( repository, metadata=metadata, changeset_
<div style="clear: both"></div> <div style="clear: both"></div>
</div> </div>
<div class="form-row"> <div class="form-row">
<label>Revision:</label> <b>Content homepage:</b>
<input name="homepage_url" type="textfield" value="${homepage_url | h}" size="80"/>
<div style="clear: both"></div>
</div>
<div class="form-row">
<b>Development repository:</b>
<input name="remote_repository_url" type="textfield" value="${remote_repository_url | h}" size="80"/>
<div style="clear: both"></div>
</div>
<div class="form-row">
<b>${sharable_link_label}</b>
<a href="${ repository.share_url }" target="_blank">${ repository.share_url }</a>
<button title="to clipboard" class="btn btn-default btn-xs" id="share_clipboard"><span class="fa fa-clipboard"></span></button>
</div>
%if can_download or can_push:
<div class="form-row">
<b>Clone this repository:</b>
<code>hg clone ${ repository.clone_url }</code>
<button title="to clipboard" class="btn btn-default btn-xs" id="clone_clipboard"><span class="fa fa-clipboard"></span></button>
</div>
%endif
${render_repository_type_select_field( repository_type_select_field, render_help=True )}
<div class="form-row">
<b>Revision:</b>
%if can_view_change_log: %if can_view_change_log:
<a href="${h.url_for( controller='repository', action='view_changelog', id=trans.app.security.encode_id( repository.id ) )}">${revision_label}</a> <a title="See the revision history" href="${h.url_for( controller='repository', action='view_changelog', id=trans.app.security.encode_id( repository.id ) )}">${revision_label}</a>
%else: %else:
${revision_label} ${revision_label}
%endif %endif
</div> </div>
<div class="form-row"> <div class="form-row">
<label>Owner:</label> <b>This revision can be installed:</b>
${repository.user.username | h}
</div>
<div class="form-row">
<label>This revision can be installed:</label>
${revision_installable} ${revision_installable}
</div> </div>
<div class="form-row"> <div class="form-row">
<label>Times cloned / installed:</label> <b>Times cloned / installed:</b>
${repository.times_downloaded | h} ${repository.times_downloaded | h}
</div> </div>
%if is_admin: %if is_admin:
<div class="form-row"> <div class="form-row">
<label>Location:</label> <b>Location:</b>
${repository.repo_path( trans.app ) | h} ${repository.repo_path( trans.app ) | h}
</div> </div>
<div class="form-row"> <div class="form-row">
<label>Deleted:</label> <b>Deleted:</b>
${repository.deleted | h} ${repository.deleted | h}
</div> </div>
%endif %endif
@@ -19,11 +19,11 @@
if changeset_revision_is_repository_tip: if changeset_revision_is_repository_tip:
tip_str = 'repository tip' tip_str = 'repository tip'
sharable_link_label = 'Sharable link to this repository:' sharable_link_label = 'Link to this repository:'
sharable_link_changeset_revision = None sharable_link_changeset_revision = None
else: else:
tip_str = '' tip_str = ''
sharable_link_label = 'Sharable link to this repository revision:' sharable_link_label = 'Link to this repository revision:'
sharable_link_changeset_revision = changeset_revision sharable_link_changeset_revision = changeset_revision
if heads: if heads:
@@ -99,65 +99,78 @@
<p/> <p/>
%endif %endif
<div class="toolForm"> <div class="toolForm">
<div class="toolFormTitle">Repository '${repository.name | h}'</div> <div class="toolFormTitle">Repository <b>${repository.name | h}</b></div>
<div class="toolFormBody"> <div class="toolFormBody">
<div class="form-row"> <div class="form-row">
<label>${sharable_link_label}</label> <b>Name:</b>\
${render_sharable_str( repository, changeset_revision=sharable_link_changeset_revision )}
</div>
%if can_download or can_push:
<div class="form-row">
<label>Clone this repository:</label>
${render_clone_str( repository )}
</div>
%endif
<div class="form-row">
<label>Name:</label>
%if can_browse_contents: %if can_browse_contents:
<a href="${h.url_for( controller='repository', action='browse_repository', id=trans.app.security.encode_id( repository.id ) )}">${repository.name}</a> <a title="Browse the contents of this repository" href="${h.url_for( controller='repository', action='browse_repository', id=trans.app.security.encode_id( repository.id ) )}">${repository.name}</a>
%else: %else:
${repository.name | h} ${repository.name | h}
%endif %endif
</div> </div>
<div class="form-row"> <div class="form-row">
<label>Type:</label> <b>Owner:</b>
<a title="See all repositories owned by ${ repository.user.username | h }" href="${h.url_for( controller='repository', action='browse_repositories_by_user', user_id=trans.app.security.encode_id( repository.user.id ) )}">${ repository.user.username | h }</a>
</div>
<div class="form-row">
<b>Synopsis:</b>
${repository.description | h}
</div>
%if repository.long_description:
<div class="form-row">
<p>${repository.long_description|h}</p>
## ${render_long_description( to_html_string( repository.long_description ) )}
</div>
%endif
<div class="form-row">
<b>Content homepage:</b>
<a href="${repository.homepage_url | h}" target="_blank">${repository.homepage_url | h}</a>
</div>
<div class="form-row">
<b>Development repository:</b>
<a href="${repository.remote_repository_url | h}" target="_blank">${repository.remote_repository_url | h}</a>
</div>
<div class="form-row">
<b>${sharable_link_label}</b>
<a href="${ repository.share_url }" target="_blank">${ repository.share_url }</a>
<button title="to clipboard" class="btn btn-default btn-xs" id="share_clipboard"><span class="fa fa-clipboard"></span></button>
</div>
%if can_download or can_push:
<div class="form-row">
<b>Clone this repository:</b>
<code>hg clone ${ repository.clone_url }</code>
<button title="to clipboard" class="btn btn-default btn-xs" id="clone_clipboard"><span class="fa fa-clipboard"></span></button>
</div>
%endif
<div class="form-row">
<b>Type:</b>
${repository.type | h} ${repository.type | h}
<div style="clear: both"></div> <div style="clear: both"></div>
</div> </div>
<div class="form-row"> <div class="form-row">
<label>Synopsis:</label> <b>Revision:</b>
${repository.description | h}
</div>
%if repository.long_description:
${render_long_description( to_html_string( repository.long_description ) )}
%endif
<div class="form-row">
<label>Revision:</label>
%if can_view_change_log: %if can_view_change_log:
<a href="${h.url_for( controller='repository', action='view_changelog', id=trans.app.security.encode_id( repository.id ) )}">${revision_label}</a> <a title="See the revision history" href="${h.url_for( controller='repository', action='view_changelog', id=trans.app.security.encode_id( repository.id ) )}">${revision_label}</a>
%else: %else:
${revision_label} ${revision_label}
%endif %endif
</div> </div>
<div class="form-row"> <div class="form-row">
<label>Owner:</label> <b>This revision can be installed:</b>
${repository.user.username | h}
</div>
<div class="form-row">
<label>This revision can be installed:</label>
${revision_installable} ${revision_installable}
</div> </div>
<div class="form-row"> <div class="form-row">
<label>Times cloned / installed:</label> <b>Times cloned / installed:</b>
${repository.times_downloaded} ${repository.times_downloaded}
</div> </div>
%if trans.user_is_admin(): %if trans.user_is_admin():
<div class="form-row"> <div class="form-row">
<label>Location:</label> <b>Location:</b>
${repository.repo_path( trans.app ) | h} ${repository.repo_path( trans.app ) | h}
</div> </div>
<div class="form-row"> <div class="form-row">
<label>Deleted:</label> <b>Deleted:</b>
${repository.deleted} ${repository.deleted}
</div> </div>
%endif %endif