admin-column.js
192 lines
| 1 | /** |
| 2 | * fires when the dom is ready |
| 3 | * |
| 4 | */ |
| 5 | jQuery(document).ready(function(){ |
| 6 | cpac_sortable(); |
| 7 | cpac_checked(); |
| 8 | cpac_box_events(); |
| 9 | cpac_menu(); |
| 10 | cpac_add_custom_column(); |
| 11 | }); |
| 12 | |
| 13 | /** |
| 14 | * sortable |
| 15 | * |
| 16 | */ |
| 17 | function cpac_sortable() |
| 18 | { |
| 19 | jQuery('ul.cpac-option-list').sortable({ |
| 20 | handle: 'div.cpac-sort-handle', |
| 21 | placeholder: 'cpac-placeholder', |
| 22 | forcePlaceholderSize: true |
| 23 | }); |
| 24 | } |
| 25 | |
| 26 | /** |
| 27 | * checked |
| 28 | * |
| 29 | */ |
| 30 | function cpac_checked() |
| 31 | { |
| 32 | jQuery('#cpac .cpac-option-list li .cpac-type-options').live({ |
| 33 | click: function() { |
| 34 | var li = jQuery(this).closest('li'); |
| 35 | var state = jQuery('.cpac-state', li); |
| 36 | var value = state.attr('value'); |
| 37 | |
| 38 | // toggle on |
| 39 | if ( value != 'on') { |
| 40 | li.addClass('active'); |
| 41 | state.attr('value', 'on'); |
| 42 | } |
| 43 | |
| 44 | // toggle off |
| 45 | else { |
| 46 | li.removeClass('active'); |
| 47 | state.attr('value', ''); |
| 48 | } |
| 49 | } |
| 50 | }); |
| 51 | } |
| 52 | |
| 53 | /** |
| 54 | * Open and close box |
| 55 | * |
| 56 | */ |
| 57 | function cpac_box_events() |
| 58 | { |
| 59 | // fold in/out |
| 60 | jQuery('#cpac .cpac-option-list .cpac-action').unbind('click').click(function(e){ |
| 61 | e.preventDefault(); |
| 62 | jQuery(this).closest('li').find('.cpac-type-inside').slideToggle(150); |
| 63 | }); |
| 64 | |
| 65 | // remove custom field box |
| 66 | jQuery('#cpac .cpac-delete-custom-field-box').unbind('click').click(function(e){ |
| 67 | e.preventDefault(); |
| 68 | var el = jQuery(this).closest('li'); |
| 69 | |
| 70 | el.addClass('deleting').animate({ |
| 71 | opacity : 0, |
| 72 | height: 0 |
| 73 | }, 350, function() { |
| 74 | el.remove(); |
| 75 | }); |
| 76 | |
| 77 | }); |
| 78 | } |
| 79 | |
| 80 | /** |
| 81 | * Menu |
| 82 | * |
| 83 | */ |
| 84 | function cpac_menu() |
| 85 | { |
| 86 | // referer |
| 87 | var referer = jQuery("input[type='hidden'][name='_wp_http_referer']"); |
| 88 | var referer_value = referer.attr('value'); |
| 89 | |
| 90 | // click |
| 91 | jQuery('#cpac .cpac-menu a').click( function(e, el) { |
| 92 | e.preventDefault(); |
| 93 | var id = jQuery(this).attr('href'); |
| 94 | |
| 95 | if ( id ) { |
| 96 | // remove current |
| 97 | jQuery('#cpac .cpac-menu a').removeClass('current'); |
| 98 | jQuery('#cpac .cpac-box-row').hide().removeClass('current'); |
| 99 | |
| 100 | // set current |
| 101 | jQuery(this).addClass('current'); |
| 102 | jQuery(id).show().addClass('current'); |
| 103 | |
| 104 | // set refere |
| 105 | var querystring = '&cpac_type=' + id.replace('#',''); |
| 106 | referer.attr('value', referer_value + querystring ); |
| 107 | } |
| 108 | }); |
| 109 | } |
| 110 | |
| 111 | /** |
| 112 | * add custom columns |
| 113 | * |
| 114 | */ |
| 115 | function cpac_add_custom_column() |
| 116 | { |
| 117 | jQuery('.cpac-add-customfield-column').click(function(e){ |
| 118 | e.preventDefault(); |
| 119 | |
| 120 | var list = jQuery(this).closest('td').find('ul.cpac-option-list'); |
| 121 | var metafields = jQuery('li.cpac-box-metafield', list); |
| 122 | |
| 123 | // get unique ID number... |
| 124 | var ids = []; |
| 125 | metafields.each(function(k,v) { |
| 126 | var _class = jQuery(v).attr('class'); |
| 127 | var classes = _class.split(' '); |
| 128 | jQuery.each(classes, function(kc,vc){ |
| 129 | if ( vc.indexOf('cpac-box-column-meta-') === 0 ) { |
| 130 | var id = vc.replace('cpac-box-column-meta-',''); |
| 131 | if ( id ) |
| 132 | ids.push(id); |
| 133 | } |
| 134 | }); |
| 135 | }); |
| 136 | |
| 137 | // ...and sort them |
| 138 | ids.sort(sortNumber); |
| 139 | |
| 140 | if ( !ids ) |
| 141 | return; |
| 142 | |
| 143 | function sortNumber(a,b) { |
| 144 | return b - a; |
| 145 | } |
| 146 | |
| 147 | // ID's |
| 148 | var id = parseFloat(ids[0]); |
| 149 | var new_id = id + 1; |
| 150 | |
| 151 | // Clone |
| 152 | var clone = jQuery( '.cpac-box-column-meta-' + id, list ).clone(); |
| 153 | |
| 154 | // Toggle class |
| 155 | jQuery(clone).removeClass('cpac-box-column-meta-' + id ); |
| 156 | jQuery(clone).addClass('cpac-box-column-meta-' + new_id ); |
| 157 | |
| 158 | // Replace inputs ID's |
| 159 | var inputs = jQuery(clone).find('input, select'); |
| 160 | jQuery(inputs).each(function(ik, iv){ |
| 161 | jQuery(iv).attr('name', jQuery(iv).attr('name').replace(id, new_id) ); |
| 162 | }); |
| 163 | |
| 164 | // Replace label ID's |
| 165 | var labels = jQuery(clone).find('label'); |
| 166 | jQuery(labels).each(function(ik, iv){ |
| 167 | var attr_for = jQuery(iv).attr('for'); |
| 168 | if ( attr_for ) { |
| 169 | jQuery(iv).attr('for', attr_for.replace(id, new_id) ); |
| 170 | } |
| 171 | }); |
| 172 | |
| 173 | // remove description |
| 174 | clone.find('.remove-description').remove(); |
| 175 | |
| 176 | // change label text |
| 177 | clone.find('label.main-label, .cpac-type-inside input.text').text('Custom Field'); |
| 178 | clone.find('.cpac-type-inside input.text').val('Custom Field'); |
| 179 | |
| 180 | // add remove button |
| 181 | if ( clone.find('.cpac-delete-custom-field-box').length == 0 ) { |
| 182 | var remove = '<p><a href="javascript:;" class="cpac-delete-custom-field-box">Remove</a>'; |
| 183 | clone.find('.cpac-type-inside').append(remove); |
| 184 | } |
| 185 | |
| 186 | // add cloned box to the list |
| 187 | list.append(clone); |
| 188 | |
| 189 | // retrigger click events |
| 190 | cpac_box_events(); |
| 191 | }); |
| 192 | } |