diff --git a/apps/files_sharing/lib/activity.php b/apps/files_sharing/lib/activity.php index 0f7e8ab9b63..979df1c1da6 100644 --- a/apps/files_sharing/lib/activity.php +++ b/apps/files_sharing/lib/activity.php @@ -94,15 +94,46 @@ class Activity implements \OCP\Activity\IExtension { case self::SUBJECT_REMOTE_SHARE_RECEIVED: return $l->t('You received a new remote share from %s', $params)->__toString(); case self::SUBJECT_REMOTE_SHARE_ACCEPTED: - return $l->t('%1$s accepted remote share %2$s', $params)->__toString(); + return $l->t('%1$s accepted remote share %2$s', $params)->__toString(); case self::SUBJECT_REMOTE_SHARE_DECLINED: - return $l->t('%1$s declined remote share %2$s', $params)->__toString(); + return $l->t('%1$s declined remote share %2$s', $params)->__toString(); case self::SUBJECT_REMOTE_SHARE_UNSHARED: - return $l->t('%1$s unshared %2$s', $params)->__toString(); + return $l->t('%1$s unshared %2$s', $params)->__toString(); } } } + /** + * The extension can define the type of parameters for translation + * + * Currently known types are: + * * file => will strip away the path of the file and add a tooltip with it + * * username => will add the avatar of the user + * + * @param string $app + * @param string $text + * @return array|false + */ + public function getSpecialParameterList($app, $text) { + if ($app === 'files_sharing') { + switch ($text) { + case self::SUBJECT_REMOTE_SHARE_RECEIVED: + return array( + 0 => '',// We can not use 'username' since the user is in a different ownCloud + ); + case self::SUBJECT_REMOTE_SHARE_ACCEPTED: + case self::SUBJECT_REMOTE_SHARE_DECLINED: + case self::SUBJECT_REMOTE_SHARE_UNSHARED: + return array( + 0 => '',// We can not use 'username' since the user is in a different ownCloud + 1 => 'file', + ); + } + } + + return false; + } + /** * A string naming the css class for the icon to be used can be returned. * If no icon is known for the given type false is to be returned. diff --git a/lib/private/activitymanager.php b/lib/private/activitymanager.php index e0ee7c1b055..70bd227b417 100644 --- a/lib/private/activitymanager.php +++ b/lib/private/activitymanager.php @@ -167,6 +167,25 @@ class ActivityManager implements IManager { return false; } + /** + * @param string $app + * @param string $text + * @return array|false + */ + function getSpecialParameterList($app, $text) { + foreach($this->extensions as $extension) { + $c = $extension(); + if ($c instanceof IExtension) { + $specialParameter = $c->getSpecialParameterList($app, $text); + if (is_array($specialParameter)) { + return $specialParameter; + } + } + } + + return false; + } + /** * @param string $type * @return string diff --git a/lib/public/activity/iextension.php b/lib/public/activity/iextension.php index e78ae0043a6..1b405ad8d3d 100644 --- a/lib/public/activity/iextension.php +++ b/lib/public/activity/iextension.php @@ -79,6 +79,19 @@ interface IExtension { */ public function translate($app, $text, $params, $stripPath, $highlightParams, $languageCode); + /** + * The extension can define the type of parameters for translation + * + * Currently known types are: + * * file => will strip away the path of the file and add a tooltip with it + * * username => will add the avatar of the user + * + * @param string $app + * @param string $text + * @return array|false + */ + function getSpecialParameterList($app, $text); + /** * A string naming the css class for the icon to be used can be returned. * If no icon is known for the given type false is to be returned. diff --git a/lib/public/activity/imanager.php b/lib/public/activity/imanager.php index 0a49fdf4999..a08670be4b0 100644 --- a/lib/public/activity/imanager.php +++ b/lib/public/activity/imanager.php @@ -99,6 +99,13 @@ interface IManager { */ function translate($app, $text, $params, $stripPath, $highlightParams, $languageCode); + /** + * @param string $app + * @param string $text + * @return array|false + */ + function getSpecialParameterList($app, $text); + /** * @param string $type * @return string diff --git a/tests/lib/activitymanager.php b/tests/lib/activitymanager.php index 0683eb68193..6a5af7b259b 100644 --- a/tests/lib/activitymanager.php +++ b/tests/lib/activitymanager.php @@ -59,6 +59,14 @@ class Test_ActivityManager extends \Test\TestCase { $this->assertFalse($result); } + public function testGetSpecialParameterList() { + $result = $this->activityManager->getSpecialParameterList('APP0', ''); + $this->assertEquals(array(0 => 'file', 1 => 'username'), $result); + + $result = $this->activityManager->getSpecialParameterList('APP1', ''); + $this->assertFalse($result); + } + public function testTypeIcon() { $result = $this->activityManager->getTypeIcon('NT1'); $this->assertEquals('icon-nt-one', $result); @@ -132,6 +140,14 @@ class SimpleExtension implements \OCP\Activity\IExtension { return false; } + public function getSpecialParameterList($app, $text) { + if ($app === 'APP0') { + return array(0 => 'file', 1 => 'username'); + } + + return false; + } + public function getTypeIcon($type) { if ($type === 'NT1') { return 'icon-nt-one'; @@ -185,6 +201,10 @@ class NoOpExtension implements \OCP\Activity\IExtension { return false; } + public function getSpecialParameterList($app, $text) { + return false; + } + public function getTypeIcon($type) { return false; }