Browse Source

Translate 'Busy' in CalDAV

Signed-off-by: Gary Kim <gary@garykim.dev>
tags/v19.0.0beta1
Gary Kim 4 years ago
parent
commit
709e7447ed
No account linked to committer's email address

+ 7
- 3
apps/dav/lib/CalDAV/Calendar.php View File

/** @var IConfig */ /** @var IConfig */
private $config; private $config;


/** @var IL10N */
protected $l10n;

/** /**
* Calendar constructor. * Calendar constructor.
* *
} }


$this->config = $config; $this->config = $config;
$this->l10n = $l10n;
} }


/** /**


$obj['acl'] = $this->getChildACL(); $obj['acl'] = $this->getChildACL();


return new CalendarObject($this->caldavBackend, $this->calendarInfo, $obj);
return new CalendarObject($this->caldavBackend, $this->l10n, $this->calendarInfo, $obj);


} }


continue; continue;
} }
$obj['acl'] = $this->getChildACL(); $obj['acl'] = $this->getChildACL();
$children[] = new CalendarObject($this->caldavBackend, $this->calendarInfo, $obj);
$children[] = new CalendarObject($this->caldavBackend, $this->l10n, $this->calendarInfo, $obj);
} }
return $children; return $children;


continue; continue;
} }
$obj['acl'] = $this->getChildACL(); $obj['acl'] = $this->getChildACL();
$children[] = new CalendarObject($this->caldavBackend, $this->calendarInfo, $obj);
$children[] = new CalendarObject($this->caldavBackend, $this->l10n, $this->calendarInfo, $obj);
} }
return $children; return $children;



+ 13
- 3
apps/dav/lib/CalDAV/CalendarObject.php View File

/** /**
* @copyright Copyright (c) 2016, ownCloud, Inc. * @copyright Copyright (c) 2016, ownCloud, Inc.
* @copyright Copyright (c) 2017, Georg Ehrke * @copyright Copyright (c) 2017, Georg Ehrke
* @copyright Copyright (c) 2020, Gary Kim <gary@garykim.dev>
* *
* @author Georg Ehrke <oc.list@georgehrke.com> * @author Georg Ehrke <oc.list@georgehrke.com>
* @author Thomas Müller <thomas.mueller@tmit.eu> * @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Gary Kim <gary@garykim.dev>
* *
* @license AGPL-3.0 * @license AGPL-3.0
* *
namespace OCA\DAV\CalDAV; namespace OCA\DAV\CalDAV;




use OCP\IL10N;
use Sabre\VObject\Component; use Sabre\VObject\Component;
use Sabre\VObject\Property; use Sabre\VObject\Property;
use Sabre\VObject\Reader; use Sabre\VObject\Reader;


class CalendarObject extends \Sabre\CalDAV\CalendarObject { class CalendarObject extends \Sabre\CalDAV\CalendarObject {


/** @var IL10N */
protected $l10n;

/** /**
* CalendarObject constructor. * CalendarObject constructor.
* *
* @param CalDavBackend $caldavBackend * @param CalDavBackend $caldavBackend
* @param IL10N $l10n
* @param array $calendarInfo * @param array $calendarInfo
* @param array $objectData * @param array $objectData
*/ */
public function __construct(CalDavBackend $caldavBackend, array $calendarInfo,
public function __construct(CalDavBackend $caldavBackend, IL10N $l10n,
array $calendarInfo,
array $objectData) { array $objectData) {
parent::__construct($caldavBackend, $calendarInfo, $objectData); parent::__construct($caldavBackend, $calendarInfo, $objectData);


if ($this->isShared()) { if ($this->isShared()) {
unset($this->objectData['size']); unset($this->objectData['size']);
} }

$this->l10n = $l10n;
} }


/** /**
* @param Component\VCalendar $vObject * @param Component\VCalendar $vObject
* @return void * @return void
*/ */
private static function createConfidentialObject(Component\VCalendar $vObject) {
private function createConfidentialObject(Component\VCalendar $vObject) {
/** @var Component $vElement */ /** @var Component $vElement */
$vElement = null; $vElement = null;
if(isset($vObject->VEVENT)) { if(isset($vObject->VEVENT)) {
case 'UID': case 'UID':
break; break;
case 'SUMMARY': case 'SUMMARY':
$property->setValue('Busy');
$property->setValue($this->l10n->t('Busy'));
break; break;
default: default:
$vElement->__unset($property->name); $vElement->__unset($property->name);

+ 3
- 3
apps/dav/lib/CalDAV/PublicCalendar.php View File

} }
$obj['acl'] = $this->getChildACL(); $obj['acl'] = $this->getChildACL();


return new PublicCalendarObject($this->caldavBackend, $this->calendarInfo, $obj);
return new PublicCalendarObject($this->caldavBackend, $this->l10n, $this->calendarInfo, $obj);
} }


/** /**
continue; continue;
} }
$obj['acl'] = $this->getChildACL(); $obj['acl'] = $this->getChildACL();
$children[] = new PublicCalendarObject($this->caldavBackend, $this->calendarInfo, $obj);
$children[] = new PublicCalendarObject($this->caldavBackend, $this->l10n, $this->calendarInfo, $obj);
} }
return $children; return $children;
} }
continue; continue;
} }
$obj['acl'] = $this->getChildACL(); $obj['acl'] = $this->getChildACL();
$children[] = new PublicCalendarObject($this->caldavBackend, $this->calendarInfo, $obj);
$children[] = new PublicCalendarObject($this->caldavBackend, $this->l10n, $this->calendarInfo, $obj);
} }
return $children; return $children;
} }

+ 24
- 1
apps/dav/tests/unit/CalDAV/CalendarTest.php View File

<?php <?php
/** /**
* @copyright Copyright (c) 2016, ownCloud, Inc. * @copyright Copyright (c) 2016, ownCloud, Inc.
* @copyright Copyright (c) 2020, Gary Kim <gary@garykim.dev>
* *
* @author Georg Ehrke <oc.list@georgehrke.com> * @author Georg Ehrke <oc.list@georgehrke.com>
* @author Joas Schilling <coding@schilljs.com> * @author Joas Schilling <coding@schilljs.com>
* @author Morris Jobke <hey@morrisjobke.de> * @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl> * @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu> * @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Gary Kim <gary@garykim.dev>
* *
* @license AGPL-3.0 * @license AGPL-3.0
* *
$c->delete(); $c->delete();
} }


public function testDeleteFromGroup() { public function testDeleteFromGroup() {
$this->expectException(\Sabre\DAV\Exception\Forbidden::class); $this->expectException(\Sabre\DAV\Exception\Forbidden::class);


} else { } else {
$this->assertEquals('Test Event', $event->VEVENT->SUMMARY->getValue()); $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() { public function providesConfidentialClassificationData() {

Loading…
Cancel
Save