Compare commits

...

1 commit

Author SHA1 Message Date
Gary Kim
709e7447ed
Translate 'Busy' in CalDAV
Signed-off-by: Gary Kim <gary@garykim.dev>
2020-02-23 22:38:24 +08:00
4 changed files with 47 additions and 10 deletions

View file

@ -48,6 +48,9 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable {
/** @var IConfig */
private $config;
/** @var IL10N */
protected $l10n;
/**
* Calendar constructor.
*
@ -68,6 +71,7 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable {
}
$this->config = $config;
$this->l10n = $l10n;
}
/**
@ -289,7 +293,7 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable {
$obj['acl'] = $this->getChildACL();
return new CalendarObject($this->caldavBackend, $this->calendarInfo, $obj);
return new CalendarObject($this->caldavBackend, $this->l10n, $this->calendarInfo, $obj);
}
@ -302,7 +306,7 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable {
continue;
}
$obj['acl'] = $this->getChildACL();
$children[] = new CalendarObject($this->caldavBackend, $this->calendarInfo, $obj);
$children[] = new CalendarObject($this->caldavBackend, $this->l10n, $this->calendarInfo, $obj);
}
return $children;
@ -317,7 +321,7 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable {
continue;
}
$obj['acl'] = $this->getChildACL();
$children[] = new CalendarObject($this->caldavBackend, $this->calendarInfo, $obj);
$children[] = new CalendarObject($this->caldavBackend, $this->l10n, $this->calendarInfo, $obj);
}
return $children;

View file

@ -2,9 +2,11 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @copyright Copyright (c) 2017, Georg Ehrke
* @copyright Copyright (c) 2020, Gary Kim <gary@garykim.dev>
*
* @author Georg Ehrke <oc.list@georgehrke.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Gary Kim <gary@garykim.dev>
*
* @license AGPL-3.0
*
@ -25,26 +27,34 @@
namespace OCA\DAV\CalDAV;
use OCP\IL10N;
use Sabre\VObject\Component;
use Sabre\VObject\Property;
use Sabre\VObject\Reader;
class CalendarObject extends \Sabre\CalDAV\CalendarObject {
/** @var IL10N */
protected $l10n;
/**
* CalendarObject constructor.
*
* @param CalDavBackend $caldavBackend
* @param IL10N $l10n
* @param array $calendarInfo
* @param array $objectData
*/
public function __construct(CalDavBackend $caldavBackend, array $calendarInfo,
public function __construct(CalDavBackend $caldavBackend, IL10N $l10n,
array $calendarInfo,
array $objectData) {
parent::__construct($caldavBackend, $calendarInfo, $objectData);
if ($this->isShared()) {
unset($this->objectData['size']);
}
$this->l10n = $l10n;
}
/**
@ -84,7 +94,7 @@ class CalendarObject extends \Sabre\CalDAV\CalendarObject {
* @param Component\VCalendar $vObject
* @return void
*/
private static function createConfidentialObject(Component\VCalendar $vObject) {
private function createConfidentialObject(Component\VCalendar $vObject) {
/** @var Component $vElement */
$vElement = null;
if(isset($vObject->VEVENT)) {
@ -109,7 +119,7 @@ class CalendarObject extends \Sabre\CalDAV\CalendarObject {
case 'UID':
break;
case 'SUMMARY':
$property->setValue('Busy');
$property->setValue($this->l10n->t('Busy'));
break;
default:
$vElement->__unset($property->name);

View file

@ -44,7 +44,7 @@ class PublicCalendar extends Calendar {
}
$obj['acl'] = $this->getChildACL();
return new PublicCalendarObject($this->caldavBackend, $this->calendarInfo, $obj);
return new PublicCalendarObject($this->caldavBackend, $this->l10n, $this->calendarInfo, $obj);
}
/**
@ -58,7 +58,7 @@ class PublicCalendar extends Calendar {
continue;
}
$obj['acl'] = $this->getChildACL();
$children[] = new PublicCalendarObject($this->caldavBackend, $this->calendarInfo, $obj);
$children[] = new PublicCalendarObject($this->caldavBackend, $this->l10n, $this->calendarInfo, $obj);
}
return $children;
}
@ -75,7 +75,7 @@ class PublicCalendar extends Calendar {
continue;
}
$obj['acl'] = $this->getChildACL();
$children[] = new PublicCalendarObject($this->caldavBackend, $this->calendarInfo, $obj);
$children[] = new PublicCalendarObject($this->caldavBackend, $this->l10n, $this->calendarInfo, $obj);
}
return $children;
}

View file

@ -1,12 +1,14 @@
<?php
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @copyright Copyright (c) 2020, Gary Kim <gary@garykim.dev>
*
* @author Georg Ehrke <oc.list@georgehrke.com>
* @author Joas Schilling <coding@schilljs.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Gary Kim <gary@garykim.dev>
*
* @license AGPL-3.0
*
@ -427,6 +429,27 @@ EOD;
} else {
$this->assertEquals('Test Event', $event->VEVENT->SUMMARY->getValue());
}
// Test l10n
$l10n = $this->createMock(IL10N::class);
if ($isShared) {
$l10n->expects($this->once())
->method('t')
->with('Busy')
->willReturn("Translated busy");
} else {
$l10n->expects($this->never());
}
$c = new Calendar($backend, $calendarInfo, $l10n, $this->config);
$calData = $c->getChild('event-1')->get();
$event = Reader::read($calData);
if ($isShared) {
$this->assertEquals('Translated busy', $event->VEVENT->SUMMARY->getValue());
} else {
$this->assertEquals('Test Event', $event->VEVENT->SUMMARY->getValue());
}
}
public function providesConfidentialClassificationData() {