Fix #47: Add the calendar url for easier setup

This commit is contained in:
tchapi 2022-01-21 13:39:22 +01:00
parent 0e4198a890
commit fae4ac0097
5 changed files with 38 additions and 9 deletions

View File

@ -41,3 +41,14 @@ body {
background: var(--calendar-color);
border-radius: 2px;
}
/* Special indicator badge */
.badge.badge-indicator {
height: 16px;
width: 16px;
padding: 0;
border-radius: 50%;
}
.popover .popover-body {
user-select: text;
}

View File

@ -57,6 +57,9 @@ $(document).ready(function() {
})
document.body.style.setProperty('--calendar-color', $('#calendar_instance_calendarColor').val());
// Initialize popovers
$('.popover-dismiss').popover()
// Modal to add a sharee on a calendar, catch the click to add the query parameter
$('a.add-sharee').click(function(e) {
e.preventDefault()

View File

@ -19,6 +19,7 @@ use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
class AdminController extends AbstractController
@ -327,7 +328,7 @@ class AdminController extends AbstractController
/**
* @Route("/calendars/{username}", name="calendars")
*/
public function calendars(string $username)
public function calendars(UrlGeneratorInterface $router, string $username)
{
$principal = $this->get('doctrine')->getRepository(Principal::class)->findOneByUri(Principal::PREFIX.$username);
$allCalendars = $this->get('doctrine')->getRepository(CalendarInstance::class)->findByPrincipalUri(Principal::PREFIX.$username);
@ -337,9 +338,15 @@ class AdminController extends AbstractController
$shared = [];
foreach ($allCalendars as $calendar) {
if (CalendarInstance::ACCESS_OWNER === $calendar->getAccess()) {
$calendars[] = $calendar;
$calendars[] = [
'entity' => $calendar,
'uri' => $router->generate('dav', ['path' => 'calendars/'.$username.'/'.$calendar->getUri()], UrlGeneratorInterface::ABSOLUTE_URL),
];
} else {
$shared[] = $calendar;
$shared[] = [
'entity' => $calendar,
'uri' => $router->generate('dav', ['path' => 'calendars/'.$username.'/'.$calendar->getUri()], UrlGeneratorInterface::ABSOLUTE_URL),
];
}
}

View File

@ -8,10 +8,12 @@
<h1 class="display-4 font-weight-lighter d-flex justify-content-between">{{ "calendars.for"|trans({'who': principal.displayName}) }} <a href="{{ path('calendar_create', {username: username}) }}" class="btn btn-sm btn-success mb-auto mt-auto">+ {{ "calendars.new"|trans }}</a></h1>
<div class="list-group mt-5">
{% for calendar in calendars %}
<div class="list-group-item list-group-item-action p-3">
{% for compoundObject in calendars %}
{% set calendar = compoundObject.entity %}
{% set davUri = compoundObject.uri %}
<div class="list-group-item p-3">
<div class="d-flex w-100 justify-content-between">
<h5 class="mb-1 mr-auto">{{ calendar.displayName }} <span class="badge badge-pill" style="background-color: {{ calendar.calendarColor }}">&nbsp;</span></h5>
<h5 class="mb-1 mr-auto">{{ calendar.displayName }} <a href="#" class="badge badge-indicator popover-dismiss" role="button" data-toggle="popover" title="{{ 'calendars.setup.title'|trans }}" data-html='true' data-content="<code>{{ davUri }}</code>">ⓘ</a> <span class="badge badge-indicator" style="background-color: {{ calendar.calendarColor }}">&nbsp;</span></h5>
<div class="mr-0 text-right d-md-block d-none">
<a href="#" data-sharees-href="{{ path('calendar_shares',{username: username, calendarid: calendar.calendar.id})}}" data-href="{{ path('calendar_share_add', {username: principal.username, instanceid: calendar.id}) }}" class="btn btn-sm btn-outline-info ml-1 share-modal">🔗 {{ "sharing"|trans }}</a>
<a href="{{ path('calendar_edit',{username: username, id: calendar.id})}}" class="btn btn-sm btn-outline-primary ml-1">✎ {{ "edit"|trans }}</a>
@ -40,8 +42,10 @@
<h2 class="display-5 mt-4 font-weight-lighter">{{ "calendars.shared.with"|trans({'who': principal.displayName}) }}</h2>
<div class="list-group mt-3">
{% for calendar in shared %}
<div class="list-group-item list-group-item-action p-3">
{% for compoundObject in shared %}
{% set calendar = compoundObject.entity %}
{% set davUri = compoundObject.uri %}
<div class="list-group-item p-3">
<div class="d-flex w-100 justify-content-between">
<h5 class="mb-1 mr-auto">
{{ calendar.displayName }}
@ -50,7 +54,7 @@
{% else %}
<span class="badge badge-info ml-1">{{ ('calendar.share_access.' ~ calendar.access)|trans }}</span>
{% endif %}
<span class="badge badge-pill" style="background-color: {{ calendar.calendarColor }}">&nbsp;</span>
<a href="#" class="badge badge-indicator popover-dismiss" role="button" data-toggle="popover" title="{{ 'calendars.setup.title'|trans }}" data-html='true' data-content="<code>{{ davUri }}</code>">ⓘ</a> <span class="badge badge-indicator" style="background-color: {{ calendar.calendarColor }}">&nbsp;</span>
</h5>
<div class="mr-0 text-right d-md-block d-none">
<a href="{{ path('calendar_edit',{username: username, id: calendar.id})}}" class="btn btn-sm btn-outline-primary ml-1">✎ {{ "edit"|trans }}</a>

View File

@ -165,6 +165,10 @@
<source>calendars.component.todos</source>
<target>Todos</target>
</trans-unit>
<trans-unit id="B2WpruE" resname="calendars.setup.title">
<source>calendars.setup.title</source>
<target>Setup information</target>
</trans-unit>
<trans-unit id="obdwi48" resname="calendars.component.notes">
<source>calendars.component.notes</source>
<target>Notes</target>