diff --git a/assets/inspector.css b/assets/inspector.css new file mode 100644 index 0000000..068a0d8 --- /dev/null +++ b/assets/inspector.css @@ -0,0 +1,116 @@ +.row-actions > span.inspect{ + position: relative; +} +span.inspect > .inspector-popout{ + +} + +.baldrick-modal-wrap .spinner.loading { + background-position: center center; + display: inline-block; + float: none; + height: auto; + position: absolute; + width: auto; +} + +/* MODALS */ +.baldrick-backdrop { + background: none repeat scroll 0 0 #000000; + bottom: 0; + display: block; + left: 0; + min-height: 360px; + opacity: 0.7; + position: fixed; + right: 0; + top: 0; + z-index: 100100; +} + +.baldrick-modal-wrap { + background-color: #FFFFFF; + bottom: 15px; + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.3); + display: block; + left: 50%; + margin-left: -250px; + position: fixed; + top: 15px; + transition: height 0.2s ease 0s, margin-top 0.2s ease 0s; + width: 500px; + z-index: 100105; +} +.baldrick-modal-wrap.baldrick-front-modal-wrap{ + position: absolute; + bottom: auto; + width: 600px; + margin-left: -300px; + margin-top: 0; +} +.baldrick-modal-title { + border-bottom: 1px solid #EFEFEF; +} + +.baldrick-modal-closer { + color: #808080; + float: right; + font-size: 24px; + padding: 12px; + text-decoration: none; +} + +.baldrick-modal-closer.baldrick-front-modal-closer:hover, +.baldrick-modal-closer.baldrick-front-modal-closer:active{ + text-decoration: none; + color: inherit; +} +.baldrick-modal-title > h3 { + font-weight: 400; + margin: 0; + padding: 12px 40px 12px 12px; +} + +.baldrick-modal-body { + -moz-box-sizing: border-box; /* Firefox 1, probably can drop this */ + -webkit-box-sizing: border-box; /* Safari 3-4, also probably droppable */ + box-sizing: border-box; /* Everything else */ + bottom: 0; + left: 0; + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding: 12px; + position: absolute; + right: 0; + top: 43px; + overflow: auto; +} +.baldrick-modal-body.has-buttons{ + bottom: 53px; +} +.baldrick-modal-footer { + background: none repeat scroll 0 0 #EFEFEF; + border-top: 1px solid #E0E0E0; + bottom: 0; + left: 0; + padding: 12px; + position: absolute; + right: 0; + text-align: right; +} + + +@media (max-width: 600px) { + /* Small Screens */ + .baldrick-modal-wrap.baldrick-front-modal-wrap{ + bottom: 0; + display: block; + left: 0; + margin: 0 !important; + overflow: auto; + padding: 0 !important; + top: 0; + width: 100% !important; + } +} \ No newline at end of file diff --git a/assets/jquery.baldrick.js b/assets/jquery.baldrick.js new file mode 100644 index 0000000..d7cdd4d --- /dev/null +++ b/assets/jquery.baldrick.js @@ -0,0 +1,456 @@ +/* -- BaldrickJS V2.2 | (C) David Cramer - 2013 | MIT License */ +(function($){ + + var baldrickCache = {}, + baldrickhelpers = { + _plugins : {}, + load : {}, + bind : {}, + event : function(el,e){ + return el; + }, + filter : function(opts){ + return opts; + }, + target : function(opts){ + if(opts.params.target){ + opts.params.target[opts.params.targetInsert](opts.data); + if(typeof opts.params.callback === 'string'){ + if(typeof window[opts.params.callback] === 'function'){ + return window[opts.params.callback](opts); + } + }else if(typeof opts.params.callback === 'function'){ + return opts.params.callback(opts); + } + } + }, + request : function(opts){ + + if( ( opts.params.trigger.data('cacheLocal') || opts.params.trigger.data('cacheSession') ) && !opts.params.trigger.data('cachePurge') ){ + + var key; + + if( opts.params.trigger.data('cacheLocal') ){ + key = opts.params.trigger.data('cacheLocal'); + }else if(opts.params.trigger.data('cacheSession')){ + key = opts.params.trigger.data('cacheSession'); + } + + // check for a recent object + if(typeof baldrickCache[key] !== 'undefined'){ + return {data: baldrickCache[key]}; + } + + // check if there is a stored obejct to be loaded + if(typeof(Storage)!=="undefined"){ + + var cache; + + // load storage + if( opts.params.trigger.data('cacheLocal') ){ + cache = localStorage.getItem( key ); + }else if(opts.params.trigger.data('cacheSession')){ + cache = sessionStorage.getItem( key ); + } + if(cache){ + try { + //baldrickCache[key] = JSON.parse(cache); + cache = JSON.parse(cache); + } catch (e) { + //baldrickCache[key] = cache; + cache = cache; + } + return {data: cache}; + } + + } + + } + return $.ajax(opts.request); + }, + request_complete: function(opts){ + opts.params.complete(opts); + opts.params.loadElement.removeClass(opts.params.loadClass); + }, + request_error : function(opts){ + opts.params.error(opts); + opts.params.complete(opts.jqxhr,opts.textStatus); + }, + refresh : function(opts, defaults){ + $(defaults.triggerClass).baldrick(defaults); + } + }; + + $.fn.baldrick = function(opts){ + + var do_helper = function(h, input, ev){ + var out; + // pull in plugins before + for(var before in defaults.helpers._plugins){ + if(typeof defaults.helpers._plugins[before][h] === 'function'){ + out = defaults.helpers._plugins[before][h](input, defaults, ev); + if(typeof out !== 'undefined'){ input = out;} + if(input === false){return false;} + } + } + if(typeof defaults.helpers[h] === 'function'){ + out = defaults.helpers[h](input, defaults, ev); + if(typeof out !== 'undefined'){ input = out;} + if(!input){return false;} + } + // pull in plugins after + for(var after in defaults.helpers._plugins){ + if(typeof defaults.helpers._plugins[after]['after_' + h] === 'function'){ + out = defaults.helpers._plugins[after]['after_' + h](input, defaults, ev); + if(typeof out !== 'undefined'){ input = out;} + if(input === false){return false;} + } + } + return input; + }, + triggerClass = this.selector, + inst = this.not('._tisBound'); + + inst.addClass('_tisBound'); + if(typeof opts !== 'undefined'){ + if(typeof opts.helper === 'object'){ + baldrickhelpers._plugins._params_helpers_ = opts.helper; + } + } + var defaults = $.extend(true, opts, { helpers : baldrickhelpers}, {triggerClass:triggerClass}), + ncb = function(){return true;}, + callbacks = { + "before" : ncb, + "callback" : false, + "complete" : ncb, + "error" : ncb + }, + output; + + for(var c in callbacks){ + if(typeof defaults[c] === 'string'){ + callbacks[c] = (typeof window[defaults[c]] === 'function' ? window[defaults[c]] : ncb); + }else if(typeof defaults[c] === 'function'){ + callbacks[c] = defaults[c]; + } + } + + inst = do_helper('bind', inst); + if(inst === false){return this;} + return do_helper('ready', inst.each(function(key){ + if(!this.id){ + this.id = "baldrick_trigger_" + (new Date().getTime() + key); + } + var el = $(this), ev = (el.data('event') ? el.data('event') : (defaults.event ? defaults.event : ( el.is('form') ? 'submit' : 'click' ))); + el.on(ev, function(e){ + + var tr = $(do_helper('event', this, e)); + + if(tr.data('for')){ + var fort = $(tr.data('for')), + datamerge = $.extend({}, fort.data(), tr.data()); + delete datamerge['for']; + fort.data(datamerge); + return fort.trigger((fort.data('event') ? fort.data('event') : ev)); + } + if(tr.is('form') && !tr.data('request') && tr.attr('action')){ + tr.data('request', tr.attr('action')); + } + if(tr.is('a') && !tr.data('request') && tr.attr('href')){ + if(tr.attr('href').indexOf('#') < 0){ + tr.data('request', tr.attr('href')); + }else{ + tr.data('href', tr.attr('href')); + } + } + + if((tr.data('before') ? (typeof window[tr.data('before')] === 'function' ? window[tr.data('before')](this, e) : callbacks.before(this, e)) : callbacks.before(this, e)) === false){return;} + + var params = { + trigger: tr, + callback : (tr.data('callback') ? ((typeof window[tr.data('callback')] === 'function') ? window[tr.data('callback')] : tr.data('callback')) : callbacks.callback), + method : (tr.data('method') ? tr.data('method') : (tr.attr('method') ? tr.attr('method') :(defaults.method ? defaults.method : 'GET'))), + dataType : (tr.data('type') ? tr.data('type') : (defaults.dataType ? defaults.dataType : false)), + timeout : (tr.data('timeout') ? tr.data('timeout') : 30000), + target : (tr.data('target') ? ( tr.data('target') === '_parent' ? tr.parent() : $(tr.data('target')) ) : (defaults.target ? $(defaults.target) : $(''))), + targetInsert : (tr.data('targetInsert') ? (tr.data('targetInsert') === 'replace' ? 'replaceWith' : tr.data('targetInsert')) : (defaults.targetInsert ? (defaults.targetInsert === 'replace' ? 'replaceWith': defaults.targetInsert) : 'html')), + loadClass : (tr.data('loadClass') ? tr.data('loadClass') : (defaults.loadClass ? defaults.loadClass : 'loading')), + activeClass : (tr.data('activeClass') ? tr.data('activeClass') : (defaults.activeClass ? defaults.activeClass : 'active')), + activeElement : (tr.data('activeElement') ? (tr.data('activeElement') === '_parent' ? tr.parent() :$(tr.data('activeElement'))) : (defaults.activeElement ? (defaults.activeElement === '_parent' ? tr.parent() : $(defaults.activeElement)) : tr)), + cache : (tr.data('cache') ? tr.data('cache') : (defaults.cache ? defaults.cache : false)), + complete : (tr.data('complete') ? (typeof window[tr.data('complete')] === 'function' ? window[tr.data('complete')] : callbacks.complete ) : callbacks.complete), + error : (tr.data('error') ? (typeof window[tr.data('error')] === 'function' ? window[tr.data('error')] : callbacks.error ) : callbacks.error), + resultSelector : false + }; + params.url = (tr.data('request') ? tr.data('request') : (defaults.request ? defaults.request : params.callback)); + params.loadElement = (tr.data('loadElement') ? (tr.data('loadElement') === '_parent' ? tr.parent() :$(tr.data('loadElement'))) : (defaults.loadElement ? ($(defaults.loadElement) ? $(defaults.loadElement) : params.target) : params.target)); + + params = do_helper('params', params); + if(params === false){return false;} + // check if request is a function + if(typeof window[params.url] === 'function'){ + + var dt = window[params.url](params, ev); + + dt = do_helper('filter', {data:dt, rawData: dt, params: params}); + do_helper('target', dt); + do_helper('refresh', {params:params}); + + return this; + } + switch (typeof params.url){ + case 'function' : return params.url(this, e); + case 'boolean' : + case 'object': return; + case 'string' : + if(params.url.indexOf(' ') > -1){ + var rp = params.url.split(' '); + params.url = rp[0]; + params.resultSelector = rp[1]; + } + } + e.preventDefault(); + var active = (tr.data('group') ? $('._tisBound[data-group="'+tr.data('group')+'"]').each(function(){ + var or = $(this), + tel = (or.data('activeElement') ? (or.data('activeElement') === '_parent' ? or.parent() :$(or.data('activeElement'))) : (defaults.activeElement ? (defaults.activeElement === '_parent' ? tr.parent() : $(defaults.activeElement)) : or) ); + tel.removeClass((or.data('activeClass') ? or.data('activeClass') : (defaults.activeClass ? defaults.activeClass : params.activeClass)));} + ) : $('._tisBound:not([data-group])').each(function(){ + var or = $(this), + tel = (or.data('activeElement') ? (or.data('activeElement') === '_parent' ? or.parent() :$(or.data('activeElement'))) : (defaults.activeElement ? (defaults.activeElement === '_parent' ? tr.parent() : $(defaults.activeElement)) : or) ); + tel.removeClass((or.data('activeClass') ? or.data('activeClass') : (defaults.activeClass ? defaults.activeClass : params.activeClass)));} + )); + + params.activeElement.addClass(params.activeClass); + params.loadElement.addClass(params.loadClass); + + var data; + if(FormData && ( tr.is('input:file') || tr.is('form') || params.method === 'POST') ){ + + params.method = 'POST'; + params.contentType = false; + params.processData = false; + params.cache = false; + params.xhrFields = { + onprogress: function (e) { + if (e.lengthComputable) { + //console.log('Loaded '+ (e.loaded / e.total * 100) + '%'); + } else { + //console.log('Length not computable.'); + } + } + }; + + if(tr.is('form')){ + data = new FormData(tr[0]); + }else{ + + data = new FormData(); + } + + if(tr.is('input,select,textarea')){ + // add value as _value for each access + tr.data('_value', tr.val()); + } + // make field vars + for(var att in tr.data()){ + data.append(att, tr.data(att)); + } + // use input + if(tr.is('input,select,textarea')){ + + if(tr.is('input:file')){ + if(tr[0].files.length > 1){ + for( var file = 0; file < tr[0].files.length; file++){ + data.append(tr.prop('name'), tr[0].files[file]); + } + }else{ + data.append(tr.prop('name'), tr[0].files[0]); + } + + }else if(tr.is('input:checkbox') || tr.is('input:radio')){ + if(tr.prop('checked')){ + data.append(tr.prop('name'), tr.val()); + } + }else{ + data.append(tr.prop('name'), tr.val()); + } + } + }else{ + + var sd = tr.serializeArray(), atts = tr.data(), param = []; + // insert user set params + if(defaults.data){ + atts = $.extend(defaults.data, atts); + } + $.each( atts, function(k,v) { + param.push({name: k, value: v}); + }); + if(sd.length){ + $.each( sd, function(k,v) { + param.push(v); + }); + } + data = $.param(param); + } + + + var request = { + url : params.url, + data : data, + cache : params.cache, + timeout : params.timeout, + type : params.method, + success : function(dt, ts, xhr){ + if(params.resultSelector){ + if(typeof dt === 'object'){ + var traverse = params.resultSelector.replace(/\[/g,'.').replace(/\]/g,'').split('.'), + data_object = dt; + for(var i=0; i').html(dt)); + if(tmp.length === 1){ + dt = $('').html(tmp).html(); + }else{ + dt = $(''); + tmp.each(function(){ + dt.append(this); + }); + dt = dt.html(); + } + } + } + var rawdata = dt; + if(params.trigger.data('cacheLocal') || params.trigger.data('cacheSession')){ + + + var key; + + if( params.trigger.data('cacheLocal') ){ + key = params.trigger.data('cacheLocal'); + }else if(params.trigger.data('cacheSession')){ + key = params.trigger.data('cacheSession'); + } + + // add to local storage for later + if(typeof(Storage)!=="undefined"){ + if( params.trigger.data('cacheLocal') ){ + try{ + localStorage.setItem( key, xhr.responseText ); + } catch (e) { + console.log(e); + } + }else if( params.trigger.data('cacheSession') ){ + try{ + sessionStorage.setItem( key, xhr.responseText ); + } catch (e) { + console.log(e); + } + + } + } + + // add to current cache object + //baldrickCache[key] = dt; + $(window).trigger('baldrick.cache', key); + } + + + dt = do_helper('filter', {data:dt, rawData: rawdata, request: request, params: params, xhr: xhr}); + do_helper('target', dt); + }, + complete: function(xhr,ts){ + + do_helper('request_complete', {jqxhr:xhr, textStatus:ts, request:request, params:params}); + + do_helper('refresh', {jqxhr:xhr, textStatus:ts, request:request, params:params}); + + if(tr.data('once')){ + tr.off(ev).removeClass('_tisBound'); + } + }, + error: function(xhr,ts,ex){ + do_helper('request_error', {jqxhr:xhr, textStatus:ts, error:ex, request:request, params:params}); + } + }; + if(params.dataType){ + request.dataType = params.dataType; + } + if(typeof params.contentType !== 'undefined'){ + request.contentType = params.contentType; + } + if(typeof params.processData !== 'undefined'){ + request.processData = params.processData; + } + if(typeof params.xhrFields !== 'undefined'){ + request.xhrFields = params.xhrFields; + } + + request = do_helper('request_params', request, params); + if(request === false){return inst;} + + var request_result = do_helper('request', {request: request, params: params}); + + // A Request helper returns a completed object, if it contains data, push to the rest. + if(request_result.data){ + + var dt = request_result.data, + rawdata = dt; + + do_helper('target' , + do_helper('filter' , {data:dt, rawData: rawdata, request: request, params: params}) + ); + do_helper('request_complete', {jqxhr:false, textStatus:true, request:request, params:params}); + do_helper('refresh' , {jqxhr:false, textStatus:true, request:request, params:params}); + + + } + }); + if(el.data('autoload') || el.data('poll')){ + if(el.data('delay')){ + setTimeout(function(el, ev){ + return el.trigger(ev); + }, el.data('delay'), el, ev); + }else{ + el.trigger(ev); + } + } + + if(el.data('poll')){ + if(el.data('delay')){ + setTimeout(function(el, ev){ + return setInterval(function(el, ev){ + return el.trigger(ev); + }, el.data('poll'), el, ev); + }, el.data('delay')); + }else{ + setInterval(function(el, ev){ + return el.trigger(ev); + }, el.data('poll'), el, ev); + } + } + return this; + })); + }; + $.fn.baldrick.cacheObject = function(id, object){ + baldrickCache[id] = object; + }; + $.fn.baldrick.registerhelper = function(slug, helper, callback){ + var newhelper = {}; + if(typeof helper === 'object'){ + newhelper[slug] = helper; + baldrickhelpers._plugins = $.extend(true, newhelper, baldrickhelpers._plugins); + }else if(typeof helper === 'string' && typeof slug === 'string' && typeof callback === 'function'){ + newhelper[helper] = {}; + newhelper[helper][slug] = callback; + baldrickhelpers._plugins = $.extend(true, newhelper, baldrickhelpers._plugins); + } + + }; + $(function($){ + $('.baldrick').baldrick(); + }); + +})(jQuery); \ No newline at end of file diff --git a/assets/trigger.js b/assets/trigger.js new file mode 100644 index 0000000..86b6082 --- /dev/null +++ b/assets/trigger.js @@ -0,0 +1,234 @@ +/* Baldrick handlebars.js templating plugin */ +(function($){ + + var wm_hasModal = false; + + $.fn.baldrick.registerhelper('baldrick_modal', { + refresh: function(obj){ + if(obj.params.trigger.data('modalAutoclose')){ + $('#' + obj.params.trigger.data('modalAutoclose') + '_baldrickModalCloser').trigger('click'); + } + }, + event : function(el){ + var triggers = $(el), modal_id = 'wm'; + if(triggers.data('modal') && wm_hasModal === false){ + if(triggers.data('modal') !== 'true'){ + modal_id = triggers.data('modal'); + } + if(!$('#' + modal_id + '_baldrickModal').length){ + //wm_hasModal = true; + // write out a template wrapper. + var modal = $('
', { + id : modal_id + '_baldrickModal', + tabIndex : -1, + "ariaLabelled-by" : modal_id + '_baldrickModalLable', + "class" : "baldrick-modal-wrap", + }), + //modalDialog = $('
', {"class" : "modal-dialog"}); + modalBackdrop = $('
', {"class" : "baldrick-backdrop"}); + modalContent = $('
', {"class" : "baldrick-modal-body",id: modal_id + '_baldrickModalBody'}); + modalFooter = $('
', {"class" : "baldrick-modal-footer",id: modal_id + '_baldrickModalFooter'}); + modalHeader = $('
', {"class" : "baldrick-modal-title", id : modal_id + '_baldrickModalTitle'}); + modalCloser = $('', { "href" : "#close", "class":"baldrick-modal-closer", "data-dismiss":"modal", "aria-hidden":"true",id: modal_id + '_baldrickModalCloser'}).html('×'); + modalTitle = $('

', {"class" : "modal-label", id : modal_id + '_baldrickModalLable'}); + + modalHeader.append(modalCloser).append(modalTitle).appendTo(modal); + + modalBackdrop.on('click', function(e){ + e.preventDefault(); + modalBackdrop.fadeOut(200); + modal.fadeOut(200, function(){ + $(this).remove(); + modalBackdrop.remove(); + }); + }) + modalCloser.on('click', function(e){ + e.preventDefault(); + modalBackdrop.fadeOut(200); + modal.fadeOut(200, function(){ + $(this).remove(); + modalBackdrop.remove(); + }); + }) + + modalContent.appendTo(modal); + modalFooter.appendTo(modal); + + modal.appendTo($('body')).hide().fadeIn(200); + modalBackdrop.insertBefore(modal).hide().fadeIn(200); + } + } + }, + request_complete : function(obj, params){ + if(obj.params.trigger.data('modal')){ + var modal_id = 'wm', modal, modalBody; + if(obj.params.trigger.data('modal') !== 'true'){ + modal_id = obj.params.trigger.data('modal'); + } + + modal = $('#' + modal_id + '_baldrickModal'); + modalBody = $('#' + modal_id + '_baldrickModalBody'); + modalTitle = $('#' + modal_id + '_baldrickModalTitle'); + + if(obj.params.trigger.data('modalLife')){ + var delay = parseFloat(obj.params.trigger.data('modalLife')); + if(delay > 0){ + setTimeout(function(){ + $('#' + modal_id + '_baldrickModalCloser').trigger('click'); + }, delay); + }else{ + $('#' + modal_id + '_baldrickModalCloser').trigger('click'); + } + } + //$('#' + modal_id + '_baldrickModalLoader').hide(); + modalBody.removeClass(obj.params.loadClass).show(); + + + + } + }, + after_filter : function(obj){ + if(obj.params.trigger.data('modal')){ + if(obj.params.trigger.data('targetInsert')){ + var modal_id = 'wm'; + if(obj.params.trigger.data('modal') !== 'true'){ + modal_id = obj.params.trigger.data('modal'); + } + var data = $(obj.data).prop('id', modal_id + '_baldrickModalBody'); + obj.data = data; + } + } + return obj; + }, + params : function(params,defaults){ + + var trigger = params.trigger, modal_id = 'wm'; + if(params.trigger.data('modal') !== 'true'){ + modal_id = params.trigger.data('modal'); + } + + if(trigger.data('modal') && (params.url || trigger.data('modalContent'))){ + var modal; + + if(params.url){ + params.target = $('#' + modal_id + '_baldrickModalBody'); + params.loadElement = $('#' + modal_id + '_baldrickModalLoader'); + params.target.empty(); + } + + if(trigger.data('modalTemplate')){ + modal = $(trigger.data('modalTemplate')); + }else{ + modal = $('#' + modal_id + '_baldrickModal'); + } + // close if already open + if($('.modal-backdrop').length){ + //modal.modal('hide'); + } + + // get options. + var label = $('#' + modal_id + '_baldrickModalLable'), + //loader = $('#' + modal_id + '_baldrickModalLoader'), + title = $('#' + modal_id + '_baldrickModalTitle'), + body = $('#' + modal_id + '_baldrickModalBody'), + footer = $('#' + modal_id + '_baldrickModalFooter'); + + // reset modal + //modal.removeClass('fade'); + + label.empty().parent().hide(); + body.addClass(params.loadClass); + + footer.empty().hide(); + if(trigger.data('modalTitle')){ + label.html(trigger.data('modalTitle')).parent().show(); + } + if(trigger.data('modalButtons')){ + var buttons = $.trim(trigger.data('modalButtons')).split(';'), + button_list = []; + body.addClass('has-buttons'); + if(buttons.length){ + for(b=0; b', atts); + if(options[2]){ + button.addClass(options[2]); + } + if(callback === 'dismiss'){ + button.on('click', function(){ + $('#' + modal_id + '_baldrickModalCloser').trigger('click'); + }) + } + footer.append(button.html(buttonLabel)); + if(bview_cap = apply_filters( 'pmi_view_cap', 'manage_options' ); + if ( ! current_user_can( $this->view_cap ) || ! apply_filters( 'pmi_show_post_type', '__return_true', get_post_type() ) ) + return; + + $screen = get_current_screen(); + + if( in_array( $screen->base, array( 'edit', 'upload' ) ) ){ + wp_enqueue_style( 'pmi-modal-style', plugin_dir_url(__FILE__) . 'assets/inspector.css' ); + wp_enqueue_script( 'pmi-baldrick', plugin_dir_url(__FILE__) . 'assets/jquery.baldrick.js', array('jquery') ); + wp_enqueue_script( 'pmi-trigger', plugin_dir_url(__FILE__) . 'assets/trigger.js', array('jquery'), $this->ver, true ); + } + } + + /** + * Build the modal content + */ + public function inspect_modal(){ + + $this->view_cap = apply_filters( 'pmi_view_cap', 'manage_options' ); + if ( ! current_user_can( $this->view_cap ) || ! apply_filters( 'pmi_show_post_type', '__return_true', get_post_type( get_post( $_POST['id'] ) ) ) ) + exit; + + $meta = get_post_meta( $_POST['id'] ); + + ksort( $meta ); + ?> + + + + + + + + + $meta_data ){ + + if( $class == 'alternate'){ + $class = ''; + }else{ + $class = 'alternate'; + } + + echo " \r\n"; + echo " \r\n"; + echo " \r\n"; + } + ?> + +
" . esc_html( $meta_key ) . ""; + foreach( (array) $meta_data as $meta_value ){ + $value = maybe_unserialize( $meta_value ); + if( is_array( $value ) || is_object( $value ) ){ + echo '
';
+					ob_start();
+					print_r( $value );
+					echo esc_html( ob_get_clean() );
+					echo '
'; + }else{ + echo esc_html( $value ); + } + } + echo "
+
+ view_cap = apply_filters( 'pmi_view_cap', 'manage_options' ); + if ( ! current_user_can( $this->view_cap ) || ! apply_filters( 'pmi_show_post_type', '__return_true', get_post_type( $object ) ) ) + exit; + + if( isset( $object->data ) ){ + $title = $object->data->user_login; + $type = 'user'; + }else{ + $title = $object->post_title; + $type = 'post'; + } + + $actions['inspect'] = '
' . __( 'Inspect Meta' , 'post-meta-inspector') .''; + return $actions; + } + /** * Add the post meta box to view post meta if the user has permissions to */