Показать сообщение отдельно
  #1 (permalink)  
Старый 04.08.2014, 19:04
Новичок на форуме
Отправить личное сообщение для Blacksmouker Посмотреть профиль Найти все сообщения от Blacksmouker
 
Регистрация: 08.04.2014
Сообщений: 5

Календарь с подсветкой дат
Добрый вечер, уважаемые форумчане!

Хочу спросить у Вас совета. Не получается решить одну проблему, на первый взгляд не очень сложную.

Входные данные:
На сервере лежат файлы с названием типа dd.mm.yyyy.zip.

На странице пользователя есть календарь с раскладкой на год.
Хочу сделать так, чтобы при наличии на конкретную дату архива на сервере - в календаре такая дата подсвечивалась ссылкой на данный файл.

На текущий момент застопорился на попытке сравнения даты в календаре с датой в имени архива.

Если в коде,
так получаю содержимое сервера и передаю в json.

$conn_id = ftp_connect($ftp_server);

		// проверка имени пользователя и пароля
		$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

		// получить содержимое текущей директории
		$contents = ftp_nlist($conn_id, ".");
$json = json_encode($contents);


Вот так я получаю наименования файлов в javascript и привожу их к стандартному значению.
var files = <?php echo $json;?>;
		//document.write(files);
		
			for(var fileDate in files){
			
				s = new Date(files[fileDate].slice(6,10), files[fileDate].slice(3,5), files[fileDate].slice(0,2));
				document.write(s + '<br>');
				
			
			}


А вот скрипт собственно календаря.
var month_name = [ //массив названий месяцев
			'Январь',
			'Февраль',
			'Март',
			'Апрель',
			'Май',
			'Июнь',
			'Июль',
			'Август',
			'Сентябрь',
			'Октябрь',
			'Ноябрь',
			'Декабрь'
		];

		function calendar(year) {
			
			
				
						document.write('<table class="calend"><caption>'); //Начинаем формировать таблицу
						
						document.write(+ year + ' год');
						
						document.write('</caption>');
						document.write('<tr>');
							for (var z = 0; z<6; z++) {
								
								var days = (Date.UTC(year, z + 1) - Date.UTC(year, z)) / (24 * 60 * 60 * 1000);
								var start_day = new Date(year, z);
								var index = (start_day.getDay() + 6) % 7;
								var rows = Math.ceil((index + days) / 7);
								
								document.write('<td>');
								document.write('<div><table><caption>'+ month_name[z] + ' ' + year + '</caption>');
									for (var i = 0, k = 1 - index; i < rows; i++) {
										document.write ('<tr>');
										for (var j = 0; j < 7; j++, k++) {
											
											if (k > 0 && k <= days) {
												var date = new Date(year , z  , k );
												//document.write (date + '<BR>' );												
													if (j > 4) { //это - выходные!
													document.write ('<td class="holiday">' + k + '</td>');
														} else { //это - обычные дни:(
													document.write ('<td>' + k + '</td>');
													} 
												
											} else { //дни - пустышки
											document.write ('<td class="empty"></td>');
													}		 	
										}
										document.write ('</tr>');
									}
							document.write('</table></div></td>');
						}
						document.write('</tr>');
						
						document.write('<tr>');
							for (var z = 6; z<12; z++) {
								
								var days = (Date.UTC(year, z + 1) - Date.UTC(year, z)) / (24 * 60 * 60 * 1000);
								var start_day = new Date(year, z);
								var index = (start_day.getDay() + 6) % 7;
								var rows = Math.ceil((index + days) / 7);
						
								document.write('<td>');
								document.write('<div><table><caption>'+ month_name[z] + ' ' + year + '</caption>');
									for (var i = 0, k = 1 - index; i < rows; i++) {
									document.write ('<tr>');
										for (var j = 0; j < 7; j++, k++) {
											if (k > 0 && k <= days) {
													if (j > 4) { //это - выходные!
													document.write ('<td class="holiday">' + k + '</td>');
														} else { //это - обычные дни:(
													document.write ('<td>' + k + '</td>');
													} 
											} else { //дни - пустышки
											document.write ('<td class="empty"></td>');
													}		 	
										}
										document.write ('</tr>');
								
								
							
							}
							document.write('</table></div></td>');
						}
						document.write('</tr>');
						
						document.write('</table>');
				
		}
		calendar(2014);


В итоге календарь отрисовывается нормально, как надо.

Даты из названий файлов раскладываются правильно - выводит все верно.
Дата календаря склеивается также правильно - тестовый вывод проходит верно.

А вот добавить условие сравнения что-то не получается. Почему-то у меня он видит только первый элемент массива с датами файлов.
Ответить с цитированием