Signed-off-by: Georg Ehrke <developer@georgehrke.com>tags/v13.0.0beta2
@@ -0,0 +1,29 @@ | |||
<?php | |||
/** | |||
* @copyright 2017, Georg Ehrke <oc.list@georgehrke.com> | |||
* | |||
* @author Georg Ehrke <oc.list@georgehrke.com> | |||
* | |||
* @license GNU AGPL version 3 or any later version | |||
* | |||
* This program is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU Affero General Public License as | |||
* published by the Free Software Foundation, either version 3 of the | |||
* License, or (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU Affero General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU Affero General Public License | |||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
* | |||
*/ | |||
return [ | |||
'routes' => [ | |||
['name' => 'birthday_calendar#enable', 'url' => '/enableBirthdayCalendar', 'verb' => 'POST'], | |||
['name' => 'birthday_calendar#disable', 'url' => '/disableBirthdayCalendar', 'verb' => 'POST'], | |||
] | |||
]; |
@@ -26,3 +26,13 @@ $('#caldavSendInvitations').change(function() { | |||
OCP.AppConfig.setValue('dav', 'sendInvitations', val ? 'yes' : 'no'); | |||
}); | |||
$('#caldavGenerateBirthdayCalendar').change(function() { | |||
var val = $(this)[0].checked; | |||
if (val) { | |||
$.post(OC.generateUrl(OC.linkTo("dav", "enableBirthdayCalendar"))); | |||
} else { | |||
$.post(OC.generateUrl(OC.linkTo("dav", "disableBirthdayCalendar"))); | |||
} | |||
}); |
@@ -0,0 +1,81 @@ | |||
<?php | |||
/** | |||
* @copyright 2017, Georg Ehrke <oc.list@georgehrke.com> | |||
* | |||
* @author Georg Ehrke <oc.list@georgehrke.com> | |||
* | |||
* @license GNU AGPL version 3 or any later version | |||
* | |||
* This program is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU Affero General Public License as | |||
* published by the Free Software Foundation, either version 3 of the | |||
* License, or (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU Affero General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU Affero General Public License | |||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
* | |||
*/ | |||
namespace OCA\DAV\Controller; | |||
use OCP\AppFramework\Controller; | |||
use OCP\AppFramework\Http\JSONResponse; | |||
use OCP\AppFramework\Http\Response; | |||
use OCP\IConfig; | |||
use OCP\IDBConnection; | |||
use OCP\IRequest; | |||
class BirthdayCalendarController extends Controller { | |||
/** | |||
* @var IDBConnection | |||
*/ | |||
protected $db; | |||
/** | |||
* @var IConfig | |||
*/ | |||
protected $config; | |||
/** | |||
* BirthdayCalendar constructor. | |||
* | |||
* @param string $appName | |||
* @param IRequest $request | |||
* @param IDBConnection $db | |||
* @param IConfig $config | |||
*/ | |||
public function __construct($appName, IRequest $request, | |||
IDBConnection $db, IConfig $config){ | |||
parent::__construct($appName, $request); | |||
$this->db = $db; | |||
$this->config = $config; | |||
} | |||
/** | |||
* @return Response | |||
*/ | |||
public function enable() { | |||
$this->config->setAppValue($this->appName, 'generateBirthdayCalendar', 'yes'); | |||
// TODO schedule background job to regenerate | |||
return new JSONResponse([]); | |||
} | |||
/** | |||
* @return Response | |||
*/ | |||
public function disable() { | |||
$this->config->setAppValue($this->appName, 'generateBirthdayCalendar', 'no'); | |||
// TODO delete all birthday calendars | |||
return new JSONResponse([]); | |||
} | |||
} |
@@ -47,6 +47,7 @@ class CalDAVSettings implements ISettings { | |||
public function getForm() { | |||
$parameters = [ | |||
'send_invitations' => $this->config->getAppValue('dav', 'sendInvitations', 'yes'), | |||
'generate_birthday_calendar' => $this->config->getAppValue('dav', 'generateBirthdayCalendar', 'yes'), | |||
]; | |||
return new TemplateResponse('dav', 'settings-admin-caldav', $parameters); |
@@ -37,4 +37,12 @@ script('dav', [ | |||
<br> | |||
<em><?php p($l->t('Please make sure to properly set up the email settings above.')); ?></em> | |||
</p> | |||
<p> | |||
<input type="checkbox" name="caldav_generate_birthday_calendar" id="caldavGenerateBirthdayCalendar" class="checkbox" | |||
<?php ($_['generate_birthday_calendar'] === 'yes') ? print_unescaped('checked="checked"') : null ?>/> | |||
<label for="caldavGenerateBirthdayCalendar"><?php p($l->t('Automatically generate a birthday calendar')); ?></label> | |||
<br> | |||
<em><?php p($l->t('Birthday calendars will be generated by a background job.')); ?></em><br> | |||
<em><?php p($l->t('Hence they will not be available immediately after enabling but will show up after some time.')); ?></em> | |||
</p> | |||
</form> |
@@ -0,0 +1,75 @@ | |||
<?php | |||
/** | |||
* @copyright 2017, Georg Ehrke <oc.list@georgehrke.com> | |||
* | |||
* @author Georg Ehrke <oc.list@georgehrke.com> | |||
* | |||
* @license GNU AGPL version 3 or any later version | |||
* | |||
* This program is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU Affero General Public License as | |||
* published by the Free Software Foundation, either version 3 of the | |||
* License, or (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU Affero General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU Affero General Public License | |||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
* | |||
*/ | |||
namespace OCA\DAV\Tests\Unit\DAV\Controller; | |||
use OCA\DAV\Controller\BirthdayCalendarController; | |||
use OCP\IConfig; | |||
use OCP\IDBConnection; | |||
use OCP\IRequest; | |||
use Test\TestCase; | |||
class BirthdayCalendarControllerTest extends TestCase { | |||
/** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */ | |||
private $config; | |||
/** @var IRequest|\PHPUnit_Framework_MockObject_MockObject */ | |||
private $request; | |||
/** @var IDBConnection|\PHPUnit_Framework_MockObject_MockObject */ | |||
private $db; | |||
/** @var BirthdayCalendarController|\PHPUnit_Framework_MockObject_MockObject */ | |||
private $controller; | |||
public function setUp() { | |||
parent::setUp(); | |||
$this->config = $this->createMock(IConfig::class); | |||
$this->request = $this->createMock(IRequest::class); | |||
$this->db = $this->createMock(IDBConnection::class); | |||
$this->controller = new BirthdayCalendarController('dav', | |||
$this->request, $this->db, $this->config); | |||
} | |||
public function testEnable() { | |||
$this->config->expects($this->once()) | |||
->method('setAppValue') | |||
->with('dav', 'generateBirthdayCalendar', 'yes'); | |||
$response = $this->controller->enable(); | |||
$this->assertInstanceOf('OCP\AppFramework\Http\JSONResponse', $response); | |||
} | |||
public function testDisable() { | |||
$this->config->expects($this->once()) | |||
->method('setAppValue') | |||
->with('dav', 'generateBirthdayCalendar', 'no'); | |||
$response = $this->controller->disable(); | |||
$this->assertInstanceOf('OCP\AppFramework\Http\JSONResponse', $response); | |||
} | |||
} |