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

Русский календарь, для 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

 

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

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

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

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

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

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

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

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

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

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