New structure for storing images

This commit is contained in:
ville rantanen
2013-10-01 16:46:41 +03:00
parent a438f7f941
commit dd994bf6f5
2 changed files with 81 additions and 87 deletions

View File

@@ -924,12 +924,6 @@ e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["
/* ------------ Qalbum functions start here ------------- */
var maxThumb=10;
var uagent = navigator.userAgent.toLowerCase();
var pathlist=[];
var pathimage=[];
var imagelist=[];
var filelist=[];
var imagedesc=[];
var imagetime=[];
var marklist=[]
var currentimage=-1;
var currentlist=-1;
@@ -1002,27 +996,27 @@ function showbigimage(i) {
var width=document.body.clientWidth-30;
var height=document.body.clientHeight-225;
if (fullscreen) { height=height+200; }
if (originals) { mediumstr=encodeURIComponent(imagelist[i]); }
else { mediumstr='_med/med_'+encodeURIComponent(imagelist[i])+'.jpg'; }
var linkToBig = '<a class="linktobig" href="'+encodeURIComponent(imagelist[i])+'" target="_blank">';
if (originals) { mediumstr=encodeURIComponent(imagelist[i].name); }
else { mediumstr='_med/med_'+encodeURIComponent(imagelist[i].name)+'.jpg'; }
var linkToBig = '<a class="linktobig" href="'+encodeURIComponent(imagelist[i].name)+'" target="_blank">';
if (slideshowinterval!=0) {
linkToBig = '<a class="linktobig" onclick="slidenextrestart()">';
}
if (isHTML(imagelist[i])) {
if (isHTML(imagelist[i].name)) {
$('#imagecontainer').html('<span id="prevTouch"/><span id="nextTouch"/><div id="imagebig">'+linkToBig+
'<iframe id="imagesingle" src="'+encodeURIComponent(imagelist[i])+'"></a></div>');
'<iframe id="imagesingle" src="'+encodeURIComponent(imagelist[i].name)+'"></a></div>');
$('#imagesingle').css('width',width);
$('#imagesingle').css('height',height);
} else { // is image
$('#imagecontainer').html('<span id="prevTouch"/><span id="nextTouch"/><div id="imagebig">'+linkToBig+
'<img id="imagesingle" src="'+mediumstr+'" title="'+titlestring(imagedesc[i])+'"></a></div>');
'<img id="imagesingle" src="'+mediumstr+'" title="'+titlestring(imagelist[i].desc)+'"></a></div>');
$('#imagesingle').css('max-width',width);
$('#imagesingle').css('max-height',height);
if ($.browser.msie) { // IE does not work with max*
$('#imagesingle').css('width','auto');
$('#imagesingle').css('height',height);
}
$('#imagesingle').css('background-image','url("_tn/tn_'+encodeURIComponent(imagelist[i])+'.jpg")');
$('#imagesingle').css('background-image','url("_tn/tn_'+encodeURIComponent(imagelist[i].name)+'.jpg")');
}
$('#imagecontainer').css('height',height);
$('#imagecontainer').data('ID',i);
@@ -1037,13 +1031,13 @@ function showbigimage(i) {
showimage(currentimage);
});
$('#desccontainer').html(getProgressEl()+currentlink(i)+imagedesc[i]);
$('#desccontainer').html(getProgressEl()+currentlink(i)+imagelist[i].desc);
$('#desccontainer').css('display','block');
if (fullscreen) {
$('#imagecontainer')[0].scrollIntoView(true);
}
addswipe('#imagecontainer');
if (zoom & !isHTML(imagelist[i])) {
if (zoom & !isHTML(imagelist[i].name)) {
$(document).ready(function() {
var options = {
@@ -1056,7 +1050,7 @@ function showbigimage(i) {
$('#imagesingle').css('display','none');
// hide the distorted imagesingle
var bigImg=new Image();
bigImg.src=encodeURIComponent(imagelist[i]);
bigImg.src=encodeURIComponent(imagelist[i].name);
$('.linktobig').jqzoom(options);
$(bigImg).load(function() {
if (bigImg.width < width) {
@@ -1073,7 +1067,7 @@ function showbigimage(i) {
function currentlink(i) {
// gets the search term for this image
index = location.href.split("?");
s='<a title="Link to this page" href="'+index[0]+'?q='+escape(imagelist[i])+'">['+String(i+1)+']</a> ';
s='<a title="Link to this page" href="'+index[0]+'?q='+escape(imagelist[i].name)+'">['+String(i+1)+']</a> ';
return s;
}
@@ -1085,20 +1079,20 @@ function preload(i) {
left=Math.max(0,i-1);
left=Math.min(left,imagelist.length-1);
if (originals) {
prestr='<img src="'+encodeURIComponent(imagelist[left])+'" />';
prestr+='<img src="'+encodeURIComponent(imagelist[right])+'" />';
prestr='<img src="'+encodeURIComponent(imagelist[left].name)+'" />';
prestr+='<img src="'+encodeURIComponent(imagelist[right].name)+'" />';
} else {
prestr='<img src="_med/med_'+encodeURIComponent(imagelist[left])+'.jpg" />';
prestr+='<img src="_med/med_'+encodeURIComponent(imagelist[right])+'.jpg" />';
prestr='<img src="_med/med_'+encodeURIComponent(imagelist[left].name)+'.jpg" />';
prestr+='<img src="_med/med_'+encodeURIComponent(imagelist[right].name)+'.jpg" />';
}
maxThumb=getmaxthumbs();
ends=getThumbStartEnd(i+maxThumb,maxThumb);
for (n=ends.first; n<ends.last; n++) {
prestr+='<img src="_tn/tn_'+encodeURIComponent(imagelist[n])+'.jpg"/>';
prestr+='<img src="_tn/tn_'+encodeURIComponent(imagelist[n].name)+'.jpg"/>';
}
ends=getThumbStartEnd(i-maxThumb,maxThumb);
for (n=ends.first; n<ends.last; n++) {
prestr+='<img src="_tn/tn_'+encodeURIComponent(imagelist[n])+'.jpg"/>';
prestr+='<img src="_tn/tn_'+encodeURIComponent(imagelist[n].name)+'.jpg"/>';
}
$('#preloadcontainer').html(prestr);
preloadcheck();
@@ -1146,10 +1140,10 @@ function thumblist(n,curr) {
' <span class="menuitem" id="setupbutton" onclick="usersetupflip()">(S)etup</span>';
thumbstr='<div><span class="headsmall">Images</span>'+menustr+'</div><div id="thumbrow">'+leftstr;
for (i=ends.first; i<ends.last; i++) {
if (isHTML(imagelist[i])) {
thumbstr+='<span id="n'+i+'" class="imagebox thumbbox"><img class="thumbimage" title="'+titlestring(imagedesc[i])+'" onclick="showimage('+String(i)+')" ><br/><a href="'+encodeURIComponent(imagelist[i])+'" target="_blank" title="'+titlestring(imagedesc[i])+'">'+nicestring((imagelist[i]))+'</a></span>';
if (isHTML(imagelist[i].name)) {
thumbstr+='<span id="n'+i+'" class="imagebox thumbbox"><img class="thumbimage" title="'+titlestring(imagelist[i].desc)+'" onclick="showimage('+String(i)+')" ><br/><a href="'+encodeURIComponent(imagelist[i].name)+'" target="_blank" title="'+titlestring(imagelist[i].desc)+'">'+nicestring((imagelist[i].name))+'</a></span>';
} else {
thumbstr+='<span id="n'+i+'" class="imagebox thumbbox"><img class="thumbimage" title="'+titlestring(imagedesc[i])+'" onclick="showimage('+String(i)+')" src="_tn/tn_'+encodeURIComponent(imagelist[i])+'.jpg"><br/><a href="'+encodeURIComponent(imagelist[i])+'" target="_blank" title="'+titlestring(imagedesc[i])+'">'+nicestring((imagelist[i]))+'</a></span>';
thumbstr+='<span id="n'+i+'" class="imagebox thumbbox"><img class="thumbimage" title="'+titlestring(imagelist[i].desc)+'" onclick="showimage('+String(i)+')" src="_tn/tn_'+encodeURIComponent(imagelist[i].name)+'.jpg"><br/><a href="'+encodeURIComponent(imagelist[i].name)+'" target="_blank" title="'+titlestring(imagelist[i].desc)+'">'+nicestring((imagelist[i].name))+'</a></span>';
}
}
thumbstr+=rightstr+'</div>';
@@ -1195,7 +1189,7 @@ function allthumbs() {
// Shows all the thumbnails in the current folder
thumbstr='<div id="thumbrow">';
for (i=0; i<imagelist.length; i++) {
thumbstr+='<span id="n'+i+'" class="imagebox thumbbox"><a href="?p='+(i+1)+'"><img title="'+titlestring(imagedesc[i])+'" src="_tn/tn_'+(encodeURIComponent(imagelist[i]))+'.jpg"></a></span>';
thumbstr+='<span id="n'+i+'" class="imagebox thumbbox"><a href="?p='+(i+1)+'"><img title="'+titlestring(imagelist[i].desc)+'" src="_tn/tn_'+(encodeURIComponent(imagelist[i]))+'.jpg"></a></span>';
}
thumbstr+='</div>';
$('#thumbcontainer').html(thumbstr);
@@ -1210,7 +1204,7 @@ function allmediums() {
// Shows all the medium sized in the current folder
thumbstr='<div id="thumbrow">';
for (i=0; i<imagelist.length; i++) {
thumbstr+='<span id="n'+i+'" class="medium"><img id="img'+i+'" title="'+titlestring(imagedesc[i])+'" onclick="showimage('+String(i)+')" src="_med/med_'+(encodeURIComponent(imagelist[i]))+'.jpg"></span>';
thumbstr+='<span id="n'+i+'" class="medium"><img id="img'+i+'" title="'+titlestring(imagelist[i].desc)+'" onclick="showimage('+String(i)+')" src="_med/med_'+(encodeURIComponent(imagelist[i]))+'.jpg"></span>';
}
thumbstr+='</div>';
$('#thumbcontainer').html(thumbstr);
@@ -1230,7 +1224,8 @@ function subfoldersmalllist() {
pathstr='<span class="pathsmalllink">Subfolders: ';
pathstr+='<span class="pathsmalllink">(<a href="javascript:void(0);" onclick="subfoldersmalllist();">text</a> <a href="javascript:void(0);" onclick="subfolderbiglist();">icon</a> <a href="javascript:void(0);" onclick="subfolderdetaillist();">list</a>)</span> ';
for (p=0; p<pathlist.length; p++) {
pathstr+='<a href="'+encodeURI(pathlist[p][0])+'/index.html">'+nicestring(pathlist[p][0])+'</a>('+String(pathlist[p][1])+')/ ';
pathstr+='<a href="'+encodeURI(pathlist[p].name)+'/index.html">'+
nicestring(pathlist[p].name)+'</a>('+String(pathlist[p].size)+')/ ';
}
pathstr+='</span>';
if (pathlist.length==0) {
@@ -1242,10 +1237,10 @@ function subfolderbiglist() {
// Shows a subfolder list with thumbnails
pathstr='<h2>Subfolders: <span class="pathsmalllink">(<a href="javascript:void(0);" onclick="subfoldersmalllist();">text</a> <a href="javascript:void(0);" onclick="subfolderbiglist();">icon</a> <a href="javascript:void(0);" onclick="subfolderdetaillist();">list</a>)</span></h2>';
for (p=0; p<pathlist.length; p++) {
if (pathimage[p].length>0) {
imgstr='<span class="pathbox" id="p'+p+'" style="background-image:url(\''+encodeURI(pathimage[p])+'\');">';
if (pathlist[p].image.length>0) {
imgstr='<span class="pathbox" id="p'+p+'" style="background-image:url(\''+encodeURI(pathlist[p].image)+'\');">';
} else { imgstr='<span class="pathbox" id="p'+p+'">'; }
pathstr+='<a title="'+pathlist[p][0]+'" href="'+encodeURI(pathlist[p][0])+'/index.html">'+imgstr+'<span class="pathlink"><span class="pathlinktext">'+nicestring(pathlist[p][0])+' ('+String(pathlist[p][1])+')</span></span></span></a>';
pathstr+='<a title="'+pathlist[p].name+'" href="'+encodeURI(pathlist[p].name)+'/index.html">'+imgstr+'<span class="pathlink"><span class="pathlinktext">'+nicestring(pathlist[p].name)+' ('+String(pathlist[p].size)+')</span></span></span></a>';
}
if (pathlist.length==0) {
$('#pathcontainer').html('');
@@ -1256,10 +1251,10 @@ function subfolderdetaillist() {
// Shows a subfolder list with thumbnails
pathstr='<h2>Subfolders: <span class="pathsmalllink">(<a href="javascript:void(0);" onclick="subfoldersmalllist();">text</a> <a href="javascript:void(0);" onclick="subfolderbiglist();">icon</a> <a href="javascript:void(0);" onclick="subfolderdetaillist();">list</a>)</span></h2>';
for (p=0; p<pathlist.length; p++) {
if (pathimage[p].length>0) {
imgstr='<span class="pathbox" id="p'+p+'" style="background-image:url(\''+encodeURI(pathimage[p])+'\');position:relative;top:-35px;" >';
if (pathlist[p].image.length>0) {
imgstr='<span class="pathbox" id="p'+p+'" style="background-image:url(\''+encodeURI(pathlist[p].image)+'\');position:relative;top:-35px;" >';
} else { imgstr='<span class="pathbox" id="p'+p+'">'; }
pathstr+='<div class="pathdetailrow"><a title="'+pathlist[p][0]+'" href="'+encodeURI(pathlist[p][0])+'/index.html">'+imgstr+'</span><span class="pathdetaillink"><span class="pathdetaillinktext">'+(pathlist[p][0])+' ('+String(pathlist[p][1])+')</span></span></a></div>';
pathstr+='<div class="pathdetailrow"><a title="'+pathlist[p].name+'" href="'+encodeURI(pathlist[p].name)+'/index.html">'+imgstr+'</span><span class="pathdetaillink"><span class="pathdetaillinktext">'+(pathlist[p].name)+' ('+String(pathlist[p].size)+')</span></span></a></div>';
}
if (pathlist.length==0) {
$('#pathcontainer').html('');
@@ -1268,14 +1263,12 @@ function subfolderdetaillist() {
}
function sortlist(property) {
// sorts the image list based on time or name, or reverse sort
var templist=[]
var tempmark=[]
var tempcurrent=imagelist[currentimage];
for (i in imagelist) {
templist.push({name:imagelist[i], time:imagetime[i], desc:imagedesc[i]});
}
if (currentimage!=-1) { var tempcurrent=imagelist[currentimage].name; }
var templist=imagelist;
var tempmark=[];
for (i in marklist) {
tempmark.push(imagelist[marklist[i]]);
tempmark.push(imagelist[marklist[i]].name);
}
if (property=='time') {
templist.sort(function(a,b) {
@@ -1294,20 +1287,21 @@ function sortlist(property) {
if (property=='rev') {
templist.reverse();
}
for (i in imagelist) {
imagelist[i]=templist[i].name;
imagetime[i]=templist[i].time;
imagedesc[i]=templist[i].desc;
if (imagelist[i] == tempcurrent) {
currentimage=parseInt(i);
}
}
imagelist=templist;
var markidx=0;
marklist=[];
for (i in tempmark) {
markidx=imagelist.indexOf(tempmark[i]);
for (i in imagelist) {
markidx=tempmark.indexOf(imagelist[i].name);
if (markidx!=-1) {
marklist.push(markidx);
marklist.push(parseInt(i));
}
}
if (currentimage!=-1) {
for (i in imagelist) {
if (imagelist[i].name == tempcurrent) {
currentimage=parseInt(i);
}
}
}
thumblist(currentimage,currentimage);
@@ -1323,7 +1317,7 @@ function request(type) {
// Fetch ?q=search request and present first match.
if ((query[0]=="q") && query.length>1 && query[1].length>0) {
for (imname in imagelist) {
if (imagelist[imname].indexOf(unescape(query[1])) != -1) {
if (imagelist[imname].name.indexOf(unescape(query[1])) != -1) {
return parseInt(imname);
break;
}
@@ -1415,8 +1409,8 @@ function marklisteditor() {
var dlstr='<a href="data:text/csv,File%0A';
for (i in marklist) {
liststr+='<div><span class="menuitem thumbmenu" onclick="unmarkitem('+i+');">X</span>'+
'<span class="thumbmenu markedtext" onclick="showimage('+marklist[i]+');">'+imagelist[marklist[i]]+'</span></div>';
dlstr+=imagelist[marklist[i]]+'%0A';
'<span class="thumbmenu markedtext" onclick="showimage('+marklist[i]+');">'+imagelist[marklist[i]].name+'</span></div>';
dlstr+=imagelist[marklist[i]].name+'%0A';
}
dlstr+='">Download as file</a>';
liststr+='<div class="thumbmenu">'+
@@ -1437,7 +1431,7 @@ function marklisttable() {
cel.cols=80;
cel.hasfocus=false;
for (i in marklist) {
cel.value=cel.value+'"'+imagelist[marklist[i]]+'"\r\n';
cel.value=cel.value+'"'+imagelist[marklist[i]].name+'"\r\n';
}
var rows=cel.value.split(/\r?\n|\r/).length + 1;
cel.rows=rows;