blob: 5c62cdea26fe2e366fa451a162c80d474ebe4eda [file] [log] [blame]
{% extends g.theme.master %}
{% do g.register_forge_css('css/forge/deck.css') %}
{% do g.register_forge_js('js/project_tools.js', location='body_js_tail') %}
{% block title %}{{c.project.name}} / Tools{% endblock %}
{% block header %}Tools{% endblock %}
{% block content %}
<h3>Click to install</h3>
<div class="nested-grid-container">
{% for tool in installable_tools %}
<span class="tcenter grid-4 installable_tool">
<a class="install_trig" data-tool="{{ tool['name'] }}">
<span class="tool_title">{{ tool['app'].tool_label }}{{' (%s)' % tool.app.status if tool.app.status != 'production' else ''}}</span><br />
<img src="{{ g.theme.app_icon_url(tool['app'], 32) or 'unk.png' }}" alt="">
</a>
</span>
{% endfor %}
<span class="tcenter grid-4 installable_tool">
<a class="install_trig" data-tool="">
<span class="tool_title">Subproject</span><br />
<img src="{{ g.theme.app_icon_url('subproject', 32) }}" alt="">
</a>
</span>
</div>
<form method="post" action="update_mounts" id="install_form" style="display:none">
<input type="hidden" name="new.ordinal" value="{{installable_tools|length + c.project.direct_subprojects|length}}"/>
<input type="hidden" name="new.ep_name" class="new_ep_name">
<label class="grid-13">Label</label>
<div class="grid-13"><input type="text" name="new.mount_label" class="new_mount_label"></div>
<label class="grid-13">Mount Point</label>
<div class="grid-13"><input type="text" name="new.mount_point" class="new_mount_point"></div>
<div class="grid-13">&nbsp;</div>
<hr>
<div class="grid-13">&nbsp;</div>
<div class="grid-13">
<input type="submit" value="Save" name="new.install"> <a href="#" class="close btn link">Cancel</a>
</div>
</form>
{{c.install_modal.display(content='<h1>Install <span id="install_tool_label">Tool</span></h1>')}}
<h3>Installed tools</h3>
<p>
Sortable - define top menu order by moving tools with your mouse.
</p>
<div id="sortable" class="clearfix fourcol">
{% for mount in mounts %}
{% if 'ac' in mount %}
{% set app = mount['ac'].load()(c.project, mount['ac']) %}
{% set links = app.admin_menu() %}
{% set label = mount['ac'].options['mount_label'] if mount['ac'].options['mount_label'] != 'Tool Name' else mount['ac'].options['mount_point'] %}
<div class="fleft">
<ul class="deck">
<li class="tcenter">
<span class="tool_title">{{ label }}</span><br />
<img src="{{ g.theme.app_icon_url(app, 48) }}" alt="">
</li>
{% for link in links %}
<li>
<a href="{{ link.url }}" class="{{ link.className }}">{{ link.label }}</a>
</li>
{% endfor %}
{% if app.uninstallable %}
<li>
<form method="post" action="update_mounts" id="mounts_edit_2-{{loop.index0}}">
<input type="hidden" class="mount_point"
name="tool-{{loop.index0}}.mount_point"
value="{{mount['ac'].options.mount_point}}"/>
<input name="tool-{{loop.index0}}.delete" type="hidden" value="Delete"/>
{% if mount['ac'].load().uninstallable %}
<a href="#" class="mount_delete">Delete</a>
{% endif %}
</form>
</li>
{% endif %}
</ul>
{% if not app.uninstallable %}
<input type="hidden" class="mount_point" value="{{mount['ac'].options.mount_point}}"/>
{% endif %}
</div>
{% endif %}
{% if 'sub' in mount and not mount['sub'].deleted %}
<div class="fleft">
<ul class="deck">
<li class="tcenter">
<span class="tool_name">{{ mount['sub'].name }}</span><br />
<img src="{{ g.theme.app_icon_url('subproject', 48) }}" alt="">
</li>
<li>
<form method="post" action="update_mounts" id="mounts_edit_2-{{loop.index0}}">
<input type="hidden" class="shortname"
name="subproject-{{loop.index0}}.shortname"
value="{{mount['sub'].shortname}}"/>
<input name="subproject-{{loop.index0}}.delete" type="hidden" value="Delete"/>
<a href="#" class="mount_delete">Delete</a>
</form>
</li>
</ul>
</div>
{% endif %}
{% endfor %}
</div>
</div>
<form id="mount_delete_form" style="display:none">
<div class="grid-13">Warning: This will destroy all data in this tool and is non reversable!</div>
<div class="grid-13">&nbsp;</div>
<hr>
<div class="grid-13">&nbsp;</div>
<div class="grid-13">
<input type="button" value="Delete" class="continue_delete"> <input type="button" value="Cancel" class="cancel_delete close">
</div>
</form>
{{c.admin_modal.display(content='<h1 id="popup_title"></h1><div id="popup_contents"></div>')}}
{{c.mount_delete.display(content='<h1>Confirm Delete</h1>')}}
<div><!--dummy-->
<h3 style="clear:left">Grouping</h3>
<form method="POST" action="configure_tool_grouping" id="configure_grouping_form">
<label>Threshold for grouping tools by type:
<input name="grouping_threshold" value="{{c.project.get_tool_data('allura', 'grouping_threshold', 1)}}"/>
</label>
<br/><input type="submit" value="Change"/>
</form>
{% endblock %}
{% block extra_js %}
<script type="text/javascript">
var defaults = {
{% for tool in installable_tools %}
'{{tool.name}}':{'default_label':'{{tool.app.default_mount_label}}','default_mount':'{{tool.app.default_mount_point}}'}{% if not loop.last %},{% endif %}
{% endfor %}
};
</script>
{% endblock %}
{% block extra_css %}
<style type="text/css">
.pad .fourcol .fleft {
min-height: 200px;
}
#configure_grouping_form {
padding-left: 10px;
}
#configure_grouping_form input[name=grouping_threshold] {
width: 1.5em;
}
</style>
{% endblock %}