summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/files/css/files.css23
-rw-r--r--apps/files/service/tagservice.php25
-rw-r--r--apps/files/templates/list.php2
-rw-r--r--core/css/apps.css1
-rw-r--r--core/css/header.css25
-rw-r--r--core/css/jquery-ui-fixes.css2
-rw-r--r--core/css/jquery.ocdialog.css2
-rw-r--r--core/css/mobile.css4
-rw-r--r--core/css/styles.css30
-rw-r--r--core/search/css/results.css8
-rw-r--r--core/search/js/search.js9
-rw-r--r--core/templates/exception.php2
-rw-r--r--core/templates/installation.php2
-rw-r--r--core/templates/layout.guest.php8
-rw-r--r--core/templates/layout.user.php25
-rw-r--r--core/templates/message.html2
-rw-r--r--lib/private/tags.php5
-rw-r--r--settings/js/apps.js15
-rw-r--r--settings/templates/apps.php4
19 files changed, 88 insertions, 106 deletions
diff --git a/apps/files/css/files.css b/apps/files/css/files.css
index d09df9d795d..d546f346ce0 100644
--- a/apps/files/css/files.css
+++ b/apps/files/css/files.css
@@ -625,26 +625,3 @@ table.dragshadow td.size {
.mask.transparent{
opacity: 0;
}
-
-.nofilterresults {
- font-size: 16px;
- color: #888;
- position: absolute;
- text-align: center;
- top: 30%;
- width: 100%;
-}
-.nofilterresults h2 {
- font-size: 22px;
- margin-bottom: 10px;
-}
-.nofilterresults [class^="icon-"],
-.nofilterresults [class*=" icon-"] {
- background-size: 64px;
- height: 64px;
- width: 64px;
- margin: 0 auto 15px;
- -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
- filter: alpha(opacity=50);
- opacity: .5;
-}
diff --git a/apps/files/service/tagservice.php b/apps/files/service/tagservice.php
index fe26838552a..cdd51d27f4a 100644
--- a/apps/files/service/tagservice.php
+++ b/apps/files/service/tagservice.php
@@ -48,7 +48,7 @@ class TagService {
* @param string $path path
* @param array $tags array of tags
* @return array list of tags
- * @throws \OCP\NotFoundException if the file does not exist
+ * @throws \OCP\Files\NotFoundException if the file does not exist
*/
public function updateFileTags($path, $tags) {
$fileId = $this->homeFolder->get($path)->getId();
@@ -74,30 +74,27 @@ class TagService {
}
/**
- * Updates the tags of the specified file path.
- * The passed tags are absolute, which means they will
- * replace the actual tag selection.
+ * Get all files for the given tag
*
* @param array $tagName tag name to filter by
* @return FileInfo[] list of matching files
* @throws \Exception if the tag does not exist
*/
public function getFilesByTag($tagName) {
- $nodes = $this->homeFolder->searchByTag(
- $tagName, $this->userSession->getUser()->getUId()
- );
+ try {
+ $fileIds = $this->tagger->getIdsForTag($tagName);
+ } catch (\Exception $e) {
+ return [];
+ }
+
$fileInfos = [];
- foreach ($nodes as $node) {
- try {
+ foreach ($fileIds as $fileId) {
+ $nodes = $this->homeFolder->getById((int) $fileId);
+ foreach ($nodes as $node) {
/** @var \OC\Files\Node\Node $node */
$fileInfos[] = $node->getFileInfo();
- } catch (\Exception $e) {
- // FIXME Should notify the user, when this happens
- // Can not get FileInfo, maybe the connection to the external
- // storage is interrupted.
}
}
-
return $fileInfos;
}
}
diff --git a/apps/files/templates/list.php b/apps/files/templates/list.php
index f2292bfae36..47f15d8a148 100644
--- a/apps/files/templates/list.php
+++ b/apps/files/templates/list.php
@@ -57,7 +57,7 @@
<p><?php p($l->t('Upload some content or sync with your devices!')); ?></p>
</div>
-<div class="nofilterresults hidden">
+<div class="nofilterresults emptycontent hidden">
<div class="icon-search"></div>
<h2><?php p($l->t('No entries found in this folder')); ?></h2>
<p></p>
diff --git a/core/css/apps.css b/core/css/apps.css
index a460bcf46c8..20822f8b398 100644
--- a/core/css/apps.css
+++ b/core/css/apps.css
@@ -524,6 +524,5 @@ button.loading {
em {
font-style: normal;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
- filter: alpha(opacity=50);
opacity: .5;
}
diff --git a/core/css/header.css b/core/css/header.css
index b4e074a5e44..f249be8c4b4 100644
--- a/core/css/header.css
+++ b/core/css/header.css
@@ -95,7 +95,6 @@
.menutoggle .header-appname,
.menutoggle .icon-caret {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";
- filter: alpha(opacity=75);
opacity: .75;
}
.menutoggle:hover .header-appname,
@@ -105,7 +104,6 @@
.menutoggle.active .header-appname,
.menutoggle.active .icon-caret {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
- filter: alpha(opacity=100);
opacity: 1;
}
@@ -186,7 +184,6 @@
#navigation a span {
/* 50% opacity when inactive */
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
- filter: alpha(opacity=50);
opacity: .5;
}
#navigation a:hover img, #navigation a:focus img,
@@ -195,7 +192,6 @@
#navigation a.active span {
/* full opacity for the active app or when hovered/focused */
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
- filter: alpha(opacity=100);
opacity: 1;
}
@@ -209,7 +205,6 @@
/* Apps management */
#apps-management {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";
- filter: alpha(opacity=60);
opacity: .6;
min-height: initial;
height: initial;
@@ -228,7 +223,6 @@
}
#navigation .app-loading .app-icon {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=10)";
- filter: alpha(opacity=10);
opacity: .1;
}
@@ -278,8 +272,17 @@
cursor: pointer;
}
#expand:hover, #expand:focus, #expand:active { color:#fff; }
-#expand img { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; filter:alpha(opacity=70); opacity:.7; margin-bottom:-2px; }
-#expand:hover img, #expand:focus img, #expand:active img { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; filter:alpha(opacity=100); opacity:1; }
+#expand img {
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";
+ opacity: .7;
+ margin-bottom: -2px;
+}
+#expand:hover img,
+#expand:focus img,
+#expand:active img {
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
+ opacity:1;
+}
#expanddiv {
position: absolute;
right: 0;
@@ -297,7 +300,6 @@
color: #fff;
padding: 4px 12px 0;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";
- filter: alpha(opacity=70);
opacity: .7;
-moz-box-sizing: border-box;
box-sizing: border-box;
@@ -306,8 +308,9 @@
margin-bottom: -3px;
margin-right: 6px;
}
- #expanddiv a:hover, #expanddiv a:focus, #expanddiv a:active {
+ #expanddiv a:hover,
+ #expanddiv a:focus,
+ #expanddiv a:active {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
- filter: alpha(opacity=100);
opacity: 1;
}
diff --git a/core/css/jquery-ui-fixes.css b/core/css/jquery-ui-fixes.css
index 0bfa9479893..7e0cdd18204 100644
--- a/core/css/jquery-ui-fixes.css
+++ b/core/css/jquery-ui-fixes.css
@@ -128,13 +128,11 @@
.ui-widget-overlay {
background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat;
opacity: .5;
- filter: Alpha(Opacity=50);
}
.ui-widget-shadow {
margin: -5px 0 0 -5px;
padding: 5px;
background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x;
opacity: .2;
- filter: Alpha(Opacity=20);
border-radius: 5px;
}
diff --git a/core/css/jquery.ocdialog.css b/core/css/jquery.ocdialog.css
index 93930bf435f..bada0b73a5e 100644
--- a/core/css/jquery.ocdialog.css
+++ b/core/css/jquery.ocdialog.css
@@ -52,7 +52,7 @@
.oc-dialog-dim {
background-color: #000;
- opacity: .20;filter:Alpha(Opacity=20);
+ opacity: .20;
z-index: 999;
position: fixed;
top: 0; left: 0;
diff --git a/core/css/mobile.css b/core/css/mobile.css
index a98547596b2..662c583efbc 100644
--- a/core/css/mobile.css
+++ b/core/css/mobile.css
@@ -109,14 +109,10 @@
z-index: 149;
background-color: rgba(255, 255, 255, .7);
cursor: pointer;
- -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";
- filter: alpha(opacity=60);
opacity: .6;
}
#app-navigation-toggle:hover,
#app-navigation-toggle:focus {
- -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
- filter: alpha(opacity=100);
opacity: 1;
}
diff --git a/core/css/styles.css b/core/css/styles.css
index 74df29140a9..12b6bbe9efb 100644
--- a/core/css/styles.css
+++ b/core/css/styles.css
@@ -133,7 +133,8 @@ input[type="url"]:hover, input[type="url"]:focus, input[type="url"]:active,
input[type="time"]:hover, input[type="time"]:focus, input[type="time"]:active,
textarea:hover, textarea:focus, textarea:active {
color: #333;
- -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; filter:alpha(opacity=100); opacity:1;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
+ opacity: 1;
}
input[type="checkbox"] { margin:0; padding:0; height:auto; width:auto; }
input[type="checkbox"]:hover+label, input[type="checkbox"]:focus+label { color:#111 !important; }
@@ -243,7 +244,8 @@ textarea:disabled {
background: #fff url('../img/actions/search.svg') no-repeat .5em center;
border: 0;
border-radius: 2em;
- -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; filter:alpha(opacity=70); opacity: .7;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";
+ opacity: .7;
margin-top: 6px;
float: right;
}
@@ -324,7 +326,8 @@ input[type="submit"].enabled {
overflow-x: auto;
}
-#emptycontent {
+#emptycontent,
+.emptycontent {
font-size: 16px;
color: #888;
position: absolute;
@@ -332,18 +335,20 @@ input[type="submit"].enabled {
top: 30%;
width: 100%;
}
-#emptycontent h2 {
+#emptycontent h2,
+.emptycontent h2 {
font-size: 22px;
margin-bottom: 10px;
}
#emptycontent [class^="icon-"],
-#emptycontent [class*=" icon-"] {
+.emptycontent [class^="icon-"],
+#emptycontent [class*=" icon-"],
+.emptycontent [class*=" icon-"] {
background-size: 64px;
height: 64px;
width: 64px;
margin: 0 auto 15px;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
- filter: alpha(opacity=50);
opacity: .5;
}
@@ -368,7 +373,6 @@ input[type="submit"].enabled {
text-align: center;
color: #ccc;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";
- filter: alpha(opacity=60);
opacity: .6;
}
/* overrides another !important statement that sets this to unreadable black */
@@ -468,7 +472,6 @@ input[name='password-clone'] {
left: 16px;
top: 22px;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";
- filter: alpha(opacity=30);
opacity: .3;
}
#adminpass-icon, #password-icon {
@@ -572,7 +575,6 @@ label.infield {
}
#show:checked + label, #dbpassword:checked + label, #personal-show:checked + label {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)";
- filter: alpha(opacity=80);
opacity: .8;
}
#show + label, #dbpassword + label, #personal-show + label {
@@ -583,7 +585,6 @@ label.infield {
background-repeat: no-repeat;
background-position: center;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";
- filter: alpha(opacity=30);
opacity: .3;
}
#pass2, input[name="personal-password-clone"] {
@@ -675,7 +676,6 @@ label.infield {
}
#body-login .warning legend {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
- filter: alpha(opacity=100);
opacity: 1;
}
#body-login a.warning {
@@ -763,8 +763,7 @@ label.infield {
top: 0;
border-bottom-left-radius: 3px;
border-bottom-right-radius: 3px;
- -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)";
- filter:alpha(opacity=90);
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=90)";
opacity: .9;
}
#notification span, #update-notification span {
@@ -775,7 +774,6 @@ label.infield {
tr .action:not(.permanent),
.selectedActions a {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
- filter: alpha(opacity=0);
opacity: 0;
}
tr:hover .action,
@@ -783,7 +781,6 @@ tr:focus .action,
tr .action.permanent,
.selectedActions a {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
- filter: alpha(opacity=50);
opacity: .5;
}
tr .action {
@@ -792,7 +789,6 @@ tr .action {
}
.header-action {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)";
- filter: alpha(opacity=80);
opacity: .8;
}
tr:hover .action:hover,
@@ -802,7 +798,6 @@ tr:focus .action:focus,
.header-action:hover,
.header-action:focus {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
- filter: alpha(opacity=100);
opacity: 1;
}
tbody tr:hover,
@@ -981,7 +976,6 @@ div.crumb:focus,
div.crumb a:focus,
div.crumb:active {
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";
- filter:alpha(opacity=70);
opacity:.7;
}
diff --git a/core/search/css/results.css b/core/search/css/results.css
index 04f7b6dcb99..b62f7df3fe3 100644
--- a/core/search/css/results.css
+++ b/core/search/css/results.css
@@ -18,23 +18,23 @@
box-sizing: content-box;
}
-#searchresults #status {
+#searchresults .status {
background-color: rgba(255, 255, 255, .85);
height: 12px;
padding: 28px 0 28px 56px;
font-size: 18px;
}
-.has-favorites:not(.hidden) ~ #searchresults #status {
+.has-favorites:not(.hidden) ~ #searchresults .status {
padding-left: 102px;
}
-#searchresults #status.fixed {
+#searchresults .status.fixed {
position: fixed;
bottom: 0;
width: 100%;
z-index: 10;
}
-#searchresults #status .spinner {
+#searchresults .status .spinner {
height: 16px;
width: 16px;
vertical-align: middle;
diff --git a/core/search/js/search.js b/core/search/js/search.js
index c7feeacf42e..b49a4b8c6eb 100644
--- a/core/search/js/search.js
+++ b/core/search/js/search.js
@@ -125,6 +125,7 @@
//show spinner
$searchResults.removeClass('hidden');
+ $status.addClass('status');
$status.html(t('core', 'Searching other places')+'<img class="spinner" alt="search in progress" src="'+OC.webroot+'/core/img/loading.gif" />');
// do the actual search query
@@ -209,8 +210,12 @@
var count = $searchResults.find('tr.result').length;
$status.data('count', count);
if (count === 0) {
- $status.text(t('core', 'No search result in other places'));
+ $status.addClass('emptycontent').removeClass('status');
+ $status.html('');
+ $status.append('<div class="icon-search"></div>');
+ $status.append('<h2>' + t('core', 'No search result in other places') + '</h2>');
} else {
+ $status.removeClass('emptycontent').addClass('status');
$status.text(n('core', '{count} search result in other places', '{count} search results in other places', count, {count:count}));
}
}
@@ -383,4 +388,4 @@ OC.search.customResults = {};
/**
* @deprecated use get/setRenderer() instead
*/
-OC.search.resultTypes = {}; \ No newline at end of file
+OC.search.resultTypes = {};
diff --git a/core/templates/exception.php b/core/templates/exception.php
index 9ddc0f94d65..899ea29456c 100644
--- a/core/templates/exception.php
+++ b/core/templates/exception.php
@@ -9,7 +9,7 @@ style('core', ['styles', 'header']);
<p><?php p($l->t('The server encountered an internal error and was unable to complete your request.')) ?></p>
<p><?php p($l->t('Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report.')) ?></p>
<p><?php p($l->t('More details can be found in the server log.')) ?></p>
- <br />
+ <br>
<h2><strong><?php p($l->t('Technical details')) ?></strong></h2>
<ul>
diff --git a/core/templates/installation.php b/core/templates/installation.php
index 54c490c544e..96e6119cad3 100644
--- a/core/templates/installation.php
+++ b/core/templates/installation.php
@@ -10,7 +10,7 @@ script('core', [
<input type='hidden' id='hasOracle' value='<?php p($_['hasOracle']) ?>'>
<input type='hidden' id='hasMSSQL' value='<?php p($_['hasMSSQL']) ?>'>
<form action="index.php" method="post">
-<input type="hidden" name="install" value="true" />
+<input type="hidden" name="install" value="true">
<?php if(count($_['errors']) > 0): ?>
<fieldset class="warning">
<legend><strong><?php p($l->t('Error'));?></strong></legend>
diff --git a/core/templates/layout.guest.php b/core/templates/layout.guest.php
index c494e32a7fc..0557e89ce71 100644
--- a/core/templates/layout.guest.php
+++ b/core/templates/layout.guest.php
@@ -22,10 +22,10 @@
</head>
<body id="<?php p($_['bodyid']);?>">
<?php include('layout.noscript.warning.php'); ?>
- <div class="wrapper"><!-- for sticky footer -->
- <div class="v-align"><!-- vertically centred box -->
+ <div class="wrapper">
+ <div class="v-align">
<?php if ($_['bodyid'] === 'body-login' ): ?>
- <header>
+ <header role="banner">
<div id="header">
<div class="logo svg">
<h1 class="hidden-visually">
@@ -40,7 +40,7 @@
<div class="push"></div><!-- for sticky footer -->
</div>
</div>
- <footer>
+ <footer role="contentinfo">
<p class="info">
<?php print_unescaped($theme->getLongFooter()); ?>
</p>
diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php
index 9667aa72ddb..138545f2ccc 100644
--- a/core/templates/layout.user.php
+++ b/core/templates/layout.user.php
@@ -35,7 +35,7 @@
<div id="update-notification" style="display: inline;"><a href="<?php print_unescaped($_['updateLink']); ?>"><?php p($l->t('%s is available. Get more information on how to update.', array($_['updateVersion']))); ?></a></div>
<?php endif; ?>
</div>
- <header><div id="header">
+ <header role="banner"><div id="header">
<a href="<?php print_unescaped(link_to('', 'index.php')); ?>"
title="" id="owncloud" tabindex="-1">
<div class="logo-icon svg">
@@ -65,12 +65,12 @@
<div class="avatardiv<?php if ($_['userAvatarSet']) { print_unescaped(' avatardiv-shown"'); } else { print_unescaped('" style="display: none"'); } ?>>
<?php if ($_['userAvatarSet']): ?>
<img src="<?php p(\OC::$server->getURLGenerator()->linkToRoute('core.avatar.getAvatar', ['userId' => $_['user_uid'], 'size' => 32]));?>?requesttoken=<?php p(urlencode($_['requesttoken'])); ?>"
- alt="" />
+ alt="">
<?php endif; ?>
</div>
<?php endif; ?>
<span id="expandDisplayName"><?php p(trim($_['user_displayname']) != '' ? $_['user_displayname'] : $_['user_uid']) ?></span>
- <img class="svg" alt="" src="<?php print_unescaped(image_path('', 'actions/caret.svg')); ?>" />
+ <img class="svg" alt="" src="<?php print_unescaped(image_path('', 'actions/caret.svg')); ?>">
</div>
<div id="expanddiv">
<ul>
@@ -93,24 +93,24 @@
</div>
</div>
- <form class="searchbox" action="#" method="post">
+ <form class="searchbox" action="#" method="post" role="search">
<label for="searchbox" class="hidden-visually">
<?php p($l->t('Search'));?>
</label>
<input id="searchbox" class="svg" type="search" name="query"
value="<?php if(isset($_POST['query'])) {p($_POST['query']);};?>"
- autocomplete="off" tabindex="3" />
+ autocomplete="off" tabindex="3">
</form>
</div></header>
- <nav><div id="navigation">
+ <nav role="navigation"><div id="navigation">
<div id="apps" class="svg">
<ul>
<?php foreach($_['navigation'] as $entry): ?>
<li data-id="<?php p($entry['id']); ?>">
<a href="<?php print_unescaped($entry['href']); ?>" title=""
<?php if( $entry['active'] ): ?> class="active"<?php endif; ?>>
- <img class="app-icon svg" alt="" src="<?php print_unescaped($entry['icon']); ?>"/>
+ <img class="app-icon svg" alt="" src="<?php print_unescaped($entry['icon']); ?>">
<div class="icon-loading-dark" style="display:none;"></div>
<span>
<?php p($entry['name']); ?>
@@ -118,13 +118,14 @@
</a>
</li>
<?php endforeach; ?>
-
- <!-- show "More apps" link to app administration directly in app navigation, as last entry -->
- <?php if(OC_User::isAdminUser(OC_User::getUser())): ?>
+ <?php
+ /* show "More apps" link to app administration directly in app navigation, as last entry */
+ if(OC_User::isAdminUser(OC_User::getUser())):
+ ?>
<li id="apps-management">
<a href="<?php print_unescaped(OC_Helper::linkToRoute('settings_apps')); ?>" title=""
<?php if( $_['appsmanagement_active'] ): ?> class="active"<?php endif; ?>>
- <img class="app-icon svg" alt="" src="<?php print_unescaped(OC_Helper::imagePath('settings', 'apps.svg')); ?>"/>
+ <img class="app-icon svg" alt="" src="<?php print_unescaped(OC_Helper::imagePath('settings', 'apps.svg')); ?>">
<div class="icon-loading-dark" style="display:none;"></div>
<span>
<?php p($l->t('Apps')); ?>
@@ -138,7 +139,7 @@
</div></nav>
<div id="content-wrapper">
- <div id="content" class="app-<?php p($_['appid']) ?>">
+ <div id="content" class="app-<?php p($_['appid']) ?>" role="main">
<?php print_unescaped($_['content']); ?>
</div>
</div>
diff --git a/core/templates/message.html b/core/templates/message.html
index cd642231a9e..a98fd31a7fe 100644
--- a/core/templates/message.html
+++ b/core/templates/message.html
@@ -1,3 +1,3 @@
-<div id="{dialog_name}" title="{title} "><!-- the ' ' after {title} fixes ie8, see http://stackoverflow.com/a/5313137/828717 -->
+<div id="{dialog_name}" title="{title} "><?php /* the ' ' after {title} fixes ie8, see http://stackoverflow.com/a/5313137/828717 */ ?>
<p><span class="ui-icon ui-icon-{type}"></span>{message}</p>
</div>
diff --git a/lib/private/tags.php b/lib/private/tags.php
index 200ec8c2771..276da9d4b80 100644
--- a/lib/private/tags.php
+++ b/lib/private/tags.php
@@ -34,8 +34,8 @@
namespace OC;
-use \OC\Tagging\Tag,
- \OC\Tagging\TagMapper;
+use \OC\Tagging\Tag;
+use \OC\Tagging\TagMapper;
class Tags implements \OCP\ITags {
@@ -248,6 +248,7 @@ class Tags implements \OCP\ITags {
*
* @param string $tag Tag id or name.
* @return array|false An array of object ids or false on error.
+ * @throws \Exception
*/
public function getIdsForTag($tag) {
$result = null;
diff --git a/settings/js/apps.js b/settings/js/apps.js
index bb52aa3a155..8d8b2ca7398 100644
--- a/settings/js/apps.js
+++ b/settings/js/apps.js
@@ -63,7 +63,9 @@ OC.Settings.Apps = OC.Settings.Apps || {
}
$('#apps-list')
.addClass('icon-loading')
+ .removeClass('hidden')
.html('');
+ $('#apps-list-empty').addClass('hidden');
$('#app-category-' + OC.Settings.Apps.State.currentCategory).removeClass('active');
$('#app-category-' + categoryId).addClass('active');
OC.Settings.Apps.State.currentCategory = categoryId;
@@ -73,14 +75,19 @@ OC.Settings.Apps = OC.Settings.Apps || {
}), {
data:{},
type:'GET',
- success:function (apps) {
+ success: function (apps) {
OC.Settings.Apps.State.apps = _.indexBy(apps.apps, 'id');
var source = $("#app-template").html();
var template = Handlebars.compile(source);
- _.each(apps.apps, function(app) {
- OC.Settings.Apps.renderApp(app, template, null);
- });
+ if (apps.apps.length) {
+ _.each(apps.apps, function(app) {
+ OC.Settings.Apps.renderApp(app, template, null);
+ });
+ } else {
+ $('#apps-list').addClass('hidden');
+ $('#apps-list-empty').removeClass('hidden');
+ }
},
complete: function() {
$('#apps-list').removeClass('icon-loading');
diff --git a/settings/templates/apps.php b/settings/templates/apps.php
index 7465992b3b4..1d059d4f77f 100644
--- a/settings/templates/apps.php
+++ b/settings/templates/apps.php
@@ -96,4 +96,8 @@
</div>
<div id="app-content">
<div id="apps-list" class="icon-loading"></div>
+ <div id="apps-list-empty" class="hidden emptycontent">
+ <div class="icon-search"></div>
+ <h2><?php p($l->t('No apps found for your version')) ?></h2>
+ </div>
</div>