Files
Radicale/radicale/web/internal_data/index.html
2026-04-22 22:38:16 +02:00

401 lines
18 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!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> &gt;</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>
<div class="url-input-wrapper">
<input type="text" data-name="url" value="" readonly="" class="selectall">
<button type="button" class="copy-btn" data-name="copy-url" title="copy"></button>
</div>
<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>
<p data-name="description"></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>
<div class="url-input-wrapper">
<input type="text" data-name="pathortoken" value="" readonly="" class="inline selectall">
<button type="button" class="copy-btn" data-name="copy-url" title="copy"></button>
</div>
</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>
<div class="url-input-wrapper">
<input type="text" data-name="pathortoken" value="" readonly="" class="inline selectall">
<button type="button" class="copy-btn" data-name="copy-url" title="copy"></button>
</div>
</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>
<div class="url-input-wrapper">
<input type="text" data-name="pathortoken" value="" readonly="" class="inline selectall">
<button type="button" class="copy-btn" data-name="copy-url" title="copy"></button>
</div>
</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="createeditsharescene" class="container hidden">
<h1>New Share</h1>
<p class="title" data-name="title"></p>
<p data-name="description"></p>
<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>
<br />
<input type="radio" data-name="properties_write" id="newshare_attr_properties_write_deny"
name="newshare_properties_write"><label for="newshare_attr_properties_write_deny">Deny</label>
<input type="radio" data-name="properties_write" id="newshare_attr_properties_write_allow"
name="newshare_properties_write"><label for="newshare_attr_properties_write_allow">Allow Properties
write</label>
<p data-name="token_write_warning" class="red hidden">WARNING: This allows everyone who knows the URL to make
changes.</p>
</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>