diff --git a/core/js/share.js b/core/js/share.js
index c0bc2c8ab807b6a16afef67cecda3a7b29246775..d730d3bbf6e59ac91255c8cbc4a410ef2f8ed3a3 100644
--- a/core/js/share.js
+++ b/core/js/share.js
@@ -308,7 +308,7 @@ OC.Share={
 
 		return data;
 	},
-	share:function(itemType, itemSource, shareType, shareWith, permissions, itemSourceName, expirationDate, callback) {
+	share:function(itemType, itemSource, shareType, shareWith, permissions, itemSourceName, expirationDate, callback, errorCallback) {
 		// Add a fallback for old share() calls without expirationDate.
 		// We should remove this in a later version,
 		// after the Apps have been updated.
@@ -339,12 +339,15 @@ OC.Share={
 						callback(result.data);
 					}
 				} else {
-					if (result.data && result.data.message) {
-						var msg = result.data.message;
-					} else {
+					if (_.isUndefined(errorCallback)) {
 						var msg = t('core', 'Error');
+						if (result.data && result.data.message) {
+							msg = result.data.message;
+						}
+						OC.dialogs.alert(msg, t('core', 'Error while sharing'));
+					} else {
+						errorCallback(result);
 					}
-					OC.dialogs.alert(msg, t('core', 'Error while sharing'));
 				}
 			}
 		);
@@ -1178,6 +1181,10 @@ $(document).ready(function() {
 					OC.Share.updateIcon(itemType, itemSource);
 				}
 				$('#dropdown').trigger(new $.Event('sharesChanged', {shares: OC.Share.currentShares}));
+			}, function(result) {
+				$loading.addClass('hidden');
+				linkPassText.val('');
+				linkPassText.attr('placeholder', result.data.message);
 			});
 
 			if (expireDateString !== '') {