Refine mobile layout for project resource pages by making breadcrumbs and status blocks responsive, improving dropdown and checkbox touch behavior, and adding support for custom modal triggers. Add feature tests covering breadcrumb visibility and responsive checkbox layout.
169 lines
10 KiB
PHP
169 lines
10 KiB
PHP
<div>
|
|
<x-slot:title>
|
|
Notifications | Coolify
|
|
</x-slot>
|
|
<x-notification.navbar />
|
|
<form wire:submit='submit' class="flex flex-col gap-4 pb-4">
|
|
<div class="flex items-center gap-2">
|
|
<h2>Email</h2>
|
|
<x-forms.button canGate="update" :canResource="$settings" type="submit">
|
|
Save
|
|
</x-forms.button>
|
|
@if (auth()->user()->isAdminFromSession())
|
|
@can('sendTest', $settings)
|
|
@if ($team->isNotificationEnabled('email'))
|
|
<x-modal-input buttonTitle="Send Test Email" title="Send Test Email">
|
|
<form wire:submit.prevent="sendTestEmail" class="flex flex-col w-full gap-2">
|
|
<x-forms.input wire:model="testEmailAddress" placeholder="test@example.com"
|
|
id="testEmailAddress" label="Recipient" required />
|
|
<x-forms.button type="submit" @click="modalOpen=false">
|
|
Send Email
|
|
</x-forms.button>
|
|
</form>
|
|
</x-modal-input>
|
|
@else
|
|
<x-forms.button disabled class="normal-case dark:text-white btn btn-xs no-animation btn-primary">
|
|
Send Test Email
|
|
</x-forms.button>
|
|
@endif
|
|
@endcan
|
|
@endif
|
|
</div>
|
|
@if (!isCloud())
|
|
<div class="w-full sm:w-96">
|
|
<x-forms.checkbox canGate="update" :canResource="$settings" instantSave="instantSave()" id="useInstanceEmailSettings"
|
|
label="Use system wide (transactional) email settings" />
|
|
</div>
|
|
@endif
|
|
@if (!$useInstanceEmailSettings)
|
|
<div class="flex gap-2">
|
|
<x-forms.input canGate="update" :canResource="$settings" required id="smtpFromName" helper="Name used in emails." label="From Name" />
|
|
<x-forms.input canGate="update" :canResource="$settings" required id="smtpFromAddress" helper="Email address used in emails."
|
|
label="From Address" />
|
|
</div>
|
|
@if (isInstanceAdmin() && !$useInstanceEmailSettings)
|
|
<x-forms.button canGate="update" :canResource="$settings" wire:click='copyFromInstanceSettings'>
|
|
Copy from Instance Settings
|
|
</x-forms.button>
|
|
@endif
|
|
@endif
|
|
</form>
|
|
@if (isCloud())
|
|
<div class="w-64 py-4">
|
|
<x-forms.checkbox canGate="update" :canResource="$settings" instantSave="instantSave()" id="useInstanceEmailSettings"
|
|
label="Use Hosted Email Service" />
|
|
</div>
|
|
@endif
|
|
@if (!$useInstanceEmailSettings)
|
|
<div class="flex flex-col gap-4">
|
|
<form wire:submit='submitSmtp'
|
|
class="p-4 border dark:border-coolgray-300 border-neutral-200 rounded-lg flex flex-col gap-2">
|
|
<div class="flex items-center gap-2">
|
|
<h3>SMTP Server</h3>
|
|
<x-forms.button canGate="update" :canResource="$settings" type="submit">
|
|
Save
|
|
</x-forms.button>
|
|
</div>
|
|
<div class="w-32">
|
|
<x-forms.checkbox canGate="update" :canResource="$settings" wire:model="smtpEnabled" instantSave="instantSave('SMTP')" id="smtpEnabled"
|
|
label="Enabled" />
|
|
</div>
|
|
<div class="flex flex-col">
|
|
<div class="flex flex-col gap-4">
|
|
<div class="flex flex-col w-full gap-2 xl:flex-row">
|
|
<x-forms.input canGate="update" :canResource="$settings" required id="smtpHost" placeholder="smtp.mailgun.org" label="Host" />
|
|
<x-forms.input canGate="update" :canResource="$settings" required id="smtpPort" type="number" placeholder="587" label="Port" />
|
|
<x-forms.select canGate="update" :canResource="$settings" required id="smtpEncryption" label="Encryption">
|
|
<option value="starttls">StartTLS</option>
|
|
<option value="tls">TLS/SSL</option>
|
|
<option value="none">None</option>
|
|
</x-forms.select>
|
|
</div>
|
|
<div class="flex flex-col w-full gap-2 xl:flex-row">
|
|
<x-forms.input canGate="update" :canResource="$settings" id="smtpUsername" label="SMTP Username" />
|
|
<x-forms.input canGate="update" :canResource="$settings" id="smtpPassword" type="password" label="SMTP Password" />
|
|
<x-forms.input canGate="update" :canResource="$settings" id="smtpTimeout" type="number" helper="Timeout value for sending emails."
|
|
label="Timeout" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
<form wire:submit='submitResend'
|
|
class="p-4 border dark:border-coolgray-300 border-neutral-200 rounded-lg flex flex-col gap-2">
|
|
<div class="flex items-center gap-2">
|
|
<h3>Resend</h3>
|
|
<x-forms.button canGate="update" :canResource="$settings" type="submit">
|
|
Save
|
|
</x-forms.button>
|
|
</div>
|
|
<div class="w-32">
|
|
<x-forms.checkbox canGate="update" :canResource="$settings" wire:model="resendEnabled" instantSave="instantSave('Resend')" id="resendEnabled"
|
|
label="Enabled" />
|
|
</div>
|
|
<div class="flex flex-col">
|
|
<div class="flex flex-col gap-4">
|
|
<div class="flex flex-col w-full gap-2 xl:flex-row">
|
|
<x-forms.input canGate="update" :canResource="$settings" required type="password" id="resendApiKey" placeholder="API key"
|
|
label="API Key" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
@endif
|
|
<h2 class="mt-4">Notification Settings</h2>
|
|
<p class="mb-4">
|
|
Select events for which you would like to receive email notifications.
|
|
</p>
|
|
<div class="flex flex-col gap-4 max-w-2xl">
|
|
<div class="border dark:border-coolgray-300 border-neutral-200 p-4 rounded-lg">
|
|
<h3 class="font-medium mb-3">Deployments</h3>
|
|
<div class="flex flex-col gap-1.5 pl-1">
|
|
<x-forms.checkbox canGate="update" :canResource="$settings" instantSave="saveModel" id="deploymentSuccessEmailNotifications"
|
|
label="Deployment Success" />
|
|
<x-forms.checkbox canGate="update" :canResource="$settings" instantSave="saveModel" id="deploymentFailureEmailNotifications"
|
|
label="Deployment Failure" />
|
|
<x-forms.checkbox canGate="update" :canResource="$settings" instantSave="saveModel"
|
|
helper="Send an email when a container status changes. It will send and email for Stopped and Restarted events of a container."
|
|
id="statusChangeEmailNotifications" label="Container Status Changes" />
|
|
</div>
|
|
</div>
|
|
<div class="border dark:border-coolgray-300 border-neutral-200 p-4 rounded-lg">
|
|
<h3 class="font-medium mb-3">Backups</h3>
|
|
<div class="flex flex-col gap-1.5 pl-1">
|
|
<x-forms.checkbox canGate="update" :canResource="$settings" instantSave="saveModel" id="backupSuccessEmailNotifications"
|
|
label="Backup Success" />
|
|
<x-forms.checkbox canGate="update" :canResource="$settings" instantSave="saveModel" id="backupFailureEmailNotifications"
|
|
label="Backup Failure" />
|
|
</div>
|
|
</div>
|
|
<div class="border dark:border-coolgray-300 border-neutral-200 p-4 rounded-lg">
|
|
<h3 class="font-medium mb-3">Scheduled Tasks</h3>
|
|
<div class="flex flex-col gap-1.5 pl-1">
|
|
<x-forms.checkbox canGate="update" :canResource="$settings" instantSave="saveModel" id="scheduledTaskSuccessEmailNotifications"
|
|
label="Scheduled Task Success" />
|
|
<x-forms.checkbox canGate="update" :canResource="$settings" instantSave="saveModel" id="scheduledTaskFailureEmailNotifications"
|
|
label="Scheduled Task Failure" />
|
|
</div>
|
|
</div>
|
|
<div class="border dark:border-coolgray-300 border-neutral-200 p-4 rounded-lg">
|
|
<h3 class="font-medium mb-3">Server</h3>
|
|
<div class="flex flex-col gap-1.5 pl-1">
|
|
<x-forms.checkbox canGate="update" :canResource="$settings" instantSave="saveModel" id="dockerCleanupSuccessEmailNotifications"
|
|
label="Docker Cleanup Success" />
|
|
<x-forms.checkbox canGate="update" :canResource="$settings" instantSave="saveModel" id="dockerCleanupFailureEmailNotifications"
|
|
label="Docker Cleanup Failure" />
|
|
<x-forms.checkbox canGate="update" :canResource="$settings" instantSave="saveModel" id="serverDiskUsageEmailNotifications"
|
|
label="Server Disk Usage" />
|
|
<x-forms.checkbox canGate="update" :canResource="$settings" instantSave="saveModel" id="serverReachableEmailNotifications"
|
|
label="Server Reachable" />
|
|
<x-forms.checkbox canGate="update" :canResource="$settings" instantSave="saveModel" id="serverUnreachableEmailNotifications"
|
|
label="Server Unreachable" />
|
|
<x-forms.checkbox canGate="update" :canResource="$settings" instantSave="saveModel" id="serverPatchEmailNotifications"
|
|
label="Server Patching" />
|
|
<x-forms.checkbox canGate="update" :canResource="$settings" instantSave="saveModel" id="traefikOutdatedEmailNotifications"
|
|
label="Traefik Proxy Outdated" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|