summaryrefslogtreecommitdiffstats
path: root/core/src/jquery/showpassword.js
diff options
context:
space:
mode:
authorChristoph Wurst <christoph@winzerhof-wurst.at>2019-01-29 10:15:46 +0100
committerChristoph Wurst <christoph@winzerhof-wurst.at>2019-01-29 11:07:48 +0100
commit3ced9cd83db38731a1e82dafc0dcbdfe7db6cc2b (patch)
tree3da933724684a709f6afa2a8cbaa1fae10baa575 /core/src/jquery/showpassword.js
parent2682d672d8076302da61fef3cc15e4d647d50be5 (diff)
downloadnextcloud-server-3ced9cd83db38731a1e82dafc0dcbdfe7db6cc2b.tar.gz
nextcloud-server-3ced9cd83db38731a1e82dafc0dcbdfe7db6cc2b.zip
Move jQuery plugins into modules and add them to the bundle
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
Diffstat (limited to 'core/src/jquery/showpassword.js')
-rw-r--r--core/src/jquery/showpassword.js149
1 files changed, 149 insertions, 0 deletions
diff --git a/core/src/jquery/showpassword.js b/core/src/jquery/showpassword.js
new file mode 100644
index 00000000000..4dc39340e76
--- /dev/null
+++ b/core/src/jquery/showpassword.js
@@ -0,0 +1,149 @@
+/*
+ * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @author 2018 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import $ from 'jquery'
+
+/*
+* @name Show Password
+* @description
+* @version 1.3
+* @requires Jquery 1.5
+*
+* @author Jan Jarfalk
+* @author-email jan.jarfalk@unwrongest.com
+* @author-website http://www.unwrongest.com
+*
+* @special-thanks Michel Gratton
+*
+* @licens MIT License - http://www.opensource.org/licenses/mit-license.php
+*/
+$.fn.extend({
+ showPassword: function (c) {
+
+ // Setup callback object
+ var callback = {'fn': null, 'args': {}};
+ callback.fn = c;
+
+ // Clones passwords and turn the clones into text inputs
+ var cloneElement = function (element) {
+
+ var $element = $(element);
+
+ var $clone = $("<input />");
+
+ // Name added for JQuery Validation compatibility
+ // Element name is required to avoid script warning.
+ $clone.attr({
+ 'type': 'text',
+ 'class': $element.attr('class'),
+ 'style': $element.attr('style'),
+ 'size': $element.attr('size'),
+ 'name': $element.attr('name') + '-clone',
+ 'tabindex': $element.attr('tabindex'),
+ 'autocomplete': 'off'
+ });
+
+ if ($element.attr('placeholder') !== undefined) {
+ $clone.attr('placeholder', $element.attr('placeholder'));
+ }
+
+ return $clone;
+
+ };
+
+ // Transfers values between two elements
+ var update = function (a, b) {
+ b.val(a.val());
+ };
+
+ // Shows a or b depending on checkbox
+ var setState = function (checkbox, a, b) {
+
+ if (checkbox.is(':checked')) {
+ update(a, b);
+ b.show();
+ a.hide();
+ } else {
+ update(b, a);
+ b.hide();
+ a.show();
+ }
+
+ };
+
+ return this.each(function () {
+
+ var $input = $(this),
+ $checkbox = $($input.data('typetoggle'));
+
+ // Create clone
+ var $clone = cloneElement($input);
+ $clone.insertAfter($input);
+
+ // Set callback arguments
+ if (callback.fn) {
+ callback.args.input = $input;
+ callback.args.checkbox = $checkbox;
+ callback.args.clone = $clone;
+ }
+
+
+ $checkbox.bind('click', function () {
+ setState($checkbox, $input, $clone);
+ });
+
+ $input.bind('keyup', function () {
+ update($input, $clone);
+ });
+
+ $clone.bind('keyup', function () {
+ update($clone, $input);
+
+ // Added for JQuery Validation compatibility
+ // This will trigger validation if it's ON for keyup event
+ $input.trigger('keyup');
+
+ });
+
+ // Added for JQuery Validation compatibility
+ // This will trigger validation if it's ON for blur event
+ $clone.bind('blur', function () {
+ $input.trigger('focusout');
+ });
+
+ setState($checkbox, $input, $clone);
+
+ // set type of password field clone (type=text) to password right on submit
+ // to prevent browser save the value of this field
+ $clone.closest('form').submit(function (e) {
+ // .prop has to be used, because .attr throws
+ // an error while changing a type of an input
+ // element
+ $clone.prop('type', 'password');
+ });
+
+ if (callback.fn) {
+ callback.fn(callback.args);
+ }
+
+ });
+ }
+});