You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 lines
15 KiB
1 lines
15 KiB
var EXPO=EXPO||{};EXPO.company?console.warn("WARNING: EXPO.company is already defined!"):EXPO.company=function(){function t(t){this.opt=t,this.$inst=$("#"+t.id),this.value=this.$inst.text}function e(){}var a={};a.opt={updateFormClass:"update-profile-form"},a.lang={};var s,i=EXPO.common;t.prototype={refresh:function(t){this.value=t,this.$inst.text(this.value)}},e.prototype={submit:function(t){var e=this;t||(t=new FormData(this.$form[0])),$.ajax({type:"POST",url:e.ajaxPath,data:t,processData:!1,contentType:!1,success:function(t){e.afterSubmit(t),t.success&&EXPO.company.rating.refresh(t.rating),$("#wait-ajax").fadeOut()}})},beforeSubmit:function(t,e){var a=this.beforeSubmitHandler,s=t;"string"!=typeof s?this.formData=s:this.formData=JSON.parse('{"'+decodeURI(s).replace(/"/g,'\\"').replace(/&/g,'","').replace(/=/g,'":"')+'"}'),this.formId=e,"function"==typeof a?(this.formData=a(t,e),this.submit(t),$("#wait-ajax").show()):(this.submit(t),$("#wait-ajax").show())},afterSubmit:function(t){var e=this.afterSubmitHandler;if("function"!=typeof e)throw{name:"Error",message:" handler function for processing response after form submit not defined, please define it!"};e(t)},refreshHTML:function(){var t=$.trim(this.$staticValue.text()).replace(/[^0-9a-zA-Zа-я\s]/g,"").replace(/(\d)\s/,"").replace(/\s+/g,"");(""==$.trim(this.$staticValue.text())||"NoneNone"==t)&&this.$wrapper.length&&this.refrashable?(this.$editable.addClass("hidden"),this.$editable.removeClass(EXPO.company.opt.formCurrentClass),this.$description.removeClass("hidden")):this.$wrapper.length&&this.refrashable&&(this.$editable.removeClass("hidden"),this.$description.addClass("hidden"))}},e.factory=function(t,a){var s,i=t;if("function"!=typeof e[i])throw{name:"Error",message:i+"doesen't exist"};return"function"!=typeof e[i].prototype.beforeSubmit&&(e[i].prototype=new e),s=new e[i](a)},e.name_form=function(t){var e=this;this.afterSubmitHandler=function(t){t.success?($("#static-name-value").text($("#id_name").val()),$(".p-editable").removeClass("pe-current"),e.refreshHTML()):this.$editable.addClass("err")},this.ajaxPath=t},e.spec_form=function(t){var e=this;this.afterSubmitHandler=function(t){t.success?($("#static-spec-value").html(i.nl2br($("#id_specialization").val())),$(".p-editable").removeClass("pe-current"),e.refreshHTML()):this.$editable.addClass("err")},this.ajaxPath=t},e.address_form=function(t){var e=this;this.afterSubmitHandler=function(t){t.success?($("#static-address-value").text($("#id_address_inf").val()),$(".p-editable").removeClass("pe-current"),e.refreshHTML()):this.$editable.addClass("err")},this.ajaxPath=t},e.social_form=function(t){var e,a,s,i,r,o=this;this.afterSubmitHandler=function(t){if(t.success){for(r in o.formData)s=$("#id_"+r),s.parent(".required").removeClass("err"),""!=$.trim(o.formData[r])&&s.length?(e=$("#img-"+r),e.length&&(i=$.trim(s.val()),e.parent("a").length?(e.parent("a").attr("href",i),a=e.attr("src").replace("_hover",""),e.attr("src",a)):(a=e.attr("src").replace("_hover",""),e.attr("src",a),e.wrap('<a href="'+i+'" target="_blank"></a>')))):s.length&&(e=$("#img-"+r),e.parent("a").length&&(a=e.attr("src").replace(".png","_hover.png"),e.attr("src",a),e.unwrap()));$(".p-editable").removeClass("pe-current")}else for(r in t.errors)s=$("#id_"+r),s.parent(".required").addClass("err"),s.blur(function(){s.parent(".required").removeClass("err"),o.$form.submit()});o.refreshHTML()},this.beforeSubmitHandler=function(t,e){var a=$("#"+e).serialize();return JSON.parse('{"'+decodeURI(a).replace(/"/g,'\\"').replace(/&/g,'","').replace(/=/g,'":"')+'"}')},this.refreshHTML=function(){console.log(this);var t=!0;$("input:text",this.$form).each(function(){""==$.trim($(this).val())&&(t=!1)}),t?($(".full-complete",this.$description).removeClass("hidden"),$(".not-complete",this.$description).addClass("hidden")):($(".full-complete",this.$description).addClass("hidden"),$(".not-complete",this.$description).removeClass("hidden"))},this.ajaxPath=t},e.phone_form=function(t){var e=this;this.afterSubmitHandler=function(t){t.success&&($("#static-phone-value").text($("#id_phone")[0].value),$(".p-editable").removeClass("pe-current"),e.refreshHTML())},this.ajaxPath=t},e.email_form=function(t){var e,a=this;this.afterSubmitHandler=function(t){t.success?(e=$("#id_email").val(),$("#static-email-value").attr("href","mailto:"+e).text(e),$(".p-editable").removeClass("pe-current"),a.refreshHTML()):this.$editable.addClass("err")},this.ajaxPath=t},e.web_page_form=function(t){var e,a=this;this.afterSubmitHandler=function(t){t.success&&(e=$("#id_web_page").val(),$("#static-web-page-value").attr("href",e).text(e),$(".p-editable").removeClass("pe-current"),a.refreshHTML())},this.ajaxPath=t},e.home_form=function(t){var e=this;this.afterSubmitHandler=function(t){if(t.success){var a=$("#s2id_id_country").find(".select2-chosen").text(),s=$("#s2id_id_city").find(".select2-chosen").text();$("#static-home-country").text(a),$("#static-home-city").text(s),$(".p-editable").removeClass("pe-current"),e.refreshHTML()}},this.ajaxPath=t},e.found_form=function(t){var e,a,s=this;this.afterSubmitHandler=function(t){if(t.success){var i=$(".full-complete",this.$staticValue);a=$("#id_foundation"),e=$.trim(a.val()),i.text(e),$(".p-editable").removeClass("pe-current"),s.refreshHTML()}},this.ajaxPath=t,this.refreshHTML=function(){var t=$(".full-complete",this.$staticValue),e=$(".not-complete",this.$staticValue);return""==$.trim(t.text())?(t.addClass("hidden"),e.removeClass("hidden")):(t.removeClass("hidden"),e.addClass("hidden")),!1}},e.staff_form=function(t){var e,a,s=this;this.afterSubmitHandler=function(t){if(t.success){var i=$(".full-complete",this.$staticValue);a=$("#id_staff_number"),e=$.trim(a.val()),i.text(e),$(".p-editable").removeClass("pe-current"),s.refreshHTML()}},this.ajaxPath=t,this.refreshHTML=function(){var t=$(".full-complete",this.$staticValue),e=$(".not-complete",this.$staticValue);return""==$.trim(t.text())?(t.addClass("hidden"),e.removeClass("hidden")):(t.removeClass("hidden"),e.addClass("hidden")),!1}},e.description_form=function(t){var e,a=$("#id_description"),s=this;this.afterSubmitHandler=function(t){if(t.success){var r=$(".full-complete",this.$staticValue);e=$.trim(a.val()),r.html(i.nl2br(e)),$(".p-editable").removeClass("pe-current"),s.refreshHTML()}},this.ajaxPath=t,this.refreshHTML=function(){var t=$(".full-complete",this.$staticValue),e=$(".not-complete",this.$staticValue);return""==$.trim(t.text())?(t.addClass("hidden"),e.removeClass("hidden")):(t.removeClass("hidden"),e.addClass("hidden")),!1}},e.avatar_form=function(t){var e,a=this,s=$("#id_avatar"),i=($("#pic-edit-photo"),$("#pick-block")),r=$("img",i);this.afterSubmitHandler=function(t){t.success&&r.length&&(r.attr("src",t.url),a.refreshHTML())},this.beforeSubmitHandsler=function(t){"string"!=typeof t?(a.submit(t),$("#wait-ajax").show()):(e=$("#"+a.formId),e.off("submit"),e.trigger("submit"))},s.on("change",function(){$(this).parents("form").submit()}),this.ajaxPath=t,this.refreshHTML=function(){$.trim(this.$image.attr("src"))==this.noImageSrc?(this.$editable.addClass("hidden"),this.$description.removeClass("hidden")):(this.$editable.removeClass("hidden"),this.$description.addClass("hidden"))}},e.tag_form=function(t){var e=this;this.afterSubmitHandler=function(t){var a="<span>, </span>";if(t.success){this.$staticValue.html("");for(var s=0;s<t.tags.length;s++)this.$staticValue.append($("<a href='"+t.tags[s].url+"' target='_blank'>"+t.tags[s].text+"</a>")),s!=t.tags.length-1&&this.$staticValue.append($(a));e.refreshHTML()}},this.ajaxPath=t,this.$input=$("#id_tag"),this.refreshHTML=function(){this.$label=$(".label",this.$editable),this.$initial=$(".initial-position",this.$wrapper),this.formId=this.$form.attr("id"),""==$.trim(this.$input.val())?(this.$form.detach().appendTo(this.$editable),this.$label.detach().appendTo(this.$editable),this.$initial.removeClass("hidden"),this.$description.addClass("hidden")):($("#"+this.formId,this.$editable).length<0&&(this.$form.detach().appendTo(this.$editable),this.$label.detach().appendTo(this.$editable)),this.$editable.addClass("hidden"),this.$initial.addClass("hidden"),this.$description.removeClass("hidden"))}};var r=function(t){this.opt=t;var e=this,a=(this.opt.canvasId,function(){var t=document.getElementById(e.opt.canvasId),a=document.getElementById(e.opt.autocompleteId);e.mapOptions={zoom:e.opt.zoom.country},e.map=new google.maps.Map(t,e.mapOptions),e.geocoder=new google.maps.Geocoder,e.refresh();var s=new google.maps.places.Autocomplete(a);s.bindTo("bounds",e.map),google.maps.event.addListener(s,"place_changed",function(){if(!e.status.visible){var t=s.getPlace();if(!t.geometry)return;t.geometry.viewport?e.map.fitBounds(t.geometry.viewport):(e.map.setCenter(t.geometry.location),e.map.setZoom(14)),e.marker.setPosition(t.geometry.location),EXPO.company.forms.address_form.submit()}})});google.maps.event.addDomListener(window,"load",a),this.$wrapper=$(document.getElementById(this.opt.blockId)),this.$toggle=$(".map-toggle",this.$wrapper),this.$container=$(".map-wrap",this.$wrapper),this.status={visible:!1},this.$toggle.on("click",function(){return $(this).hasClass("active")?e.hideMap():(e.showMap(),google.maps.event.trigger(e.map,"resize"),e.refresh()),!1})};return r.prototype={showMap:function(){this.$toggle.addClass("active").children(".label").text(this.$toggle.attr("data-hide-text")),this.status.visible=!0,this.$container.removeClass("hidden")},hideMap:function(){this.$toggle.removeClass("active").children(".label").text(this.$toggle.attr("data-show-text")),this.status.visible=!1,this.$container.addClass("hidden")},refresh:function(){var t,e=this,a=$("#id_country option:selected").text(),s=$(document.getElementById("id_city")).attr("data-init-text"),i=$.trim(document.getElementById(e.opt.autocompleteId).value);""!=$.trim(a)?(this.status.visible=!0,this.$toggle.removeClass("hidden"),""==$.trim(s)?(t=a,e.map.set("zoom",e.opt.zoom.country)):""==$.trim(i)?(t=a+" "+s,e.map.set("zoom",e.opt.zoom.city)):(t=a+" "+s+" "+i,e.map.set("zoom",e.opt.zoom.street)),this.geocoder.geocode({address:t},function(t,a){a==google.maps.GeocoderStatus.OK?(e.map.setCenter(t[0].geometry.location),e.marker?e.marker.set("position",t[0].geometry.location):e.marker=new google.maps.Marker({map:e.map,position:t[0].geometry.location})):console.log("!ERORR: Geocode was not successful for the following reason: "+a)})):(this.$toggle.addClass("hidden"),this.status.visible=!1)}},a.init=function(a){$.extend(this.lang,a.lang),a.lang=null,$.extend(this.opt,a);var o=this,n=function(t){var e=$.masksSort($.masksLoad("/static/client/js/plugins/inputmask/phone-codes.json"),["#"],/[0-9]|#/,"mask"),a={inputmask:{definitions:{"#":{validator:"[0-9]",cardinality:1}},showMaskOnHover:!1,insertMode:!1,autoUnmask:!0},match:/[0-9]/,insertMode:!1,replace:"#",list:e,listKey:"mask",onMaskChange:function(){$(this).attr("placeholder","+_(___)___-__-__")}},s="#"+t;$(s).inputmasks(a)};this.rating=new t(this.opt.rating),this.forms={},$(function(){var t=$("."+o.opt.editableClass),a=$("#"+o.opt.selectBox[0].id),l=$("#"+o.opt.selectBox[1].id),d=$("#"+o.opt.selectBox[3].id);$("#id_address_inf");s=$("#wait-ajax").css({"z-index":"8012"}),o.map=new r(o.opt.map),d.select2({width:"element",placeholder:o.opt.selectBox[3].placeHolder,maximumSelectionSize:3}),d.on("change",function(){var t=$("#theme_form"),e=t.attr("action"),a=t.serialize();i.postRequest(a,e)}),a.select2({width:"element",placeholder:o.opt.selectBox[0].placeholder}),a.on("change",function(){l.val(0),l.select2("val","")}),l.on("change",function(){var t=$(this).closest(".epf-field").find(".select2-chosen").text();$(this).attr("data-init-text",t),o.forms.address_form.$form.find("input:text").val(""),o.forms.address_form.$staticValue.text(""),o.forms.address_form.refreshHTML(),o.forms.home_form.submit(),o.forms.address_form.submit(),o.map.refresh()}),a.on("change",function(){(0!=$(this).val()||""!=$(this).val())&&l.prop("disabled",!1)}),(0==a.val()||""==a.val())&&l.prop("disabled",!0),l.select2({placeholder:o.opt.selectBox[1].placeHolder,width:"element",ajax:{url:o.opt.selectBox[1].path,dataType:"json",quietMillis:200,data:function(t,e,a){var a=$("#"+o.opt.selectBox[0].id).val();return{term:t,page:e,country:a}},results:function(t){var e=[];return $.each(t,function(t,a){e.push({id:a.id,text:a.label})}),{results:e}}},initSelection:function(t,e){var a=$.trim($(t).val()),s=$(t).attr("data-init-text");e({id:a,text:s})}}),$("#"+o.opt.selectBox[2].id).val("0"),$("#"+o.opt.selectBox[2].id).select2({placeholder:o.opt.selectBox[2].placeholder,width:"368px",multiple:!0,maximumSelectionSize:5,ajax:{url:o.opt.selectBox[2].path,dataType:"json",quietMillis:200,data:function(t,e,a){var s=$("#theme-inf").attr("data-theme");return s=s.split(","),s.pop(),{term:t,page:e,themes:s}},results:function(t){var e=[];return $.each(t,function(t,a){e.push({id:a.id,text:a.label})}),{results:e}}},initSelection:function(t,e){var a;t.val(""),""!=$.trim(t.attr("data-predifined"))&&"[]"!=$.trim(t.attr("data-predifined"))?(a=JSON.parse(t.attr("data-predifined")),e(a)):$("#tag_form .select2-input").width(336).addClass("select2-default").val(o.opt.selectBox[2].placeholder)}}),$("#"+o.opt.selectBox[2].id).on("change",function(t){var e=$("#tag_form");e.submit()}),n(o.opt.phoneBox),$("."+o.opt.updateFormClass).each(function(){var a,i=$(this).attr("id"),r=$(this).attr("action"),n=$(this).closest("."+o.opt.formWrapperClass),l=$("."+o.opt.staticValueClass,n),d=$("."+o.opt.descriptionClass,n),h=$("."+o.opt.editableClass,n),c=$("."+o.opt.closeButtonClass,n),m=$("."+o.opt.avatarImageClass,n);o.forms[i]=e.factory(i,r),$("."+o.opt.editButtonClass,n).hasClass("no-refresh")?o.forms[i].refrashable=!1:o.forms[i].refrashable=!0,o.forms[i].$form=$(this),o.forms[i].$wrapper=n,o.forms[i].$staticValue=l,o.forms[i].$description=d,o.forms[i].$editable=h,m.length&&(o.forms[i].$image=m,o.forms[i].noImageSrc=o.opt.noImageSrc),$(this).off("submit"),$(this).on("submit",function(){return s.show(),window.FormData&&"upload"in $.ajaxSettings.xhr()?(a=new FormData(this),o.forms[i].beforeSubmit(a,i)):(a=$(this).serialize(),o.forms[i].beforeSubmit(a,i)),!1}),c.on("click",function(){return h.removeClass(o.opt.formCurrentClass),o.forms[i].refreshHTML(),!1}),$("."+o.opt.avatarButtonClass,n).length?$("."+o.opt.editButtonClass+", ."+o.opt.avatarButtonClass,n).on("click",function(){var t=$("#"+o.opt.avatarInputId);return t.trigger("click"),!1}):$("."+o.opt.editButtonClass+", ."+o.opt.avatarButtonClass,n).on("click",function(){var e=$(this).closest("."+o.opt.formWrapperClass),a=e.find("."+o.opt.updateFormClass).attr("id"),s=e.find("."+o.opt.descriptionClass),r=e.find("."+o.opt.editableClass);return t.each(function(){var t=$(this).closest("."+o.opt.formWrapperClass),e=t.find("."+o.opt.updateFormClass).attr("id"),a=(t.find("."+o.opt.descriptionClass),t.find("."+o.opt.editableClass));$(this).hasClass(o.opt.formCurrentClass)&&(o.forms[e].refrashable?(o.forms[e].refreshHTML(),a.removeClass(EXPO.company.opt.formCurrentClass)):a.removeClass(o.opt.formCurrentClass))}),o.forms[a].refrashable&&(r.removeClass("hidden"),s.addClass("hidden")),r.addClass(o.opt.formCurrentClass),$(document).on("click.form",function(t){var e=$(t.target);e.parents().filter(".e-form").length<1&&(r.removeClass(o.opt.formCurrentClass),o.forms[i].refreshHTML(),$(document).off("click.form"))}),!1})}),$("#"+o.opt.previewBtnId).attr("href",window.location.href+"?logout=1")})},a}(); |