Improve client proofing workflow and link editing
This commit is contained in:
@@ -108,23 +108,25 @@ function CreateForm({ onCreated }: { onCreated: () => void }) {
|
|||||||
maxLength={120}
|
maxLength={120}
|
||||||
required
|
required
|
||||||
/>
|
/>
|
||||||
<div className="admin-field">
|
|
||||||
<label htmlFor="proof-alias">Client URL alias (optional)</label>
|
|
||||||
<input
|
|
||||||
id="proof-alias"
|
|
||||||
value={alias}
|
|
||||||
onChange={(e) =>
|
|
||||||
setAlias(
|
|
||||||
e.target.value
|
|
||||||
.replace(/\s+/g, '-')
|
|
||||||
.replace(/[^A-Za-z0-9-]/g, ''),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
placeholder="Client"
|
|
||||||
maxLength={64}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div className="admin-field">
|
||||||
|
<label htmlFor="proof-alias">Client URL alias</label>
|
||||||
|
<input
|
||||||
|
id="proof-alias"
|
||||||
|
value={alias}
|
||||||
|
onChange={(e) =>
|
||||||
|
setAlias(
|
||||||
|
e.target.value
|
||||||
|
.replace(/\s+/g, '-')
|
||||||
|
.replace(/[^A-Za-z0-9-]/g, ''),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
placeholder="Client (Optional)"
|
||||||
|
maxLength={64}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div className="admin-field">
|
<div className="admin-field">
|
||||||
<label htmlFor="proof-album">Album</label>
|
<label htmlFor="proof-album">Album</label>
|
||||||
<select
|
<select
|
||||||
@@ -134,7 +136,10 @@ function CreateForm({ onCreated }: { onCreated: () => void }) {
|
|||||||
required
|
required
|
||||||
disabled={!albums}
|
disabled={!albums}
|
||||||
>
|
>
|
||||||
<option value="">{albums ? 'Choose an Immich album…' : 'Loading albums…'}</option>
|
<option value="">
|
||||||
|
{albums ? 'Choose an Immich album…' : 'Loading albums…'}
|
||||||
|
</option>
|
||||||
|
|
||||||
{albums?.map((album) => (
|
{albums?.map((album) => (
|
||||||
<option key={album.id} value={album.id}>
|
<option key={album.id} value={album.id}>
|
||||||
{album.albumName} ({album.assetCount})
|
{album.albumName} ({album.assetCount})
|
||||||
@@ -142,6 +147,7 @@ function CreateForm({ onCreated }: { onCreated: () => void }) {
|
|||||||
))}
|
))}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="admin-field">
|
<div className="admin-field">
|
||||||
<label htmlFor="proof-expires">Valid until (optional)</label>
|
<label htmlFor="proof-expires">Valid until (optional)</label>
|
||||||
<input
|
<input
|
||||||
@@ -151,20 +157,21 @@ function CreateForm({ onCreated }: { onCreated: () => void }) {
|
|||||||
onChange={(e) => setExpiresOn(e.target.value)}
|
onChange={(e) => setExpiresOn(e.target.value)}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="admin-field">
|
|
||||||
<label htmlFor="proof-download">Downloads</label>
|
|
||||||
|
|
||||||
<select
|
<div className="admin-field">
|
||||||
id="proof-download"
|
<label htmlFor="proof-download">Downloads</label>
|
||||||
value={downloadsAllowed ? 'allowed' : 'none'}
|
<select
|
||||||
onChange={(e) =>
|
id="proof-download"
|
||||||
setDownloadsAllowed(e.target.value === 'allowed')
|
value={downloadsAllowed ? 'allowed' : 'none'}
|
||||||
}
|
onChange={(e) =>
|
||||||
>
|
setDownloadsAllowed(e.target.value === 'allowed')
|
||||||
<option value="none">No downloads</option>
|
}
|
||||||
<option value="allowed">Downloads allowed</option>
|
>
|
||||||
</select>
|
<option value="none">Downloads disabled</option>
|
||||||
</div>
|
<option value="allowed">Downloads allowed</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
{downloadsAllowed && (
|
{downloadsAllowed && (
|
||||||
<div className="admin-field">
|
<div className="admin-field">
|
||||||
<label htmlFor="proof-limit">Download limit (optional)</label>
|
<label htmlFor="proof-limit">Download limit (optional)</label>
|
||||||
|
|||||||
Reference in New Issue
Block a user