From 0d98e5e456ed9f5ea05a6e8213b0a71da7b84075 Mon Sep 17 00:00:00 2001
From: Vincent Petry <pvince81@owncloud.com>
Date: Fri, 16 Oct 2015 11:55:23 +0200
Subject: [PATCH] [IE9] Don't send link share password placeholder

When exiting the password field in the share dialog, IE9 would
mistakenly think that the password has changed and would send the
placeholder.

This fix prevents changing the password whenever the placeholder is set
as value.
---
 core/js/sharedialoglinkshareview.js | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/core/js/sharedialoglinkshareview.js b/core/js/sharedialoglinkshareview.js
index 74afbc9fe0..29dce21486 100644
--- a/core/js/sharedialoglinkshareview.js
+++ b/core/js/sharedialoglinkshareview.js
@@ -13,6 +13,9 @@
 		OC.Share = {};
 	}
 
+	var PASSWORD_PLACEHOLDER = '**********';
+	var PASSWORD_PLACEHOLDER_MESSAGE = t('core', 'Choose a password for the public link');
+
 	var TEMPLATE =
 			'{{#if shareAllowed}}' +
 			'<span class="icon-loading-small hidden"></span>' +
@@ -133,11 +136,6 @@
 					this.model.saveLinkShare();
 				} else {
 					this.$el.find('.linkPass').slideToggle(OC.menuSpeed);
-					// TODO drop with IE8 drop
-					if($('html').hasClass('ie8')) {
-						this.$el.find('.linkPassText').attr('placeholder', null);
-						this.$el.find('.linkPassText').val('');
-					}
 					this.$el.find('.linkPassText').focus();
 				}
 			} else {
@@ -182,7 +180,8 @@
 			var $input = this.$el.find('.linkPassText');
 			$input.removeClass('error');
 			var password = $input.val();
-			if(password === '') {
+			// in IE9 the password might be the placeholder due to bugs in the placeholders polyfill
+			if(password === '' || password === PASSWORD_PLACEHOLDER || password === PASSWORD_PLACEHOLDER_MESSAGE) {
 				return;
 			}
 
@@ -276,7 +275,7 @@
 				urlLabel: t('core', 'Link'),
 				enablePasswordLabel: t('core', 'Password protect'),
 				passwordLabel: t('core', 'Password'),
-				passwordPlaceholder: isPasswordSet ? '**********' : t('core', 'Choose a password for the public link'),
+				passwordPlaceholder: isPasswordSet ? PASSWORD_PLACEHOLDER : PASSWORD_PLACEHOLDER_MESSAGE,
 				isPasswordSet: isPasswordSet,
 				showPasswordCheckBox: showPasswordCheckBox,
 				publicUpload: publicUpload && isLinkShare,
@@ -314,6 +313,12 @@
 				};
 			}
 
+			// TODO drop with IE8 drop
+			if($('html').hasClass('ie8')) {
+				this.$el.find('#linkPassText').removeAttr('placeholder');
+				this.$el.find('#linkPassText').val('');
+			}
+
 			this.delegateEvents();
 
 			return this;
-- 
GitLab