Files
ns2.0/templates/admin.html

202 lines
10 KiB
HTML
Executable File

{% extends "base.html" %}
{% block content %}
{% include 'admin_nav.html' %}
<div class="admin-container">
<div class="admin-content">
<!-- 添加应用部分 -->
<div class="admin-grid" id="add-app">
<div class="admin-card">
<div class="card-header">
<div class="header-left">
<i class="fas fa-plus-circle"></i>
<h3>添加新应用</h3>
</div>
</div>
<form onsubmit="submitAddAppForm(event, this)" enctype="multipart/form-data" class="admin-form">
<div class="form-group">
<label for="app-name">应用名称</label>
<input type="text" id="app-name" name="name" placeholder="请输入应用名称" required>
</div>
{% if is_superadmin() %}
<div class="form-group">
<label for="app-icon">应用图标</label>
<div class="file-input-wrapper">
<input type="file" id="app-icon" name="icon">
<label for="app-icon" class="file-input-label">
<i class="fas fa-cloud-upload-alt"></i>
<span>选择文件</span>
</label>
</div>
<div class="form-group">
<label for="icon-url">或输入图标URL</label>
<input type="url" id="icon-url" name="icon_url" placeholder="http://example.com/icon.png">
</div>
</div>
{% else %}
<div class="form-group">
<label for="icon-url">图标URL</label>
<input type="url" id="icon-url" name="icon_url" placeholder="http://example.com/icon.png" required>
</div>
{% endif %}
<div class="form-group">
<label for="category">分类</label>
<select id="category" name="category_id" required>
{% for category in categories %}
<option value="{{ category.id }}">{{ category.name }}</option>
{% endfor %}
</select>
</div>
<div class="form-group">
<label for="download-url">下载链接(可选)</label>
<input type="url" id="download-url" name="download_url" placeholder="http://example.com/download">
</div>
<button type="submit" class="btn-primary">
<i class="fas fa-plus"></i> 添加应用
</button>
</form>
</div>
</div>
<!-- 分类管理部分 -->
<div class="admin-grid" id="categories">
<div class="admin-card">
<div class="card-header">
<i class="fas fa-folder-plus"></i>
<h3>添加新分类</h3>
</div>
<form onsubmit="submitAddCategoryForm(event, this)" class="admin-form">
<div class="form-group">
<label for="category-name">分类名称</label>
<input type="text" id="category-name" name="name" placeholder="请输入分类名称" required>
</div>
<button type="submit" class="btn-primary">
<i class="fas fa-plus"></i> 添加分类
</button>
</form>
<!-- 分类磁贴区域 -->
<div class="category-tiles">
{% for category in categories %}
{% if is_superadmin() %}
<div class="category-tile" ondblclick="enableEdit(this, '{{ category.id }}')">
<span class="category-name" data-id="{{ category.id }}">{{ category.name }}</span>
<form action="{{ url_for('edit_category', category_id=category.id) }}"
method="POST"
class="edit-category-form"
style="display: none;">
<input type="text" name="name" value="{{ category.name }}"
class="edit-category-input"
onblur="submitForm(this.form)"
onkeydown="handleKeyPress(event, this.form)">
</form>
<a href="{{ url_for('delete_category', category_id=category.id) }}"
class="delete-category"
onclick="return confirm('确定要删除这个分类吗?')">
<i class="fas fa-times"></i>
</a>
</div>
{% else %}
<div class="category-tile">
<span class="category-name">{{ category.name }}</span>
</div>
{% endif %}
{% endfor %}
</div>
</div>
</div>
<!-- 应用管理部分 -->
<div class="admin-card full-width" id="apps">
<div class="card-header">
<div class="header-left">
<i class="fas fa-th-large"></i>
<h3>应用管理 {% if search %}(搜索结果){% else %}(共{{ apps|length }}个){% endif %}</h3>
</div>
<form class="search-form header-search" method="GET" action="{{ url_for('admin') }}">
<div class="search-wrapper">
<i class="fas fa-search"></i>
<input type="text" name="search" placeholder="搜索应用..." value="{{ search }}">
</div>
</form>
</div>
<!-- 批量操作按钮 -->
{% if is_superadmin() %}
<div class="batch-operations">
<button onclick="deleteSelected()" class="btn-delete" id="delete-selected" style="display: none;">
<i class="fas fa-trash"></i> 批量删除
</button>
</div>
{% endif %}
<div class="table-responsive">
<table class="admin-table">
<thead>
<tr>
<th><input type="checkbox" id="select-all" onclick="toggleSelectAll()"></th>
<th>图标</th>
<th>名称</th>
<th>分类</th>
<th>添加时间</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{% for app in apps %}
<tr>
<td><input type="checkbox" class="app-checkbox" value="{{ app.id }}"></td>
<td>
<div class="app-icon-small">
{% if 'http' in app.icon_path %}
<img src="{{ app.icon_path }}" alt="{{ app.name }}">
{% else %}
<img src="{{ url_for('static', filename='uploads/' + app.icon_path) }}" alt="{{ app.name }}">
{% endif %}
</div>
</td>
<td>
<form onsubmit="submitEditForm(event, this)" class="edit-form">
<input type="hidden" name="app_id" value="{{ app.id }}">
<div class="edit-group">
<input type="text" name="name" value="{{ app.name }}" required placeholder="应用名称">
<select name="category_id" required>
{% for category in categories %}
<option value="{{ category.id }}" {% if category.id == app.category_id %}selected{% endif %}>
{{ category.name }}
</option>
{% endfor %}
</select>
<button type="submit" class="btn-edit" title="保存">
<i class="fas fa-save"></i> 保存
</button>
</div>
</form>
</td>
<td>
{% for category in categories %}
{% if category.id == app.category_id %}
{{ category.name }}
{% endif %}
{% endfor %}
</td>
<td>{{ app.created_at }}</td>
<td>
<div class="action-buttons">
{% if is_superadmin() %}
<a href="#" class="btn-delete" onclick="deleteApp('{{ app.id }}'); return false;">
<i class="fas fa-trash"></i>
</a>
{% endif %}
</div>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
{% endblock %}