373 lines
17 KiB
HTML
373 lines
17 KiB
HTML
<!DOCTYPE html>
|
||
<!--
|
||
* Copyright © 2018-2020 Unrud <unrud@outlook.com>
|
||
* Copyright © 2023-2023 Henning <github@henning-ullrich.de>
|
||
* Copyright © 2023-2024 Matthew Hana <matthew.hana@gmail.com>
|
||
* Copyright © 2024-2025 Peter Bieringer <pb@bieringer.de>
|
||
-->
|
||
<html lang="en">
|
||
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||
<title>Radicale Web Interface</title>
|
||
<link href="css/main.css" type="text/css" media="screen" rel="stylesheet">
|
||
<link href="css/icon.png" type="image/png" rel="icon">
|
||
<script type="module" src="js/main.js"></script>
|
||
</head>
|
||
|
||
<body>
|
||
<nav id="logoutview" class="hidden">
|
||
<span data-name="user"></span>
|
||
<a href="#" class="green" data-name="refresh" title="Refresh">Refresh</a>
|
||
<a href="#" class="red" data-name="logout" title="Logout">Logout</a>
|
||
</nav>
|
||
|
||
<main>
|
||
<section id="loadingscene">
|
||
<img src="css/loading.svg" alt="Loading..." class="loading">
|
||
<h2>Loading</h2>
|
||
<p>Please wait...</p>
|
||
<noscript>JavaScript is required</noscript>
|
||
</section>
|
||
|
||
<section id="loginscene" class="container hidden">
|
||
<div class="infcloudlink-hidden">
|
||
<form action="infcloud/" method="get" target="_blank">
|
||
<button class="blue" type="submit">Collection content<br>(InfCloud web client)</button>
|
||
</form>
|
||
</div>
|
||
<div class="logocontainer">
|
||
<img src="css/logo.svg" alt="Radicale">
|
||
<br>
|
||
Collection management
|
||
</div>
|
||
<h1>Sign in</h1>
|
||
<br>
|
||
<form data-name="form">
|
||
<input data-name="user" type="text" placeholder="Username">
|
||
<input data-name="password" type="password" placeholder="Password">
|
||
<button class="green" type="submit">Next</button>
|
||
<span class="error" data-name="error"></span>
|
||
</form>
|
||
</section>
|
||
|
||
<section id="collectionsscene" class="hidden">
|
||
<div class="error hidden" data-name="collectionsscene_error"></div>
|
||
<div class="fabcontainer">
|
||
<a href="" class="green" data-name="new" title="Create a new addressbook or calendar">
|
||
<img src="css/icons/new.svg" class="icon" alt="➕">
|
||
</a>
|
||
<a href="" class="blue" data-name="upload" title="Upload an addressbook or calendar">
|
||
<img src="css/icons/upload.svg" class="icon" alt="⬆️">
|
||
</a>
|
||
<a href="" class="blue" data-name="incomingshares" title="Incoming Shares">
|
||
<img src="css/icons/share.svg" class="icon" alt="🔗">
|
||
</a>
|
||
</div>
|
||
<article data-name="collectiontemplate" class="hidden">
|
||
<div class="colorbar" data-name="color"></div>
|
||
<h3 class="title" data-name="title">Title</h3>
|
||
<small>
|
||
<span data-name="shared-by" class="hidden">👥 shared by <span data-name="shared-by-owner"></span> ></span>
|
||
<span data-name="transformed-from" class="hidden" title="Transformed item">Address book ⟿</span>
|
||
<span data-name="ADDRESSBOOK">Address book</span>
|
||
<span data-name="CALENDAR_JOURNAL_TASKS">Calendar, journal and tasks</span>
|
||
<span data-name="CALENDAR_JOURNAL">Calendar and journal</span>
|
||
<span data-name="CALENDAR_TASKS">Calendar and tasks</span>
|
||
<span data-name="JOURNAL_TASKS">Journal and tasks</span>
|
||
<span data-name="CALENDAR">Calendar</span>
|
||
<span data-name="JOURNAL">Journal</span>
|
||
<span data-name="TASKS">Tasks</span>
|
||
<span data-name="WEBCAL">Webcal</span>
|
||
</small>
|
||
<small data-name="contentcount"></small>
|
||
<input type="text" data-name="url" value="" readonly="" class="selectall">
|
||
<p data-name="description">Description</p>
|
||
<ul>
|
||
<li>
|
||
<a href="" title="Download" class="green" data-name="download">
|
||
<img src="css/icons/download.svg" class="icon" alt="🔗">
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="" title="Edit" class="blue" data-name="edit">
|
||
<img src="css/icons/edit.svg" class="icon" alt="✏️">
|
||
</a>
|
||
</li>
|
||
<li class="hidden" data-name="shareoption">
|
||
<a href="" title="Share" class="blue" data-name="share">
|
||
<img src="css/icons/share.svg" class="icon" alt="🔗">
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="" title="Delete" class="red" data-name="delete">
|
||
<img src="css/icons/delete.svg" class="icon" alt="❌">
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</article>
|
||
</section>
|
||
|
||
<section id="editcollectionscene" class="container hidden">
|
||
<h1>Edit Collection</h1>
|
||
<p>Editing collection <span class="title" data-name="title">title</span>
|
||
</p>
|
||
<form> Type: <br>
|
||
<select data-name="type">
|
||
<option value="ADDRESSBOOK">addressbook</option>
|
||
<option value="CALENDAR_JOURNAL_TASKS">calendar, journal and tasks</option>
|
||
<option value="CALENDAR_JOURNAL">calendar and journal</option>
|
||
<option value="CALENDAR_TASKS">calendar and tasks</option>
|
||
<option value="JOURNAL_TASKS">journal and tasks</option>
|
||
<option value="CALENDAR">calendar</option>
|
||
<option value="JOURNAL">journal</option>
|
||
<option value="TASKS">tasks</option>
|
||
<option value="WEBCAL">webcal</option>
|
||
</select>
|
||
<label for="displayname">Title:</label>
|
||
<input data-name="displayname" id="displayname" type="text">
|
||
<label for="description">Description:</label>
|
||
<input data-name="description" id="description" type="text">
|
||
<label for="source">Source:</label>
|
||
<input data-name="source" id="source" type="url">
|
||
<label for="color">Color:</label>
|
||
<input data-name="color" id="color" type="color">
|
||
<br>
|
||
<span class="error hidden" data-name="error"></span>
|
||
<br>
|
||
<button type="submit" class="green" data-name="submit">Save</button>
|
||
<button type="button" class="red" data-name="cancel">Cancel</button>
|
||
</form>
|
||
<span class="error hidden" data-name="error"></span>
|
||
<br>
|
||
</section>
|
||
|
||
<section id="sharecollectionscene" class="container hidden">
|
||
<h1>Sharing</h1>
|
||
<p>Manage sharing for collection <span class="title" data-name="title">title</span>
|
||
</p>
|
||
<div data-name="sharebytoken">
|
||
<details open>
|
||
<summary>By Token</summary>
|
||
<table>
|
||
<tbody>
|
||
<tr data-name="sharetokenrowtemplate" class="hidden">
|
||
<td>
|
||
<button type="button" class="blue inline" data-name="edit" title="Edit Share"><img src="css/icons/edit.svg"
|
||
class="small_icon" alt="Edit"></button>
|
||
</td>
|
||
<td><span class="pill" data-name="rw">rw</span><span class="pill" data-name="ro">ro</span><span data-name="conversion">⟿</span></td>
|
||
<td><input type="text" data-name="pathortoken" value="" readonly="" class="inline selectall"></td>
|
||
<td>
|
||
<button type="button" class="red inline" data-name="delete" title="Delete Share"><img src="css/icons/delete.svg"
|
||
class="small_icon" alt="Delete"></button>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td><button type="button" class="blue inline" data-name="sharebytoken" title="New Share by Token"><img src="css/icons/new.svg"
|
||
class="small_icon" alt="New Share by Token"></button>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</details>
|
||
</div>
|
||
<div data-name="sharebymap">
|
||
<details open>
|
||
<summary>By Map</summary>
|
||
<table>
|
||
<tbody>
|
||
<tr data-name="sharemaprowtemplate" class="hidden">
|
||
<td>
|
||
<button type="button" class="blue inline" data-name="edit" title="Edit Share"><img src="css/icons/edit.svg"
|
||
class="small_icon" alt="Edit"></button>
|
||
</td>
|
||
<td><span class="pill" data-name="rw">rw</span><span class="pill" data-name="ro">ro</span><span data-name="conversion">⟿</span></td>
|
||
<td><input type="text" data-name="pathortoken" value="" readonly="" class="inline selectall"></td>
|
||
<td>
|
||
<button type="button" class="red inline" data-name="delete" title="Delete Share"><img src="css/icons/delete.svg"
|
||
class="small_icon" alt="Delete"></button>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<button type="button" class="blue inline" data-name="sharebymap" title="New Share by Map">
|
||
<img src="css/icons/new.svg" class="small_icon" alt="New Share by Map">
|
||
</button>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</details>
|
||
</div>
|
||
<form>
|
||
<button type="button" class="green" data-name="cancel">Close</button>
|
||
</form>
|
||
<span class="error hidden" data-name="error"></span>
|
||
</section>
|
||
|
||
<section id="incomingsharingscene" class="container hidden">
|
||
<h1>Incoming Shares</h1>
|
||
<p>Manage shares that others have shared with you.</p>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Path</th>
|
||
<th>Owner</th>
|
||
<th title="Permissions">🔑</th>
|
||
<th title="Enabled">✔️</th>
|
||
<th title="Shown">👁️</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody data-name="incomingsharesbody">
|
||
<tr data-name="incomingsharerowtemplate" class="hidden">
|
||
<td><input type="text" data-name="pathortoken" value="" readonly="" class="inline selectall"></td>
|
||
<td data-name="owner"></td>
|
||
<td data-name="permissions"><span class="pill" data-name="rw">rw</span><span class="pill"
|
||
data-name="ro">ro</span><span data-name="conversion">⟿</span></td>
|
||
<td><input type="checkbox" data-name="enabled"></td>
|
||
<td><input type="checkbox" data-name="shown"></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<p class="hidden" data-name="nosharesmessage">No incoming shares</p>
|
||
<form>
|
||
<button type="button" class="green" data-name="cancel">Close</button>
|
||
</form>
|
||
<span class="error hidden" data-name="error"></span>
|
||
</section>
|
||
|
||
<section id="newshare" class="container hidden">
|
||
<h1>New Share</h1>
|
||
<form>
|
||
<details open data-name="sharemapfields" class="hidden">
|
||
<summary>Map Target</summary>
|
||
<label for="newshare_attr_shareuser">Share User</label>
|
||
<input type="text" data-name="shareuser" id="newshare_attr_shareuser" />
|
||
<label for="newshare_attr_sharehref">Share Href</label>
|
||
<input type="text" data-name="sharehref" id="newshare_attr_sharehref" />
|
||
</details>
|
||
<details open>
|
||
<summary>Attributes</summary>
|
||
<input type="checkbox" data-name="enabled" checked id="newshare_attr_enabled" /><label
|
||
for="newshare_attr_enabled">Enabled</label>
|
||
<input type="checkbox" data-name="hidden" id="newshare_attr_hidden" /><label
|
||
for="newshare_attr_hidden">Hidden</label>
|
||
</details>
|
||
<details open>
|
||
<summary>Permissions</summary>
|
||
<input type="radio" data-name="permissions" checked id="newshare_attr_permissions_ro"
|
||
name="newshare_permissions"><label for="newshare_attr_permissions_ro">Readonly</label>
|
||
<input type="radio" data-name="permissions" id="newshare_attr_permissions_rw"
|
||
name="newshare_permissions" /><label for="newshare_attr_permissions_rw">Read/Write</label>
|
||
</details>
|
||
<details data-name="conversions" class="hidden">
|
||
<summary>Conversions</summary>
|
||
<div data-name="conversions_container">
|
||
<!-- Dynamic radio buttons will be inserted here -->
|
||
</div>
|
||
</details>
|
||
<details data-name="properties_override">
|
||
<summary>Properties override</summary>
|
||
<div class="property-override">
|
||
<input type="checkbox" data-name="displayname_override_enabled" id="newshare_attr_displayname_enabled">
|
||
<label for="newshare_attr_displayname_enabled">Displayname:</label>
|
||
<input type="text" data-name="displayname_override" disabled>
|
||
</div>
|
||
<div class="property-override">
|
||
<input type="checkbox" data-name="description_override_enabled" id="newshare_attr_description_enabled">
|
||
<label for="newshare_attr_description_enabled">Description:</label>
|
||
<input type="text" data-name="description_override" disabled>
|
||
</div>
|
||
<div class="property-override">
|
||
<input type="checkbox" data-name="color_override_enabled" id="newshare_attr_color_enabled">
|
||
<label for="newshare_attr_color_enabled">Color:</label>
|
||
<input type="color" data-name="color_override" disabled>
|
||
</div>
|
||
</details>
|
||
<button type="submit" class="green" data-name="submit">Create</button>
|
||
<button type="button" class="red" data-name="cancel">Cancel</button>
|
||
</form>
|
||
<span class="error hidden" data-name="error"></span>
|
||
</section>
|
||
|
||
<section id="createcollectionscene" class="container hidden">
|
||
<h1>Create a new Collection</h1>
|
||
<p>Enter the details of your new collection.</p>
|
||
<form> Type: <br>
|
||
<select data-name="type">
|
||
<option value="ADDRESSBOOK">Address book</option>
|
||
<option value="CALENDAR_JOURNAL_TASKS">Calendar, journal and tasks</option>
|
||
<option value="CALENDAR_JOURNAL">Calendar and journal</option>
|
||
<option value="CALENDAR_TASKS">Calendar and tasks</option>
|
||
<option value="JOURNAL_TASKS">Journal and tasks</option>
|
||
<option value="CALENDAR">Calendar</option>
|
||
<option value="JOURNAL">Journal</option>
|
||
<option value="TASKS">Tasks</option>
|
||
<option value="WEBCAL">Webcal</option>
|
||
</select>
|
||
<label for="href">HREF:</label>
|
||
<input data-name="href" id="href" type="text">
|
||
<label for="displayname">Title:</label>
|
||
<input data-name="displayname" id="create_displayname" type="text">
|
||
<label for="description">Description:</label>
|
||
<input data-name="description" id="create_description" type="text">
|
||
<label for="source">Source:</label>
|
||
<input data-name="source" id="create_source" type="url">
|
||
<label for="color">Color:</label>
|
||
<input data-name="color" id="create_color" type="color">
|
||
<br>
|
||
<span class="error" data-name="error"></span>
|
||
<br>
|
||
<button type="submit" class="green" data-name="submit">Create</button>
|
||
<button type="button" class="red" data-name="cancel">Cancel</button>
|
||
</form>
|
||
<span class="error hidden" data-name="error"></span>
|
||
<br>
|
||
</section>
|
||
|
||
<section id="uploadcollectionscene" class="container hidden">
|
||
<h1>Upload Collection</h1>
|
||
<ul>
|
||
<li data-name="filetemplate" class="hidden"> Uploading <span data-name="name">name</span>
|
||
<br>
|
||
<span class="successmessage" data-name="success">Uploaded Successfully!</span>
|
||
<span class="error" data-name="error"></span>
|
||
</li>
|
||
</ul>
|
||
<div data-name="pending" class="hidden">
|
||
<img src="css/loading.svg" class="loading" alt="Please wait..." />
|
||
</div>
|
||
<form>
|
||
<label for="uploadfile">File:</label>
|
||
<input data-name="uploadfile" id="uploadfile" type="file" accept=".ics, .vcf" multiple>
|
||
<label for="upload_href">HREF:</label>
|
||
<input data-name="href" id="upload_href" type="text">
|
||
<small data-name="hreflimitmsg" class="hidden">You can only specify the HREF if you upload 1 file.</small>
|
||
<button type="submit" class="green" data-name="submit">Upload</button>
|
||
<button type="button" class="red" data-name="close">Close</button>
|
||
</form>
|
||
<span class="error hidden" data-name="error"></span>
|
||
<br>
|
||
</section>
|
||
|
||
<section id="deleteconfirmationscene" class="container hidden">
|
||
<h1 data-name="headertitle">Delete Collection</h1>
|
||
<p data-name="confirmationprompt">To delete the collection <span class="title" data-name="title">title</span>
|
||
please enter the phrase <strong data-name="deleteconfirmationtext"></strong> in the box below:</p>
|
||
<input type="text" class="deleteconfirmationtxt" data-name="confirmationtxt" />
|
||
<p class="red">WARNING: This action cannot be reversed.</p>
|
||
<form>
|
||
<button type="button" class="red" data-name="delete">Delete</button>
|
||
<button type="button" class="blue" data-name="cancel">Cancel</button>
|
||
</form>
|
||
<span class="error hidden" data-name="error"></span>
|
||
<br>
|
||
</section>
|
||
|
||
</main>
|
||
</body>
|
||
|
||
</html> |