gitea: default repo setting; editor: asset picker with thumbnail grid

Gitea plugin: default_repo field per account (stored in DB, pre-fills
create issue form but stays editable). Editor toolbar: asset picker
flyout with 4-column thumbnail grid and live search filter. Clicking
a tile inserts the matching markdown.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
thandClaude Opus 4.6 committed 2026-04-12 19:26:04 +02:00
1 parent c5bf8b0407
commit 04b52ecc19
9 files changed
+197 -6

No files matched your search

+11 -1
View File
@@ -27,10 +27,16 @@ require_once __DIR__ . '/GiteaClient.php';
name TEXT NOT NULL,
base_url TEXT NOT NULL,
token TEXT NOT NULL,
default_repo TEXT DEFAULT NULL,
position INTEGER NOT NULL DEFAULT 0,
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
)
");
// Migration: add default_repo column if missing
$cols = $db->query("PRAGMA table_info(gitea_accounts)")->fetchAll(PDO::FETCH_COLUMN, 1);
if (!in_array('default_repo', $cols)) {
$db->exec("ALTER TABLE gitea_accounts ADD COLUMN default_repo TEXT DEFAULT NULL");
}
})();
// ── Encryption helpers (mirrors email plugin / CalDavSync) ────────
@@ -85,7 +91,7 @@ PluginManager::instance()->onApiRoute(function (string $route, string $method) {
if ($route === '/api/gitea/accounts' && $method === 'GET') {
$db = Database::connect();
$rows = $db->query('SELECT id, name, base_url, position, created_at FROM gitea_accounts ORDER BY position ASC, id ASC')->fetchAll();
$rows = $db->query('SELECT id, name, base_url, default_repo, position, created_at FROM gitea_accounts ORDER BY position ASC, id ASC')->fetchAll();
giteaJson($rows);
}
@@ -132,6 +138,10 @@ PluginManager::instance()->onApiRoute(function (string $route, string $method) {
if (!empty($input['token'])) {
$fields[] = 'token = :token'; $params['token'] = giteaEncrypt($input['token']);
}
if (array_key_exists('default_repo', $input)) {
$val = trim((string)($input['default_repo'] ?? ''));
$fields[] = 'default_repo = :default_repo'; $params['default_repo'] = $val ?: null;
}
if (!$fields) giteaJson(['ok' => true]);
$db = Database::connect();
$db->prepare('UPDATE gitea_accounts SET ' . implode(', ', $fields) . ' WHERE id = :id')->execute($params);