var refreshIntervalId = null; // Prefer same-origin relative paths so HTTPS doesn't break due to mixed-content / upgrade rules. var imgurl = "img/"; function buildThumbLi(filename) { var imgfile = imgurl + encodeURIComponent(filename); return ( "
  • " + " " + " " + " " + filename.replace(/" + " " + "
    " + "
  • " ); } function removeFromImageList(filename) { if (!window.DREAMGIRL_IMAGES || !window.DREAMGIRL_IMAGES.length) return; var idx = window.DREAMGIRL_IMAGES.indexOf(filename); if (idx >= 0) window.DREAMGIRL_IMAGES.splice(idx, 1); } function deleteImageFile(filename, onSuccess, onError) { var fd = new FormData(); fd.append('filename', filename); fetch('api/delete_image.php', { method: 'POST', body: fd, credentials: 'same-origin' }) .then(function (r) { return r.json(); }) .then(function (data) { if (!data || !data.ok) { throw new Error((data && data.error) ? data.error : '삭제 실패'); } if (typeof onSuccess === 'function') onSuccess(data); }) .catch(function (err) { if (typeof onError === 'function') { onError(err); } else { alert('에러: ' + (err && err.message ? err.message : '삭제 실패')); } }); } function bindThumbDeleteHandler() { $('#thumbs').off('click.thumbDelete', '.thumb-delete'); $('#thumbs').on('click.thumbDelete', '.thumb-delete', function (e) { e.preventDefault(); e.stopPropagation(); var $li = $(this).closest('li'); var filename = $li.attr('data-filename'); if (!filename) return; var $btn = $(this); $btn.prop('disabled', true); deleteImageFile(filename, function () { removeFromImageList(filename); if (window.dreamgirlGallery) { var gallery = window.dreamgirlGallery; var index = $li.index(); var wasCurrent = gallery.currentImage && gallery.currentImage.index === index; if (typeof gallery.removeImageByIndex === 'function') { gallery.removeImageByIndex(index); } else { $li.remove(); } if (wasCurrent && gallery.data && gallery.data.length) { var nextIndex = Math.min(index, gallery.data.length - 1); if (typeof gallery.gotoIndex === 'function') { gallery.gotoIndex(nextIndex); } } } else { $li.remove(); } }, function (err) { $btn.prop('disabled', false); alert('에러: ' + (err && err.message ? err.message : '삭제 실패')); }); }); } function getApiUrl() { // Use scheme-relative URL so it matches http/https of the current page. // NOTE: if the API does not support https, consider proxying it via Apache and pointing to a same-origin endpoint. return "//api.martn.ncue.net/dreamgirl.ncue"; } function getRandomIndex(n) { var arr = new Array(); var temp; var rnum; for(var i=0; i