Перейти к контенту

Русский календарь, для 2.0.х


Рекомендуемые сообщения

Делаем начало недели не с воскресенья, а с понедельника

 

sources/calendar.php

 

находим

 

	var $query_bday_cache  = array();

 

вставляем после

 

	var $day_short		 = array();

найти

 

		$this->first_day_array = getdate($this->our_datestamp);

 

заменить на

 

		$this->first_day_array = $this->date_getgmdate($this->our_datestamp);

 

 

найти

 

		$this->day_words   = array(  $ibforums->lang['D_1'], $ibforums->lang['D_2'],
			  $ibforums->lang['D_3'], $ibforums->lang['D_4'], $ibforums->lang['D_5'],
			  $ibforums->lang['D_6'],$ibforums->lang['D_0'] );

 

добавить после

 

		$this->day_short   = array(  $ibforums->lang['DSH_1'], $ibforums->lang['DSH_2'],
			  $ibforums->lang['DSH_3'], $ibforums->lang['DSH_4'], $ibforums->lang['DSH_5'],
			  $ibforums->lang['DSH_6'],$ibforums->lang['DSH_0'] );

 

найти

 

	function get_mini_calendar($month, $year)
{
 global $ibforums, $DB, $std;

	foreach ($this->day_words as $day)
	{
		$cal_output .= $this->html->mini_cal_day_bit( substr($day,0,1) );
	}

 

заменить на

 

 

	function get_mini_calendar($month, $year)
{
 global $ibforums, $DB, $std;

	foreach ($this->day_short as $day)
	{
		$cal_output .= $this->html->mini_cal_day_bit( $day );
	}

 

найти

 

		$first_day_array = getdate($our_datestamp);

 

заменить на

		$first_day_array = $this->date_getgmdate($our_datestamp);

 

 

найти

 

}

?>

 

вставить перед

 

	function date_getgmdate( $gmt_stamp )
{
global $ibforums;

	$tmp = gmdate( 'j,n,Y,G,i,s,w,z,l,F', $gmt_stamp );

	list( $day, $month, $year, $hour, $min, $seconds, $wday, $yday, $weekday, $fmon ) = explode( ',', $tmp );

$weekday = $ibforums->lang['D_'.$wday];

	return array(  0		 => $gmt_stamp,
	   "seconds" => $seconds, //	Numeric representation of seconds	0 to 59
	"minutes" => $min,	 //	Numeric representation of minutes	0 to 59
	"hours"  => $hour,   //	Numeric representation of hours	0 to 23
	"mday"  => $day,	 //	Numeric representation of the day of the month	1 to 31
	"wday"  => $wday,	//	Numeric representation of the day of the week	0 (for Monday) through 6 (for Sunday)
	"mon"  => $month,   //	Numeric representation of a month	1 through 12
	"year"  => $year,	//	A full numeric representation of a year, 4 digits	Examples: 1999 or 2003
	"yday"  => $yday,	//	Numeric representation of the day of the year	0 through 365
	"weekday" => $weekday, //	A full textual representation of the day of the week	Monday through Sunday
	"month"  => $fmon,	//	A full textual representation of a month, such as January or Mar
	);
}

 

 

lang/en/lang_global.php пример приведен для англиского языка

найти

 

<?php

$lang = array (

 

 

добавить после

 

DSH_0		=>	"Sun",
DSH_1		=>	"Mon",
DSH_2		=>	"Tue",
DSH_3		=>	"Wed",
DSH_4		=>	"Thu",
DSH_5		=>	"Fri",
DSH_6		=>	"Sat",

Ссылка на комментарий
Поделиться на других сайтах

index.php?act=calendar&code=find&what=thisweek - а если сделать вот такой запрос, то даты снова смещаются. Т.е. если сегодня скажем Пятница 13-ое, а в этой части календаря будет Суббота 13-ое.

 

в секции

//-----------------------------------------

// Figure out the next / previous links

//-----------------------------------------

 

вместо

		$this->output .= $this->html->cal_week_content( $startweek['mday'], $this->month_words[$startweek['mon'] - 1 ], $startweek['year'], $prev_week, $next_week);

добавить

		$this->output .= $this->html->cal_week_content( $startweek['mday'] + 1, $this->month_words[$startweek['mon'] - 1 ], $startweek['year'], $prev_week, $next_week);

 

чтобы линк на предыдущую и следующую недели начинался с верной даты

а вот дальше как быть ... видимо вместо надписи понедельник при отображении текущей недели должно стоять воскресенье, вобщем надо смещать дни на 1 позднее, чем в оригинале.

Ссылка на комментарий
Поделиться на других сайтах

извиняюсь забыл про это, вот дополнение к верхнему посту:

 

в функции function show_week()

 

находим

 

		$startweek = getdate( $in_week );

 

заменяем на

 

		$startweek = $this->date_getgmdate( $in_week );

 

 

находим еще раз находим эту же строчку чуток ниже

 

		$startweek = getdate( $in_week );

 

заменяем на

 

		$startweek = $this->date_getgmdate( $in_week );

 

находим

 

		$this->output .= $this->html->cal_week_content( $startweek['mday'] , $this->month_words[$startweek['mon'] - 1 ], $startweek['year'], $prev_week, $next_week);

 

заменяем на

 

	$start_day = $startweek['mday'] + 1;
	$this->output .= $this->html->cal_week_content( $start_day  , $this->month_words[$startweek['mon'] - 1 ], $startweek['year'], $prev_week, $next_week);

 

находим

 

 

			$cal_output .= $this->html->cal_week_dayentry( $this->day_words[ $today['wday'] ], $today['mday'] , $this->month_words[$today['mon'] - 1], $today['mon'], $today['year'], $this_day_events );

 

заменяем на

 

		$day_words = $today['wday'] == 0 ? 6 : $today['wday'] - 1;
		$cal_output .= $this->html->cal_week_dayentry( $this->day_words[ $day_words ], $today['mday'] , $this->month_words[$today['mon'] - 1], $today['mon'], $today['year'], $this_day_events );

 

 

исправляем багу IPB(в версиях до 2.0.3 она присуствует, в 2.0.4 не глядел)

в шаблонах

 

Calendar -> cal_week_content

 

находим

 

<select name="y"><!--IBF.YEAR_BOX--></select>

 

заменяем на

 

<select name="year"><!--IBF.YEAR_BOX--></select>

Ссылка на комментарий
Поделиться на других сайтах

Может быть не потому, что установил руссификацию..

Но у меня теперь не получается внести events ео есть события

в сам календарь...

Не возникает самого текстового поля. И соответственно выдаёт ошибку -

"Нужно ввести текст"...

Не подскажете , в чём может быть причина ?

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...
  • 1 месяц спустя...

Dasboot

 

для изменения в 2.1.х на сколько я помню требуется добавить 2 или 3 строчки в ipsclass.php и заменить 1 строчку в calendar.php

 

на сколько я помню больше не нужно ничего менять там.

Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...

Вроде все сделал как написано, версия форума 2.0.3. Все стало отображаться правильно, кроме шапки календаря, там названия дней недели остались на прежних местах, где я ложанулся?

Вот так оно выглядит.

З.Ы. И еще такой вопрос... Можно ли в версии 2.0.3. выводить будущие календарные события на отдельную страницу? Юзал поиск, нашел только для версии 1.3. :D

Ссылка на комментарий
Поделиться на других сайтах

  • 1 год спустя...

Совет для 2.0.4!

Чтобы даты в текущей неделе начинались также с понедельника и числа дней не смещались по аналогии с моим постом выше необходимо сделать так, т.е. изменить часть того что сделал SAT в своем предыдущем посте.

 

			$cal_output .= $this->html->cal_week_dayentry( $this->day_words[ $today['wday'] ], $today['mday'] , $this->month_words[$today['mon'] - 1], $today['mon'], $today['year'], $this_day_events );

 

заменяем на

 

			$cal_output .= $this->html->cal_week_dayentry( $this->day_words[  $today['wday'] ], $today['mday'] + 1 , $this->month_words[$today['mon'] - 1], $today['mon'], $today['year'], $this_day_events );

 

Внешне таким образом все будет выглядеть нормально, но ДР смещаются на 1 день назад. Чтобы это исправить, необходимо добавить немного единиц в одной из секций Birthday (их там две, менять надо ту, где упоминается $today['mday'].

 

Измененный код будет выглядеть так:

 

						//-----------------------------------------
					// Birthdays
					//-----------------------------------------

					if ( isset($birthdays[ $today['mday'] + 1  ]) and count( $birthdays[ $today['mday'] + 1 ] ) > 0 )
					{
							$no_bdays = count($birthdays[ $today['mday'] + 1]);
							$ru_day = $today['mday'] + 1;

							if ( $ibforums->vars['bday_show_cal_max'] and $no_bdays <= $ibforums->vars['bday_show_cal_max'] )
							{
									foreach( $birthdays[ $today['mday'] + 1 ] as $idx => $user )
									{
											$this_day_events .= $this->html->cal_week_events_wrap(
																	 "code=birthdays&y=".$today['year']."&m=".$today['mon']."&d=".$ru_day,
																	 $user['name'].$ibforums->lang['bd_birthday']
											   );
									}

							}
							else
							{
									$this_day_events .= $this->html->cal_week_events_wrap(
													 "code=birthdays&y=".$today['year']."&m=".$today['mon']."&d=".$ru_day,
													 sprintf( $ibforums->lang['entry_birthdays'], count($birthdays[ $today['mday'] + 1 ]) )
													   );

 

Также необходимо учесть что данные советы применимы только в случае, когда уже установлен фикс от SAT! Это просто небольшая доработка showweek с учетом birthday.

 

Выглядит все это в итоге следующим образом http://blog.rednet.su/bd.gif

 

Решение не самое лучшее, т.к. могут быть проблемы с датами на стыке месяцев.

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.