From fe8fbac3cf9af0464d2b0990c88631ff9fd803ac Mon Sep 17 00:00:00 2001 From: rvelices Date: Wed, 22 Feb 2006 01:00:39 +0000 Subject: calendar redesign: monthly and weekly styles + list/calendar views for monthly git-svn-id: http://piwigo.org/svn/trunk@1050 68402e56-0260-453c-a942-63ccdbb3a9ee --- include/calendar_base.class.php | 165 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 include/calendar_base.class.php (limited to 'include/calendar_base.class.php') diff --git a/include/calendar_base.class.php b/include/calendar_base.class.php new file mode 100644 index 000000000..1f120c811 --- /dev/null +++ b/include/calendar_base.class.php @@ -0,0 +1,165 @@ +date_field = $date_field; + $this->inner_sql = $inner_sql; +} + +//--------------------------------------------------------- private members --- +/** + * Creates a calendar navigation bar. + * @param string url_base - links start with this root + * @param array items - hash of items to put in the bar (e.g. 2005,2006) + * @param array selected_item - item currently selected (e.g. 2005) + * @param string class_prefix - html class attribute prefix for span elements + * @param bool allow_any - adds any to the end of the bar + * @param array labels - optional labels for items (e.g. Jan,Feb,...) + * @return string the navigation bar + */ +function get_nav_bar_from_items($url_base, $items, $selected_item, + $class_prefix, $allow_any, $labels=null) +{ + $nav_bar=''; + foreach ($items as $item => $nb_images) + { + $label = $item; + if (isset($labels[$item])) + { + $label = $labels[$item]; + } + if ( isset($selected_item) and $item==$selected_item ) + { + $nav_bar .= ''; + $nav_bar .= $label; + } + else + { + $nav_bar .= ''; + $url = $url_base . $item; + $nav_bar .= ''; + $nav_bar .= $label; + $nav_bar .= ''; + } + if ($nb_images>0) + { + $nav_bar .= '('.$nb_images.')'; + } + $nav_bar.= ''; + } + + if ($allow_any and count($items)>1 ) + { + $label = l10n('calendar_any'); + if ( isset($selected_item) and 'any'==$selected_item ) + { + $nav_bar .= ''; + $nav_bar .= $label; + } + else + { + $nav_bar .= ''; + $url = $url_base . 'any'; + $nav_bar .= ''; + $nav_bar .= $label; + $nav_bar .= ''; + } + $nav_bar.= ''; + } + return $nav_bar; +} + + +/** + * Creates a calendar navigation bar for a given level. + * @param string view_type - list or calendar (e.g. 'l' or 'c') + * @param array requested - array of current selected elements (e.g. 2005,10) + * @param string sql_func - YEAR/MONTH/DAY/WEEK/DAYOFWEEK ... + * @param string sql_offset - (e.g. +1 for WEEK - first in year is 1) + * @param array labels - optional labels to show in the navigation bar + * @return void + */ +function build_nav_bar($view_type, $requested, $level, $sql_func, + $sql_offset='', $labels=null) +{ + global $template; + $query = 'SELECT DISTINCT('.$sql_func.'('.$this->date_field.')'.$sql_offset + .') as period'; + $query.= $this->inner_sql; + $query.= $this->get_date_where($requested, $level); + $query.= ' + GROUP BY period'; + + $level_items=array(); + $result = pwg_query($query); + while ($row = mysql_fetch_array($result)) + { + $level_items[$row['period']] = 0; + } + + $url_base = $this->url_base; + $url_base .= $view_type.'-'; + for ($i=0; $i<$level; $i++) + { + if (isset($requested[$i])) + { + $url_base .= $requested[$i].'-'; + } + } + + $nav_bar = $this->get_nav_bar_from_items( $url_base, $level_items, + $requested[$level], 'cal', true, $labels); + + $template->assign_block_vars( 'calendar.navbar', + array( 'BAR' => $nav_bar) + ); +} +} + +?> \ No newline at end of file -- cgit v1.2.3