516 lines
18 KiB
JavaScript
516 lines
18 KiB
JavaScript
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); };
|
||
|
||
function multiple_upload_attachment(ele, max_size) {
|
||
Event.observe(ele, 'change', function() {
|
||
addAttachmentDiv(ele, max_size);
|
||
});
|
||
if (multiple_upload_attachment_counter >= max_size) ele.disabled = true;
|
||
}
|
||
|
||
var attachment_template = new Template('<table><tr><th>文件:</th><td><span>#{filename}</span><span class="more"><a href="#" class="delete">删除</a></span><div class="clear"></div></td></tr><tr><th>描述:</th><td><textarea name="attachments[][remark]" cols="" rows=""></textarea></td></tr></table>');
|
||
|
||
function addAttachmentDiv(ele, max_size) {
|
||
if (!$A(['jpg','jpeg','bmp','png','gif','rar','zip', 'tar', 'gz', 'jar', 'war', 'bz2', '7z']).any(function(extName){return new RegExp('\\.'+extName+'$','i').test(ele.value);})){
|
||
alert("如果您上传图片,请上传JPG、BMP、PNG或者GIF格式的图片\n如果您上传附件,请先压缩再上传");
|
||
return false;
|
||
}
|
||
|
||
multiple_upload_attachment_counter++;
|
||
var div = attachment_template.evaluate({filename: ele.value});
|
||
var new_input = new Element("input", { type: "file", name: ele.name, id: ele.id, disabled: multiple_upload_attachment_counter >= max_size});
|
||
|
||
Event.observe(new_input, 'change', function() {
|
||
addAttachmentDiv(new_input, max_size);
|
||
});
|
||
$('groups_upload_button').insert({before : div});
|
||
ele.insert({after: new_input});
|
||
ele.id = ele.id + multiple_upload_attachment_counter;
|
||
ele.name = "attachments[][uploaded_data]";
|
||
div = $('groups_upload_button').previous();
|
||
div.down('.delete').observe('click', function(event) {
|
||
removeAttachmentDiv(this);
|
||
});
|
||
div.appendChild(ele.hide());
|
||
}
|
||
|
||
function removeAttachmentDiv(link) {
|
||
multiple_upload_attachment_counter--;
|
||
link.up('table').remove();
|
||
$('attachment_upload').disabled = false;
|
||
}
|
||
|
||
function multiple_upload_picture(ele, max_size, tags) {
|
||
Event.observe(ele, 'change', function() {
|
||
addPictureDiv(ele, max_size, tags);
|
||
});
|
||
if (multiple_upload_picture_counter >= max_size) ele.disabled = true;
|
||
}
|
||
|
||
function addPictureDiv(ele, max_size, tags) {
|
||
if (!$A(['jpg','jpeg','bmp','png','gif']).any(function(extName){return new RegExp('\\.'+extName+'$','i').test(ele.value);})){
|
||
alert("您上传的图片格式不支持,请您上传JPG、BMP、PNG或者GIF格式的图片");
|
||
return false;
|
||
}
|
||
|
||
multiple_upload_picture_counter++;
|
||
//fix for opera
|
||
var file_name = ele.value;
|
||
try {file_name = ele.value.match(/(.*)[\/\\]([^\/\\]+)\.\w+$/)[2];} catch(e) {}
|
||
var tag_select = "";
|
||
if(tags.length > 0) {
|
||
var tag_select = "<select onchange='Element.previous($(this)).value = this.value;'><option value=''>选择已有标签</option>";
|
||
for (var i = 0; i < tags.length; i++)
|
||
tag_select += "<option value='" + tags[i] + "'>" + tags[i] + "</option>";
|
||
tag_select += "</select>";
|
||
}
|
||
var div = new Element("div").update("<ul><li>文件: " + ele.value + " <a href='#' onclick='removePictureDiv(this, \"" + ele.id + "\");return false;'>删除</a></li><li>名称: <input type='text' name='pictures[][name]' value='" + file_name + "' size='50' class='text'/></li><li>描述: <textarea name='pictures[][description]' style='width:400px;height:80px;'></textarea></li></ul>");
|
||
var new_input = new Element("input", { type: "file", name: ele.name, id: ele.id, disabled: multiple_upload_picture_counter >= max_size});
|
||
|
||
Event.observe(new_input, 'change', function() {
|
||
addPictureDiv(new_input, max_size, tags);
|
||
});
|
||
ele.insert({after : div});
|
||
div.insert({after : new_input});
|
||
ele.id = ele.id + multiple_upload_picture_counter;
|
||
ele.name = "pictures[][uploaded_data]";
|
||
div.appendChild(ele.hide().remove());
|
||
}
|
||
|
||
function removePictureDiv(link, eleId) {
|
||
multiple_upload_picture_counter--;
|
||
link.parentNode.parentNode.parentNode.remove();
|
||
$(eleId).disabled = false;
|
||
}
|
||
|
||
function move_messages(dest) {
|
||
$('dest').value = dest;
|
||
$('messages_form').submit();
|
||
}
|
||
|
||
function digg(type, id, bury) {
|
||
var url = '/' + type + (bury ? '/bury' : '/digg');
|
||
var small_button = !!$('d' + id);
|
||
if(small_button) $('d'+id).innerHTML = "<h3><img src='/images/spinner.gif'/><br/><span>...</span></h3>";
|
||
|
||
if($('digg_bottom')){
|
||
$$('#digg_bottom div').each(function(div){div.innerHTML="<img src='/images/spinner.gif'/>";});
|
||
new Ajax.Request(url,{asynchronous:true,evalScripts:true,parameters:{"id":id, "bottom":true, small_button:small_button}});
|
||
}else{
|
||
new Ajax.Request(url,{asynchronous:true,evalScripts:true,parameters:{"id":id, small_button:small_button}});
|
||
}
|
||
}
|
||
|
||
function bury_blog(blog_id) {
|
||
$('b' + blog_id).innerHTML = "<h3><img src='/images/spinner.gif'/><br/><span>...</span></h3>";
|
||
if($('digg_bottom') != undefined) {
|
||
$$('#digg_bottom div').each(function(div){div.innerHTML="<img src='/images/spinner.gif'/>";});
|
||
new Ajax.Request('/blogs/bury',{asynchronous:true,evalScripts:true,parameters:{"id":blog_id, "bottom":true}});
|
||
}else{
|
||
new Ajax.Request('/blogs/bury',{asynchronous:true,evalScripts:true,parameters:{"id":blog_id}});
|
||
}
|
||
}
|
||
|
||
function fix_image_size(images, maxW) {
|
||
if(images.length > 0) {
|
||
Event.observe(window,'load',function() {
|
||
images.each(function(img) {
|
||
var w = img.width;
|
||
var h = img.height;
|
||
if (w > maxW) {
|
||
var f = 1-((w - maxW) / w);
|
||
img.title = "点击查看原始大小图片";
|
||
img.addClassName("magplus");
|
||
img.onclick = function() {window.open(this.src);};
|
||
img.width = w * f;
|
||
img.height = h * f;
|
||
}
|
||
});
|
||
});
|
||
}
|
||
}
|
||
|
||
function highlight_suggested_tags(tags) {
|
||
if ($('suggested_tags_panel') !== null) {
|
||
$('suggested_tags_panel').select('a').each( function(el) {
|
||
var exist_tag = tags.find(function(tag){
|
||
return tag.match(new RegExp('^' + el.text + '$', 'i'));
|
||
});
|
||
if (exist_tag) {
|
||
el.addClassName('added');
|
||
} else {
|
||
el.removeClassName('added');
|
||
}
|
||
});
|
||
}
|
||
}
|
||
|
||
function extract_tag_list(value) {
|
||
var tags = value.trim().split(/,\s*|,\s*/).without('');
|
||
highlight_suggested_tags(tags);
|
||
tag_list = tags.map(function(tag) {
|
||
return "<span>" + tag + "</span>";
|
||
}).join('');
|
||
if (!tag_list.empty()) {
|
||
tag_list = '当前标签:' + tag_list;
|
||
}
|
||
if ($("current_tags_panel") !== null) {
|
||
$("current_tags_panel").update(tag_list);
|
||
}
|
||
}
|
||
|
||
function observe_tag_list(id) {
|
||
extract_tag_list($(id).value);
|
||
new Form.Element.Observer(
|
||
id,
|
||
0.2,
|
||
function(el, value) {
|
||
extract_tag_list(value);
|
||
}
|
||
)
|
||
}
|
||
|
||
function trigger_suggested_tag() {
|
||
var tag_list_input = this.parentNode.previous("input");
|
||
var current_value = tag_list_input.value.trim();
|
||
if (this.hasClassName('added')) {
|
||
var tag_regex = new RegExp('^' + this.text + '$', 'i')
|
||
tag_list_input.value = current_value.split(/,\s*|,\s*/).findAll(function(tag){
|
||
tag = tag.trim();
|
||
if (tag !== '' && !tag_regex.match(tag)) {
|
||
return true;
|
||
}
|
||
}).join(', ');
|
||
this.removeClassName('added');
|
||
} else {
|
||
if(current_value !== "" && current_value[current_value.length-1] !== ","){
|
||
tag_list_input.value += ", ";
|
||
}
|
||
tag_list_input.value += this.innerHTML;
|
||
this.addClassName('added');
|
||
}
|
||
Validation.validateElement($(tag_list_input));
|
||
}
|
||
|
||
function check_category_list(checkboxes, category_list){
|
||
checkboxes.each(function(element){
|
||
element.checked = category_list.split(',').any(function(name){
|
||
return name.trim().toLowerCase() == this;
|
||
}, element.value.toLowerCase());
|
||
});
|
||
}
|
||
|
||
document.observe("dom:loaded",function(){
|
||
$$("div.quick_menu").each(function(ele) {
|
||
Event.observe(ele.previous(), 'mouseover', function(e) {
|
||
$$("div.quick_menu").invoke('hide');
|
||
ele.style.left = ele.previous().positionedOffset()[0] + "px";
|
||
ele.show();
|
||
});
|
||
Event.observe(ele.previous(), 'mouseout', function(e) {
|
||
if(!Position.within(ele,Event.pointerX(e),Event.pointerY(e) + 5))
|
||
ele.hide();
|
||
});
|
||
Event.observe(ele, 'mouseout', function(e) {
|
||
if(!Position.within(ele,Event.pointerX(e),Event.pointerY(e)))
|
||
ele.hide();
|
||
});
|
||
});
|
||
$$("div.nav_side > ul > li:not(.select)").each(function(ele) {
|
||
Event.observe(ele, 'mouseover', function(e) {
|
||
Event.findElement(e, 'LI').addClassName('select');
|
||
});
|
||
Event.observe(ele, 'mouseout', function(e) {
|
||
Event.findElement(e, 'LI').removeClassName('select');
|
||
});
|
||
});
|
||
|
||
$$('#blog_category_checkbox input[type=checkbox]').each(function(element){
|
||
element.observe('change', function(ev){
|
||
var current_value = $('blog_category_list').value.trim();
|
||
if(this.checked) {
|
||
if(current_value == '' || current_value[current_value.length -1] == ',')
|
||
$('blog_category_list').value += this.value;
|
||
else
|
||
$('blog_category_list').value += (','+this.value);
|
||
} else {
|
||
$('blog_category_list').value = current_value.split(',').reject(function(name){
|
||
return name.trim() == this;
|
||
}, this.value).join(',');
|
||
}
|
||
});
|
||
});
|
||
|
||
});
|
||
|
||
//IE6 background image cache fix
|
||
try {document.execCommand('BackgroundImageCache', false, true);} catch(e) {}
|
||
|
||
|
||
|
||
//resume
|
||
|
||
function add_work_experience(button, content){
|
||
var new_id = new Date().getTime();
|
||
$(button).up().insert({before: content.replace(/new_work_experiences/g, new_id)});
|
||
}
|
||
|
||
function add_project_experience(link, content){
|
||
var new_id = new Date().getTime();
|
||
$(link).up().insert({before: content.replace(/new_project_experiences/g, new_id)});
|
||
}
|
||
|
||
function add_education(button, content){
|
||
var new_id = new Date().getTime();
|
||
$$('.editing .educations')[0].insert({bottom: content.replace(/new_educations/g, new_id)});
|
||
}
|
||
|
||
function add_training(button, content){
|
||
var new_id = new Date().getTime();
|
||
$$('.editing .trainings')[0].insert({bottom: content.replace(/new_trainings/g, new_id)});
|
||
}
|
||
|
||
function add_certificate(button, content){
|
||
var new_id = new Date().getTime();
|
||
$$('.editing .certificates')[0].insert({bottom: content.replace(/new_certificates/g, new_id)});
|
||
}
|
||
|
||
function add_skill(button, content){
|
||
$$('.editing .skills')[0].insert({bottom: content});
|
||
}
|
||
|
||
function add_language(button, content){
|
||
$$('.editing .languages')[0].insert({bottom: content});
|
||
}
|
||
|
||
document.observe("dom:loaded",function(){
|
||
$$('#my_resume .control .expand').each(function(el){
|
||
el.hide();
|
||
});
|
||
document.observe('click', function(event){
|
||
|
||
if(el = event.findElement('#my_resume .control .expand')){
|
||
el.up('h1').next('.view_con').show();
|
||
el.previous('.contract').show();
|
||
el.hide();
|
||
event.stop();
|
||
} else if(el = event.findElement('#my_resume .control .contract')){
|
||
el.up('h1').next('.view_con').hide();
|
||
el.next('.expand').show();
|
||
el.hide();
|
||
event.stop();
|
||
} else if (el = event.findElement('#my_resume .control .edit')){
|
||
if($('profile_invalid_flag') && !(/myresume\/edit$/.test(el['href']))){
|
||
alert("个人资料不完整,请先完善个人资料");
|
||
}else{
|
||
new Ajax.Request(el['href'], {
|
||
method: 'get',
|
||
onSuccess: function(res){
|
||
el.up('.view').replace(res.responseText);
|
||
}
|
||
});
|
||
}
|
||
event.stop();
|
||
} else if (el = event.findElement('.work_exp > .del_work a.del')){
|
||
if(confirm("确定要删除该工作经验吗?")){
|
||
if(/\#$/.test(el['href'])){
|
||
el.up('.work_exp').remove();
|
||
} else {
|
||
new Ajax.Request(el['href'], {
|
||
method: 'delete',
|
||
onSuccess: function(res){
|
||
el.up('.work_exp').remove();
|
||
}
|
||
});
|
||
}
|
||
}
|
||
event.stop();
|
||
} else if(el = event.findElement('.project_exp > .del_project a.del')) {
|
||
if(confirm("确定要删除该项目经验吗?")){
|
||
if(/\#$/.test(el['href'])){
|
||
el.up('.project_exp').remove();
|
||
} else {
|
||
new Ajax.Request(el['href'], {
|
||
method: 'delete',
|
||
onSuccess: function(res){
|
||
el.up('.project_exp').remove();
|
||
}
|
||
});
|
||
}
|
||
}
|
||
event.stop();
|
||
} else if(el = event.findElement('.edu_exp a.del')){
|
||
if(confirm("确定要删除吗?")){
|
||
if(/\#$/.test(el['href'])){
|
||
el.up('.edu_exp').remove();
|
||
} else {
|
||
new Ajax.Request(el['href'], {
|
||
method: 'delete',
|
||
onSuccess: function(res){
|
||
el.up('.edu_exp').remove();
|
||
}
|
||
});
|
||
}
|
||
}
|
||
event.stop();
|
||
} else if (el = event.findElement('.skills a.del')){
|
||
if(confirm("确定要删除该技能吗?")){
|
||
if(/\#$/.test(el['href'])){
|
||
el.up('li').remove();
|
||
} else {
|
||
var form = el.up('form');
|
||
|
||
el.up('li').getElementsBySelector('.level input[type=radio]').each(function(radio){
|
||
radio['name'] = 'destroied';
|
||
});
|
||
|
||
new Ajax.Request(el['href'], {
|
||
method: 'delete',
|
||
parameters: form.serialize(),
|
||
onSuccess: function(){
|
||
el.up('li').remove();
|
||
}
|
||
});
|
||
}
|
||
}
|
||
event.stop();
|
||
} else if (el = event.findElement('.languages a.del')) {
|
||
if (confirm("确定要删除该语种吗?")) {
|
||
if(/\#$/.test(el['href'])){
|
||
el.up('li').remove();
|
||
}else{
|
||
var form = el.up('form');
|
||
|
||
el.up('li').getElementsBySelector('.level select').each(function(select_elem){
|
||
select_elem['name'] = 'destroied';
|
||
});
|
||
|
||
new Ajax.Request(el['href'], {
|
||
method: 'delete',
|
||
parameters: form.serialize(),
|
||
onSuccess: function(){
|
||
el.up('li').remove();
|
||
}
|
||
});
|
||
}
|
||
}
|
||
event.stop();
|
||
}
|
||
|
||
});
|
||
|
||
var resume_submit_precess = function(event){
|
||
if(form = event.findElement('#my_resume .editing form.remote')){
|
||
form.request({
|
||
onSuccess: function(res){
|
||
var prev = form.up('.editing').previous();
|
||
prev.insert({after: res.responseText});
|
||
prev.next().down('.expand').hide();
|
||
form.up('.editing').remove();
|
||
}
|
||
});
|
||
event.stop();
|
||
}
|
||
};
|
||
if(Prototype.Browser.IE){
|
||
document.observe('focusin', function(event){
|
||
var form = event.findElement("#my_resume form");
|
||
if(form && !form.submit_bubbles_on_ie){
|
||
form.submit_bubbles_on_ie = true;
|
||
form.observe('submit', resume_submit_precess);
|
||
}
|
||
});
|
||
}else{
|
||
document.observe('submit', resume_submit_precess);
|
||
}
|
||
|
||
|
||
|
||
var resume_change_process = function(event){
|
||
if(select = event.findElement('#my_resume .skills .title .skill_option_one')){
|
||
var two_elem = select.next();
|
||
var skill_title = '';
|
||
if('手动添加' == select['value']){
|
||
two_elem.replace('<input class="skill_option_two" name="skill_option_two" style="width:80px;" type="text">');
|
||
}else{
|
||
if(two_elem.nodeName.toUpperCase() == "SELECT"){
|
||
two_elem.length = 0;
|
||
}else{
|
||
two_elem.replace(new Element('select', {'class':'skill_option_two', 'name': 'skill_option_two'}));
|
||
}
|
||
window.skill_options_two.get(select['value']).each(function(v){ select.next().appendChild(new Element('option', { 'value': v }).update(v)); });
|
||
skill_title = window.skill_options_two.get(select['value'])[0];
|
||
}
|
||
select.up('.title').next('.level').getElementsBySelector('input').each(function(radio){
|
||
radio.checked = false;
|
||
radio['name'] = 'resume[skills][' + skill_title + ']';
|
||
});
|
||
}else if(select = event.findElement('#my_resume .skills .title .skill_option_two')){
|
||
select.up('.title').next('.level').getElementsBySelector('input').each(function(radio){
|
||
radio.checked = false;
|
||
radio['name'] = 'resume[skills][' + select['value'] + ']';
|
||
});
|
||
}else if(select = event.findElement('#my_resume .languages .title select')){
|
||
select.up('.title').next('.level').getElementsBySelector('select').each(function(select_elem){
|
||
select_elem['name'] = 'resume[languages]['+ select['value'] +'][]';
|
||
});
|
||
}else if(select = (event.findElement('#my_resume .work_exp select.company_industry') || event.findElement('#company_industry_search'))){
|
||
if(select['value'] == '其它'){
|
||
var elem_str = "<input type='text' class='input_1 required' style='margin-left: 10px;' name='" + select['name'] + "' />"
|
||
if(select['id'] == 'company_industry_search'){elem_str = "<input type='text' class='text' style='margin-left: 10px;' name='" + select['name'] + "' />"}
|
||
select.insert({'after': elem_str});
|
||
select['name'] = '';
|
||
}else{
|
||
var ci_text_elem = select.next('input');
|
||
if(ci_text_elem){
|
||
select['name'] = ci_text_elem['name'];
|
||
select.next('input').remove();
|
||
}
|
||
}
|
||
}else if(select = event.findElement('#skills_search')){
|
||
if(select['value'] == '其它'){
|
||
select.insert({'after': "<input type='text' class='text' style='margin-left:10px;' name='"+ select['name'] +"' />"})
|
||
select['name'] = '';
|
||
}else{
|
||
var ci_text_elem = select.next('input');
|
||
if(ci_text_elem){
|
||
select['name'] = ci_text_elem['name'];
|
||
select.next('input').remove();
|
||
}
|
||
}
|
||
}
|
||
};
|
||
if(Prototype.Browser.IE){
|
||
document.observe('focusin', function(event){
|
||
var select = event.findElement("#my_resume select");
|
||
if(select && !select.change_bubbles_on_ie){
|
||
select.change_bubbles_on_ie = true;
|
||
select.observe('change', resume_change_process);
|
||
}
|
||
});
|
||
}else{
|
||
document.observe('change', resume_change_process);
|
||
}
|
||
});
|
||
|
||
function add_vote_option(btn, html_str){
|
||
var new_id = new Date().getTime();
|
||
$(btn).up().previous().insert({bottom: html_str.replace(/new_vote_option_id/g, new_id)});
|
||
}
|
||
function del_vote_option(vote_option){
|
||
vote_option = $(vote_option);
|
||
var tr1 = vote_option.up(1);
|
||
var tr2 = tr1.next();
|
||
var vote_option_url = vote_option.getAttribute('url');
|
||
if(vote_option_url){
|
||
if(confirm('慎用,如投票选项下有很多投票,会删除其所有投票,而增加服务器压力')){
|
||
new Ajax.Request(vote_option_url, {
|
||
method: 'delete',
|
||
onSuccess: function(transport){ tr1.remove(); tr2.remove();}
|
||
});
|
||
}
|
||
}else{
|
||
tr1.remove();
|
||
tr2.remove();
|
||
}
|
||
}
|