From 78865d076127c1034a400a99ec89bd50b67710c0 Mon Sep 17 00:00:00 2001 From: aschweigert Date: Fri, 3 Mar 2017 17:34:39 -0500 Subject: [PATCH 1/2] fix php notices (fixes #1350) --- inc/featured-media.php | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/inc/featured-media.php b/inc/featured-media.php index 88df683bc..5b014b0ec 100644 --- a/inc/featured-media.php +++ b/inc/featured-media.php @@ -204,6 +204,11 @@ function largo_get_featured_media( $post = null ) { $post = get_post( $post ); + // make sure we actually have a valid post object before we try to get post meta + if ( ! is_object( $post ) ) { + return; + } + $ret = get_post_meta( $post->ID, 'featured_media', true ); // Check if the post has a thumbnail/featured image set. @@ -266,13 +271,18 @@ function largo_enqueue_featured_media_js( $hook ) { // Run this action on term edit pages // edit-tags.php for wordpress before 4.5 // term.php for 4.5 and after - if ( in_array( $hook, array( 'edit-tags.php', 'term.php' ) ) && is_numeric( $_GET['tag_ID'] ) ) { + if ( in_array( $hook, array( 'edit-tags.php', 'term.php' ) ) && isset( $_GET['tag_ID'] ) && is_numeric( $_GET['tag_ID'] ) ) { // After WordPress 4.5, the taxonomy is no longer in the URL // So to compensate, we get the taxonomy from the current screen $screen = get_current_screen(); $post = get_post( largo_get_term_meta_post( $screen->taxonomy, $_GET['tag_ID'] ) ); } + // make sure we actually have a valid post object before we try to get post meta + if ( ! is_object( $post ) ) { + return; + } + $featured_image_display = get_post_meta( $post->ID, 'featured-image-display', true ); // The scripts following depend upon the WordPress media APIs @@ -454,7 +464,7 @@ function largo_featured_image_metabox_callback( $post, $metabox ) { $checked = 'false' == get_post_meta( $post->ID, 'featured-image-display', true ) ? 'checked="checked"' : ""; echo wp_nonce_field( basename( __FILE__ ), 'featured_image_display_nonce' ); - + echo '' . get_the_post_thumbnail() . ''; echo ' ' . __( $language . ' Featured Media', 'largo' ) . ' '; @@ -707,7 +717,7 @@ function largo_content_partial_arguments_filter( $args, $queried_object ) { * 'right_region' => 'sidebar-main', * 'per_page' => '10', * 'post_order' => 'DESC', - * 'show' => + * 'show' => * array ( * 'image' => false, * 'excerpt' => false, From 0200318daf17fa3b60d7ab7243d9451992565e0b Mon Sep 17 00:00:00 2001 From: aschweigert Date: Fri, 3 Mar 2017 17:40:32 -0500 Subject: [PATCH 2/2] put these in a sensible order --- js/featured-media.js | 117 ++++++++++++++++++++------------------- js/featured-media.min.js | 2 +- 2 files changed, 60 insertions(+), 59 deletions(-) diff --git a/js/featured-media.js b/js/featured-media.js index d37302b2b..d6157283f 100644 --- a/js/featured-media.js +++ b/js/featured-media.js @@ -39,7 +39,7 @@ var LFM = _.extend(LFM || {}, { // Make sure we tell the backend what post ID we're dealing with. data = _.extend(data, { id: LFM.Utils.getPostId() }); - + var action; if (method == 'read') action = 'largo_featured_media_read'; @@ -79,63 +79,58 @@ var LFM = _.extend(LFM || {}, { createStates: function() { var options = this.options, - embed = [ - // Embed code - new wp.media.controller.Embed({ - title: largo_featured_media_vars.embed_title, - id: 'embed-code', - content: 'embed', - priority: 0 - }), - ], - video = [ - // Video embed - new wp.media.controller.Embed({ - title: largo_featured_media_vars.video_title, - id: 'video', - content: 'video', - priority: 10 - }), - ], - image = [ - // Featured image - new wp.media.controller.FeaturedImage({ - title: largo_featured_media_vars.image_title, - priority: 20, - id: 'image', - }), - - new wp.media.controller.EditImage({ model: options.editImage }) - ], - gallery = [ - // Featured gallery - new wp.media.controller.Library({ - id: 'gallery', - title: largo_featured_media_vars.gallery_title, - priority: 30, - toolbar: 'main-gallery', - filterable: 'uploaded', - multiple: 'add', - editable: false, - library: wp.media.query(_.defaults({ - type: 'image' - }, options.library)) - }), - - // Gallery states. - new wp.media.controller.GalleryEdit({ - library: options.selection, - editing: options.editing, - menu: 'gallery' - }), - - new wp.media.controller.GalleryAdd() - ]; - if (_.indexOf(options.states, 'embed-code') >= 0) - this.states.add(embed); - - if (_.indexOf(options.states, 'video') >= 0) - this.states.add(video); + image = [ + // Featured image + new wp.media.controller.FeaturedImage({ + title: largo_featured_media_vars.image_title, + id: 'image', + priority: 10 + }), + + new wp.media.controller.EditImage({ model: options.editImage }) + ], + gallery = [ + // Featured gallery + new wp.media.controller.Library({ + title: largo_featured_media_vars.gallery_title, + id: 'gallery', + priority: 20, + toolbar: 'main-gallery', + filterable: 'uploaded', + multiple: 'add', + editable: false, + library: wp.media.query(_.defaults({ + type: 'image' + }, options.library)) + }), + + // Gallery states. + new wp.media.controller.GalleryEdit({ + library: options.selection, + editing: options.editing, + menu: 'gallery' + }), + + new wp.media.controller.GalleryAdd() + ], + video = [ + // Video embed + new wp.media.controller.Embed({ + title: largo_featured_media_vars.video_title, + id: 'video', + priority: 30, + content: 'video' + }), + ], + embed = [ + // Embed code + new wp.media.controller.Embed({ + title: largo_featured_media_vars.embed_title, + id: 'embed-code', + priority: 40, + content: 'embed' + }), + ]; if (_.indexOf(options.states, 'image') >= 0 ) this.states.add(image); @@ -143,6 +138,12 @@ var LFM = _.extend(LFM || {}, { if (_.indexOf(options.states, 'gallery') >= 0) this.states.add(gallery); + if (_.indexOf(options.states, 'video') >= 0) + this.states.add(video); + + if (_.indexOf(options.states, 'embed-code') >= 0) + this.states.add(embed); + if (LFM.has_featured_media) { this.states.add([ new LFM.Controller.removeFeaturedMedia() diff --git a/js/featured-media.min.js b/js/featured-media.min.js index 6fed0a6f7..16bd391a2 100644 --- a/js/featured-media.min.js +++ b/js/featured-media.min.js @@ -1 +1 @@ -window.console||(console={log:function(){}});var LFM=_.extend(LFM||{},{Utils:{},Views:{},Models:{},Controller:{},instances:{},fetching:!1});!function(){var a,b=jQuery,c=_wpMediaViewsL10n;"ontouchend"in document;LFM.Models.featuredMediaModel=a=Backbone.Model.extend({initialize:function(){Backbone.Model.prototype.initialize.apply(this,arguments),this.set({id:LFM.Utils.getPostId()})},url:ajaxurl,sync:function(a,b,c){var d;d="create"==a||"update"==a?b.toJSON():{},d=_.extend(d,{id:LFM.Utils.getPostId()});var e;if("read"==a)e="largo_featured_media_read";else{if("update"!=a&&"create"!=a)return!1;e="largo_featured_media_save"}var f=c.success,g=c.error;LFM.Utils.doAjax(e,d,f,g)}}),LFM.Views.featuredMediaFrame=wp.media.view.MediaFrame.Select.extend({initialize:function(){_.defaults(this.options,{multiple:!0,editing:!1,state:"image",metadata:{},className:"featured-media-modal",model:new a,states:["embed-code","video","image","gallery"]}),wp.media.view.MediaFrame.Select.prototype.initialize.apply(this,arguments),this.createIframeStates(),this.$el.addClass(this.options.className)},createStates:function(){var a=this.options,b=[new wp.media.controller.Embed({title:largo_featured_media_vars.embed_title,id:"embed-code",content:"embed",priority:0})],c=[new wp.media.controller.Embed({title:largo_featured_media_vars.video_title,id:"video",content:"video",priority:10})],d=[new wp.media.controller.FeaturedImage({title:largo_featured_media_vars.image_title,priority:20,id:"image"}),new wp.media.controller.EditImage({model:a.editImage})],e=[new wp.media.controller.Library({id:"gallery",title:largo_featured_media_vars.gallery_title,priority:30,toolbar:"main-gallery",filterable:"uploaded",multiple:"add",editable:!1,library:wp.media.query(_.defaults({type:"image"},a.library))}),new wp.media.controller.GalleryEdit({library:a.selection,editing:a.editing,menu:"gallery"}),new wp.media.controller.GalleryAdd];_.indexOf(a.states,"embed-code")>=0&&this.states.add(b),_.indexOf(a.states,"video")>=0&&this.states.add(c),_.indexOf(a.states,"image")>=0&&this.states.add(d),_.indexOf(a.states,"gallery")>=0&&this.states.add(e),LFM.has_featured_media&&this.states.add([new LFM.Controller.removeFeaturedMedia])},bindHandlers:function(){var a;wp.media.view.MediaFrame.Select.prototype.bindHandlers.apply(this,arguments),this.on("menu:create:gallery",this.createMenu,this),this.on("toolbar:create:main-gallery",this.createToolbar,this),this.on("toolbar:create:featured-image",this.featuredImageToolbar,this),this.on("toolbar:create:main-embed",this.mainEmbedToolbar,this),a={menu:{default:"mainMenu",gallery:"galleryMenu"},content:{embed:"embedContent",video:"embedVideo","edit-image":"editImageContent","edit-selection":"editSelectionContent",remove:"removeFeaturedMedia"},toolbar:{"main-gallery":"mainGalleryToolbar","gallery-edit":"galleryEditToolbar","gallery-add":"galleryAddToolbar","remove-featured":"removeFeaturedToolbar"}},_.each(a,function(a,b){_.each(a,function(a,c){this.on(b+":render:"+c,this[a],this)},this)},this)},mainMenu:function(a){a.set({"library-separator":new wp.media.View({className:"separator",priority:100})})},removeFeaturedMedia:function(){var a=new LFM.Views.removeFeaturedView({controller:this,model:this.state()});this.content.set(a)},galleryMenu:function(a){var b=this;a.set({cancel:{text:c.cancelGalleryTitle,priority:20,click:function(){b.setState(b.state("gallery")),this.controller.modal.focusManager.focus()}},separateCancel:new wp.media.View({className:"separator",priority:40})})},embedVideo:function(){var a=new LFM.Views.featuredVideoView({controller:this,model:this.state()});this.content.set(a)},embedContent:function(){var a=new LFM.Views.featuredEmbedCodeView({controller:this,model:this.state()}).render();this.content.set(a)},editSelectionContent:function(){var a,b=this.state(),d=b.get("selection");a=new wp.media.view.AttachmentsBrowser({controller:this,collection:d,selection:d,model:b,sortable:!0,search:!1,dragInfo:!0,AttachmentView:wp.media.view.Attachment.EditSelection}).render(),a.toolbar.set("backToLibrary",{text:c.returnToLibrary,priority:-100,click:function(){this.controller.content.mode("browse")}}),this.content.set(a)},editImageContent:function(){var a=this.state().get("image"),b=new wp.media.view.EditImage({model:a,controller:this}).render();this.content.set(b),b.loadEditor()},selectionStatusToolbar:function(a){var b=this.state().get("editable");a.set("selection",new wp.media.view.Selection({controller:this,collection:this.state().get("selection"),priority:-40,editable:b&&function(){this.controller.content.mode("edit-selection")}}).render())},mainGalleryToolbar:function(a){var b=this;this.selectionStatusToolbar(a),a.set("gallery",{style:"primary",text:c.createNewGallery,priority:60,requires:{selection:!0},click:function(){var a=b.state().get("selection"),c=b.state("gallery-edit"),d=a.where({type:"image"});c.set("library",new wp.media.model.Selection(d,{props:a.props.toJSON(),multiple:!0})),this.controller.setState("gallery-edit"),this.controller.modal.focusManager.focus()}})},featuredImageToolbar:function(a){a.view=new LFM.Views.featuredImageToolbar({controller:this})},mainEmbedToolbar:function(a){a.view=new LFM.Views.defaultToolbar({controller:this})},galleryEditToolbar:function(){this.toolbar.set(new LFM.Views.defaultToolbar({controller:this}))},galleryAddToolbar:function(){this.toolbar.set(new wp.media.view.Toolbar({controller:this,items:{insert:{style:"primary",text:c.addToGallery,priority:80,requires:{selection:!0},click:function(){var a=this.controller,b=a.state(),c=a.state("gallery-edit");c.get("library").add(b.get("selection").models),b.trigger("reset"),a.setState("gallery-edit")}}}}))},removeFeaturedToolbar:function(){this.toolbar.set(new LFM.Views.removeFeaturedToolbar({controller:this}))}}),LFM.Views.featuredBaseView=wp.media.View.extend({className:"featured-media-view"}),LFM.Views.featuredEmbeddableView=LFM.Views.featuredBaseView.extend({attachments:new wp.media.model.Attachments,initialize:function(){LFM.Views.featuredBaseView.prototype.initialize.apply(this,arguments);var a=this.controller.model;return this.controller.state().id===a.get("type")&&"undefined"!=typeof a.get("attachment_data")||this.createUploader(),this},render:function(){LFM.Views.featuredBaseView.prototype.render.apply(this,arguments);var a=this.controller.model;if(this.controller.state().id==a.get("type")&&"undefined"!=typeof a.get("attachment_data")){var b=new wp.media.model.Attachment(a.get("attachment_data"));this.updateThumbnail(b)}return this},createUploader:function(){this.attachments.reset([]),this.attachments.observe(wp.Uploader.queue),this.attachments.on("change:uploading",this.uploadProgress.bind(this)),this.on("attachmentUploaded",this.attachmentUploaded.bind(this));var a=new wp.media.view.UploaderInline({controller:this.controller,status:!0,postId:null});this.views.add("#embed-thumb",a)},attachmentUploaded:function(){var a=this.attachments.first();this.updateThumbnail(a),this.off("attachmentUploaded"),this.attachments.off(),this.attachments.unobserve(wp.Uploader.queue)},updateThumbnail:function(a){var b=this;this.thumbnail=new LFM.Views.featuredThumbnail({el:this.$el.find("#embed-thumb"),model:a}).render(),this.thumbnail.on("remove",function(){b.createUploader(),b.thumbnail.off()}),this.attachments.unobserve(wp.Uploader.queue)},uploadProgress:function(){0==this.attachments.first().get("uploading")&&this.trigger("attachmentUploaded")}}),LFM.Views.featuredEmbedCodeView=LFM.Views.featuredEmbeddableView.extend({id:"media-editor-embed-code",template:wp.media.template("featured-embed-code")}),LFM.Views.featuredThumbnail=LFM.Views.featuredBaseView.extend({events:{"click a.remove-thumb":"removeThumb"},template:wp.media.template("featured-thumb"),removeThumb:function(a){var c=b(a.currentTarget);c.parent().remove(),this.trigger("remove")}}),LFM.Views.featuredVideoView=LFM.Views.featuredEmbeddableView.extend({events:{"paste input.url":"fetchVideo","keypress input.url":"fetchVideo"},template:wp.media.template("featured-video"),fetchVideo:function(a){var c=this;if(error=c.$el.find("p.error"),error.html(""),allowedKeyCodes=[86,91,17],allowedLastKeys=[null,91,17],!((a.keyCode in allowedKeyCodes||this.lastKey in allowedLastKeys)&&"paste"!=a.type)){"undefined"!=typeof this.kp&&clearTimeout(this.kp);var d=b('input[name="url"]'),e=/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;d.on("input propertychange",function(){c.kp=setTimeout(function(){var a=d.val();e.test(a)?c.fetchMeta(a):error.html(largo_featured_media_vars.error_invalid_url)},100)})}this.kp=a.keyCode},fetchMeta:function(a){var b=this;success=function(a){var c=b.$el.find("p.error");c.html(""),a.embed?b.$el.find("textarea").html(a.embed):c.html(largo_featured_media_vars.error_invalid_url),a.title&&b.$el.find('[name="title"]').val(a.title),a.author_name&&b.$el.find('[name="credit"]').val(a.author_name),b.$el.find('[name="attachment"]').length<1&&b.updateThumbnail(new Backbone.Model(a)),b.hideSpinner()},failure=function(){console.log(largo_featured_media_vars.error_occurred)},this.showSpinner(),LFM.Utils.doAjax("largo_fetch_video_oembed",{action:"largo_fetch_video_oembed",url:a},success,failure)},showSpinner:function(){this.$el.find(".spinner").removeAttr("style")},hideSpinner:function(){this.$el.find(".spinner").css({display:"none"})}}),LFM.Views.defaultToolbar=wp.media.view.Toolbar.extend({saving:!1,initialize:function(){_.defaults(this.options,{items:{submit:{style:"primary",priority:10,requires:!1,text:"Set as featured",click:this.save.bind(this)}}}),wp.media.view.Toolbar.prototype.initialize.apply(this,arguments),this.primary.$el.prepend('')},save:function(){if(!this.saving){var c=this,d=this.controller,e=d.state(),f={};if("image"==e.get("id")){f.type="image";var g=e.get("selection"),h=g.map(function(a){return a.get("id")});h.length>0&&(wp.media.view.settings.post.featuredImageId=h[0],f.attachment=h[0])}else if("gallery-edit"==e.get("id")){f.type="gallery";var i=e.get("library"),h=i.map(function(a){return a.get("id")});h.length>0&&(f.gallery=h)}else f=LFM.Utils.formArrayToObj(d.$el.find("form").serializeArray());this.saving=!0,this.showSpinner(),d.model=new a(f),d.model.save({},{success:function(){c.saving=!1,c.hideSpinner(),b("#set-featured-media-button").html("Edit Featured Media"),LFM.has_featured_media=!0,LFM.instances.modal.close()}})}},showSpinner:function(){this.$el.find(".spinner").removeAttr("style")},hideSpinner:function(){this.$el.find(".spinner").css({display:"none"})}}),LFM.Views.featuredImageToolbar=LFM.Views.defaultToolbar.extend({saving:!1,initialize:function(){_.defaults(this.options,{items:{submit:{style:"primary",priority:10,requires:{selection:!0},text:largo_featured_media_vars.set_featured,click:this.save.bind(this)}}}),LFM.Views.defaultToolbar.prototype.initialize.apply(this,arguments)},save:function(){if(!this.saving){var a=this,b=(this.controller.state(),LFM.Utils.formArrayToObj(this.secondary.$el.find("form").serializeArray()));b.id=LFM.Utils.getPostId(),"undefined"==typeof b["featured-image-display"]?LFM.featured_image_display="":LFM.featured_image_display="on",this.showSpinner(),LFM.Utils.doAjax("largo_save_featured_image_display",b,function(){LFM.Views.defaultToolbar.prototype.save.apply(a,arguments)})}}}),LFM.Views.removeFeaturedToolbar=wp.media.view.Toolbar.extend({initialize:function(){_.defaults(this.options,{items:{submit:{style:"primary",priority:10,requires:!1,text:largo_featured_media_vars.confirm_remove_featured,click:this.clearFeatured.bind(this)}}}),wp.media.view.Toolbar.prototype.initialize.apply(this,arguments),this.primary.$el.prepend('')},clearFeatured:function(){var c=this,d=this.controller;this.showSpinner(),d.model=new a,d.model.save({},{success:function(){c.hideSpinner(),b("#set-featured-media-button").text("Set Featured Media"),LFM.instances.modal.close(),LFM.has_featured_media=!1,wp.media.view.settings.post.featuredImageId=-1}})},showSpinner:function(){this.$el.find(".spinner").removeAttr("style")},hideSpinner:function(){this.$el.find(".spinner").css({display:"none"})}}),LFM.Views.removeFeaturedView=wp.media.View.extend({className:"featured-remove-featured-confirm",template:wp.media.template("featured-remove-featured")}),LFM.Utils.formArrayToObj=function(a){var b={};return _.each(a,function(a){b[a.name]=a.value}),b},LFM.Utils.doAjax=function(a,c,d,e){var f=JSON.stringify(c);params={url:ajaxurl,type:"POST",data:{action:a,data:f},dataType:"json",success:function(a,b,c){d&&d(a,b,c)},error:function(a,b,c){e&&e(a,b,c)}},b.ajax(params)},LFM.Utils.getPostId=function(){return Number(b("#post_ID").val())},LFM.Controller.removeFeaturedMedia=wp.media.controller.State.extend({defaults:{id:"remove",title:largo_featured_media_vars.remove_featured_title,content:"remove",menu:"default",toolbar:"remove-featured",priority:120,type:"link"},initialize:function(a){this.props=new Backbone.Model(this.metadata||{url:""})}}),b(document).ready(function(){b(".set-featured-media").click(function(){if(!LFM.fetching){var c=new a,d=b("#wp-content-media-buttons .spinner");return LFM.fetching=!0,d.show(),c.fetch({success:function(a){function e(a,b){for(var c=[],d=0;d=0&&this.states.add(b),_.indexOf(a.states,"gallery")>=0&&this.states.add(c),_.indexOf(a.states,"video")>=0&&this.states.add(d),_.indexOf(a.states,"embed-code")>=0&&this.states.add(e),LFM.has_featured_media&&this.states.add([new LFM.Controller.removeFeaturedMedia])},bindHandlers:function(){var a;wp.media.view.MediaFrame.Select.prototype.bindHandlers.apply(this,arguments),this.on("menu:create:gallery",this.createMenu,this),this.on("toolbar:create:main-gallery",this.createToolbar,this),this.on("toolbar:create:featured-image",this.featuredImageToolbar,this),this.on("toolbar:create:main-embed",this.mainEmbedToolbar,this),a={menu:{default:"mainMenu",gallery:"galleryMenu"},content:{embed:"embedContent",video:"embedVideo","edit-image":"editImageContent","edit-selection":"editSelectionContent",remove:"removeFeaturedMedia"},toolbar:{"main-gallery":"mainGalleryToolbar","gallery-edit":"galleryEditToolbar","gallery-add":"galleryAddToolbar","remove-featured":"removeFeaturedToolbar"}},_.each(a,function(a,b){_.each(a,function(a,c){this.on(b+":render:"+c,this[a],this)},this)},this)},mainMenu:function(a){a.set({"library-separator":new wp.media.View({className:"separator",priority:100})})},removeFeaturedMedia:function(){var a=new LFM.Views.removeFeaturedView({controller:this,model:this.state()});this.content.set(a)},galleryMenu:function(a){var b=this;a.set({cancel:{text:c.cancelGalleryTitle,priority:20,click:function(){b.setState(b.state("gallery")),this.controller.modal.focusManager.focus()}},separateCancel:new wp.media.View({className:"separator",priority:40})})},embedVideo:function(){var a=new LFM.Views.featuredVideoView({controller:this,model:this.state()});this.content.set(a)},embedContent:function(){var a=new LFM.Views.featuredEmbedCodeView({controller:this,model:this.state()}).render();this.content.set(a)},editSelectionContent:function(){var a,b=this.state(),d=b.get("selection");a=new wp.media.view.AttachmentsBrowser({controller:this,collection:d,selection:d,model:b,sortable:!0,search:!1,dragInfo:!0,AttachmentView:wp.media.view.Attachment.EditSelection}).render(),a.toolbar.set("backToLibrary",{text:c.returnToLibrary,priority:-100,click:function(){this.controller.content.mode("browse")}}),this.content.set(a)},editImageContent:function(){var a=this.state().get("image"),b=new wp.media.view.EditImage({model:a,controller:this}).render();this.content.set(b),b.loadEditor()},selectionStatusToolbar:function(a){var b=this.state().get("editable");a.set("selection",new wp.media.view.Selection({controller:this,collection:this.state().get("selection"),priority:-40,editable:b&&function(){this.controller.content.mode("edit-selection")}}).render())},mainGalleryToolbar:function(a){var b=this;this.selectionStatusToolbar(a),a.set("gallery",{style:"primary",text:c.createNewGallery,priority:60,requires:{selection:!0},click:function(){var a=b.state().get("selection"),c=b.state("gallery-edit"),d=a.where({type:"image"});c.set("library",new wp.media.model.Selection(d,{props:a.props.toJSON(),multiple:!0})),this.controller.setState("gallery-edit"),this.controller.modal.focusManager.focus()}})},featuredImageToolbar:function(a){a.view=new LFM.Views.featuredImageToolbar({controller:this})},mainEmbedToolbar:function(a){a.view=new LFM.Views.defaultToolbar({controller:this})},galleryEditToolbar:function(){this.toolbar.set(new LFM.Views.defaultToolbar({controller:this}))},galleryAddToolbar:function(){this.toolbar.set(new wp.media.view.Toolbar({controller:this,items:{insert:{style:"primary",text:c.addToGallery,priority:80,requires:{selection:!0},click:function(){var a=this.controller,b=a.state();a.state("gallery-edit").get("library").add(b.get("selection").models),b.trigger("reset"),a.setState("gallery-edit")}}}}))},removeFeaturedToolbar:function(){this.toolbar.set(new LFM.Views.removeFeaturedToolbar({controller:this}))}}),LFM.Views.featuredBaseView=wp.media.View.extend({className:"featured-media-view"}),LFM.Views.featuredEmbeddableView=LFM.Views.featuredBaseView.extend({attachments:new wp.media.model.Attachments,initialize:function(){LFM.Views.featuredBaseView.prototype.initialize.apply(this,arguments);var a=this.controller.model;return this.controller.state().id===a.get("type")&&void 0!==a.get("attachment_data")||this.createUploader(),this},render:function(){LFM.Views.featuredBaseView.prototype.render.apply(this,arguments);var a=this.controller.model;if(this.controller.state().id==a.get("type")&&void 0!==a.get("attachment_data")){var b=new wp.media.model.Attachment(a.get("attachment_data"));this.updateThumbnail(b)}return this},createUploader:function(){this.attachments.reset([]),this.attachments.observe(wp.Uploader.queue),this.attachments.on("change:uploading",this.uploadProgress.bind(this)),this.on("attachmentUploaded",this.attachmentUploaded.bind(this));var a=new wp.media.view.UploaderInline({controller:this.controller,status:!0,postId:null});this.views.add("#embed-thumb",a)},attachmentUploaded:function(){var a=this.attachments.first();this.updateThumbnail(a),this.off("attachmentUploaded"),this.attachments.off(),this.attachments.unobserve(wp.Uploader.queue)},updateThumbnail:function(a){var b=this;this.thumbnail=new LFM.Views.featuredThumbnail({el:this.$el.find("#embed-thumb"),model:a}).render(),this.thumbnail.on("remove",function(){b.createUploader(),b.thumbnail.off()}),this.attachments.unobserve(wp.Uploader.queue)},uploadProgress:function(){0==this.attachments.first().get("uploading")&&this.trigger("attachmentUploaded")}}),LFM.Views.featuredEmbedCodeView=LFM.Views.featuredEmbeddableView.extend({id:"media-editor-embed-code",template:wp.media.template("featured-embed-code")}),LFM.Views.featuredThumbnail=LFM.Views.featuredBaseView.extend({events:{"click a.remove-thumb":"removeThumb"},template:wp.media.template("featured-thumb"),removeThumb:function(a){b(a.currentTarget).parent().remove(),this.trigger("remove")}}),LFM.Views.featuredVideoView=LFM.Views.featuredEmbeddableView.extend({events:{"paste input.url":"fetchVideo","keypress input.url":"fetchVideo"},template:wp.media.template("featured-video"),fetchVideo:function(a){var c=this;if(error=c.$el.find("p.error"),error.html(""),allowedKeyCodes=[86,91,17],allowedLastKeys=[null,91,17],!((a.keyCode in allowedKeyCodes||this.lastKey in allowedLastKeys)&&"paste"!=a.type)){void 0!==this.kp&&clearTimeout(this.kp);var d=b('input[name="url"]'),e=/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;d.on("input propertychange",function(){c.kp=setTimeout(function(){var a=d.val();e.test(a)?c.fetchMeta(a):error.html(largo_featured_media_vars.error_invalid_url)},100)})}this.kp=a.keyCode},fetchMeta:function(a){var b=this;success=function(a){var c=b.$el.find("p.error");c.html(""),a.embed?b.$el.find("textarea").html(a.embed):c.html(largo_featured_media_vars.error_invalid_url),a.title&&b.$el.find('[name="title"]').val(a.title),a.author_name&&b.$el.find('[name="credit"]').val(a.author_name),b.$el.find('[name="attachment"]').length<1&&b.updateThumbnail(new Backbone.Model(a)),b.hideSpinner()},failure=function(){console.log(largo_featured_media_vars.error_occurred)},this.showSpinner(),LFM.Utils.doAjax("largo_fetch_video_oembed",{action:"largo_fetch_video_oembed",url:a},success,failure)},showSpinner:function(){this.$el.find(".spinner").removeAttr("style")},hideSpinner:function(){this.$el.find(".spinner").css({display:"none"})}}),LFM.Views.defaultToolbar=wp.media.view.Toolbar.extend({saving:!1,initialize:function(){_.defaults(this.options,{items:{submit:{style:"primary",priority:10,requires:!1,text:"Set as featured",click:this.save.bind(this)}}}),wp.media.view.Toolbar.prototype.initialize.apply(this,arguments),this.primary.$el.prepend('')},save:function(){if(!this.saving){var c=this,d=this.controller,e=d.state(),f={};if("image"==e.get("id")){f.type="image";var g=e.get("selection"),h=g.map(function(a){return a.get("id")});h.length>0&&(wp.media.view.settings.post.featuredImageId=h[0],f.attachment=h[0])}else if("gallery-edit"==e.get("id")){f.type="gallery";var i=e.get("library"),h=i.map(function(a){return a.get("id")});h.length>0&&(f.gallery=h)}else f=LFM.Utils.formArrayToObj(d.$el.find("form").serializeArray());this.saving=!0,this.showSpinner(),d.model=new a(f),d.model.save({},{success:function(){c.saving=!1,c.hideSpinner(),b("#set-featured-media-button").html("Edit Featured Media"),LFM.has_featured_media=!0,LFM.instances.modal.close()}})}},showSpinner:function(){this.$el.find(".spinner").removeAttr("style")},hideSpinner:function(){this.$el.find(".spinner").css({display:"none"})}}),LFM.Views.featuredImageToolbar=LFM.Views.defaultToolbar.extend({saving:!1,initialize:function(){_.defaults(this.options,{items:{submit:{style:"primary",priority:10,requires:{selection:!0},text:largo_featured_media_vars.set_featured,click:this.save.bind(this)}}}),LFM.Views.defaultToolbar.prototype.initialize.apply(this,arguments)},save:function(){if(!this.saving){var a=this,b=(this.controller.state(),LFM.Utils.formArrayToObj(this.secondary.$el.find("form").serializeArray()));b.id=LFM.Utils.getPostId(),void 0===b["featured-image-display"]?LFM.featured_image_display="":LFM.featured_image_display="on",this.showSpinner(),LFM.Utils.doAjax("largo_save_featured_image_display",b,function(){LFM.Views.defaultToolbar.prototype.save.apply(a,arguments)})}}}),LFM.Views.removeFeaturedToolbar=wp.media.view.Toolbar.extend({initialize:function(){_.defaults(this.options,{items:{submit:{style:"primary",priority:10,requires:!1,text:largo_featured_media_vars.confirm_remove_featured,click:this.clearFeatured.bind(this)}}}),wp.media.view.Toolbar.prototype.initialize.apply(this,arguments),this.primary.$el.prepend('')},clearFeatured:function(){var c=this,d=this.controller;this.showSpinner(),d.model=new a,d.model.save({},{success:function(){c.hideSpinner(),b("#set-featured-media-button").text("Set Featured Media"),LFM.instances.modal.close(),LFM.has_featured_media=!1,wp.media.view.settings.post.featuredImageId=-1}})},showSpinner:function(){this.$el.find(".spinner").removeAttr("style")},hideSpinner:function(){this.$el.find(".spinner").css({display:"none"})}}),LFM.Views.removeFeaturedView=wp.media.View.extend({className:"featured-remove-featured-confirm",template:wp.media.template("featured-remove-featured")}),LFM.Utils.formArrayToObj=function(a){var b={};return _.each(a,function(a){b[a.name]=a.value}),b},LFM.Utils.doAjax=function(a,c,d,e){var f=JSON.stringify(c);params={url:ajaxurl,type:"POST",data:{action:a,data:f},dataType:"json",success:function(a,b,c){d&&d(a,b,c)},error:function(a,b,c){e&&e(a,b,c)}},b.ajax(params)},LFM.Utils.getPostId=function(){return Number(b("#post_ID").val())},LFM.Controller.removeFeaturedMedia=wp.media.controller.State.extend({defaults:{id:"remove",title:largo_featured_media_vars.remove_featured_title,content:"remove",menu:"default",toolbar:"remove-featured",priority:120,type:"link"},initialize:function(a){this.props=new Backbone.Model(this.metadata||{url:""})}}),b(document).ready(function(){b(".set-featured-media").click(function(){if(!LFM.fetching){var c=new a,d=b("#wp-content-media-buttons .spinner");return LFM.fetching=!0,d.show(),c.fetch({success:function(a){function e(a,b){for(var c=[],d=0;d