model-select.php
- Pfad:
src/View/partials/form/model-select.php - Namespace: -
- Zeilen: 88 | Größe: 2,971 Bytes
- Geändert: 2025-12-23 07:44:39 | Gescannt: 2025-12-31 10:22:15
Code Hygiene Score: 100
- Dependencies: 100 (25%)
- LOC: 100 (20%)
- Methods: 100 (20%)
- Secrets: 100 (15%)
- Classes: 100 (10%)
- Magic Numbers: 100 (10%)
Keine Issues gefunden.
Dependencies 1
- use Infrastructure\AI\ModelConfig
Versionen 1
-
v1
2025-12-23 07:44 | claude-code-hook | modified
Claude Code Pre-Hook Backup vor Edit-Operation
Code
<?php
/**
* Model Select Partial
*
* Einheitliches Dropdown für KI-Modell-Auswahl.
* Verwendet in: Chat, Content Studio, Pipeline
*
* @param array $models Array von Modell-IDs => Labels (default: ModelConfig::getAll())
* @param string $selected Ausgewähltes Modell (default: ModelConfig::DEFAULT_MODEL)
* @param string $name Form-Feldname (default: 'model')
* @param string $variant 'default', 'inline' oder 'compact'
* @param string $id Optional: HTML ID für das Select
* @param bool $saveToLocalStorage Speichert Änderungen in localStorage (default: true)
* @param string $localStorageKey Key für localStorage (default: 'pipeline_model')
*/
use Infrastructure\AI\ModelConfig;
$models ??= ModelConfig::getAll();
$selected ??= ModelConfig::getDefaultModel();
$name ??= 'model';
$variant ??= 'default';
$id ??= 'model-' . uniqid();
$saveToLocalStorage ??= true;
$localStorageKey ??= 'pipeline_model';
$class = match ($variant) {
'inline' => 'form-select form-select--inline model-select',
'compact' => 'form-select form-select--compact model-select',
default => 'form-select model-select',
};
// Gruppiere Modelle nach Provider
$anthropicModels = [];
$ollamaModels = [];
foreach ($models as $modelId => $label) {
if (str_starts_with($modelId, 'ollama:')) {
$ollamaModels[$modelId] = $label;
} else {
$anthropicModels[$modelId] = $label;
}
}
?>
<select name="<?= htmlspecialchars($name) ?>"
id="<?= htmlspecialchars($id) ?>"
class="<?= $class ?>"
<?= $saveToLocalStorage ? 'data-save-to="' . htmlspecialchars($localStorageKey) . '"' : '' ?>>
<?php if (!empty($ollamaModels)): ?>
<optgroup label="Ollama (lokal)">
<?php foreach ($ollamaModels as $modelId => $label): ?>
<option value="<?= htmlspecialchars($modelId) ?>" <?= $selected === $modelId ? 'selected' : '' ?>>
<?= htmlspecialchars($label) ?>
</option>
<?php endforeach; ?>
</optgroup>
<?php endif; ?>
<?php if (!empty($anthropicModels)): ?>
<optgroup label="Anthropic">
<?php foreach ($anthropicModels as $modelId => $label): ?>
<option value="<?= htmlspecialchars($modelId) ?>" <?= $selected === $modelId ? 'selected' : '' ?>>
<?= htmlspecialchars($label) ?>
</option>
<?php endforeach; ?>
</optgroup>
<?php endif; ?>
</select>
<?php if ($saveToLocalStorage): ?>
<script>
(function() {
const select = document.getElementById('<?= $id ?>');
const key = '<?= $localStorageKey ?>';
// Restore from localStorage
const saved = localStorage.getItem(key);
if (saved && select) {
const option = select.querySelector('option[value="' + saved + '"]');
if (option) select.value = saved;
}
// Save on change
select?.addEventListener('change', function() {
localStorage.setItem(key, this.value);
});
})();
</script>
<?php endif; ?>