diff --git a/src/jquery.jeditable.ajaxupload.js b/src/jquery.jeditable.ajaxupload.js
new file mode 100644
index 0000000..ff502d2
--- /dev/null
+++ b/src/jquery.jeditable.ajaxupload.js
@@ -0,0 +1,27 @@
+/*
+ * Ajaxupload for Jeditable
+ *
+ * Copyright (c) 2008-2009 Mika Tuupola
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * Depends on Ajax fileupload jQuery plugin by PHPLetter guys:
+ * http://www.phpletter.com/Our-Projects/AjaxFileUpload/
+ *
+ * Project home:
+ * http://www.appelsiini.net/projects/jeditable
+ *
+ * Revision: $Id$
+ *
+ */
+
+$.editable.addInputType('file', {
+ /* create input element */
+ element : function(settings) {
+ settings.onblur = 'ignore';
+ var input = $('');
+ $(this).append(input);
+ return(input);
+ }
+});
diff --git a/src/jquery.jeditable.js b/src/jquery.jeditable.js
index f5e157c..ce14076 100644
--- a/src/jquery.jeditable.js
+++ b/src/jquery.jeditable.js
@@ -1,3 +1,8 @@
+/**
+ * @author Adam Świątkowski
+ * @name Customization for Laravel. DO NOT COPY!
+
+*/
/**
* @file Jeditable - jQuery in place edit plugin
* @home https://github.com/NicolasCARPi/jquery_jeditable
@@ -155,7 +160,7 @@
/* Abort if onedit hook returns false. */
if (false === onedit.apply(this, [settings, self, e])) {
- return;
+ return;
}
/* execute the before function if any was specified */
@@ -177,7 +182,7 @@
/* Remove placeholder text, replace is here because of IE. */
if ($(this).html().toLowerCase().replace(/(;|"|\/)/g, '') ===
settings.placeholder.toLowerCase().replace(/(;|"|\/)/g, '')) {
- $(this).html('');
+ $(this).html('');
}
self.editing = true;
@@ -248,16 +253,16 @@
$.extend(loaddata, settings.loaddata);
}
$.ajax({
- type : settings.loadtype,
- url : settings.loadurl,
- data : loaddata,
- async: false,
- cache : false,
- success: function(result) {
- self.clearTimeout(t);
- input_content = result;
- input.disabled = false;
- }
+ type : settings.loadtype,
+ url : settings.loadurl,
+ data : loaddata,
+ async: false,
+ cache : false,
+ success: function(result) {
+ self.clearTimeout(t);
+ input_content = result;
+ input.disabled = false;
+ }
});
} else if (settings.data) {
input_content = settings.data;
@@ -365,78 +370,78 @@
isSubmitting = false !== submit.apply(form, [settings, self]);
if (isSubmitting) {
- /* Check if given target is function */
- if ($.isFunction(settings.target)) {
- /* Callback function to handle the target reponse */
- var responseHandler = function(value, complete) {
- isSubmitting = false;
- if (false !== complete) {
- $(self).html(value);
- self.editing = false;
- callback.apply(self, [self.innerHTML, settings]);
- if (!$.trim($(self).html())) {
- $(self).html(settings.placeholder);
- }
- }
- };
- /* Call the user target function */
- var userTarget = settings.target.apply(self, [input.val(), settings, responseHandler]);
- /* Handle the target function return for compatibility */
- if (false !== userTarget && undefined !== userTarget) {
- responseHandler(userTarget, userTarget);
- }
-
- } 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, submitdata]));
- } else {
- $.extend(submitdata, settings.submitdata);
- }
-
- /* Quick and dirty PUT support. */
- if ('PUT' === settings.method) {
- submitdata._method = 'put';
- }
-
- // SHOW INDICATOR
- $(self).html(settings.indicator);
-
- /* Defaults for ajaxoptions. */
- var ajaxoptions = {
- type : 'POST',
- complete: function (xhr, status) {
- isSubmitting = false;
- },
- data : submitdata,
- dataType: 'html',
- url : settings.target,
- success : function(result, status) {
-
- // INTERCEPT
- result = intercept.apply(self, [result, status]);
-
- if (ajaxoptions.dataType === 'html') {
- $(self).html(result);
- }
- self.editing = false;
- callback.apply(self, [result, settings, submitdata]);
- 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);
+ /* Check if given target is function */
+ if ($.isFunction(settings.target)) {
+ /* Callback function to handle the target reponse */
+ var responseHandler = function(value, complete) {
+ isSubmitting = false;
+ if (false !== complete) {
+ $(self).html(value);
+ self.editing = false;
+ callback.apply(self, [self.innerHTML, settings]);
+ if (!$.trim($(self).html())) {
+ $(self).html(settings.placeholder);
+ }
+ }
+ };
+ /* Call the user target function */
+ var userTarget = settings.target.apply(self, [input.val(), settings, responseHandler]);
+ /* Handle the target function return for compatibility */
+ if (false !== userTarget && undefined !== userTarget) {
+ responseHandler(userTarget, userTarget);
+ }
+
+ } else {
+ let formData = new FormData();
+ formData.append('token', settings.token);
+ formData.append('modelName', settings.modelName);
+ formData.append('modelId', settings.modelId);
+ formData.append('fieldType', settings.type);
+ formData.append('fieldName', settings.fieldName);
+ formData.append('value', input.val());
+ $.each($('#file'), function(i, value)
+ {
+ formData.append('files['+i+']', value.files[0]);
+ });
+
+ // SHOW INDICATOR
+ $(self).html(settings.indicator);
+
+ /* Defaults for ajaxoptions. */
+ var ajaxoptions = {
+ type : 'POST',
+ complete: function (xhr, status) {
+ isSubmitting = false;
+ },
+ data : formData,
+ dataType: 'JSON',
+ url : settings.target,
+ success: function (result, status) {
+
+ // INTERCEPT
+ result = intercept.apply(self, [result, status]);
+
+ if (ajaxoptions.dataType === 'JSON') {
+ $(self).html(input.val());
+ if(settings.type !== 'select' && settings.type !== 'file' && settings.type !== 'password')
+ {
+ settings.data = input.val();
+ }
+ }
+ self.editing = false;
+ callback.apply(self, [result, settings, formData]);
+ 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);
}
}
}
@@ -471,14 +476,14 @@
// DESTROY
self.destroy = function(form) {
$(self)
- .unbind($(self).data('event.editable'))
- .removeData('disabled.editable')
- .removeData('event.editable');
+ .unbind($(self).data('event.editable'))
+ .removeData('disabled.editable')
+ .removeData('event.editable');
self.clearTimeouts();
if (self.editing) {
- reset.apply(form, [settings, self]);
+ reset.apply(form, [settings, self]);
}
};
@@ -513,26 +518,26 @@
// SETTIMEOUT
self.setTimeout = function(callback, time) {
- var timeouts = $(self).data('timeouts');
- var t = setTimeout(function() {
- callback();
- self.clearTimeout(t);
- }, time);
- if(!timeouts) {
- timeouts = [];
- $(self).data('timeouts', timeouts);
- }
- timeouts.push(t);
- return t;
+ var timeouts = $(self).data('timeouts');
+ var t = setTimeout(function() {
+ callback();
+ self.clearTimeout(t);
+ }, time);
+ if(!timeouts) {
+ timeouts = [];
+ $(self).data('timeouts', timeouts);
+ }
+ timeouts.push(t);
+ return t;
};
});
};
-var _supportInType = function (type) {
- var i = document.createElement('input');
- i.setAttribute('type', type);
- return i.type !== 'text' ? type : 'text';
-};
+ var _supportInType = function (type) {
+ var i = document.createElement('input');
+ i.setAttribute('type', type);
+ return i.type !== 'text' ? type : 'text';
+ };
$.editable = {
@@ -563,7 +568,7 @@ var _supportInType = function (type) {
form.submit();
}
});
- /* Otherwise use button with given string as text. */
+ /* Otherwise use button with given string as text. */
} else {
submit = $('');
submit.html(settings.submit);
@@ -578,7 +583,7 @@ var _supportInType = function (type) {
/* If given html string use that. */
if (settings.cancel.match(/>$/)) {
cancel = $(settings.cancel);
- /* otherwise use button with given string as text */
+ /* otherwise use button with given string as text */
} else {
cancel = $('');
cancel.html(settings.cancel);
@@ -633,7 +638,39 @@ var _supportInType = function (type) {
return(input);
}
},
+ //PASSWORD
+ password: {
+ element : function(settings, original) {
+ var input = $('').attr({
+ autocomplete: 'off',
+ list: settings.list,
+ maxlength: settings.maxlength,
+ pattern: settings.pattern,
+ placeholder: '********',
+ tooltip: settings.tooltip,
+ type: 'password'
+ });
+
+ if (settings.width !== 'none') {
+ input.css('width', settings.width);
+ }
+
+ if (settings.height !== 'none') {
+ input.css('height', settings.height);
+ }
+
+ if (settings.size) {
+ input.attr('size', settings.size);
+ }
+ if (settings.maxlength) {
+ input.attr('maxlength', settings.maxlength);
+ }
+
+ $(this).append(input);
+ return(input);
+ }
+ },
// TEXTAREA
textarea: {
element : function(settings, original) {
@@ -661,14 +698,14 @@ var _supportInType = function (type) {
// SELECT
select: {
element : function(settings, original) {
- var select = $('');
+ var select = $('');
- if (settings.multiple) {
- select.attr('multiple', 'multiple');
- }
+ if (settings.multiple) {
+ select.attr('multiple', 'multiple');
+ }
- $(this).append(select);
- return(select);
+ $(this).append(select);
+ return(select);
},
content : function(data, settings, original) {
var json;
@@ -676,7 +713,7 @@ var _supportInType = function (type) {
if (String === data.constructor) {
json = JSON.parse(data);
} else {
- // Otherwise assume it is a hash already
+ // Otherwise assume it is a hash already
json = data;
}
@@ -810,10 +847,10 @@ var _supportInType = function (type) {
// Keyboard accessibility - use mouse click OR press any key to enable editing
event : 'click.editable keydown.editable',
onblur : 'cancel',
- tooltip : 'Click to edit',
+ tooltip : '',
loadtype : 'GET',
loadtext : 'Loading...',
- placeholder: 'Click to edit',
+ placeholder: '',
sortselectoptions: false,
loaddata : {},
submitdata : {},