This commit is contained in:
DengDai
2025-12-08 14:31:21 +08:00
commit ad2c65affb
35 changed files with 3500 additions and 0 deletions

View File

@@ -0,0 +1,183 @@
{% extends "base.html" %}
{% block title %}设置 - PT Manager{% endblock %}
{% block page_title %}系统设置{% endblock %}
{% block content %}
<div class="bg-white rounded-lg shadow-md p-6">
<div class="mb-8">
<h2 class="text-xl font-semibold mb-4">NexusPHP 站点设置</h2>
<form id="nexusphp-settings-form">
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div>
<label for="site_url" class="block text-sm font-medium text-gray-700 mb-1">站点URL</label>
<input type="url" id="site_url" name="site_url" value="{{ nexusphp_site_url }}"
class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500">
</div>
<div>
<label for="api_token" class="block text-sm font-medium text-gray-700 mb-1">API Token</label>
<input type="password" id="api_token" name="api_token" value="{{ nexusphp_api_token }}"
class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500">
</div>
</div>
<div class="mt-6">
<button type="submit"
class="bg-blue-600 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">
保存设置
</button>
</div>
</form>
</div>
<div class="border-t border-gray-200 pt-8">
<h2 class="text-xl font-semibold mb-4">qBittorrent 客户端设置</h2>
<form id="qbittorrent-settings-form">
<div class="grid grid-cols-1 md:grid-cols-2 gap-6 mb-4">
<div>
<label for="qb_host" class="block text-sm font-medium text-gray-700 mb-1">主机地址</label>
<input type="text" id="qb_host" name="host" value="{{ qbittorrent_config.host if qbittorrent_config else '' }}"
class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500">
</div>
<div>
<label for="qb_port" class="block text-sm font-medium text-gray-700 mb-1">端口</label>
<input type="number" id="qb_port" name="port" value="{{ qbittorrent_config.port if qbittorrent_config else '' }}"
class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500">
</div>
<div>
<label for="qb_username" class="block text-sm font-medium text-gray-700 mb-1">用户名</label>
<input type="text" id="qb_username" name="username" value="{{ qbittorrent_config.username if qbittorrent_config else '' }}"
class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500">
</div>
<div>
<label for="qb_password" class="block text-sm font-medium text-gray-700 mb-1">密码</label>
<input type="password" id="qb_password" name="password" value="{{ qbittorrent_config.password if qbittorrent_config else '' }}"
class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500">
</div>
</div>
<div class="flex items-center mb-6">
<input type="checkbox" id="qb_enabled" name="enabled" {% if qbittorrent_config and qbittorrent_config.enabled %}checked{% endif %}
class="h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded">
<label for="qb_enabled" class="ml-2 block text-sm text-gray-900">
启用 qBittorrent 客户端
</label>
</div>
<div>
<button type="submit"
class="bg-blue-600 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">
保存设置
</button>
</div>
</form>
</div>
<div class="border-t border-gray-200 pt-8 mt-8">
<h2 class="text-xl font-semibold mb-4">Transmission 客户端设置</h2>
<form id="transmission-settings-form">
<div class="grid grid-cols-1 md:grid-cols-2 gap-6 mb-4">
<div>
<label for="tr_host" class="block text-sm font-medium text-gray-700 mb-1">主机地址</label>
<input type="text" id="tr_host" name="host" value="{{ transmission_config.host if transmission_config else '' }}"
class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500">
</div>
<div>
<label for="tr_port" class="block text-sm font-medium text-gray-700 mb-1">端口</label>
<input type="number" id="tr_port" name="port" value="{{ transmission_config.port if transmission_config else '' }}"
class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500">
</div>
<div>
<label for="tr_username" class="block text-sm font-medium text-gray-700 mb-1">用户名</label>
<input type="text" id="tr_username" name="username" value="{{ transmission_config.username if transmission_config else '' }}"
class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500">
</div>
<div>
<label for="tr_password" class="block text-sm font-medium text-gray-700 mb-1">密码</label>
<input type="password" id="tr_password" name="password" value="{{ transmission_config.password if transmission_config else '' }}"
class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500">
</div>
</div>
<div class="flex items-center mb-6">
<input type="checkbox" id="tr_enabled" name="enabled" {% if transmission_config and transmission_config.enabled %}checked{% endif %}
class="h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded">
<label for="tr_enabled" class="ml-2 block text-sm text-gray-900">
启用 Transmission 客户端
</label>
</div>
<div>
<button type="submit"
class="bg-blue-600 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">
保存设置
</button>
</div>
</form>
</div>
</div>
<script>
document.getElementById('nexusphp-settings-form').addEventListener('submit', function(e) {
e.preventDefault();
const formData = new FormData(this);
fetch('/settings/nexusphp', {
method: 'POST',
body: formData,
})
.then(response => response.json())
.then(data => {
if (data.success) {
alert('NexusPHP 设置已保存');
} else {
alert('保存失败: ' + data.error);
}
})
.catch(error => {
alert('保存失败: ' + error.message);
});
});
document.getElementById('qbittorrent-settings-form').addEventListener('submit', function(e) {
e.preventDefault();
const formData = new FormData(this);
fetch('/settings/qbittorrent', {
method: 'POST',
body: formData,
})
.then(response => response.json())
.then(data => {
if (data.success) {
alert('qBittorrent 设置已保存');
} else {
alert('保存失败: ' + data.error);
}
})
.catch(error => {
alert('保存失败: ' + error.message);
});
});
document.getElementById('transmission-settings-form').addEventListener('submit', function(e) {
e.preventDefault();
const formData = new FormData(this);
fetch('/settings/transmission', {
method: 'POST',
body: formData,
})
.then(response => response.json())
.then(data => {
if (data.success) {
alert('Transmission 设置已保存');
} else {
alert('保存失败: ' + data.error);
}
})
.catch(error => {
alert('保存失败: ' + error.message);
});
});
</script>
{% endblock %}