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
10 KiB

var EXPO=EXPO||{};EXPO.profile?console.warn("WARNING: EXPO.profile is already defined!"):EXPO.profile=function(){function d(a){this.opt=a,this.$inst=$("#"+a.id),this.value=this.$inst.text}function e(){}var a={};a.opt={updateFormClass:"update-profile-form"},a.lang={};var c,b=EXPO.common;return d.prototype={refresh:function(a){this.value=a,this.$inst.text(this.value)}},e.prototype={submit:function(a){var b=this;a||(a=""),$.ajax({type:"POST",url:b.ajaxPath,data:a,processData:!1,contentType:!1,success:function(a){b.afterSubmitHandler(a),a.success&&EXPO.profile.rating.refresh(a.rating),$("#wait-ajax").fadeOut()}})},beforeSubmit:function(a,b){var c=this.beforeSubmitHandler,d=a;"string"!=typeof d?this.formData=d:this.formData=JSON.parse('{"'+decodeURI(d).replace(/"/g,'\\"').replace(/&/g,'","').replace(/=/g,'":"')+'"}'),this.formId=b,"function"==typeof c?(this.formData=c(a,b),this.submit(a),$("#wait-ajax").show()):(this.submit(a),$("#wait-ajax").show())},afterSubmit:function(a){var b=this.afterSubmitHandler;if("function"!=typeof b)throw{name:"Error",message:" handler function for processing response after form submit not defined, please define it!"};b(a)},fulfillInputs:function(){var a=this;for(input in a.formData)$("#id_"+input,$("#"+a.formId)).length>0&&$("#id_"+input,$("#"+a.formId)).value(a.formData[input]),$("#static-"+input).length>0&&$("#static-"+input).html()},refreshHTML:function(){var a=$.trim(this.$staticValue.text()).replace(/[^0-9a-zA-Zа-я\s]/g,"").replace(/(\d)\s/,"").replace(/\s+/g,"");(""==$.trim(this.$staticValue.text())||"NoneNone"==a)&&this.$wrapper.length&&this.refrashable?(this.$editable.addClass("hidden"),this.$editable.removeClass(EXPO.profile.opt.formCurrentClass),this.$description.removeClass("hidden")):this.$wrapper.length&&this.refrashable&&(this.$editable.removeClass("hidden"),this.$description.addClass("hidden"))}},e.factory=function(a,b){var d,c=a;if("function"!=typeof e[c])throw{name:"Error",message:c+"doesen't exist"};return"function"!=typeof e[c].prototype.beforeSubmit&&(e[c].prototype=new e),d=new e[c](b)},e.home_form=function(a){this.afterSubmitHandler=function(a){if(a.success){var b=$("#s2id_id_country").find(".select2-chosen").text(),c=$("#s2id_id_city").find(".select2-chosen").text();$("#static-home-country").text(b),$("#static-home-city").text(c),$(".p-editable").removeClass("pe-current"),this.refreshHTML()}},this.ajaxPath=a},e.name_form=function(a){this.afterSubmitHandler=function(a){a.success&&($("#static-name-value").text($("#id_last_name").val()+" "+$("#id_first_name").val()),$(".p-editable").removeClass("pe-current"),this.refreshHTML())},this.ajaxPath=a},e.work_form=function(a){this.afterSubmitHandler=function(a){var b,c=$.trim($("#s2id_id_company").text());a.success&&(b=$("#id_position").val(),""!=c&&"Поиск компании"!=c&&(b+=" "+EXPO.profile.opt.lang.workIn+" "+c),$("#static-work-value").text(b),$(".p-editable").removeClass("pe-current"),this.refreshHTML())},this.ajaxPath=a},e.phone_form=function(a){this.afterSubmitHandler=function(a){a.success&&($("#static-phone-value").text($("#id_phone")[0].value),$(".p-editable").removeClass("pe-current"),this.refreshHTML())},this.ajaxPath=a},e.web_page_form=function(a){this.afterSubmitHandler=function(a){if(a.success){var b=$("#id_web_page").val();$("#static-web-page-value").attr("href",b).text(b),$(".p-editable").removeClass("pe-current"),this.refreshHTML()}},this.ajaxPath=a},e.about_form=function(a){this.afterSubmitHandler=function(a){a.success&&($("#static-about-value").html(b.nl2br($("#id_about").val())),$(".p-editable").removeClass("pe-current"),this.refreshHTML())},this.ajaxPath=a},e.social_form=function(a){var c,d,e,f,b=this;this.afterSubmitHandler=function(a){if(a.success){for(item in b.formData)e=$("#id_"+item),e.parent(".required").removeClass("err"),""!=$.trim(b.formData[item])&&e.length?(c=$("#img-"+item),c.length&&(f=$.trim(e.val()),c.parent("a").length?(c.parent("a").attr("href",f),d=c.attr("src").replace("_hover",""),c.attr("src",d)):(d=c.attr("src").replace("_hover",""),c.attr("src",d),c.wrap('<a href="'+f+'" target="_blank"></a>')))):e.length&&(c=$("#img-"+item),c.parent("a").length&&(d=c.attr("src").replace(".png","_hover.png"),c.attr("src",d),c.unwrap()));$(".p-editable").removeClass("pe-current"),this.refreshHTML()}else for(item in a.errors)e=$("#id_"+item),e.parent(".required").addClass("err"),e.blur(function(){e.parent(".required").removeClass("err"),b.$form.submit()})},this.beforeSubmitHandler=function(a,b){var c=$("#"+b).serialize();return JSON.parse('{"'+decodeURI(c).replace(/"/g,'\\"').replace(/&/g,'","').replace(/=/g,'":"')+'"}')},this.refreshHTML=function(){console.log(this);var a=!0;$("input:text",this.$form).each(function(){""==$.trim($(this).val())&&(a=!1)}),a?($(".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=a},e.avatar_form=function(a){var f,b=this,c=$("#id_avatar"),e=($("#pic-edit-photo"),$("#pick-block")),g=$("img",e);this.afterSubmitHandler=function(a){a.success&&g.length&&(g.attr("src",a.url),this.refreshHTML())},this.beforeSubmitHandler=function(a){"string"!=typeof a?(b.submit(a),$("#wait-ajax").show()):(f=$("#"+b.formId),f.off("submit"),f.trigger("submit"))},c.on("change",function(){$(this).parents("form").submit()}),this.ajaxPath=a,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.create_company_form=function(a){var b=this,d="pwf-field";this.afterSubmitHandler=function(a){if(a.success)a.redirect_url?window.location=a.redirect_url:location.reload();else for(var e in a.errors)a.errors.hasOwnProperty(e)&&($('input[name="'+e+'"], select[name="'+e+'"]',b.$form).closest("."+d).addClass("err"),c.hide())},this.ajaxPath=a},a.init=function(a){$.extend(this.lang,a.lang),$.extend(this.opt,a);var b=this,f=function(a){var b=$.masksSort($.masksLoad("/static/client/js/plugins/inputmask/phone-codes.json"),["#"],/[0-9]|#/,"mask"),c={inputmask:{definitions:{"#":{validator:"[0-9]",cardinality:1}},showMaskOnHover:!1,insertMode:!1,autoUnmask:!0},insertMode:!1,match:/[0-9]/,replace:"#",list:b,listKey:"mask",onMaskChange:function(a,b){$(this).attr("placeholder","+_(___)___-__-__")}},d="#"+a;$(d).inputmasks(c)};this.rating=new d(this.opt.rating),this.forms={},$(function(){var a=$("."+b.opt.editableClass),d=$("#"+b.opt.selectBox[0].id),g=$("#"+b.opt.selectBox[2].id),h=$("#id_url");c=$("#wait-ajax").css({"z-index":"8012"}),d.select2({width:"element"}),d.on("change",function(){g.val(0),g.select2("val","")}),$("#"+b.opt.selectBox[1].id).select2({width:"element",placeholder:b.opt.selectBox[1].placeholder,maximumSelectionSize:3}),g.select2({placeholder:b.opt.selectBox[2].placeholder,width:"element",ajax:{url:b.opt.selectBox[2].path,dataType:"json",quietMillis:200,data:function(a,c,d){var d=$("#"+b.opt.selectBox[0].id).val();return{term:a,page:c,country:d}},results:function(a){var b=[];return $.each(a,function(a,c){b.push({id:c.id,text:c.label})}),{results:b}}},initSelection:function(a,b){var c=$(a).val(),d=$(a).attr("data-init-text");b({id:c,text:d})}}),$("#"+b.opt.selectBox[3].id).select2({placeholder:b.opt.selectBox[3].placeholder,width:"200px",minimumInputLength:1,ajax:{url:b.opt.selectBox[3].path,dataType:"json",quietMillis:200,data:function(a,b,c){return{term:a,page:b}},results:function(a){var b=[];return $.each(a,function(a,c){b.push({id:c.id,text:c.label})}),{results:b}}},initSelection:function(a,b){var c=$(a).val(),d=$(a).attr("data-init-text");b({id:c,text:d})}}),f(b.opt.phoneBox),$("."+b.opt.updateFormClass).each(function(){var g,d=$(this).attr("id"),f=$(this).attr("action"),h=$(this).closest("."+b.opt.formWrapperClass),i=$("."+b.opt.staticValueClass,h),j=$("."+b.opt.descriptionClass,h),k=$("."+b.opt.editableClass,h),l=$("."+b.opt.closeButtonClass,h),m=$("."+b.opt.avatarImageClass,h);b.forms[d]=e.factory(d,f),$("."+b.opt.editButtonClass,h).hasClass("no-refresh")?b.forms[d].refrashable=!1:b.forms[d].refrashable=!0,b.forms[d].$form=$(this),b.forms[d].$wrapper=h,b.forms[d].$staticValue=i,b.forms[d].$description=j,b.forms[d].$editable=k,m.length&&(b.forms[d].$image=m,b.forms[d].noImageSrc=b.opt.noImageSrc),$(this).off("submit"),$(this).on("submit",function(){return c.show(),window.FormData&&"upload"in $.ajaxSettings.xhr()?(g=new FormData(this),b.forms[d].beforeSubmit(g,d)):(g=$(this).serialize(),b.forms[d].beforeSubmit(g,d)),!1}),l.on("click",function(){return k.removeClass(b.opt.formCurrentClass),b.forms[d].refreshHTML(),!1}),$("."+b.opt.avatarButtonClass,h).length?$("."+b.opt.editButtonClass+", ."+b.opt.avatarButtonClass,h).on("click",function(){var a=$("#"+b.opt.avatarInputId);return a.trigger("click"),!1}):$("."+b.opt.editButtonClass+", ."+b.opt.avatarButtonClass,h).on("click",function(){var c=$(this).closest("."+b.opt.formWrapperClass),e=c.find("."+b.opt.updateFormClass).attr("id"),f=c.find("."+b.opt.descriptionClass),g=c.find("."+b.opt.editableClass);return a.each(function(){var a=$(this).closest("."+b.opt.formWrapperClass),c=a.find("."+b.opt.updateFormClass).attr("id"),e=(a.find("."+b.opt.descriptionClass),a.find("."+b.opt.editableClass));$(this).hasClass(b.opt.formCurrentClass)&&(b.forms[c].refrashable?(b.forms[c].refreshHTML(),e.removeClass(EXPO.profile.opt.formCurrentClass)):e.removeClass(b.opt.formCurrentClass))}),b.forms[e].refrashable&&(g.removeClass("hidden"),f.addClass("hidden")),g.addClass(b.opt.formCurrentClass),$(document).on("click.form",function(a){var c=$(a.target);c.parents().filter(".e-form").length<1&&(g.removeClass(b.opt.formCurrentClass),b.forms[d].refreshHTML(),$(document).off("click.form"))}),!1})}),$("#"+b.opt.addCompanyButtonId).on("click",function(a){return a.preventDefault(),$.fancybox.open("#"+b.opt.addCompany.modalId),!1}),h.on("focus",function(){var a=$(this),c=b.opt.companyAddInputMask;return""==$.trim(a.val())&&a.val(c),!1}),h.on("click",function(){if(this.setSelectionRange&&$.trim($(this).val())==b.opt.companyAddInputMask){var a=$(this).val().length;this.setSelectionRange(a,a)}}),h.on("keypress",function(){var a=$(this),c=b.opt.companyAddInputMask;""==$.trim(a.val())&&a.val(c)}),h.on("blur",function(){var a=$(this),c=b.opt.companyAddInputMask;$.trim(a.val())==c&&a.val("")})})},a}();