From a0c251fd6ce9b5732c279b476e97626b76e46c16 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Mon, 25 Oct 2010 08:25:44 +0000 Subject: [PATCH] Fix: jeditable 1.7.2-dev is not stable --- .../plugins/jeditable/jquery.jeditable.jgz | Bin 5107 -> 0 bytes .../plugins/jeditable/jquery.jeditable.js | 546 ------------------ .../jeditable/jquery.jeditable.mini.js | 38 ++ 3 files changed, 38 insertions(+), 546 deletions(-) delete mode 100755 htdocs/includes/jquery/plugins/jeditable/jquery.jeditable.jgz delete mode 100644 htdocs/includes/jquery/plugins/jeditable/jquery.jeditable.js create mode 100644 htdocs/includes/jquery/plugins/jeditable/jquery.jeditable.mini.js diff --git a/htdocs/includes/jquery/plugins/jeditable/jquery.jeditable.jgz b/htdocs/includes/jquery/plugins/jeditable/jquery.jeditable.jgz deleted file mode 100755 index 5f908e68bbe19f5bc7c6ba294470cffae88d6b20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5107 zcmVF;d|BJs_{u4JgUi0nm-^ zMx)W)0JwboKs*-zCF7(D*Qpd=i%^8@k{bK6c=^9&(m-rULMmh6aOuXt*lc8`6h{ER?1k^Su6`tZKe3- z^@T{e`W(9mv8}58`Eq$U9D;lg^?6-HGRTXorRrBMcS-fN`XktH_X_*FBL5_#N^J9; z16R1;%d||AED17ME%)5HTz=BLD=dExk-$6?Mkec{&5Zay#y>xX)yMdFEfL)hYP|M< zx^4OC|4^dK=k`F$2M?By;RnD0-ZFs^zX`q#o_-z6YpkV~$B)HMhFOWCDx^qCu@1{5 z0{OwDRI;o}vB^=8(6SGUa3?ES1j4}oX9iWGnP0A~j(e!&iRK!D74NGe$*zQ`!s1F+ zqFv_i-oC#$6TkiXM!YmvmBS@^*0 z#9Tnh6O_MBZx%XOO{)N&24 z0nEEJ^E|DR{iPv1L=;pVhzh`^Z=ngH`bSxeqJ(liNH6*Y8riYyMzV zEk#biuPZ7Z3n?;RRz6+dVfY&@XR6hdx9z4LN zN5LiwjKjWa7-Ls3wuO&t~(rUyUMvYi=VdvNV9O&DBvz0=?d*dAQ(H4_HcUGFrw0=5SyyDcWo zBX_;i&;;5Mxe9t=U^9-X8_^ZmN@Asa2G-Q|VMPa6DWnBFO-a=j*%?^XjT4P~SeIz7 z1K5s?>^1%#oowYP2kpg;R<)TY?l5G@(WRcx$h`*Z-GlPlG1D8PK@I?c5snSfn45NL zd*+5yL8uds+Z+~-jVvXb0vSfzd0WU%ZM49(0K;p^2`kDlq#JNtqL4B;SQ%}@>`JOQ ztOUnZ>MBdxdM*jUia?(U=aT4-|2j*P4Be$P2mMw{v4nt3YSu{tMzHc0{D zE$ViUl7=n0`J4vW0bVmAu_8JmfGG)I=sc=qOfuMDQH}H6(-prPpHg+%Ch`>s5YWj+tfDCKP!|a`_Y5MQ7cKDVFQZ0N%#x# zp$VaoiOV6Oe;Jvp9bJSR*`cjk*XwnP$tf54GT1ZZO9t#37VcA4`Tkvz?_rMEtoJ*) zi29Y>bmyk1%aqMg7j4qm`~R`ERXXUICbplFs~SS%yvF%Hpn;bpvkKfCae&{2T(Dv7 z8Gk1`fbxHgQ7411&V6Ee-3nos73zGoeEQ9IPllxOM67y7e@HU+)=vJ5**p58u^`Nb z(b_&7(gXtpD()WLnnR}GtCdPd`y7A{%*yS!_Ifw&&GW8&gg75`b1Zho`A~8>jS(Zv z>6|E#=e-TP&C1ZUxOthT`f73RJL$Fs7$QF3#S|W%Eov_;--y?*1{blt&B9WClOJU9 zA}r+`S1h5NFXzwxc=*TvF3*-%3o!$kt_DQq+Jq%gGDYVS@Vhgv7N&Lc)Sh`YVx18PmlB7(B{hpToEbRl%IZ<#aM8 z6rBUEsznz_kvvp{ZxLoy17%&kbkiH^*mHxR%b`t!vX*mTJrH*t4O|dTeY}hH&K%X@?+R=#Fh3$4B zzIpP*H3ym{ea;Mo{eJ64qPsL?;JuC&?;c6)2BHl(NXnnO$2NgR=ie4}%3Jqttp{DD zWQ1gpjLcrv^u4^ZeVszU|!lxP&yuE6r#Q0 zh><}E_iWv|95L1z%V>}q3~h`Z(k-AV_Jti7M&->y?JUDS4|4~$@s)Q+rk<5B&_c0tpBXuOD==9o8Rm2Y+q zXk4WI9t{-sAH`o)VYF>sTvO+D?Ubc+Ebe!g9sZ|0s!4d9i@r|E1hb^Xopv1D+|ABu z_RbZ^IUhR5=Y$APkdfhFgZO(%WHtED`l5&JWT;fVpJm(grQ0Rm6|VZYq9wcUAvHy!a#&n=~`mN7~Oi8`zLMKm? zmEI{7Q!_A&FIhkfeQpenV3u>*{g6~!`}~EHwsb?SuF52KJBf%iH%O9F)U-=5hAg~J zFq^2+SK)fl({$`W6bGqmJXRRQ*L?gsggqwAr{Y1UR(UjHWut|32u%Xp8{^!?m&J1D zdB+0&=zowu>TLAyx%y(%pCsEjuTe9URR28r(mumu`Ia9@^66bA>Gm*`D8HC2JBV!; zgt0+1H$R);f(*0sMQDXtzj*ud?Kwoq$F*!7?oqOFV2+(c_03p&I&E484K{8!!|B>d zzO#c6#VDCSrOSi*>(~cuf`+iaz(We_@*o{r4GzRdtkBCk)e<2cd^H#O5#9wpC_+Z_ z6&-&mUcDB}D{h0sp*Pnahxwlv4@CG?B$IAb&`!$k#5oo7v$!%X7V zqoP)llOA#S6&Xu&M{y)2)|96E2P?qD1X)XC?}BDRmaQ)ndMiTI1KY5fA?N2Kt_qjo zmD~_FRZDd8tbuIjvrXlFGI&jys5Pe$HbINW=i{F>c!{Kzae^`TyWcKgp7(pO_!FmN z1|YV-%kK!M%|c73W*-@Fh8i^kt(<)c2Kjy=9=gyQp5~d)1oqs9#9$bmfN|=S@4~N6 zTle}W+JP1X8iEP(=BKKdlbzwJn+@hpTZL9C!L&4TBHRUx2Vz{qa0 zOQ6fWw{TtVzm@AUMU1yoluX@gZY$Z%w$K{3;P&ZUs*BP-7nz<8O%whYm!q!2xXF48 zdtZSUz9|26*oNeYvtyoQty?-LSu?ZgwZIlmWOSN6ijB^(x=_=2^fnI*c;Jl2SvwSG zwlBkbZgyg^?;uRL`aU|ox{f|zIJ&8X?%&oQl%h(mlT==TkIUP7+2w@pz4Hr$)&nz2 zoI6&Jl~GJ7pUAM)A&FFS6q6~%P=HEV3%Y9WzYYrn{k`?_kD}%ULJ!2n)XNtYcVqnt z$w_ah-?53tAN3fB&Rwg~-Qgbg`#u(XcyXP!HZ%)UZ^(9OA6rvhxKnL{tI~5WLw{L= znkI890ft?_+-yDDY}lojOXnT_^*g3+Jr*69o{zklb#mCgfP**Ynom%y9&VF3mf6D} zzF$%;UZWe81u>@I`tXS&0T1XBFVn#;j%{AY=WTB3A$0p7cZ}=iR8XG+GQ}8NGq!2O zu-&o&Y$2jrmMHjzA z=sF+J1zkP-O41<#nWNm*ha1T4(r&8zVTr#4MnwAnevmA>5J%6i`0%T zamy54QbMwIX_Vi|`eHD7092o@;o-M|BVy-y^dlQa#3UC#gF7a8%BQy-xvh^~_7NxXXc z*S~%H-8X|L)9gZjcybv40YB>RO3mpJdX(?>sjMJ^ndO_!pe$S5Oo#e{zWA87;pgH0 zEgEOOJ;zFC{+y_H_*p!kmDKo@Y_WS=PYB$5?R!8GAEF|9y+t#!dJ@;u%{%)hd3p-V z*xh>ZgW%IyHZLMi;F#Ytc9;4I{B{&uBlhdIrRXVk+3JsBz3#fO ze4W(G@?f87v9*1sInI;0n39x@pIFvAsp>wJ`EWJ}wMu=}Y_+08Dg0UupsAyZGWFbT zP`f0=?_xefx#Bo@I4S-jd~Yj!o`@AzSxkgtiy!(5Q&6S&=yl^;v<%RhYa7d%c45Y0e;j?#Hmj*-&3Mt2Z^s!lAg(!4w!Mo`wuug z(ey1F{@enu9Q6mT97^IK0eY37NIpP?&pmsj88E3J1^oZ!YMJz zH}fl@r5EVuhcf1@dq9`fhLTtvnxk!!#)Zu0XD586rv0{=E|=g0lFXVpy~K|LjU;3l z16o){p_0: - * http://www.dyve.net/jquery/?editable - * - */ - -/** - * Version 1.7.2-dev - * - * ** means there is basic unit tests for this parameter. - * - * @name Jeditable - * @type jQuery - * @param String target (POST) URL or function to send edited content to ** - * @param Hash options additional options - * @param String options[method] method to use to send edited content (POST or PUT) ** - * @param Function options[callback] Function to run after submitting edited content ** - * @param String options[name] POST parameter name of edited content - * @param String options[id] POST parameter name of edited div id - * @param Hash options[submitdata] Extra parameters to send when submitting edited content. - * @param String options[type] text, textarea or select (or any 3rd party input type) ** - * @param Integer options[rows] number of rows if using textarea ** - * @param Integer options[cols] number of columns if using textarea ** - * @param Mixed options[height] 'auto', 'none' or height in pixels ** - * @param Mixed options[width] 'auto', 'none' or width in pixels ** - * @param String options[loadurl] URL to fetch input content before editing ** - * @param String options[loadtype] Request type for load url. Should be GET or POST. - * @param String options[loadtext] Text to display while loading external content. - * @param Mixed options[loaddata] Extra parameters to pass when fetching content before editing. - * @param Mixed options[data] Or content given as paramameter. String or function.** - * @param String options[indicator] indicator html to show when saving - * @param String options[tooltip] optional tooltip text via title attribute ** - * @param String options[event] jQuery event such as 'click' of 'dblclick' ** - * @param String options[submit] submit button value, empty means no button ** - * @param String options[cancel] cancel button value, empty means no button ** - * @param String options[cssclass] CSS class to apply to input form. 'inherit' to copy from parent. ** - * @param String options[style] Style to apply to input form 'inherit' to copy from parent. ** - * @param String options[select] true or false, when true text is highlighted ?? - * @param String options[placeholder] Placeholder text or html to insert when element is empty. ** - * @param String options[onblur] 'cancel', 'submit', 'ignore' or function ?? - * - * @param Function options[onsubmit] function(settings, original) { ... } called before submit - * @param Function options[onreset] function(settings, original) { ... } called before reset - * @param Function options[onerror] function(settings, original, xhr) { ... } called on error - * - * @param Hash options[ajaxoptions] jQuery Ajax options. See docs.jquery.com. - * - */ - -(function($) { - - $.fn.editable = function(target, options) { - - if ('disable' == target) { - $(this).data('disabled.editable', true); - return; - } - if ('enable' == target) { - $(this).data('disabled.editable', false); - return; - } - if ('destroy' == target) { - $(this) - .unbind($(this).data('event.editable')) - .removeData('disabled.editable') - .removeData('event.editable'); - return; - } - - var settings = $.extend({}, $.fn.editable.defaults, {target:target}, options); - - /* setup some functions */ - var plugin = $.editable.types[settings.type].plugin || function() { }; - var submit = $.editable.types[settings.type].submit || function() { }; - var buttons = $.editable.types[settings.type].buttons - || $.editable.types['defaults'].buttons; - var content = $.editable.types[settings.type].content - || $.editable.types['defaults'].content; - var element = $.editable.types[settings.type].element - || $.editable.types['defaults'].element; - var reset = $.editable.types[settings.type].reset - || $.editable.types['defaults'].reset; - var callback = settings.callback || function() { }; - var onedit = settings.onedit || function() { }; - var onsubmit = settings.onsubmit || function() { }; - var onreset = settings.onreset || function() { }; - var onerror = settings.onerror || reset; - - /* Show tooltip. */ - if (settings.tooltip) { - $(this).attr('title', settings.tooltip); - } - - settings.autowidth = 'auto' == settings.width; - settings.autoheight = 'auto' == settings.height; - - return this.each(function() { - - /* Save this to self because this changes when scope changes. */ - var self = this; - - /* Inlined block elements lose their width and height after first edit. */ - /* Save them for later use as workaround. */ - var savedwidth = $(self).width(); - var savedheight = $(self).height(); - - /* Save so it can be later used by $.editable('destroy') */ - $(this).data('event.editable', settings.event); - - /* If element is empty add something clickable (if requested) */ - if (!$.trim($(this).html())) { - $(this).html(settings.placeholder); - } - - $(this).bind(settings.event, function(e) { - - /* Abort if element is disabled. */ - if (true === $(this).data('disabled.editable')) { - return; - } - - /* Prevent throwing an exeption if edit field is clicked again. */ - if (self.editing) { - return; - } - - /* Abort if onedit hook returns false. */ - if (false === onedit.apply(this, [settings, self])) { - return; - } - - /* Prevent default action and bubbling. */ - e.preventDefault(); - e.stopPropagation(); - - /* Remove tooltip. */ - if (settings.tooltip) { - $(self).removeAttr('title'); - } - - /* Figure out how wide and tall we are, saved width and height. */ - /* Workaround for http://dev.jquery.com/ticket/2190 */ - if (0 == $(self).width()) { - settings.width = savedwidth; - settings.height = savedheight; - } else { - if (settings.width != 'none') { - settings.width = - settings.autowidth ? $(self).width() : settings.width; - } - if (settings.height != 'none') { - settings.height = - settings.autoheight ? $(self).height() : settings.height; - } - } - - /* Remove placeholder text, replace is here because of IE. */ - if ($(this).html().toLowerCase().replace(/(;|"|\/)/g, '') == - settings.placeholder.toLowerCase().replace(/(;|"|\/)/g, '')) { - $(this).html(''); - } - - self.editing = true; - self.revert = $(self).html(); - $(self).html(''); - - /* Create the form object. */ - var form = $('
'); - - /* Apply css or style or both. */ - if (settings.cssclass) { - if ('inherit' == settings.cssclass) { - form.attr('class', $(self).attr('class')); - } else { - form.attr('class', settings.cssclass); - } - } - - if (settings.style) { - if ('inherit' == settings.style) { - form.attr('style', $(self).attr('style')); - /* IE needs the second line or display wont be inherited. */ - form.css('display', $(self).css('display')); - } else { - form.attr('style', settings.style); - } - } - - /* Add main input element to form and store it in input. */ - var input = element.apply(form, [settings, self]); - - /* Set input content via POST, GET, given data or existing value. */ - var input_content; - - if (settings.loadurl) { - var t = setTimeout(function() { - input.disabled = true; - content.apply(form, [settings.loadtext, settings, self]); - }, 100); - - var loaddata = {}; - loaddata[settings.id] = self.id; - if ($.isFunction(settings.loaddata)) { - $.extend(loaddata, settings.loaddata.apply(self, [self.revert, settings])); - } else { - $.extend(loaddata, settings.loaddata); - } - $.ajax({ - type : settings.loadtype, - url : settings.loadurl, - data : loaddata, - async : false, - success: function(result) { - window.clearTimeout(t); - input_content = result; - input.disabled = false; - } - }); - } else if (settings.data) { - input_content = settings.data; - if ($.isFunction(settings.data)) { - input_content = settings.data.apply(self, [self.revert, settings]); - } - } else { - input_content = self.revert; - } - content.apply(form, [input_content, settings, self]); - - input.attr('name', settings.name); - - /* Add buttons to the form. */ - buttons.apply(form, [settings, self]); - - /* Add created form to self. */ - $(self).append(form); - - /* Attach 3rd party plugin if requested. */ - plugin.apply(form, [settings, self]); - - /* Focus to first visible form element. */ - $(':input:visible:enabled:first', form).focus(); - - /* Highlight input contents when requested. */ - if (settings.select) { - input.select(); - } - - /* discard changes if pressing esc */ - input.keydown(function(e) { - if (e.keyCode == 27) { - e.preventDefault(); - reset.apply(form, [settings, self]); - } - }); - - /* Discard, submit or nothing with changes when clicking outside. */ - /* Do nothing is usable when navigating with tab. */ - var t; - if ('cancel' == settings.onblur) { - input.blur(function(e) { - /* Prevent canceling if submit was clicked. */ - t = setTimeout(function() { - reset.apply(form, [settings, self]); - }, 500); - }); - } else if ('submit' == settings.onblur) { - input.blur(function(e) { - /* Prevent double submit if submit was clicked. */ - t = setTimeout(function() { - form.submit(); - }, 200); - }); - } else if ($.isFunction(settings.onblur)) { - input.blur(function(e) { - settings.onblur.apply(self, [input.val(), settings]); - }); - } else { - input.blur(function(e) { - /* TODO: maybe something here */ - }); - } - - form.submit(function(e) { - - if (t) { - clearTimeout(t); - } - - /* Do no submit. */ - e.preventDefault(); - - /* Call before submit hook. */ - /* If it returns false abort submitting. */ - if (false !== onsubmit.apply(form, [settings, self])) { - /* Custom inputs call before submit hook. */ - /* If it returns false abort submitting. */ - if (false !== submit.apply(form, [settings, self])) { - - /* Check if given target is function */ - if ($.isFunction(settings.target)) { - var str = settings.target.apply(self, [input.val(), settings]); - $(self).html(str); - self.editing = false; - callback.apply(self, [self.innerHTML, settings]); - /* TODO: this is not dry */ - if (!$.trim($(self).html())) { - $(self).html(settings.placeholder); - } - } else { - /* Add edited content and id of edited element to POST. */ - var submitdata = {}; - submitdata[settings.name] = input.val(); - submitdata[settings.id] = self.id; - /* Add extra data to be POST:ed. */ - if ($.isFunction(settings.submitdata)) { - $.extend(submitdata, settings.submitdata.apply(self, [self.revert, settings])); - } else { - $.extend(submitdata, settings.submitdata); - } - - /* Quick and dirty PUT support. */ - if ('PUT' == settings.method) { - submitdata['_method'] = 'put'; - } - - /* Show the saving indicator. */ - $(self).html(settings.indicator); - - /* Defaults for ajaxoptions. */ - var ajaxoptions = { - type : 'POST', - data : submitdata, - dataType: 'html', - url : settings.target, - success : function(result, status) { - if (ajaxoptions.dataType == 'html') { - $(self).html(result); - } - self.editing = false; - callback.apply(self, [result, settings]); - if (!$.trim($(self).html())) { - $(self).html(settings.placeholder); - } - }, - error : function(xhr, status, error) { - onerror.apply(form, [settings, self, xhr]); - } - }; - - /* Override with what is given in settings.ajaxoptions. */ - $.extend(ajaxoptions, settings.ajaxoptions); - $.ajax(ajaxoptions); - - } - } - } - - /* Show tooltip again. */ - $(self).attr('title', settings.tooltip); - - return false; - }); - }); - - /* Privileged methods */ - this.reset = function(form) { - /* Prevent calling reset twice when blurring. */ - if (this.editing) { - /* Before reset hook, if it returns false abort reseting. */ - if (false !== onreset.apply(form, [settings, self])) { - $(self).html(self.revert); - self.editing = false; - if (!$.trim($(self).html())) { - $(self).html(settings.placeholder); - } - /* Show tooltip again. */ - if (settings.tooltip) { - $(self).attr('title', settings.tooltip); - } - } - } - }; - }); - - }; - - - $.editable = { - types: { - defaults: { - element : function(settings, original) { - var input = $(''); - $(this).append(input); - return(input); - }, - content : function(string, settings, original) { - $(':input:first', this).val(string); - }, - reset : function(settings, original) { - original.reset(this); - }, - buttons : function(settings, original) { - var form = this; - if (settings.submit) { - /* If given html string use that. */ - if (settings.submit.match(/>$/)) { - var submit = $(settings.submit).click(function() { - if (submit.attr("type") != "submit") { - form.submit(); - } - }); - /* Otherwise use button with given string as text. */ - } else { - var submit = $('