(function ($) { var methods = { init: function (options) { var settings = { 'url': '/admin/tests/pathurl/path/' }; return this.each(function () { var $this = $(this), data = $(this).data('path_file_tests'); if (!data) { if (options) { $.extend(settings, options); } $this.data('path_file_tests', {}); $this.after(''); $this.after(''); $this.after(''); $this.bind('keyup blur', function () { var el_loader = $this.nextAll('.loader'); var el_status = $this.nextAll('.status'); if ($this.data('ajax_path_test') && typeof $this.data('ajax_path_test').abort == 'function') $this.data('ajax_path_test').abort(); if (!$this.hasClass('test_executable') && !$this.hasClass('test_writeable') && !$this.hasClass('test_readable')) return; if (!$this.hasClass('required') && $.trim($this.val()) === '') { el_status.css('visibility', 'hidden'); return; } var ajax = $.ajax({ dataType: 'json', type: "GET", url: settings.url, data: { path: $this.val() }, beforeSend: function () { el_loader.css('visibility', 'visible'); }, success: function (data) { el_loader.css('visibility', 'hidden'); if ($this.hasClass('required')) { $this.addClass('field_error'); } if ($this.hasClass('test_executable') && (data.executable === false || data.file !== true)) { el_status.attr('src', '/skins/icons/delete.png').css('visibility', 'visible'); return; } if ($this.hasClass('test_writeable') && data.writeable === false) { el_status.attr('src', '/skins/icons/delete.png').css('visibility', 'visible'); return; } if ($this.hasClass('test_readable') && data.readable === false) { el_status.attr('src', '/skins/icons/delete.png').css('visibility', 'visible'); return; } el_status.attr('src', '/skins/icons/ok.png').css('visibility', 'visible'); $this.removeClass('field_error'); return; }, timeout: function () { el_loader.css('visibility', 'hidden'); el_status.attr('src', '/skins/icons/delete.png').css('visibility', 'visible'); }, error: function () { el_loader.css('visibility', 'hidden'); el_status.attr('src', '/skins/icons/delete.png').css('visibility', 'visible'); } }); $this.data('ajax_path_test', ajax); }); $this.trigger('keyup'); $this.nextAll('.reload').bind('click', function () { $this.trigger('keyup'); }); } }); }, destroy: function () { return this.each(function () { $(this).data('path_file_tests', null); }); } }; $.fn.path_file_test = function (method) { if (methods[method]) { return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); } else if (typeof method === 'object' || !method) { return methods.init.apply(this, arguments); } else { $.error('Method ' + method + ' does not exist on jQuery.path_file_test'); } }; })(jQuery); (function ($) { var methods = { init: function (options) { var settings = { 'url': '/admin/tests/pathurl/url/' }; return this.each(function () { var $this = $(this), data = $(this).data('url_tests'); if (!data) { if (options) { $.extend(settings, options); } $this.data('url_tests', {}); $this.after(''); $this.after(''); $this.after(''); $this.bind('keyup blur', function () { var el_loader = $(this).nextAll('.loader'); var el_status = $(this).nextAll('.status'); var listable = $this.hasClass('listable'); var required = $this.hasClass('required'); var same_domain = $this.hasClass('same_domain'); var value = $.trim($this.val()); if (!required && value === '') { el_status.attr('src', '/skins/icons/ok.png'); return; } if (required && value === '') { el_status.attr('src', '/skins/icons/delete.png'); return; } if (same_domain && value.substring(0, 1) != '/') { value = '/' + value; } if (same_domain) { value = location.protocol + '//' + location.hostname + value; } if ($this.data('ajax_url_test') && typeof $this.data('ajax_url_test').abort == 'function') $this.data('ajax_url_test').abort(); var ajax = $.ajax({ type: "GET", url: settings.url, dataType: 'json', data: { url: value }, beforeSend: function () { el_loader.css('visibility', 'visible'); }, success: function (datas) { el_loader.css('visibility', 'hidden'); if (datas.code === 404) { el_status.attr('src', '/skins/icons/delete.png'); return; } if (!listable && datas.code === 403) { el_status.attr('src', '/skins/icons/ok.png'); } else { el_status.attr('src', '/skins/icons/delete.png'); } return; }, timeout: function () { el_loader.css('visibility', 'hidden'); el_status.attr('src', '/skins/icons/delete.png'); }, error: function (datas) { el_loader.css('visibility', 'hidden'); el_status.attr('src', '/skins/icons/delete.png'); } }); $this.data('ajax_url_test', ajax); }); $this.trigger('keyup'); $this.nextAll('.reload').bind('click', function () { $this.trigger('keyup'); }); } }); }, destroy: function () { return this.each(function () { $(this).data('url_tests', null); }); } }; $.fn.url_test = function (method) { if (methods[method]) { return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); } else if (typeof method === 'object' || !method) { return methods.init.apply(this, arguments); } else { $.error('Method ' + method + ' does not exist on jQuery.url_test'); } }; })(jQuery);