From ea8f358a9a6fa5ce7d515c74797be92c0ae62208 Mon Sep 17 00:00:00 2001 From: Florian Staudacher Date: Tue, 10 Jul 2012 17:56:36 +0200 Subject: [PATCH] use unminified jQuery textchange plugin --- app/assets/javascripts/home.js | 2 +- app/views/status_messages/new.html.haml | 2 +- config/application.rb | 2 +- .../assets/javascripts/jquery.textchange.js | 76 +++++++++++++++++++ .../javascripts/jquery.textchange.min.js | 10 --- 5 files changed, 79 insertions(+), 13 deletions(-) create mode 100644 vendor/assets/javascripts/jquery.textchange.js delete mode 100644 vendor/assets/javascripts/jquery.textchange.min.js diff --git a/app/assets/javascripts/home.js b/app/assets/javascripts/home.js index b8335550b..7eb2db874 100644 --- a/app/assets/javascripts/home.js +++ b/app/assets/javascripts/home.js @@ -3,6 +3,6 @@ * the COPYRIGHT file. */ //= require publisher -//= require jquery.textchange.min +//= require jquery.textchange //= require aspect-edit-pane //= require fileuploader-custom \ No newline at end of file diff --git a/app/views/status_messages/new.html.haml b/app/views/status_messages/new.html.haml index 1ddeb6089..53185ce11 100644 --- a/app/views/status_messages/new.html.haml +++ b/app/views/status_messages/new.html.haml @@ -1,7 +1,7 @@ -# Copyright (c) 2010-2011, Diaspora Inc. This file is -# licensed under the Affero General Public License version 3 or later. See -# the COPYRIGHT file. -= javascript_include_tag 'jquery.textchange.min.js', "publisher.js" += javascript_include_tag 'jquery.textchange.js', "publisher.js" :javascript $(function() { diff --git a/config/application.rb b/config/application.rb index cf703cbf0..0101be8b4 100644 --- a/config/application.rb +++ b/config/application.rb @@ -79,7 +79,7 @@ module Diaspora # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added) # Javascripts config.assets.precompile += [ "aspect-contacts.js", "contact-list.js", "finder.js", - "home.js", "ie.js", "inbox.js", "jquery.js", "jquery_ujs.js", "jquery.textchange.min.js", + "home.js", "ie.js", "inbox.js", "jquery.js", "jquery_ujs.js", "jquery.textchange.js", "login.js", "mailchimp.js", "main.js", "mobile.js", "profile.js", "people.js", "photos.js", "profile.js", "publisher.js", "templates.js", "validation.js" ] diff --git a/vendor/assets/javascripts/jquery.textchange.js b/vendor/assets/javascripts/jquery.textchange.js new file mode 100644 index 000000000..3affea18e --- /dev/null +++ b/vendor/assets/javascripts/jquery.textchange.js @@ -0,0 +1,76 @@ +/*! + * jQuery TextChange Plugin + * http://www.zurb.com/playground/jquery-text-change-custom-event + * + * Copyright 2010, ZURB + * Released under the MIT License + */ +(function ($) { + + $.event.special.textchange = { + + setup: function (data, namespaces) { + $(this).data('lastValue', this.contentEditable === 'true' ? $(this).html() : $(this).val()); + $(this).bind('keyup.textchange', $.event.special.textchange.handler); + $(this).bind('cut.textchange paste.textchange input.textchange', $.event.special.textchange.delayedHandler); + }, + + teardown: function (namespaces) { + $(this).unbind('.textchange'); + }, + + handler: function (event) { + $.event.special.textchange.triggerIfChanged($(this)); + }, + + delayedHandler: function (event) { + var element = $(this); + setTimeout(function () { + $.event.special.textchange.triggerIfChanged(element); + }, 25); + }, + + triggerIfChanged: function (element) { + var current = element[0].contentEditable === 'true' ? element.html() : element.val(); + if (current !== element.data('lastValue')) { + element.trigger('textchange', [element.data('lastValue')]); + element.data('lastValue', current); + } + } + }; + + $.event.special.hastext = { + + setup: function (data, namespaces) { + $(this).bind('textchange', $.event.special.hastext.handler); + }, + + teardown: function (namespaces) { + $(this).unbind('textchange', $.event.special.hastext.handler); + }, + + handler: function (event, lastValue) { + if ((lastValue === '') && lastValue !== $(this).val()) { + $(this).trigger('hastext'); + } + } + }; + + $.event.special.notext = { + + setup: function (data, namespaces) { + $(this).bind('textchange', $.event.special.notext.handler); + }, + + teardown: function (namespaces) { + $(this).unbind('textchange', $.event.special.notext.handler); + }, + + handler: function (event, lastValue) { + if ($(this).val() === '' && $(this).val() !== lastValue) { + $(this).trigger('notext'); + } + } + }; + +})(jQuery); \ No newline at end of file diff --git a/vendor/assets/javascripts/jquery.textchange.min.js b/vendor/assets/javascripts/jquery.textchange.min.js deleted file mode 100644 index 93f179a23..000000000 --- a/vendor/assets/javascripts/jquery.textchange.min.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * jQuery TextChange Plugin - * http://www.zurb.com/playground/jquery-text-change-custom-event - * - * Copyright 2010, ZURB - * Released under the MIT License - */ - (function(a){a.event.special.textchange={setup:function(){a(this).data("lastValue",this.contentEditable==="true"?a(this).html():a(this).val());a(this).bind("keyup.textchange",a.event.special.textchange.handler);a(this).bind("cut.textchange paste.textchange input.textchange",a.event.special.textchange.delayedHandler)},teardown:function(){a(this).unbind(".textchange")},handler:function(){a.event.special.textchange.triggerIfChanged(a(this))},delayedHandler:function(){var c=a(this);setTimeout(function(){a.event.special.textchange.triggerIfChanged(c)}, - 25)},triggerIfChanged:function(a){var b=a[0].contentEditable==="true"?a.html():a.val();b!==a.data("lastValue")&&(a.trigger("textchange",[a.data("lastValue")]),a.data("lastValue",b))}};a.event.special.hastext={setup:function(){a(this).bind("textchange",a.event.special.hastext.handler)},teardown:function(){a(this).unbind("textchange",a.event.special.hastext.handler)},handler:function(c,b){b===""&&b!==a(this).val()&&a(this).trigger("hastext")}};a.event.special.notext={setup:function(){a(this).bind("textchange", - a.event.special.notext.handler)},teardown:function(){a(this).unbind("textchange",a.event.special.notext.handler)},handler:function(c,b){a(this).val()===""&&a(this).val()!==b&&a(this).trigger("notext")}}})(jQuery); \ No newline at end of file