- Renamed analytics-hub/ → analyticshub/ - App ID in info.xml is 'analyticshub' (no hyphen) - Nextcloud requires folder name to match app ID exactly - Fixes 'Could not download app analyticshub' error during installation Installation: - Upload analyticshub/ folder to /var/www/nextcloud/apps/ - Folder name must match app ID in info.xml
143 lines
3.9 KiB
PHP
143 lines
3.9 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
style('display:none');
|
|
?>
|
|
|
|
<div id="analytics-hub-settings" class="section analytics-hub-settings">
|
|
<h2>Mini-CMO Analytics Hub</h2>
|
|
<p>AI-powered Google Analytics 4 reporting with automated daily reports.</p>
|
|
|
|
<div class="analytics-hub-settings__section">
|
|
<h3>Google Analytics Configuration</h3>
|
|
|
|
<div class="analytics-hub-settings__field">
|
|
<label for="google_client_id">Google Client ID</label>
|
|
<input
|
|
type="text"
|
|
id="google_client_id"
|
|
name="google_client_id"
|
|
placeholder="123456789.apps.googleusercontent.com"
|
|
autocomplete="off"
|
|
/>
|
|
</div>
|
|
|
|
<div class="analytics-hub-settings__field">
|
|
<label for="google_client_secret">Google Client Secret</label>
|
|
<input
|
|
type="password"
|
|
id="google_client_secret"
|
|
name="google_client_secret"
|
|
placeholder="GOCSPX-..."
|
|
autocomplete="off"
|
|
/>
|
|
</div>
|
|
|
|
<div class="analytics-hub-settings__field">
|
|
<label for="google_refresh_token">Refresh Token</label>
|
|
<input
|
|
type="password"
|
|
id="google_refresh_token"
|
|
name="google_refresh_token"
|
|
placeholder="1//..."
|
|
autocomplete="off"
|
|
/>
|
|
<p class="analytics-hub-settings__hint">
|
|
After OAuth consent, paste only the refresh token here.
|
|
The access token is refreshed automatically each run.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="analytics-hub-settings__section">
|
|
<h3>Anthropic Claude API</h3>
|
|
|
|
<div class="analytics-hub-settings__field">
|
|
<label for="anthropic_api_key">API Key</label>
|
|
<input
|
|
type="password"
|
|
id="anthropic_api_key"
|
|
name="anthropic_api_key"
|
|
placeholder="sk-ant-..."
|
|
autocomplete="off"
|
|
/>
|
|
<p class="analytics-hub-settings__hint">
|
|
Enter your Anthropic API key for AI-powered report generation.
|
|
Model: claude-sonnet-4-5-20250929 (cost-effective)
|
|
Cost: ~$0.015 per report (3K tokens)
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="analytics-hub-settings__actions">
|
|
<button id="analytics-hub-save" class="primary">
|
|
Save Configuration
|
|
</button>
|
|
<button id="analytics-hub-test" class="secondary">
|
|
Test Connection
|
|
</button>
|
|
</div>
|
|
</div>
|
|
|
|
<style>
|
|
.analytics-hub-settings {
|
|
max-width: 800px;
|
|
margin: 0 auto;
|
|
padding: 20px;
|
|
}
|
|
|
|
.analytics-hub-settings__section {
|
|
margin-bottom: 30px;
|
|
}
|
|
|
|
.analytics-hub-settings__field {
|
|
margin-bottom: 20px;
|
|
}
|
|
|
|
.analytics-hub-settings__field label {
|
|
display: block;
|
|
font-weight: 600;
|
|
margin-bottom: 8px;
|
|
}
|
|
|
|
.analytics-hub-settings__field input {
|
|
width: 100%;
|
|
padding: 10px;
|
|
border: 1px solid #ccc;
|
|
border-radius: 4px;
|
|
font-size: 14px;
|
|
}
|
|
|
|
.analytics-hub-settings__hint {
|
|
font-size: 13px;
|
|
color: #666;
|
|
margin-top: 8px;
|
|
line-height: 1.4;
|
|
}
|
|
|
|
.analytics-hub-settings__actions {
|
|
display: flex;
|
|
gap: 10px;
|
|
margin-top: 20px;
|
|
}
|
|
|
|
.analytics-hub-settings__actions button {
|
|
padding: 12px 24px;
|
|
border: none;
|
|
border-radius: 6px;
|
|
font-size: 14px;
|
|
font-weight: 600;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.analytics-hub-settings__actions .primary {
|
|
background-color: #0078d4;
|
|
color: white;
|
|
}
|
|
|
|
.analytics-hub-settings__actions .secondary {
|
|
background-color: #6c757d;
|
|
color: white;
|
|
}
|
|
</style>
|