mirror of https://github.com/jumpserver/jumpserver
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
158 lines
5.1 KiB
158 lines
5.1 KiB
{% extends '_base_create_update.html' %}
|
|
{% load static %}
|
|
{% load bootstrap3 %}
|
|
{% load i18n %}
|
|
|
|
{% block form %}
|
|
<form id="appForm" method="post" class="form-horizontal">
|
|
{% if form.non_field_errors %}
|
|
<div class="alert alert-danger">
|
|
{{ form.non_field_errors }}
|
|
</div>
|
|
{% endif %}
|
|
{% csrf_token %}
|
|
{% bootstrap_field form.name layout="horizontal" %}
|
|
{% bootstrap_field form.asset layout="horizontal" %}
|
|
{% bootstrap_field form.type layout="horizontal" %}
|
|
{% bootstrap_field form.path layout="horizontal" %}
|
|
|
|
<div class="hr-line-dashed"></div>
|
|
|
|
{# chrome #}
|
|
<div class="chrome-fields">
|
|
{% bootstrap_field form.chrome_target layout="horizontal" %}
|
|
{% bootstrap_field form.chrome_username layout="horizontal" %}
|
|
{% bootstrap_field form.chrome_password layout="horizontal" %}
|
|
</div>
|
|
|
|
{# mysql workbench #}
|
|
<div class="mysql_workbench-fields">
|
|
{% bootstrap_field form.mysql_workbench_ip layout="horizontal" %}
|
|
{% bootstrap_field form.mysql_workbench_name layout="horizontal" %}
|
|
{% bootstrap_field form.mysql_workbench_username layout="horizontal" %}
|
|
{% bootstrap_field form.mysql_workbench_password layout="horizontal" %}
|
|
</div>
|
|
|
|
{# vmware #}
|
|
<div class="vmware_client-fields">
|
|
{% bootstrap_field form.vmware_target layout="horizontal" %}
|
|
{% bootstrap_field form.vmware_username layout="horizontal" %}
|
|
{% bootstrap_field form.vmware_password layout="horizontal" %}
|
|
</div>
|
|
|
|
{# custom #}
|
|
<div class="custom-fields">
|
|
{% bootstrap_field form.custom_cmdline layout="horizontal" %}
|
|
{% bootstrap_field form.custom_target layout="horizontal" %}
|
|
{% bootstrap_field form.custom_username layout="horizontal" %}
|
|
{% bootstrap_field form.custom_password layout="horizontal" %}
|
|
</div>
|
|
|
|
{% bootstrap_field form.comment layout="horizontal" %}
|
|
<div class="hr-line-dashed"></div>
|
|
<div class="form-group">
|
|
<div class="col-sm-4 col-sm-offset-2">
|
|
<button class="btn btn-default" type="reset"> {% trans 'Reset' %}</button>
|
|
|
|
<button id="submit_button" class="btn btn-primary" type="submit">{% trans 'Submit' %}</button>
|
|
</div>
|
|
</div>
|
|
|
|
</form>
|
|
{% endblock %}
|
|
|
|
{% block custom_foot_js %}
|
|
<script type="text/javascript">
|
|
var app_type_id = '#' + '{{ form.type.id_for_label }}';
|
|
var app_path_id = '#' + '{{ form.path.id_for_label }}';
|
|
var all_type_fields = [
|
|
'.chrome-fields',
|
|
'.mysql_workbench-fields',
|
|
'.vmware_client-fields',
|
|
'.custom-fields'
|
|
];
|
|
var app_type_map_default_fields_value = {
|
|
'chrome': {
|
|
'app_path': 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe'
|
|
},
|
|
'mysql_workbench': {
|
|
'app_path': 'C:\\Program Files\\MySQL\\MySQL Workbench 8.0 CE\\MySQLWorkbench.exe'
|
|
},
|
|
'vmware_client': {
|
|
'app_path': 'C:\\Program Files (x86)\\VMware\\Infrastructure\\Virtual Infrastructure Client\\Launcher\\VpxClient.exe'
|
|
},
|
|
'custom': {'app_path': ''}
|
|
};
|
|
function getAppType(){
|
|
return $(app_type_id+ " option:selected").val();
|
|
}
|
|
function initialDefaultValue(){
|
|
var app_type = getAppType();
|
|
var app_path = $(app_path_id).val();
|
|
if(app_path){
|
|
app_type_map_default_fields_value[app_type]['app_path'] = app_path
|
|
}
|
|
}
|
|
function setDefaultValue(){
|
|
// 设置类型相关字段的默认值
|
|
var app_type = getAppType();
|
|
var app_path = app_type_map_default_fields_value[app_type]['app_path'];
|
|
$(app_path_id).val(app_path)
|
|
}
|
|
function hiddenFields(){
|
|
var app_type = getAppType();
|
|
$.each(all_type_fields, function(index, value){
|
|
$(value).addClass('hidden')
|
|
});
|
|
$('.' + app_type + '-fields').removeClass('hidden');
|
|
}
|
|
function constructParams(data) {
|
|
var typeList = ['chrome', 'mysql_workbench', 'vmware_client', 'custom'];
|
|
var params = {};
|
|
$.each(typeList, function(index, value){
|
|
if (data.type === value){
|
|
for (var k in data){
|
|
if (k.startsWith(value)){
|
|
params[k] = data[k]
|
|
}
|
|
}
|
|
}
|
|
});
|
|
return params;
|
|
}
|
|
$(document).ready(function () {
|
|
$('.select2').select2({
|
|
closeOnSelect: true
|
|
});
|
|
initialDefaultValue();
|
|
hiddenFields();
|
|
setDefaultValue();
|
|
})
|
|
.on('change', app_type_id, function(){
|
|
hiddenFields();
|
|
setDefaultValue();
|
|
})
|
|
.on("submit", "form", function (evt) {
|
|
evt.preventDefault();
|
|
var the_url = '{% url "api-applications:remote-app-list" %}';
|
|
var redirect_to = '{% url "applications:remote-app-list" %}';
|
|
var method = "POST";
|
|
{% if type == "update" %}
|
|
the_url = '{% url "api-applications:remote-app-detail" object.id %}';
|
|
method = "PUT";
|
|
{% endif %}
|
|
var form = $("form");
|
|
var data = form.serializeObject();
|
|
data["params"] = constructParams(data);
|
|
var props = {
|
|
url: the_url,
|
|
data: data,
|
|
method: method,
|
|
form: form,
|
|
redirect_to: redirect_to
|
|
};
|
|
formSubmit(props);
|
|
})
|
|
;
|
|
</script>
|
|
{% endblock %} |