steps for launching
This commit is contained in:
@@ -17,18 +17,18 @@
|
||||
<div class="card-body">
|
||||
<form id="portainerForm" onsubmit="savePortainerConnection(event)">
|
||||
<div class="mb-3">
|
||||
<label for="portainerUrl" class="form-label">Portainer URL</label>
|
||||
<label for="portainerUrl" class="form-label">Portainer Server URL</label>
|
||||
<input type="url" class="form-control" id="portainerUrl" name="portainerUrl"
|
||||
placeholder="https://portainer.example.com" required
|
||||
value="{{ portainer_settings.url if portainer_settings and portainer_settings.url else '' }}">
|
||||
<div class="form-text">The URL of your Portainer instance</div>
|
||||
<div class="form-text">The URL of your Portainer server</div>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="portainerApiKey" class="form-label">API Key</label>
|
||||
<input type="password" class="form-control" id="portainerApiKey" name="portainerApiKey"
|
||||
placeholder="Enter your Portainer API key" required
|
||||
value="{{ portainer_settings.api_key if portainer_settings and portainer_settings.api_key else '' }}">
|
||||
<div class="form-text">You can generate this in Portainer under Settings > API Keys</div>
|
||||
<div class="form-text">You can generate this in your Portainer user settings</div>
|
||||
</div>
|
||||
<div class="d-flex justify-content-end">
|
||||
<button type="submit" class="btn btn-primary">
|
||||
@@ -45,7 +45,7 @@
|
||||
<div class="card h-100">
|
||||
<div class="card-header d-flex justify-content-between align-items-center">
|
||||
<h5 class="mb-0">
|
||||
<i class="fas fa-network-wired me-2"></i>NGINX Proxy Manager Connection
|
||||
<i class="fas fa-globe me-2"></i>NGINX Connection
|
||||
</h5>
|
||||
<button class="btn btn-sm btn-outline-primary" onclick="testNginxConnection()">
|
||||
<i class="fas fa-plug me-1"></i>Test Connection
|
||||
@@ -82,64 +82,6 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- GitLab Connection Card -->
|
||||
<div class="col-md-6 mb-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-header d-flex justify-content-between align-items-center">
|
||||
<h5 class="mb-0">
|
||||
<i class="fab fa-gitlab me-2"></i>GitLab Connection
|
||||
</h5>
|
||||
<button class="btn btn-sm btn-outline-primary" onclick="testGitConnection('gitlab')">
|
||||
<i class="fas fa-plug me-1"></i>Test Connection
|
||||
</button>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form id="gitlabForm" onsubmit="saveGitConnection(event, 'gitlab')">
|
||||
<div class="mb-3">
|
||||
<label for="gitlabUrl" class="form-label">GitLab Server URL</label>
|
||||
<input type="url" class="form-control" id="gitlabUrl" name="gitlabUrl"
|
||||
placeholder="https://gitlab.com" required
|
||||
value="{{ git_settings.url if git_settings and git_settings.provider == 'gitlab' and git_settings.url else '' }}">
|
||||
<div class="form-text">The URL of your GitLab server (use https://gitlab.com for GitLab.com)</div>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="gitlabUsername" class="form-label">Username</label>
|
||||
<input type="text" class="form-control" id="gitlabUsername" name="gitlabUsername"
|
||||
placeholder="Enter your GitLab username" required
|
||||
value="{{ git_settings.username if git_settings and git_settings.provider == 'gitlab' and git_settings.username else '' }}">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="gitlabToken" class="form-label">Personal Access Token</label>
|
||||
<input type="password" class="form-control" id="gitlabToken" name="gitlabToken"
|
||||
placeholder="Enter your GitLab personal access token" required
|
||||
value="{{ git_settings.token if git_settings and git_settings.provider == 'gitlab' and git_settings.token else '' }}">
|
||||
<div class="form-text">You can generate this in your GitLab user settings > Access Tokens</div>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="gitlabRepo" class="form-label">Repository</label>
|
||||
<div class="input-group">
|
||||
<select class="form-select" id="gitlabRepo" name="gitlabRepo" required>
|
||||
<option value="">Select a repository</option>
|
||||
{% if git_settings and git_settings.provider == 'gitlab' and git_settings.repo %}
|
||||
<option value="{{ git_settings.repo }}" selected>{{ git_settings.repo }}</option>
|
||||
{% endif %}
|
||||
</select>
|
||||
<button class="btn btn-outline-secondary" type="button" onclick="loadGitlabRepos()">
|
||||
<i class="fas fa-sync-alt"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="form-text">Select the repository to connect to</div>
|
||||
</div>
|
||||
<div class="d-flex justify-content-end">
|
||||
<button type="submit" class="btn btn-primary">
|
||||
<i class="fas fa-save me-1"></i>Save GitLab Settings
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Gitea Connection Card -->
|
||||
<div class="col-md-6 mb-4">
|
||||
<div class="card h-100">
|
||||
@@ -349,59 +291,11 @@ async function loadGiteaRepos() {
|
||||
}
|
||||
}
|
||||
|
||||
// Load GitLab Repositories
|
||||
async function loadGitlabRepos() {
|
||||
const url = document.getElementById('gitlabUrl').value;
|
||||
const token = document.getElementById('gitlabToken').value;
|
||||
const repoSelect = document.getElementById('gitlabRepo');
|
||||
const currentRepo = repoSelect.value; // Store current selection
|
||||
|
||||
if (!url || !token) {
|
||||
showError('Please fill in the server URL and access token');
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await fetch('/api/admin/list-gitlab-repos', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'X-CSRF-Token': getCsrfToken()
|
||||
},
|
||||
body: JSON.stringify({ url, token })
|
||||
});
|
||||
|
||||
const data = await response.json();
|
||||
|
||||
if (response.ok) {
|
||||
repoSelect.innerHTML = '<option value="">Select a repository</option>';
|
||||
|
||||
data.repositories.forEach(repo => {
|
||||
const option = document.createElement('option');
|
||||
option.value = repo.path_with_namespace;
|
||||
option.textContent = repo.path_with_namespace;
|
||||
if (repo.path_with_namespace === currentRepo) { // Restore selection
|
||||
option.selected = true;
|
||||
}
|
||||
repoSelect.appendChild(option);
|
||||
});
|
||||
} else {
|
||||
throw new Error(data.message || 'Failed to load repositories');
|
||||
}
|
||||
} catch (error) {
|
||||
showError(error.message);
|
||||
}
|
||||
}
|
||||
|
||||
// Load repositories on page load if settings exist
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const gitSettings = JSON.parse('{{ git_settings|tojson|safe }}');
|
||||
if (gitSettings) {
|
||||
if (gitSettings.provider === 'gitea' && gitSettings.url && gitSettings.token) {
|
||||
loadGiteaRepos();
|
||||
} else if (gitSettings.provider === 'gitlab' && gitSettings.url && gitSettings.token) {
|
||||
loadGitlabRepos();
|
||||
}
|
||||
if (gitSettings && gitSettings.provider === 'gitea' && gitSettings.url && gitSettings.token) {
|
||||
loadGiteaRepos();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -414,39 +308,21 @@ async function testGitConnection(provider) {
|
||||
saveModal.show();
|
||||
|
||||
try {
|
||||
let data = {};
|
||||
if (provider === 'gitea') {
|
||||
const url = document.getElementById('giteaUrl').value;
|
||||
const username = document.getElementById('giteaUsername').value;
|
||||
const token = document.getElementById('giteaToken').value;
|
||||
const url = document.getElementById('giteaUrl').value;
|
||||
const username = document.getElementById('giteaUsername').value;
|
||||
const token = document.getElementById('giteaToken').value;
|
||||
|
||||
if (!url || !username || !token) {
|
||||
throw new Error('Please fill in all required fields');
|
||||
}
|
||||
|
||||
data = {
|
||||
provider: 'gitea',
|
||||
url: url,
|
||||
username: username,
|
||||
token: token
|
||||
};
|
||||
} else if (provider === 'gitlab') {
|
||||
const url = document.getElementById('gitlabUrl').value;
|
||||
const username = document.getElementById('gitlabUsername').value;
|
||||
const token = document.getElementById('gitlabToken').value;
|
||||
|
||||
if (!url || !username || !token) {
|
||||
throw new Error('Please fill in all required fields');
|
||||
}
|
||||
|
||||
data = {
|
||||
provider: 'gitlab',
|
||||
url: url,
|
||||
username: username,
|
||||
token: token
|
||||
};
|
||||
if (!url || !username || !token) {
|
||||
throw new Error('Please fill in all required fields');
|
||||
}
|
||||
|
||||
const data = {
|
||||
provider: 'gitea',
|
||||
url: url,
|
||||
username: username,
|
||||
token: token
|
||||
};
|
||||
|
||||
const response = await fetch('/settings/test-git-connection', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
@@ -664,47 +540,27 @@ async function saveGitConnection(event, provider) {
|
||||
messageElement.className = '';
|
||||
|
||||
try {
|
||||
let data = {};
|
||||
if (provider === 'gitea') {
|
||||
const url = document.getElementById('giteaUrl').value;
|
||||
const username = document.getElementById('giteaUsername').value;
|
||||
const token = document.getElementById('giteaToken').value;
|
||||
const repo = document.getElementById('giteaRepo').value;
|
||||
const password = document.getElementById('giteaPassword').value;
|
||||
const otp = document.getElementById('giteaOtp').value;
|
||||
const url = document.getElementById('giteaUrl').value;
|
||||
const username = document.getElementById('giteaUsername').value;
|
||||
const token = document.getElementById('giteaToken').value;
|
||||
const repo = document.getElementById('giteaRepo').value;
|
||||
const password = document.getElementById('giteaPassword').value;
|
||||
const otp = document.getElementById('giteaOtp').value;
|
||||
|
||||
if (!url || !username || !token || !repo) {
|
||||
throw new Error('Please fill in all required fields');
|
||||
}
|
||||
|
||||
data = {
|
||||
provider: 'gitea',
|
||||
url: url,
|
||||
username: username,
|
||||
token: token,
|
||||
repo: repo,
|
||||
password: password,
|
||||
otp: otp
|
||||
};
|
||||
} else if (provider === 'gitlab') {
|
||||
const url = document.getElementById('gitlabUrl').value;
|
||||
const username = document.getElementById('gitlabUsername').value;
|
||||
const token = document.getElementById('gitlabToken').value;
|
||||
const repo = document.getElementById('gitlabRepo').value;
|
||||
|
||||
if (!url || !username || !token || !repo) {
|
||||
throw new Error('Please fill in all required fields');
|
||||
}
|
||||
|
||||
data = {
|
||||
provider: 'gitlab',
|
||||
url: url,
|
||||
username: username,
|
||||
token: token,
|
||||
repo: repo
|
||||
};
|
||||
if (!url || !username || !token || !repo) {
|
||||
throw new Error('Please fill in all required fields');
|
||||
}
|
||||
|
||||
const data = {
|
||||
provider: 'gitea',
|
||||
url: url,
|
||||
username: username,
|
||||
token: token,
|
||||
repo: repo,
|
||||
password: password,
|
||||
otp: otp
|
||||
};
|
||||
|
||||
const response = await fetch('/settings/save-git-connection', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
|
||||
Reference in New Issue
Block a user