123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- import {hideElem, showElem} from '../utils/dom.js';
- import {GET} from '../modules/fetch.js';
-
- export function initInstall() {
- const page = document.querySelector('.page-content.install');
- if (!page) {
- return;
- }
- if (page.classList.contains('post-install')) {
- initPostInstall();
- } else {
- initPreInstall();
- }
- }
- function initPreInstall() {
- const defaultDbUser = 'gitea';
- const defaultDbName = 'gitea';
-
- const defaultDbHosts = {
- mysql: '127.0.0.1:3306',
- postgres: '127.0.0.1:5432',
- mssql: '127.0.0.1:1433',
- };
-
- const dbHost = document.getElementById('db_host');
- const dbUser = document.getElementById('db_user');
- const dbName = document.getElementById('db_name');
-
- // Database type change detection.
- document.getElementById('db_type').addEventListener('change', function () {
- const dbType = this.value;
- hideElem('div[data-db-setting-for]');
- showElem(`div[data-db-setting-for=${dbType}]`);
-
- if (dbType !== 'sqlite3') {
- // for most remote database servers
- showElem('div[data-db-setting-for=common-host]');
- const lastDbHost = dbHost.value;
- const isDbHostDefault = !lastDbHost || Object.values(defaultDbHosts).includes(lastDbHost);
- if (isDbHostDefault) {
- dbHost.value = defaultDbHosts[dbType] ?? '';
- }
- if (!dbUser.value && !dbName.value) {
- dbUser.value = defaultDbUser;
- dbName.value = defaultDbName;
- }
- } // else: for SQLite3, the default path is always prepared by backend code (setting)
- });
- document.getElementById('db_type').dispatchEvent(new Event('change'));
-
- const appUrl = document.getElementById('app_url');
- if (appUrl.value.includes('://localhost')) {
- appUrl.value = window.location.href;
- }
-
- const domain = document.getElementById('domain');
- if (domain.value.trim() === 'localhost') {
- domain.value = window.location.hostname;
- }
-
- // TODO: better handling of exclusive relations.
- document.querySelector('#offline-mode input').addEventListener('change', function () {
- if (this.checked) {
- document.querySelector('#disable-gravatar input').checked = true;
- document.querySelector('#federated-avatar-lookup input').checked = false;
- }
- });
- document.querySelector('#disable-gravatar input').addEventListener('change', function () {
- if (this.checked) {
- document.querySelector('#federated-avatar-lookup input').checked = false;
- } else {
- document.querySelector('#offline-mode input').checked = false;
- }
- });
- document.querySelector('#federated-avatar-lookup input').addEventListener('change', function () {
- if (this.checked) {
- document.querySelector('#disable-gravatar input').checked = false;
- document.querySelector('#offline-mode input').checked = false;
- }
- });
- document.querySelector('#enable-openid-signin input').addEventListener('change', function () {
- if (this.checked) {
- if (!document.querySelector('#disable-registration input').checked) {
- document.querySelector('#enable-openid-signup input').checked = true;
- }
- } else {
- document.querySelector('#enable-openid-signup input').checked = false;
- }
- });
- document.querySelector('#disable-registration input').addEventListener('change', function () {
- if (this.checked) {
- document.querySelector('#enable-captcha input').checked = false;
- document.querySelector('#enable-openid-signup input').checked = false;
- } else {
- document.querySelector('#enable-openid-signup input').checked = true;
- }
- });
- document.querySelector('#enable-captcha input').addEventListener('change', function () {
- if (this.checked) {
- document.querySelector('#disable-registration input').checked = false;
- }
- });
- }
-
- function initPostInstall() {
- const el = document.getElementById('goto-user-login');
- if (!el) return;
-
- const targetUrl = el.getAttribute('href');
- let tid = setInterval(async () => {
- try {
- const resp = await GET(targetUrl);
- if (tid && resp.status === 200) {
- clearInterval(tid);
- tid = null;
- window.location.href = targetUrl;
- }
- } catch {}
- }, 1000);
- }
|