[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: JavaScript перестал сортировать по имени и по дате
Jota_ru
У меня была галерея на виртуальном хостинге где загружались мини картинки и при тыканье направлялись на большие, после переезд на VPS сортировки нет вообще никакой раньше работало по дате и по названию файлы:

Вопрос: Может надо что то в настройках или еще где?
А может проблема в PHP в getpics.php?

index.htm
Код
<script src="/1/getpics.php" type="text/javascript"></script>

<script type="text/javascript">


var dimension="4x4" //Specify dimension of gallery (number of images shown), such as 4x2, 3x1 etc
var imagepath="/1/" //Absolute path to image directory. Include trailing slash (/)
var href_target="new" //Enter target attribute of links, if applicable

//Toggle popup link setting: popupsetting[0 or 1, "pop up window attributes" (if 1)]
var popupsetting=[0, "width=500px, height=400px, scrollbars, resizable"]

//Toggle image description: descriptionprefix[0 or 1, "Text to show" (if 1)]
var descriptionprefix=[0, "Photo "]

//Sort images by date? ("asc", "desc", or "")
//"desc" for example causes the newest images to show up first in the gallery
//"" disables this feature, so images are sorted by file name (default)
var gsortorder=""

//By default, each image hyperlinks to itself.
//However, if you wish them to link to larger versions of themselves
//Specify the directory in which the larger images are located
//The file names of these large images should mirror those of the original
//Enter a blank string ("") to disable this option
var targetlinkdir="/1/d/foto.php?file="

/////No need to edit beyond here///////////////////

function sortbydate(a, b){ //Sort images function
if (gsortorder=="asc") //sort by file date: older to newer
return new Date(a[1])-new Date(b[1])
else if (gsortorder=="desc") //sort by file date: newer to older
return new Date(b[1])-new Date(a[1])
}

if (gsortorder=="asc" || gsortorder=="desc")
galleryarray.sort(sortbydate)

var totalslots=dimension.split("x")[0]*dimension.split("x")[1]

function buildimage(i){
var imagecompletepath=(targetlinkdir!="")? targetlinkdir+galleryarray[i][0] : imagepath+galleryarray[i][0]
var tempcontainer='<a href="'+imagecompletepath+'" target="_blank" onClick="return popuplinkfunc(this)">'
tempcontainer+='<img src="'+imagepath+galleryarray[i][0]+'" title="'+galleryarray[i][0]+' ['+galleryarray[i][1]+']" />'
tempcontainer+='</a><br />'
tempcontainer+=(descriptionprefix[0]==1)? descriptionprefix[1]+(i+1) : ""
return tempcontainer
}

function jumptopage(p){
var startpoint=(p-1)*totalslots
var y=1;
for (i=0; i<totalslots; i++){
document.getElementById("slide"+i).innerHTML=(typeof galleryarray[startpoint+i]!="undefined")? buildimage(startpoint+i) : ""
}
while(document.getElementById("navlink"+y)!=null){
document.getElementById("navlink"+y).className=""
y++
}
document.getElementById("navlink"+p).className="current"
}

var curimage=0
for (y=0; y<dimension.split("x")[1]; y++){
for (x=0; x<dimension.split("x")[0]; x++){
if (curimage<galleryarray.length)
document.write('<div id="slide'+curimage+'" class="slideshow">'+buildimage(curimage)+'</div>')
curimage++
}
document.write('<br style="clear: left" />')
}

function popuplinkfunc(imgsrc){
if (popupsetting[0]==1){
var popwin=open(imgsrc.href, "popwin", popupsetting[1])
popwin.focus()
return false
}
else
return true
}

</script>

<!--Below HTML code refers to the navigational links for the gallery-->

<div id="navlinks">
<script type="text/javascript">
for (i=1; i<Math.ceil(galleryarray.length/totalslots)+1; i++)
document.write('<a id="navlink'+i+'" href="java script:jumptopage('+i+')\"><font color=#ffffff>'+i+'</a> ')
document.getElementById("navlink1").className="current"
</script>
</div>


getpics.php
Код
<?
Header("content-type: application/x-javascript");

function returnimages($dirname=".") {
   $pattern="\.(jpg|jpeg|png|gif|bmp)$";
   $files = array();
   $curimage=0;
   if($handle = opendir($dirname)) {
       while(false !== ($file = readdir($handle))){
               if(eregi($pattern, $file)){
         $filedate=date ("M d, Y H:i:s", filemtime($file));
                 echo 'galleryarray[' . $curimage .']=["' . $file . '", "'.$filedate.'"];' . "\n";
                 $curimage++;
               }
       }

       closedir($handle);
   }
   return($files);
}

echo "var galleryarray=new Array();" . "\n";
returnimages();
?>




Спустя 54 минуты, 32 секунды (26.10.2007 - 09:29) vasa_c написал(а):
JavaScript сортирует не на сервере, а в браузере, так что проблема скорее всего в серверном сценарии.
Откройте getpics.php напрямую и посмотрите, всё ли там формируется как надо.

Header("content-type: application/x-javascript");
По-моему, излишне. Насколько знаю не все браузеры это съедят.

Спустя 3 часа, 32 минуты, 1 секунда (26.10.2007 - 13:01) Jota_ru написал(а):
Цитата(vasa_c @ 26.10.2007, 6:29) [snapback]28541[/snapback]
JavaScript сортирует не на сервере, а в браузере, так что проблема скорее всего в серверном сценарии.
Откройте getpics.php напрямую и посмотрите, всё ли там формируется как надо.

Header("content-type: application/x-javascript");
По-моему, излишне. Насколько знаю не все браузеры это съедят.



Проверил на Opera, FF, IE - раскладывает одинаково неправильно (постоянно непраивльно во всех)

Запустил getpics.php
Да! Ставит их совершенно не по имени, что с ним?

var galleryarray=new Array();
galleryarray[0]=["casados_con_hijos_s2e018_12.jpg", "Oct 26, 2007 13:56:30"];
galleryarray[1]=["casados_con_hijos_s2e012_03.jpg", "Oct 26, 2007 13:56:12"];
galleryarray[2]=["casados_con_hijos_s1e077_10.jpg", "Oct 26, 2007 13:55:41"];
galleryarray[3]=["casados_con_hijos_s2e056_22.jpg", "Oct 26, 2007 13:55:09"];
galleryarray[4]=["casados_con_hijos_s2e004_12.jpg", "Oct 26, 2007 13:56:02"];
galleryarray[5]=["casados_con_hijos_s2e057_05.jpg", "Oct 26, 2007 13:55:03"];
galleryarray[6]=["casados_con_hijos_s2e056_31.jpg", "Oct 26, 2007 13:55:06"];
galleryarray[7]=["casados_con_hijos_s2e013_03.jpg", "Oct 26, 2007 13:56:17"];
galleryarray[8]=["casados_con_hijos_s2e009_08.jpg", "Oct 26, 2007 13:56:09"];
galleryarray[9]=["casados_con_hijos_s1e033_01.jpg", "Oct 26, 2007 13:57:03"];

Спустя 29 минут, 32 секунды (26.10.2007 - 13:31) vasa_c написал(а):
А в каком порядке файлы будут считываться с диска знает только файловая система.
Считывайте в массив и сортируйте его.
Так же обращаю ваше внимание на функцию glob().

Спустя 12 минут, 29 секунд (26.10.2007 - 13:43) Jota_ru написал(а):
Я бы обратил но PHP я не знаю вообще!

Значит надо где-то в Fedora Core 4 писать чтобы сортировал файлы по имени сверху в низ? Сейчас то он вообще никак не сортирует...

Спустя 1 час, 45 минут, 45 секунд (26.10.2007 - 15:29) Jota_ru написал(а):
Положил в нужную папку .htaccess с

Options +Indexes

IndexOrderDefault Ascending Name

Листинг правильный выводится, а getpics.php всё так же неправильно angry.gif


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.