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