mirror of
https://github.com/Piwigo/Piwigo.git
synced 2026-07-06 01:42:29 +02:00
calendar improvements: week on weekly list starts on Monday,
ability to show grayed months/weeks/days (without any picture in it), added icons for created/posted fields language uniformization calendar fixes: correct number of pictures in calendar view, code simplification (I hope so) git-svn-id: http://piwigo.org/svn/trunk@1059 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
@@ -37,7 +37,8 @@ class CalendarBase
|
||||
var $url_base;
|
||||
// array of date components e.g. (2005,10,12) ...
|
||||
var $date_components;
|
||||
|
||||
//
|
||||
var $calendar_levels;
|
||||
|
||||
/**
|
||||
* Initialize the calendar
|
||||
@@ -52,16 +53,45 @@ class CalendarBase
|
||||
$this->date_components = $date_components;
|
||||
}
|
||||
|
||||
function get_display_name()
|
||||
{
|
||||
global $conf;
|
||||
$res = '';
|
||||
$url = $this->url_base;
|
||||
|
||||
for ($i=0; $i<count($this->date_components); $i++)
|
||||
{
|
||||
$res .= $conf['level_separator'];
|
||||
|
||||
$url .= $this->date_components[$i].'-';
|
||||
if ( isset($this->date_components[$i+1]) )
|
||||
{
|
||||
$res .=
|
||||
'<a href="'.$url.'">'
|
||||
.$this->get_date_component_label($i, $this->date_components[$i])
|
||||
.'</a>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$res .=
|
||||
'<span class="calInHere">'
|
||||
.$this->get_date_component_label($i, $this->date_components[$i])
|
||||
.'</span>';
|
||||
}
|
||||
}
|
||||
return $res;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------- private members ---
|
||||
/**
|
||||
* Returns a display name for a date component optionally using labels
|
||||
*/
|
||||
function get_date_component_label($date_component, $labels=null)
|
||||
function get_date_component_label($level, $date_component)
|
||||
{
|
||||
$label = $date_component;
|
||||
if (isset($labels[$date_component]))
|
||||
if (isset($this->calendar_levels[$level]['labels'][$date_component]))
|
||||
{
|
||||
$label = $labels[$date_component];
|
||||
$label = $this->calendar_levels[$level]['labels'][$date_component];
|
||||
}
|
||||
elseif ($date_component == 'any' )
|
||||
{
|
||||
@@ -69,7 +99,7 @@ class CalendarBase
|
||||
}
|
||||
return $label;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Creates a calendar navigation bar.
|
||||
*
|
||||
@@ -77,15 +107,31 @@ class CalendarBase
|
||||
* @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 bool show_any - adds any link to the end of the bar
|
||||
* @param bool show_empty - shows all labels even those without items
|
||||
* @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)
|
||||
$class_prefix, $show_any,
|
||||
$show_empty=false, $labels=null)
|
||||
{
|
||||
global $conf;
|
||||
|
||||
$nav_bar = '';
|
||||
|
||||
|
||||
if ($conf['calendar_show_empty'] and $show_empty and !empty($labels) )
|
||||
{
|
||||
foreach ($labels as $item => $label)
|
||||
{
|
||||
if ( ! isset($items[$item]) )
|
||||
{
|
||||
$items[$item] = -1;
|
||||
}
|
||||
}
|
||||
ksort($items);
|
||||
}
|
||||
|
||||
foreach ($items as $item => $nb_images)
|
||||
{
|
||||
$label = $item;
|
||||
@@ -98,6 +144,11 @@ class CalendarBase
|
||||
$nav_bar .= '<span class="'.$class_prefix.'Sel">';
|
||||
$nav_bar .= $label;
|
||||
}
|
||||
elseif ($nb_images==-1)
|
||||
{
|
||||
$nav_bar .= '<span class="'.$class_prefix.'Empty">';
|
||||
$nav_bar .= $label;
|
||||
}
|
||||
else
|
||||
{
|
||||
$nav_bar .= '<span class="'.$class_prefix.'">';
|
||||
@@ -112,8 +163,8 @@ class CalendarBase
|
||||
}
|
||||
$nav_bar.= '</span>';
|
||||
}
|
||||
global $conf;
|
||||
if ($conf['calendar_show_any'] and $allow_any and count($items) > 1)
|
||||
|
||||
if ($conf['calendar_show_any'] and $show_any and count($items) > 1)
|
||||
{
|
||||
$label = l10n('calendar_any');
|
||||
if (isset($selected_item) and 'any' == $selected_item)
|
||||
@@ -137,18 +188,15 @@ class CalendarBase
|
||||
/**
|
||||
* Creates a calendar navigation bar for a given level.
|
||||
*
|
||||
* @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
|
||||
* @param int level - the level (0-year,1-month/week,2-day)
|
||||
* @return void
|
||||
*/
|
||||
function build_nav_bar($level, $sql_func,
|
||||
$sql_offset='', $labels=null)
|
||||
function build_nav_bar($level, $labels=null)
|
||||
{
|
||||
global $template;
|
||||
|
||||
global $template, $conf;
|
||||
|
||||
$query = '
|
||||
SELECT DISTINCT('.$sql_func.'('.$this->date_field.')'.$sql_offset
|
||||
SELECT DISTINCT('.$this->calendar_levels[$level]['sql']
|
||||
.') as period';
|
||||
$query.= $this->inner_sql;
|
||||
$query.= $this->get_date_where($level);
|
||||
@@ -163,6 +211,24 @@ SELECT DISTINCT('.$sql_func.'('.$this->date_field.')'.$sql_offset
|
||||
$level_items[$row['period']] = 0;
|
||||
}
|
||||
|
||||
if ( count($level_items)==1 )
|
||||
{
|
||||
if ( ! isset($this->date_components[$level]) )
|
||||
{
|
||||
list($key) = array_keys($level_items);
|
||||
$this->date_components[$level] = (int)$key;
|
||||
}
|
||||
}
|
||||
|
||||
if ( $conf['calendar_multi_bar']==false )
|
||||
{
|
||||
if ( $level<count($this->date_components) and
|
||||
$level!=count($this->calendar_levels)-1 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
$url_base = $this->url_base;
|
||||
for ($i=0; $i<$level; $i++)
|
||||
{
|
||||
@@ -180,9 +246,10 @@ SELECT DISTINCT('.$sql_func.'('.$this->date_field.')'.$sql_offset
|
||||
$url_base,
|
||||
$level_items,
|
||||
$selected,
|
||||
'cal',
|
||||
'calItem',
|
||||
true,
|
||||
$labels
|
||||
true,
|
||||
isset($labels) ? $labels : $this->calendar_levels[$level]['labels']
|
||||
);
|
||||
|
||||
$template->assign_block_vars(
|
||||
|
||||
Reference in New Issue
Block a user