wp/wp-admin/js/inline-edit-tax.js
author ymh <ymh.work@gmail.com>
Wed, 06 Nov 2013 03:21:17 +0000
changeset 0 d970ebf37754
child 5 5e2f62d02dcd
permissions -rw-r--r--
first import
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
(function($) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
inlineEditTax = {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
	init : function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
		var t = this, row = $('#inline-edit');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
		t.type = $('#the-list').attr('data-wp-lists').substr(5);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
		t.what = '#'+t.type+'-';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
		$('#the-list').on('click', 'a.editinline', function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
			inlineEditTax.edit(this);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
			return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
		});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
		// prepare the edit row
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
		row.keyup(function(e) { if(e.which == 27) return inlineEditTax.revert(); });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
		$('a.cancel', row).click(function() { return inlineEditTax.revert(); });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
		$('a.save', row).click(function() { return inlineEditTax.save(this); });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
		$('input, select', row).keydown(function(e) { if(e.which == 13) return inlineEditTax.save(this); });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
		$('#posts-filter input[type="submit"]').mousedown(function(e){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
			t.revert();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
		});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
	},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
	toggle : function(el) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
		var t = this;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
		$(t.what+t.getId(el)).css('display') == 'none' ? t.revert() : t.edit(el);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
	},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
	edit : function(id) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
		var t = this, editRow;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
		t.revert();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
		if ( typeof(id) == 'object' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
			id = t.getId(id);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
		editRow = $('#inline-edit').clone(true), rowData = $('#inline_'+id);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
		$('td', editRow).attr('colspan', $('.widefat:first thead th:visible').length);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
		if ( $(t.what+id).hasClass('alternate') )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
			$(editRow).addClass('alternate');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
		$(t.what+id).hide().after(editRow);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
		$(':input[name="name"]', editRow).val( $('.name', rowData).text() );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
		$(':input[name="slug"]', editRow).val( $('.slug', rowData).text() );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
		$(editRow).attr('id', 'edit-'+id).addClass('inline-editor').show();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
		$('.ptitle', editRow).eq(0).focus();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
		return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
	},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
	save : function(id) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
		var params, fields, tax = $('input[name="taxonomy"]').val() || '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
		if( typeof(id) == 'object' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
			id = this.getId(id);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
		$('table.widefat .spinner').show();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
		params = {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
			action: 'inline-save-tax',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
			tax_type: this.type,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
			tax_ID: id,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
			taxonomy: tax
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
		};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
		fields = $('#edit-'+id+' :input').serialize();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
		params = fields + '&' + $.param(params);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
		// make ajax request
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
		$.post( ajaxurl, params,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
			function(r) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
				var row, new_id;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
				$('table.widefat .spinner').hide();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
				if (r) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
					if ( -1 != r.indexOf('<tr') ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
						$(inlineEditTax.what+id).remove();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
						new_id = $(r).attr('id');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
						$('#edit-'+id).before(r).remove();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
						row = new_id ? $('#'+new_id) : $(inlineEditTax.what+id);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
						row.hide().fadeIn();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
					} else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
						$('#edit-'+id+' .inline-edit-save .error').html(r).show();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
				} else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
					$('#edit-'+id+' .inline-edit-save .error').html(inlineEditL10n.error).show();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
				if ($(row).prev('tr').hasClass('alternate'))
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
					$(row).removeClass('alternate');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
		);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
		return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
	},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
	revert : function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
		var id = $('table.widefat tr.inline-editor').attr('id');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
		if ( id ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
			$('table.widefat .spinner').hide();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
			$('#'+id).remove();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
			id = id.substr( id.lastIndexOf('-') + 1 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
			$(this.what+id).show();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
		return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
	},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
	getId : function(o) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
		var id = o.tagName == 'TR' ? o.id : $(o).parents('tr').attr('id'), parts = id.split('-');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
		return parts[parts.length - 1];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
$(document).ready(function(){inlineEditTax.init();});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
})(jQuery);