website/wp-content/plugins/gravityforms/js/shortcode-ui.min.js

1 line
11 KiB
JavaScript

var GformShortcodeUI;!function(u){var a=window.GformShortcodeUI={models:{},collections:{},views:{},utils:{},strings:{}};a.models.ShortcodeAttribute=Backbone.Model.extend({defaults:{attr:"",label:"",type:"",section:"",description:"",default:"",value:""}}),a.models.ShortcodeAttributes=Backbone.Collection.extend({model:a.models.ShortcodeAttribute,clone:function(){return new this.constructor(_.map(this.models,function(t){return t.clone()}))}}),a.models.Shortcode=Backbone.Model.extend({defaults:{label:"",shortcode_tag:"",action_tag:"",attrs:a.models.ShortcodeAttributes},set:function(t,e){return void 0===t.attrs||t.attrs instanceof a.models.ShortcodeAttributes||(_.each(t.attrs,function(t){null!=t.default&&(t.value=t.default)}),t.attrs=new a.models.ShortcodeAttributes(t.attrs)),Backbone.Model.prototype.set.call(this,t,e)},toJSON:function(t){return void 0!==(t=Backbone.Model.prototype.toJSON.call(this,t)).attrs&&t.attrs instanceof a.models.ShortcodeAttributes&&(t.attrs=t.attrs.toJSON()),t},clone:function(){var t=Backbone.Model.prototype.clone.call(this);return t.set("attrs",t.get("attrs").clone()),t},formatShortcode:function(){var t,n,i=[];return this.get("attrs").each(function(t){var e=t.get("value"),o=t.get("type"),r=t.get("default");(!e||e.length<1)&&"checkbox"!=o||"checkbox"==o&&"true"!=r&&!e||("content"===t.get("attr")?n=t.get("value"):i.push(t.get("attr")+'="'+e+'"'))}),t="[{{ shortcode }} {{ attributes }}]",n&&0<n.length&&(t+="{{ content }}[/{{ shortcode }}]"),t=(t=(t=t.replace(/{{ shortcode }}/g,this.get("shortcode_tag"))).replace(/{{ attributes }}/g,i.join(" "))).replace(/{{ content }}/g,n)},validate:function(t){var e=[];return t.attrs.findWhere({attr:"id"}).get("value")||e.push({id:a.strings.pleaseSelectAForm}),e.length?e:null}}),a.collections.Shortcodes=Backbone.Collection.extend({model:a.models.Shortcode}),a.views.editShortcodeForm=wp.Backbone.View.extend({el:"#gform-shortcode-ui-container",template:wp.template("gf-shortcode-default-edit-form"),hasAdvancedValue:!1,events:{"click #gform-update-shortcode":"insertShortcode","click #gform-insert-shortcode":"insertShortcode","click #gform-cancel-shortcode":"cancelShortcode"},initialize:function(){_.bindAll(this,"beforeRender","render","afterRender");var e=this;this.render=_.wrap(this.render,function(t){return e.beforeRender(),t(),e.afterRender(),e}),this.model.get("attrs").each(function(t){switch(t.get("section")){case"required":e.views.add(".gf-edit-shortcode-form-required-attrs",new a.views.editAttributeField({model:t,parent:e}));break;case"standard":e.views.add(".gf-edit-shortcode-form-standard-attrs",new a.views.editAttributeField({model:t,parent:e}));break;default:e.views.add(".gf-edit-shortcode-form-advanced-attrs",new a.views.editAttributeField({model:t,parent:e})),e.hasAdvancedVal||(e.hasAdvancedVal=""!==t.get("value"))}}),this.listenTo(this.model,"change",this.render)},beforeRender:function(){},afterRender:function(){gform_initialize_tooltips(),u("#gform-insert-shortcode").toggle("insert"==this.options.viewMode),u("#gform-update-shortcode").toggle("insert"!=this.options.viewMode),u("#gf-edit-shortcode-form-advanced-attrs").toggle(this.hasAdvancedVal)},insertShortcode:function(t){this.model.isValid({validate:!0})?(send_to_editor(this.model.formatShortcode()),tb_remove(),this.dispose()):_.each(this.model.validationError,function(t){_.each(t,function(t,e){alert(t)})})},cancelShortcode:function(t){tb_remove(),this.dispose()},dispose:function(){this.remove(),u("#gform-shortcode-ui-wrap").append('<div id="gform-shortcode-ui-container"></div>')}}),a.views.editAttributeField=Backbone.View.extend({tagName:"div",initialize:function(t){this.parent=t.parent},events:{'keyup input[type="text"]':"updateValue","keyup textarea":"updateValue","change select":"updateValue","change #gf-shortcode-attr-action":"updateAction","change input[type=checkbox]":"updateCheckbox","change input[type=radio]":"updateValue","change input[type=email]":"updateValue","change input[type=number]":"updateValue","change input[type=date]":"updateValue","change input[type=url]":"updateValue"},render:function(){return this.template=wp.media.template("gf-shortcode-ui-field-"+this.model.get("type")),this.$el.html(this.template(this.model.toJSON()))},updateValue:function(t){var e=u(t.target);this.model.set("value",e.val())},updateCheckbox:function(t){var e=u(t.target).prop("checked");this.model.set("value",e)},updateAction:function(t){var e=u(t.target).val();this.model.set("value",e);var o=this.parent.model,r=a.shortcodes.findWhere({shortcode_tag:"gravityform",action_tag:e}),n=o.get("attrs");r.get("attrs").each(function(t){var e=t.get("attr"),o=n.findWhere({attr:e});if(void 0!==o&&e==o.get("attr")){var r=o.get("value");t.set("value",String(r))}}),u(this.parent.el).empty();var i=this.parent.options.viewMode;this.parent.dispose(),this.parent.model.set(r),(GformShortcodeUI=new a.views.editShortcodeForm({model:r,viewMode:i})).render()}}),a.utils.shortcodeViewConstructor={initialize:function(t){this.shortcodeModel=this.getShortcodeModel(this.shortcode)},getShortcodeModel:function(e){var t=void 0!==e.attrs.named.action?e.attrs.named.action:"",o=a.shortcodes.findWhere({action_tag:t});if(o){var r=o.clone();return r.get("attrs").each(function(t){t.get("attr")in e.attrs.named&&t.set("value",e.attrs.named[t.get("attr")]),"content"===t.get("attr")&&"content"in e&&t.set("value",e.content)}),r}},getContent:function(){return this.content||this.fetch(),this.content},fetch:function(){var e=this;if(!this.fetching){this.fetching=!0;var t,o=this.shortcodeModel.get("attrs").findWhere({attr:"id"}).get("value");t={action:"gf_do_shortcode",post_id:u("#post_ID").val(),form_id:o,shortcode:this.shortcodeModel.formatShortcode(),nonce:gfShortcodeUIData.previewNonce},u.post(ajaxurl,t).done(function(t){e.content=t}).fail(function(){e.content='<span class="gf_shortcode_ui_error">'+gfShortcodeUIData.strings.errorLoadingPreview+"</span>"}).always(function(){delete e.fetching,e.render()})}},setLoader:function(){this.setContent('<div class="loading-placeholder"><div class="dashicons dashicons-feedback"></div><div class="wpview-loading"><ins></ins></div></div>')},View:{overlay:!0,shortcodeHTML:!1,setContent:function(i,a){this.getNodes(function(t,e,o){var r="wrap"===a||"replace"===a?e:o,n=i;_.isString(n)&&(n=t.dom.createFragment(n)),"replace"===a?t.dom.replace(n,r):"remove"===a?(e.parentNode.insertBefore(n,e.nextSibling),u(e).remove()):(r.innerHTML="",r.appendChild(n))})},initialize:function(e){var t=void 0!==e.shortcode.attrs.named.action?e.shortcode.attrs.named.action:"",o=a.shortcodes.findWhere({action_tag:t});if(!o)return this.shortcodeHTML=decodeURIComponent(e.encodedText),void(this.shortcode=!1);var r=o.clone();r.get("attrs").each(function(t){t.get("attr")in e.shortcode.attrs.named&&t.set("value",e.shortcode.attrs.named[t.get("attr")]),"content"===t.get("attr")&&"content"in e.shortcode&&t.set("value",e.shortcode.content)}),this.shortcode=r},loadingPlaceholder:function(){return'<div class="loading-placeholder"><div class="dashicons dashicons-feedback"></div><div class="wpview-loading"><ins></ins></div></div>'},getEditors:function(e){var o=[];return _.each(tinymce.editors,function(t){t.plugins.wpview&&(e&&e(t),o.push(t))},this),o},getNodes:function(r){var n=[],t=this;return this.getEditors(function(o){u(o.getBody()).find('[data-wpview-text="'+t.encodedText+'"]').each(function(t,e){r&&r(o,e,u(e).find(".wpview-content").get(0)),n.push(e)})}),n},setIframes:function(h){var l=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;if(-1===h.indexOf("<script"))return this.shortcodeHTML=h,void this.render();this.getNodes(function(t,e,o){var r,n,i,a,d=t.dom,s="",c=t.getBody().className||"";o.innerHTML="";wp.mce.views.sandboxStyles?s=wp.mce.views.sandboxStyles:(tinymce.each(d.$('link[rel="stylesheet"]',t.getDoc().head),function(t){t.href&&-1===t.href.indexOf("skins/lightgray/content.min.css")&&-1===t.href.indexOf("skins/wordpress/wp-content.css")&&(s+=d.getOuterHTML(t)+"\n")}),wp.mce.views.sandboxStyles=s),setTimeout(function(){if(r=d.add(o,"iframe",{src:tinymce.Env.ie?'javascript:""':"",frameBorder:"0",id:"gf-shortcode-preview-"+(new Date).getTime(),allowTransparency:"true",scrolling:"no",class:"wpview-sandbox",style:{width:"100%",display:"block"}}),(n=r.contentWindow.document).open(),n.write('<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />'+s+'<style>html {background: transparent;padding: 0;margin: 0;}body#wpview-iframe-sandbox {background: transparent;padding: 1px 0 !important;margin: -1px 0 0 !important;}body#wpview-iframe-sandbox:before,body#wpview-iframe-sandbox:after {display: none;content: "";}</style></head><body id="wpview-iframe-sandbox" class="'+c+'">'+h+"</body></html>"),n.close(),a=function(){r.contentWindow&&u(r).height(u(n.body).height())},l)new l(_.debounce(function(){a()},100)).observe(n.body,{attributes:!0,childList:!0,subtree:!0});else for(i=1;i<6;i++)setTimeout(a,700*i);a(),t.on("wp-body-class-change",function(){n.body.className=t.getBody().className})},50)})},getHtml:function(){if(this.shortcode){var t;if(!1===this.shortcodeHTML){var e=this.shortcode.get("attrs").findWhere({attr:"id"}).get("value");t={action:"gf_do_shortcode",post_id:u("#post_ID").val(),form_id:e,shortcode:this.shortcode.formatShortcode(),nonce:gfShortcodeUIData.previewNonce},u.post(ajaxurl,t,u.proxy(this.setIframes,this))}return this.shortcodeHTML}this.setContent(this.shortcodeHTML,"remove")}},edit:function(t){var e;if("object"==typeof t&&(t=decodeURIComponent(jQuery(t).attr("data-wpview-text"))),e=wp.shortcode.next("gravityform",t)){var o=e.shortcode.attrs.named.action?e.shortcode.attrs.named.action:"",r=a.shortcodes.findWhere({shortcode_tag:e.shortcode.tag,action_tag:o});if(!r)return;var n=r.clone();_.each(e.shortcode.attrs.named,function(t,e){attr=n.get("attrs").findWhere({attr:e}),attr&&attr.set("value",t)});var i=n.get("attrs").findWhere({attr:"id"}).get("value");u("#add_form_id").val(i),(GformShortcodeUI=new a.views.editShortcodeForm({model:n,viewMode:"update"})).render(),u("#gform-insert-shortcode").hide(),u("#gform-update-shortcode").show(),tb_show("Edit Gravity Form","#TB_inline?inlineId=select_gravity_form&width=753&height=686","")}}},u(document).ready(function(){a.strings=gfShortcodeUIData.strings,a.shortcodes=new a.collections.Shortcodes(gfShortcodeUIData.shortcodes),gfShortcodeUIData.previewDisabled||void 0===wp.mce||wp.mce.views.register("gravityform",u.extend(!0,{},a.utils.shortcodeViewConstructor)),u(document).on("click",".gform_media_link",function(){a.shortcodes=new a.collections.Shortcodes(gfShortcodeUIData.shortcodes);var t=a.shortcodes.findWhere({shortcode_tag:"gravityform",action_tag:""});(GformShortcodeUI=new a.views.editShortcodeForm({model:t,viewMode:"insert"})).render(),tb_show("Insert Gravity Form","#TB_inline?inlineId=select_gravity_form&width=753&height=686","")})})}((window.gfShortcodeUI=window.gfShortcodeUI||{},jQuery));