$(function() {
$('#supportersRequest').click(function() {
if ($('select.domainList').val() != "false") {
if (!$('input.requestUrl').val()) {
alert('웹사이트 URL이 비어있습니다.');
$('input.requestUrl').focus();
return false;
}
var urlKeeper = $('input.requestUrl').val();
var request = $.ajax({
url: "/ajax/encode_url.php",
type: "POST",
dataType: "json",
data: {
url: urlKeeper
}
});
request.always(function(response) {
var zone = $('select.domainList').val();
var message = '';
if (response.status == 'ok') {
var request = $.ajax({
url: "/ajax/decode_url.php",
type: "POST",
dataType: "json",
data: {
url: zone
}
});
request.always(function(response2) {
var url = response.message;
var endPoint = url.indexOf('/',7);
var compareString = '';
if (endPoint == -1 ) {
compareString = url;
} else {
compareString = url.substring(0, endPoint);
}
if (compareString.search(zone) == -1 && compareString.search(response2.message) == -1) {
alert(sprintf(LANG['request_url_need_correct_domain'], response2.message));
tr.find('input.requestUrl').focus();
return false;
}
var request = $.ajax({
url: "/ajax/request_supporters.php",
type: "POST",
data: {
status: 'request',
zone: $('select.domainList').val(),
type: 'article',
request_url: url
}
});
request.always(function(response) {
var message = '';
if (response.status == 'done') {
message = '서포터즈 신청을 완료했습니다.';
alert(message);
window.location.reload();
} else if (response.status == 'fail' && response.message) {
message = response.message;
alert(message);
} else {
message = '서포터즈 신청에 실패했습니다.';
alert(message);
}
});
});
} else {
alert('입력한 값이 웹사이트 주소 형식에 맞지 않습니다.');
$('input.requestUrl').focus();
}
});
}
});
$('.modifySupporters').click(function(e) {
toggleUrlForm(e);
});
$('.saveSupporters').click(function(e) {
var target = e.target;
var targetParentTr = $(target).parents('tr.supporters');
toggleUrlForm(e);
});
$('.deleteSupporters').click(function(e) {
deleteSupporters(e);
});
$('.domainList').change(function(e) {
var zone = $('select.domainList').val();
if (zone != 'false') {
var request = $.ajax({
url: "/ajax/decode_url.php",
type: "POST",
dataType: "json",
data: {
url: 'http://www.' + zone
}
});
request.always(function(response) {
$('input.requestUrl').val(response.message);
});
} else {
$('input.requestUrl').val('');
}
});
});
function clearSupportersRow() {
$('tr.supporters:not(.hiddenRow)').remove();
}
function addSupportersRow(token) {
var request = $.ajax({
url: "/ajax/decode_url.php",
type: "POST",
dataType: "json",
data: {
url: token.request_url
}
});
request.always(function(response) {
var message = '';
if (response.status == 'ok') {
$('tr.emptyRow').hide();
var row = $('tr.supporters.hiddenRow:first');
var targetDomain = $('select.domainList option[value="' + token.zone + '"]');
if ($('tr.supporters').length == 0) {
$('tr.emptyRow').removeClass('hiddenRow');
}
$('tr.supporters').parent().append('
' + row.html() + '
');
$('tr.supporters.hiddenRow:last').removeClass('hiddenRow');
if (token.idn == token.zone) {
$('tr.supporters:last td.requestZone').html(token.idn);
} else {
$('tr.supporters:last td.requestZone').html(token.idn + '
(' + token.zone + ')-');
}
$('tr.supporters:last td.requestType').html('' + response.message + '');
$('tr.supporters:last td.message span.message').html(token.message);
$('tr.supporters:last td.button input.saveSupporters').data('zone', token.zone);
$('tr.supporters:last td.button input.saveSupporters').data('type', token.type);
$('tr.supporters:last td.button input.modifySupporters').data('url', token.request_url);
$('tr.supporters:last td.button input.deleteSupporters').data('zone', token.zone);
$('tr.supporters:last td.button input.modifySupporters').bind('click', function(e) {
toggleUrlForm(e);
});
$('tr.supporters:last td.button input.saveSupporters').bind('click', function(e) {
var target = e.target;
var targetParentTr = $(target).parents('tr.supporters');
toggleUrlForm(e);
});
$('tr.supporters:last td.button input.deleteSupporters').bind('click', function(e) {
deleteSupporters(e);
});
disableOption(targetDomain);
}
});
}
function disableOption(target) {
$(target).addClass('disabledOption');
$(target).prop('disabled', true);
}
function enableOption(target) {
$(target).removeClass('disabledOption');
$(target).prop('disabled', false);
}
function toggleUrlForm(e) {
var target = e.target;
var targetParentTr = $(target).parents('tr.supporters');
if ($(target).hasClass('modifySupporters')) {
$(target).parents('tr.supporters').find('td.requestType span.request').toggle();
$(target).toggle();
$(target).parent().find('input.saveSupporters').toggle();
$(target).parent().find('input.deleteSupporters').toggleClass('hideBtn');
$(target).parents('tr.supporters').find('td.requestType').append('');
targetParentTr.find('td.requestType input.modify.url').val($(target).data('url'));
targetParentTr.find('td.requestType input.modify.url').focus();
} else {
if (!targetParentTr.find('input[type="text"]').val()) {
alert('웹사이트 URL이 비어있습니다.');
$('input.requestUrl').focus();
return false;
}
var urlPrepare = targetParentTr.find('input[type="text"]').val();
var request = $.ajax({
url: "/ajax/encode_url.php",
type: "POST",
dataType: "json",
data: {
url: urlPrepare
}
});
request.always(function(response) {
var message = '';
if (response.status == 'ok') {
var request2 = $.ajax({
url: "/ajax/decode_url.php",
type: "POST",
dataType: "json",
data: {
url: targetParentTr.find('input.saveSupporters').data('zone')
}
});
request2.always(function(response2) {
var zone = targetParentTr.find('input.saveSupporters').data('zone');
var requestUrl = targetParentTr.find('input.modify.url').val();
var endPoint = requestUrl.indexOf('/',7);
var compareString = '';
if (endPoint == -1 ) {
compareString = requestUrl;
} else {
compareString = requestUrl.substring(0, endPoint);
}
if (compareString.search(zone) == -1 && compareString.search(response2.message) == -1) {
alert(sprintf(LANG['request_url_need_correct_domain'], response2.message));
targetParentTr.find('input.modify').focus();
return false;
}
targetParentTr.find('input.modifySupporters').data('url', response.message);
targetParentTr.find('td.message input.modify.url').remove();
targetParentTr.find('td.message span.message').toggle();
targetParentTr.find('input.saveSupporters').toggle();
targetParentTr.find('input.modifySupporters').toggle();
targetParentTr.find('input.deleteSupporters').toggleClass('hideBtn');
// to save
modifySupporters(targetParentTr);
});
} else {
alert('입력한 값이 웹사이트 주소 형식에 맞지 않습니다.');
targetParentTr.find('input[type="text"]').focus();
}
});
}
}
function deleteSupporters(e) {
var self = e.target
var request = $.ajax({
url: "/ajax/request_supporters.php",
type: "POST",
data: {
status: 'delete',
zone: $(self).data('zone')
}
});
request.always(function(response) {
var message = '';
if (response.status == 'done') {
// $(self).parents('tr.supporters').remove();
enableOption($('select.domainList option[value="' + response.contents.zone + '"]'));
message = '서포터즈 신청을 삭제했습니다.';
} else if (response.status == 'fail' && response.message) {
message = '서포터즈 신청 삭제를 실패했습니다.\n\n' + response.message;
} else {
message = '서포터즈 신청 삭제를 실패했습니다.';
}
alert(message);
window.location.reload();
});
}
function modifySupporters(tr) {
var request = $.ajax({
url: "/ajax/request_supporters.php",
type: "POST",
data: {
status: 'modify',
type: tr.find('input.saveSupporters').data('type'),
zone: tr.find('input.saveSupporters').data('zone'),
request_url: tr.find('input.modifySupporters').data('url')
}
});
request.always(function(response) {
var message = '';
if (response.status == 'done') {
/*
var zone = response;
$(response.contents).each(function(idx, el) {
addSupportersRow(el);
});
*/
message = '서포터즈 신청을 갱신했습니다.';
} else if (response.status == 'fail' && response.message) {
message = '서포터즈 신청을 갱신하지 못했습니다.\n\n' + response.message;
} else {
message = '서포터즈 신청을 갱신하지 못했습니다.';
}
alert(message);
window.location.reload();
});
}
function displayEmptyRow() {
if ($('#supportersList tr.supporters:not(.emptyRow, .hiddenRow)').length > 0) {
$('tr.emptyRow').hide();
} else {
$('tr.emptyRow').show();
}
}
function changeDefaultSelect() {
$($('select.domainList option.default')[0]).attr('selected', 'selected')
$('input.requestUrl').val('');
}