summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/files_sharing/js/share.js4
-rw-r--r--core/css/icons.scss14
-rw-r--r--core/img/clients/desktop.svg1
-rw-r--r--core/img/clients/phone.svg1
-rw-r--r--core/img/clients/tablet.svg1
-rw-r--r--lib/private/legacy/app.php24
-rw-r--r--settings/css/settings.scss16
-rw-r--r--settings/js/authtoken_view.js24
-rw-r--r--settings/templates/settings/personal/security.php1
-rw-r--r--settings/templates/users/part.createuser.php2
10 files changed, 74 insertions, 14 deletions
diff --git a/apps/files_sharing/js/share.js b/apps/files_sharing/js/share.js
index aa0803c491b..b2715912d3b 100644
--- a/apps/files_sharing/js/share.js
+++ b/apps/files_sharing/js/share.js
@@ -12,6 +12,7 @@
_.extend(OC.Files.Client, {
PROPERTY_SHARE_TYPES: '{' + OC.Files.Client.NS_OWNCLOUD + '}share-types',
+ PROPERTY_OWNER_ID: '{' + OC.Files.Client.NS_OWNCLOUD + '}owner-id',
PROPERTY_OWNER_DISPLAY_NAME: '{' + OC.Files.Client.NS_OWNCLOUD + '}owner-display-name'
});
@@ -66,6 +67,7 @@
var fileInfo = oldElementToFile.apply(this, arguments);
fileInfo.sharePermissions = $el.attr('data-share-permissions') || undefined;
fileInfo.shareOwner = $el.attr('data-share-owner') || undefined;
+ fileInfo.shareOwnerId = $el.attr('data-share-owner-id') || undefined;
if( $el.attr('data-share-types')){
fileInfo.shareTypes = $el.attr('data-share-types').split(',');
@@ -83,6 +85,7 @@
var oldGetWebdavProperties = fileList._getWebdavProperties;
fileList._getWebdavProperties = function() {
var props = oldGetWebdavProperties.apply(this, arguments);
+ props.push(OC.Files.Client.PROPERTY_OWNER_ID);
props.push(OC.Files.Client.PROPERTY_OWNER_DISPLAY_NAME);
props.push(OC.Files.Client.PROPERTY_SHARE_TYPES);
return props;
@@ -95,6 +98,7 @@
if (permissionsProp && permissionsProp.indexOf('S') >= 0) {
data.shareOwner = props[OC.Files.Client.PROPERTY_OWNER_DISPLAY_NAME];
+ data.shareOwnerId = props[OC.Files.Client.PROPERTY_OWNER_ID];
}
var shareTypesProp = props[OC.Files.Client.PROPERTY_SHARE_TYPES];
diff --git a/core/css/icons.scss b/core/css/icons.scss
index fbf36e2fbbc..3c3dff56c1a 100644
--- a/core/css/icons.scss
+++ b/core/css/icons.scss
@@ -516,6 +516,20 @@ img, object, video, button, textarea, input, select, div[contenteditable=true] {
background-image: url('../img/places/picture.svg?v=1');
}
+/* CLIENTS ------------------------------------------------------------------- */
+
+.icon-desktop {
+ background-image: url('../img/clients/desktop.svg?v=1');
+}
+
+.icon-phone {
+ background-image: url('../img/clients/phone.svg?v=1');
+}
+
+.icon-tablet {
+ background-image: url('../img/clients/tablet.svg?v=1');
+}
+
/* APP CATEGORIES ------------------------------------------------------------------- */
.icon-category-installed {
background-image: url('../img/actions/user.svg?v=1');
diff --git a/core/img/clients/desktop.svg b/core/img/clients/desktop.svg
new file mode 100644
index 00000000000..df4f5b6884a
--- /dev/null
+++ b/core/img/clients/desktop.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 4.233 4.233"><path d="M1.597 3.082v.47l-.085.043-.395.202h2l-.403-.206-.079-.04v-.469zM.267.436C.175.436.04.512.04.606v2.307c0 .094.075.17.167.17h3.82a.168.168 0 0 0 .168-.17V.606a.169.169 0 0 0-.167-.17zm-.035.16L3.967.57c.052 0 .09.042.09.095v2.141c0 .053-.04.095-.09.095h-3.7a.092.092 0 0 1-.093-.094V.675A.14.14 0 0 1 .232.597z" stroke="#000" stroke-width=".079" stroke-linejoin="round"/></svg> \ No newline at end of file
diff --git a/core/img/clients/phone.svg b/core/img/clients/phone.svg
new file mode 100644
index 00000000000..a45c5c4c729
--- /dev/null
+++ b/core/img/clients/phone.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 4.233 4.233"><path d="M1.19 0a.399.399 0 0 0-.396.396v3.441a.4.4 0 0 0 .396.397h1.72a.4.4 0 0 0 .397-.397V.396a.399.399 0 0 0-.396-.397zm.135.398h1.453a.13.13 0 0 1 .134.133v2.974a.13.13 0 0 1-.133.133H1.325a.13.13 0 0 1-.134-.133V.531a.13.13 0 0 1 .134-.133z"/></svg> \ No newline at end of file
diff --git a/core/img/clients/tablet.svg b/core/img/clients/tablet.svg
new file mode 100644
index 00000000000..a4d41be3057
--- /dev/null
+++ b/core/img/clients/tablet.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 4.233 4.233"><path d="M.971 0A.452.452 0 0 0 .53.455v3.323c0 .249.2.455.442.455h2.29a.452.452 0 0 0 .443-.455V.455c0-.249-.2-.455-.442-.455zm0 .426h2.29c.02 0 .03.008.03.029v3.323c0 .02-.01.03-.03.03H.972c-.02 0-.027-.01-.027-.03V.455c0-.02.008-.029.027-.029z"/></svg> \ No newline at end of file
diff --git a/lib/private/legacy/app.php b/lib/private/legacy/app.php
index b19d63f560e..9384582bac3 100644
--- a/lib/private/legacy/app.php
+++ b/lib/private/legacy/app.php
@@ -133,6 +133,7 @@ class OC_App {
* load a single app
*
* @param string $app
+ * @throws Exception
*/
public static function loadApp($app) {
self::$loadedApps[] = $app;
@@ -146,7 +147,15 @@ class OC_App {
if (is_file($appPath . '/appinfo/app.php')) {
\OC::$server->getEventLogger()->start('load_app_' . $app, 'Load app: ' . $app);
- self::requireAppFile($app);
+ try {
+ self::requireAppFile($app);
+ } catch (Error $ex) {
+ \OC::$server->getLogger()->logException($ex);
+ if (!\OC::$server->getAppManager()->isShipped($app)) {
+ // Only disable apps which are not shipped
+ self::disable($app);
+ }
+ }
if (self::isType($app, array('authentication'))) {
// since authentication apps affect the "is app enabled for group" check,
// the enabled apps cache needs to be cleared to make sure that the
@@ -248,18 +257,11 @@ class OC_App {
* Load app.php from the given app
*
* @param string $app app name
+ * @throws Error
*/
private static function requireAppFile($app) {
- try {
- // encapsulated here to avoid variable scope conflicts
- require_once $app . '/appinfo/app.php';
- } catch (Error $ex) {
- \OC::$server->getLogger()->logException($ex);
- if (!\OC::$server->getAppManager()->isShipped($app)) {
- // Only disable apps which are not shipped
- self::disable($app);
- }
- }
+ // encapsulated here to avoid variable scope conflicts
+ require_once $app . '/appinfo/app.php';
}
/**
diff --git a/settings/css/settings.scss b/settings/css/settings.scss
index 59f32cc7131..05d62423d17 100644
--- a/settings/css/settings.scss
+++ b/settings/css/settings.scss
@@ -329,11 +329,23 @@ table.nostyle {
}
}
.token-list td {
- &.more {
+ &%icon {
overflow: visible;
position: relative;
width: 16px;
}
+ &.more {
+ @extend %icon;
+ }
+ &.client {
+ @extend %icon;
+
+ div {
+ opacity: 0.57;
+ width: inherit;
+ padding-top: 5px;
+ }
+ }
border-top: 1px solid #DDD;
text-overflow: ellipsis;
max-width: 200px;
@@ -342,7 +354,7 @@ table.nostyle {
vertical-align: top;
position: relative;
}
- tr > *:nth-child(2) {
+ tr > *:nth-child(3) {
text-align: right;
}
.token-list {
diff --git a/settings/js/authtoken_view.js b/settings/js/authtoken_view.js
index a20434be872..b8645e4cc85 100644
--- a/settings/js/authtoken_view.js
+++ b/settings/js/authtoken_view.js
@@ -27,6 +27,9 @@
var TEMPLATE_TOKEN =
'<tr data-id="{{id}}">'
+ + '<td class="client">'
+ + '<div class="{{icon}}" />'
+ + '</td>'
+ '<td class="has-tooltip" title="{{title}}">'
+ '<span class="token-name">{{name}}</span>'
+ '</td>'
@@ -146,6 +149,22 @@
sailfishBrowser: 'SailfishBrowser'
};
+ var iconMap = {
+ ie: 'icon-desktop',
+ edge: 'icon-desktop',
+ firefox: 'icon-desktop',
+ chrome: 'icon-desktop',
+ safari: 'icon-desktop',
+ androidChrome: 'icon-phone',
+ iphone: 'icon-phone',
+ ipad: 'icon-tablet',
+ iosClient: 'icon-phone',
+ androidClient: 'icon-phone',
+ davDroid: 'icon-phone',
+ webPirate: 'icon-link',
+ sailfishBrowser: 'icon-link'
+ };
+
if (matches) {
viewData.name = t('settings', 'Sync client - {os}', {
os: matches[1],
@@ -161,6 +180,11 @@
} else {
viewData.name = nameMap[client];
}
+
+ // update title - for easier view
+ viewData.title = viewData.name;
+
+ viewData.icon = iconMap[client];
}
}
if (viewData.current) {
diff --git a/settings/templates/settings/personal/security.php b/settings/templates/settings/personal/security.php
index 3a324bf8d21..cf52315ff04 100644
--- a/settings/templates/settings/personal/security.php
+++ b/settings/templates/settings/personal/security.php
@@ -37,6 +37,7 @@ script('settings', [
<table class="icon-loading">
<thead class="token-list-header">
<tr>
+ <th></th>
<th><?php p($l->t('Device'));?></th>
<th><?php p($l->t('Last activity'));?></th>
<th></th>
diff --git a/settings/templates/users/part.createuser.php b/settings/templates/users/part.createuser.php
index ca36b196ea8..6a388fc0d88 100644
--- a/settings/templates/users/part.createuser.php
+++ b/settings/templates/users/part.createuser.php
@@ -7,7 +7,7 @@
type="password" id="newuserpassword"
placeholder="<?php p($l->t('Password'))?>"
autocomplete="off" autocapitalize="none" autocorrect="off" />
- <input id="newemail" type="text" style="display:none"
+ <input id="newemail" type="email" style="display:none"
placeholder="<?php p($l->t('E-Mail'))?>"
autocomplete="off" autocapitalize="none" autocorrect="off" />
<div class="groups"><div class="groupsListContainer multiselect button" data-placeholder="<?php p($l->t('Groups'))?>"><span class="title groupsList"></span><span class="icon-triangle-s"></span></div></div>