| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
nkostya 15.06.2004 21:03
#######
# Достаем информацию для отображения календаря
@getCalendar[lparams][params]
$params[^hash::create[$lparams]]
$result[^MAIN:pSQL.sql[table]{
SELECT
^MAIN:pSQL.month[dt] AS month,
^MAIN:pSQL.year[dt] AS year
FROM
news
WHERE
is_published = 1 AND
dt_published <= ^MAIN:pSQL.now[]
GROUP BY
year DESC,
month DESC
}]
#end @getCalendar[]
@printCalendar[calendar][now;curr_year;curr_month;y_hash;ym_hash;i;m]
^if($calendar){
$now[^date::now[]]
$curr_year(^form:year.int(^dtf:format[%Y]))
$curr_month(^form:month.int(^dtf:format[%m]))
^calendar.offset(-1)
$min_year($calendar.year)
$min_month($calendar.month)
$y_hash[^calendar.hash[year;year][$.distinct(1)]]
$ym_hash[^calendar.hash{^calendar.year.format[%04d]=^calendar.month.format[%02d]}[month][$.distinct(1)]]
$year[^y_hash._keys[]]
^year.sort($year.key)[desc]
<table border="1" align="right">
<tr valign="top">
<td>
^year.menu{
<b>^if($year.key == $curr_year){
$year.key / ^;
}{
^rem{ *** если кликнем в год, по попадем на последний месяц года,
за который у нас есть новости *** }
^if(^calendar.locate[year;$year.key]){}
<a href="?year=$year.key&month=$calendar.month">$year.key</a>
}
</b><br />
}
</td>
<td>
^if(^year.locate[key;$curr_year]){}
# ^year.menu{
# ^if($year.key == $curr_year){
^for[i](0;11){
$m(12-$i)
^if(def $form:month && $m == $curr_month){
<b>$dtf:[ri-locale].month.$m</b><br />
}{
^if(!($now.year == $year.key && $m > $now.month) && !($year.key == $min_year && $m < $min_month)){
^if($ym_hash.[^year.key.format[%04d]=^m.format[%02d]]){
<a href="?year=$year.key&month=$m">$dtf:[ri-locale].month.$m</a>
}{
$dtf:[ri-locale].month.$m
}
<br />
}
}
}
# }
# }
</td>
</tr>
</table>
}
#end @printCalendar[]Так будет правильнее?