]> source.dussan.org Git - nextcloud-server.git/commitdiff
Move CalDAV activity filters to new API
authorJoas Schilling <coding@schilljs.com>
Tue, 29 Nov 2016 14:00:00 +0000 (15:00 +0100)
committerJoas Schilling <coding@schilljs.com>
Tue, 29 Nov 2016 14:04:08 +0000 (15:04 +0100)
Signed-off-by: Joas Schilling <coding@schilljs.com>
apps/dav/appinfo/info.xml
apps/dav/lib/CalDAV/Activity/Extension.php
apps/dav/lib/CalDAV/Activity/Filter/Calendar.php [new file with mode: 0644]
apps/dav/lib/CalDAV/Activity/Filter/Todo.php [new file with mode: 0644]

index 0024e41e753cd83888817821b7be96d7e3741869..71eac02cbe41d4065e9f636d6edc2666af40893c 100644 (file)
                <command>OCA\DAV\Command\SyncBirthdayCalendar</command>
                <command>OCA\DAV\Command\SyncSystemAddressBook</command>
        </commands>
+
+       <activity>
+               <filters>
+                       <filter>OCA\DAV\CalDAV\Activity\Filter\Calendar</filter>
+                       <filter>OCA\DAV\CalDAV\Activity\Filter\Todo</filter>
+               </filters>
+       </activity>
 </info>
index 29222b90ce8d07942c036c662273c89ec8e630c8..3be6895690355070cc1f9ae8523194e5a3c13c52 100644 (file)
@@ -314,24 +314,7 @@ class Extension implements IExtension {
         * @return array|false
         */
        public function getNavigation() {
-               $l = $this->getL10N();
-               return [
-                       'apps' => [
-                               self::CALENDAR => [
-                                       'id' => self::CALENDAR,
-                                       'icon' => 'icon-calendar-dark',
-                                       'name' => (string) $l->t('Calendar'),
-                                       'url' => $this->URLGenerator->linkToRoute('activity.Activities.showList', ['filter' => self::CALENDAR]),
-                               ],
-                               self::CALENDAR_TODO => [
-                                       'id' => self::CALENDAR_TODO,
-                                       'icon' => 'icon-checkmark',
-                                       'name' => (string) $l->t('Todos'),
-                                       'url' => $this->URLGenerator->linkToRoute('activity.Activities.showList', ['filter' => self::CALENDAR_TODO]),
-                               ],
-                       ],
-                       'top' => [],
-               ];
+               return false;
        }
 
        /**
@@ -341,7 +324,7 @@ class Extension implements IExtension {
         * @return boolean
         */
        public function isFilterValid($filterValue) {
-               return in_array($filterValue, [self::CALENDAR, self::CALENDAR_TODO]);
+               return false;
        }
 
        /**
@@ -353,12 +336,6 @@ class Extension implements IExtension {
         * @return array|false
         */
        public function filterNotificationTypes($types, $filter) {
-               switch ($filter) {
-                       case self::CALENDAR:
-                               return array_intersect([self::CALENDAR, self::CALENDAR_EVENT], $types);
-                       case self::CALENDAR_TODO:
-                               return array_intersect([self::CALENDAR_TODO], $types);
-               }
                return false;
        }
 
diff --git a/apps/dav/lib/CalDAV/Activity/Filter/Calendar.php b/apps/dav/lib/CalDAV/Activity/Filter/Calendar.php
new file mode 100644 (file)
index 0000000..a20b8ad
--- /dev/null
@@ -0,0 +1,92 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.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\CalDAV\Activity\Filter;
+
+
+use OCP\Activity\IFilter;
+use OCP\IL10N;
+use OCP\IURLGenerator;
+
+class Calendar implements IFilter {
+
+       /** @var IL10N */
+       protected $l;
+
+       /** @var IURLGenerator */
+       protected $url;
+
+       public function __construct(IL10N $l, IURLGenerator $url) {
+               $this->l = $l;
+               $this->url = $url;
+       }
+
+       /**
+        * @return string Lowercase a-z and underscore only identifier
+        * @since 11.0.0
+        */
+       public function getIdentifier() {
+               return 'calendar';
+       }
+
+       /**
+        * @return string A translated string
+        * @since 11.0.0
+        */
+       public function getName() {
+               return $this->l->t('Calendar');
+       }
+
+       /**
+        * @return int whether the filter should be rather on the top or bottom of
+        * the admin section. The filters are arranged in ascending order of the
+        * priority values. It is required to return a value between 0 and 100.
+        * @since 11.0.0
+        */
+       public function getPriority() {
+               return 40;
+       }
+
+       /**
+        * @return string Full URL to an icon, empty string when none is given
+        * @since 11.0.0
+        */
+       public function getIcon() {
+               return $this->url->getAbsoluteURL($this->url->imagePath('core', 'places/calendar-dark.svg'));
+       }
+
+       /**
+        * @param string[] $types
+        * @return string[] An array of allowed apps from which activities should be displayed
+        * @since 11.0.0
+        */
+       public function filterTypes(array $types) {
+               return array_intersect(['calendar', 'calendar_event'], $types);
+       }
+
+       /**
+        * @return string[] An array of allowed apps from which activities should be displayed
+        * @since 11.0.0
+        */
+       public function allowedApps() {
+               return [];
+       }
+}
diff --git a/apps/dav/lib/CalDAV/Activity/Filter/Todo.php b/apps/dav/lib/CalDAV/Activity/Filter/Todo.php
new file mode 100644 (file)
index 0000000..42ee074
--- /dev/null
@@ -0,0 +1,92 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.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\CalDAV\Activity\Filter;
+
+
+use OCP\Activity\IFilter;
+use OCP\IL10N;
+use OCP\IURLGenerator;
+
+class Todo implements IFilter {
+
+       /** @var IL10N */
+       protected $l;
+
+       /** @var IURLGenerator */
+       protected $url;
+
+       public function __construct(IL10N $l, IURLGenerator $url) {
+               $this->l = $l;
+               $this->url = $url;
+       }
+
+       /**
+        * @return string Lowercase a-z and underscore only identifier
+        * @since 11.0.0
+        */
+       public function getIdentifier() {
+               return 'calendar_todo';
+       }
+
+       /**
+        * @return string A translated string
+        * @since 11.0.0
+        */
+       public function getName() {
+               return $this->l->t('Todos');
+       }
+
+       /**
+        * @return int whether the filter should be rather on the top or bottom of
+        * the admin section. The filters are arranged in ascending order of the
+        * priority values. It is required to return a value between 0 and 100.
+        * @since 11.0.0
+        */
+       public function getPriority() {
+               return 40;
+       }
+
+       /**
+        * @return string Full URL to an icon, empty string when none is given
+        * @since 11.0.0
+        */
+       public function getIcon() {
+               return $this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/checkmark.svg'));
+       }
+
+       /**
+        * @param string[] $types
+        * @return string[] An array of allowed apps from which activities should be displayed
+        * @since 11.0.0
+        */
+       public function filterTypes(array $types) {
+               return array_intersect(['calendar_todo'], $types);
+       }
+
+       /**
+        * @return string[] An array of allowed apps from which activities should be displayed
+        * @since 11.0.0
+        */
+       public function allowedApps() {
+               return [];
+       }
+}