X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=htdocs%2Fjavascript%2Fprofile.js;h=75b5b8dcc6bd30ebed16c72a2a51db72f3201fb5;hb=c76545c351fae4e2298624ff9ee5bf854dc5a5b6;hp=a93af36af1d8886dea6df5d23f861f0185fcfd27;hpb=fb813fb52d5ab65ca9a5b92b5cb9089523380d79;p=platal.git diff --git a/htdocs/javascript/profile.js b/htdocs/javascript/profile.js index a93af36..75b5b8d 100644 --- a/htdocs/javascript/profile.js +++ b/htdocs/javascript/profile.js @@ -50,6 +50,9 @@ function wizPage_onLoad(id) updateJobSubSector(i, $('#job_' + i).find("[name='jobs[" + i + "][subSubSector]']").val()); updateJobAlternates(i); } + if ($('#job_0').find("[name='jobs[0][name]']").val() == '') { + registerEnterpriseAutocomplete(0); + } break; } } @@ -67,22 +70,22 @@ function toggleNamesAdvanced() $('.names_advanced').toggle(); } -function addSearchName() +function addSearchName(isFemale) { var i = 0; while ($('#search_name_' + i).length != 0) { i++; } - Ajax.update_html('search_name_' + i, 'profile/ajax/searchname/' + i, function(data){ + Ajax.update_html('search_name_' + i, 'profile/ajax/searchname/' + i + '/' + isFemale, function(data){ $('#searchname').before(data); changeNameFlag(i); }); } -function removeSearchName(i) +function removeSearchName(i, isFemale) { $('#search_name_' + i).remove(); - updateNameDisplay(); + updateNameDisplay(isFemale); } function changeNameFlag(i) @@ -104,7 +107,7 @@ function changeNameFlag(i) } } -function updateNameDisplay() +function updateNameDisplay(isFemale) { var searchnames = ''; for (var i = 0; i < 10; i++) { @@ -113,7 +116,7 @@ function updateNameDisplay() searchnames += $('#search_name_' + i).find(':text').val() + ';;'; } } - Ajax.update_html(null, 'profile/ajax/buildnames/' + searchnames, function(data){ + Ajax.update_html(null, 'profile/ajax/buildnames/' + searchnames + '/' + isFemale, function(data){ var name = data.split(';'); $('#public_name').html(name[0]); $('#private_name').html(name[0] + name[1]); @@ -129,23 +132,30 @@ function toggleParticle(id) } } +// Promotions {{{1 + +function togglePromotionEdition() +{ + $(".promotion_edition").toggle(); +} + // Nationalities {{{1 function delNationality(i) { - $('#nationalite' + i).hide().find('select').val(''); + $('#nationality' + i).hide().find('select').val(''); } function addNationality() { var i = 0; - if ($('#nationalite2').find('select').val() == "") { + if ($('#nationality2').find('select').val() == "") { i = 2; - } else if ($('#nationalite3').find('select').val() == "") { + } else if ($('#nationality3').find('select').val() == "") { i = 3; } if ((i == 2) || (i == 3)) { - $('#nationalite' + i).show(); + $('#nationality' + i).show(); } } @@ -313,14 +323,15 @@ function addressChanged(prefid) function validGeoloc(prefid, id, geoloc) { if (geoloc == 1) { - $('#' + prefid + '_cont').find('[name*=text]').val($('#' + prefid + '_cont').find('[name*=geoloc]').val()); + $('#' + prefid + '_cont').find('[name*=text]').val($('#' + prefid + '_cont').find('[name*=geocodedText]').val()); $('#' + prefid + '_cont').find('[name*=postalText]').val($('#' + prefid + '_cont').find('[name*=geocodedPostalText]').val()); } if (geoloc > 0) { - $('#' + prefid + '_cont').find("[name*='[geoloc]']").remove(); + $('#' + prefid + '_cont').find("[name*='[geocodedText]']").remove(); + $('#' + prefid + '_cont').find("[name*='[geocodedPostalText]']").remove(); } $('#' + prefid + '_cont').find('[name*=text]').removeClass('error'); - $('#' + prefid + '_cont').find('[name*=geoloc_choice]').val(geoloc); + $('#' + prefid + '_cont').find('[name*=geocodeChosen]').val(geoloc); $('.' + prefid + '_geoloc').remove(); } @@ -337,9 +348,16 @@ function addTel(prefid, prefname) Ajax.update_html(prefix + i, 'profile/ajax/tel/' + prefid + '/' + prefname + '/' + i); } -function removeTel(id) +function removeTel(prefname, prefid, id) { - $('#' + id).remove(); + var total = 0; + while ($('#' + prefid + '_' + total).length != 0) { + ++total; + } + $('#' + prefid + '_' + id).remove(); + for (var i = parseInt(id) + 1; i < total; ++i) { + renumberPhone(prefname, prefid, i); + } } function addPhoneComment(id) @@ -355,6 +373,27 @@ function removePhoneComment(id, pref) $('#' + id + '_addComment').show(); } +function renumberPhone(prefname, prefid, i) +{ + var telid = i - 1; + var telprefOld = prefname + '[' + i + ']'; + var telpref = prefname + '[' + telid + ']'; + var idOld = prefid + '_' + i; + var id = prefid + '_' + telid; + + $('#' + idOld).attr('id', id); + $('#' + id).find('div.titre').html('N°' + i); + $('#' + id).find('a.removeTel').attr('href', 'javascript:removeTel(\'' + prefname + '\',\'' + prefid + '\',' + telid + ')'); + $('#' + id).find('select').attr('name', telpref + '[type]'); + $('#' + id).find("[name='" + telprefOld + "[display]']").attr('name', telpref + '[display]'); + $('#' + id).find("[name='" + telprefOld + "[comment]']").attr('name', telpref + '[comment]'); + $('#' + id).find('a.removePhoneComment').attr('href', 'javascript:removePhoneComment(' + id + ',' + telpref + ')'); + $('#' + id).find('#' + idOld + '_addComment').attr('id', id + '_addComment'); + $('#' + id).find('#' + id + '_addComment').attr('href', 'javascript:addPhoneComment(' + id + ')'); + $('#' + id).find('#' + idOld + '_comment').attr('id', id + '_comment'); + $('#' + id).find("[name='" + telprefOld + "[pub]']").attr('name', telpref + '[pub]'); +} + // {{{1 Groups function addBinet() @@ -369,7 +408,7 @@ function addBinet() + '
' + text + '
' - + ' ' + + ' ' + ' cross' + ' ' + ' ' @@ -492,6 +531,16 @@ function updateJobAlternates(id) } } +function emptyJobSubSector(id) +{ + Ajax.update_html('job_' + id + '_subSubSector', 'profile/ajax/sub_sector/' + id + '/-1/-1'); +} + +function emptyJobAlternates(id) +{ + Ajax.update_html('job_' + id + '_alternates', 'profile/ajax/alternates/' + id + '/-1'); +} + function displayAllSector(id) { $('.sector_text_' + id).remove(); @@ -521,6 +570,125 @@ function addEntreprise(id) $('.entreprise_' + id).toggle(); } +/** + * Adds a job term in job profile page + * @param jobid id of profile's job among his different jobs + * @param jtid id of job term to add + * @param full_name full text of job term + * @return false if the term already exist for this job, true otherwise + */ +function addJobTerm(jobid, jtid, full_name) +{ + var termid = 0; + var parentpath; + var formvarname; + if (jobid < 0) { + parentpath = ''; + jobid = ''; + formvarname = 'terms'; + } else { + parentpath = '#job_'+jobid+' '; + formvarname = 'jobs['+jobid+'][terms]'; + } + var lastJobTerm = $(parentpath + '.job_term:last'); + if (lastJobTerm.length != 0) { + termid = parseInt(lastJobTerm.children('input').attr('name').replace(/^(jobs\[[0-9]+\]\[terms\]|terms)\[([0-9]+)\]\[jtid\]/, '$2')) + 1; + if ($('#job'+jobid+'_term'+jtid).length > 0) { + return false; + } + } + var newdiv = '
'+ + ''+full_name+''+ + ''+ + 'retirer'+ + '
'; + if (lastJobTerm.length == 0) { + $(parentpath + '.job_terms').prepend(newdiv); + } else { + lastJobTerm.after(newdiv); + } + $('#job'+jobid+'_term'+jtid+' img').css('cursor','pointer').click(removeJobTerm); + return true; +} + +/** + * Remove a job term in job profile page. + * Must be called from a button in a div containing the term + */ +function removeJobTerm() +{ + $(this).parent().remove(); +} + +/** + * Prepare display for autocomplete suggestions in job terms + * @param row an array of (title of term, id of term) + * @return text to display + * If id is negative, it is because there are too much terms to + * be displayed. + */ +function displayJobTerm(row) +{ + if (row[1] < 0) { + return '... précise ta recherche ...'; + } + return row[0]; +} + +/** + * Function called when a job term has been selected from autocompletion + * in search + * @param li is the list item (
  • ) that has been clicked + * The context is the jsquery autocomplete object. + */ +function selectJobTerm(li) +{ + if (li.extra[0] < 0) { + return; + } + var jobid = this.extraParams.jobid; + addJobTerm(jobid,li.extra[0],$(li).text()); + var search_input; + if (jobid < 0) { + search_input = $('.term_search')[0]; + } else { + search_input = $('#job_'+jobid+' .term_search')[0]; + } + search_input.value = ''; + search_input.focus(); +} + +/** + * Function to show or hide a terms tree in job edition + * @param jobid is the id of the job currently edited + */ +function toggleJobTermsTree(jobid) +{ + var treepath; + if (jobid < 0) { + treepath = ''; + } else { + treepath = '#job_'+jobid+' '; + } + treepath += '.term_tree'; + if ($(treepath + ' ul').length > 0) { + $(treepath).empty().removeClass().addClass('term_tree'); + return; + } + createJobTermsTree(treepath, 'profile/ajax/tree/jobterms/all', 'job' + jobid, 'chooseJobTerm'); +} + +/** + * Function called when a job term is chosen from terms tree + * @param treeid is the full id of the tree (must look like job3) + * @param jtid is the id of the job term chosen + * @param fullname is the complete name (understandable without context) of the term + */ +function chooseJobTerm(treeid, jtid, fullname) +{ + addJobTerm(treeid.replace(/^job(.*)$/, '$1'), jtid, fullname); +} + // {{{1 Skills function addSkill(cat) @@ -542,7 +710,7 @@ function addCountry() var val = $('#countries_table').find('[name=countries_sel] :selected').val(); var text = $('#countries_table').find('[name=countries_sel] :selected').text(); var html = '
    ' - + ' ' + + ' ' + ' ' + ' ' + '
    ' + text + '
    ' @@ -594,7 +762,7 @@ function addSector() var sst = $('#subSectorSelection').find("[name='jobs[-1][subSector]'] :selected").text(); var html = '
    ' - + ' ' + + ' ' + ' ' + ' ' + ' '