mirror of
https://github.com/Piwigo/Piwigo.git
synced 2025-05-03 14:50:09 +03:00
There are no filter enabled if filter configuration is empty (no icon, no functions, ...)
New system for the filter page configuration View mode flat_recent_cat becomes flat_cat (recent period is removed because global filter is sufficient) Recent period of global filter must be defined "after" start parameter (default value is $user['recent_period']). git-svn-id: http://piwigo.org/svn/trunk@1722 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
parent
3cef1e6895
commit
9362801a48
15 changed files with 148 additions and 64 deletions
|
@ -174,7 +174,10 @@ SELECT id, path, tn_ext
|
|||
if (count($categories) > 0)
|
||||
{
|
||||
// Update filtered data
|
||||
if (function_exists('update_cats_with_filtered_data'))
|
||||
{
|
||||
update_cats_with_filtered_data($categories);
|
||||
}
|
||||
|
||||
if ($conf['subcatify'])
|
||||
{
|
||||
|
|
|
@ -231,11 +231,17 @@ if (count($header_msgs) > 0)
|
|||
}
|
||||
}
|
||||
|
||||
if (!defined('IN_ADMIN') or !IN_ADMIN)
|
||||
if (!empty($conf['filter_pages']) and get_filter_page_value('used'))
|
||||
{
|
||||
include(PHPWG_ROOT_PATH.'include/functions_filter.inc.php');
|
||||
include(PHPWG_ROOT_PATH.'include/filter.inc.php');
|
||||
}
|
||||
else
|
||||
{
|
||||
// global variable for filter
|
||||
$filter = array();
|
||||
$filter['enabled'] = false;
|
||||
}
|
||||
|
||||
if (isset($conf['header_notes']))
|
||||
{
|
||||
|
|
|
@ -568,15 +568,40 @@ $conf['enable_plugins']=true;
|
|||
// +-----------------------------------------------------------------------+
|
||||
// | Filter |
|
||||
// +-----------------------------------------------------------------------+
|
||||
// Pages where filter is enabled
|
||||
// Other pages cancel current filter
|
||||
// Array of basename without file extention
|
||||
// $conf['filter_pages'] contains configuration for each pages
|
||||
// o If values are not defined for a specific page, default value are used
|
||||
// o Array is composed by the basename of each page without extention
|
||||
// o List of value names:
|
||||
// - used: filter function are used
|
||||
// (if false nothing is done [start, cancel, stop, ...]
|
||||
// - cancel: cancel current started filter
|
||||
// - add_notes: add notes about current started filter on the header
|
||||
// o Empty configuration in order to disable completely filter functions
|
||||
// No filter, No icon,...
|
||||
// $conf['filter_pages'] = array();
|
||||
$conf['filter_pages'] = array
|
||||
(
|
||||
'about', 'action', 'admin', 'comments',
|
||||
'index', 'picture', 'popuphelp', 'profile',
|
||||
'qsearch', 'random', 'register', 'search',
|
||||
'search_rules', 'tags', 'upload'
|
||||
// Default page
|
||||
'default' => array(
|
||||
'used' => true, 'cancel' => false, 'add_notes' => false),
|
||||
// Real pages
|
||||
'index' => array('add_notes' => true),
|
||||
'tags' => array('add_notes' => true),
|
||||
'search' => array('add_notes' => true),
|
||||
'comments' => array('add_notes' => true),
|
||||
'admin' => array('used' => false),
|
||||
'feed' => array('used' => false),
|
||||
'notification' => array('used' => false),
|
||||
'nbm' => array('used' => false),
|
||||
'popuphelp' => array('used' => false),
|
||||
'profile' => array('used' => false),
|
||||
'web_service' => array('used' => false),
|
||||
'ws' => array('used' => false),
|
||||
'identification' => array('cancel' => true),
|
||||
'install' => array('cancel' => true),
|
||||
'password' => array('cancel' => true),
|
||||
'register' => array('cancel' => true),
|
||||
'upgrade_feed' => array('cancel' => true),
|
||||
);
|
||||
|
||||
?>
|
||||
|
|
|
@ -28,15 +28,20 @@
|
|||
$filter = array();
|
||||
|
||||
// $filter['enabled']: Filter is enabled
|
||||
// $filter['check_key']: Check key to valitade computed filter data
|
||||
// $filter['recent_period']: Recent period used to computed filter data
|
||||
// $filter['categories']: Computed data of filtered categories
|
||||
// $filter['visible_categories']: List of visible categories (count(visible) < count(forbidden) more often)
|
||||
// $filter['visible_categories']:
|
||||
// List of visible categories (count(visible) < count(forbidden) more often)
|
||||
// $filter['visible_images']: List of visible images
|
||||
|
||||
if (in_array(script_basename(), $conf['filter_pages']))
|
||||
if (!get_filter_page_value('cancel'))
|
||||
{
|
||||
if (isset($_GET['filter']))
|
||||
{
|
||||
$filter['enabled'] = ($_GET['filter'] == 'start');
|
||||
$filter['matches'] = array();
|
||||
$filter['enabled'] =
|
||||
preg_match('/^start-(\d+)/', $_GET['filter'], $filter['matches']) === 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -50,6 +55,15 @@ else
|
|||
|
||||
if ($filter['enabled'])
|
||||
{
|
||||
if (isset($filter['matches']))
|
||||
{
|
||||
$filter['recent_period'] = $filter['matches'][1];
|
||||
}
|
||||
else
|
||||
{
|
||||
$filter['recent_period'] = pwg_get_session_var('filter_recent_period', $user['recent_period']);
|
||||
}
|
||||
|
||||
if (
|
||||
// New filter
|
||||
!pwg_get_session_var('filter_enabled', false) or
|
||||
|
@ -61,7 +75,7 @@ if ($filter['enabled'])
|
|||
{
|
||||
// Need to compute dats
|
||||
$filter['check_key'] = get_filter_check_key();
|
||||
$filter['categories'] = get_computed_categories($user['id'], $user['forbidden_categories'], true, $user['recent_period']);
|
||||
$filter['categories'] = get_computed_categories($user['id'], $user['forbidden_categories'], true, $filter['recent_period']);
|
||||
|
||||
$filter['visible_categories'] = implode(',', array_keys($filter['categories']));
|
||||
if (empty($filter['visible_categories']))
|
||||
|
@ -83,7 +97,7 @@ WHERE ';
|
|||
}
|
||||
$query.= '
|
||||
date_available > SUBDATE(
|
||||
CURRENT_DATE,INTERVAL '.$user['recent_period'].' DAY)';
|
||||
CURRENT_DATE,INTERVAL '.$filter['recent_period'].' DAY)';
|
||||
|
||||
$filter['visible_images'] = implode(',', array_from_query($query, 'image_id'));
|
||||
|
||||
|
@ -96,6 +110,7 @@ WHERE ';
|
|||
// Save filter data on session
|
||||
pwg_set_session_var('filter_enabled', $filter['enabled']);
|
||||
pwg_set_session_var('filter_check_key', $filter['check_key']);
|
||||
pwg_set_session_var('filter_recent_period', $filter['recent_period']);
|
||||
pwg_set_session_var('filter_categories', serialize($filter['categories']));
|
||||
pwg_set_session_var('filter_visible_categories', $filter['visible_categories']);
|
||||
pwg_set_session_var('filter_visible_images', $filter['visible_images']);
|
||||
|
@ -110,7 +125,10 @@ WHERE ';
|
|||
$filter['visible_images'] = pwg_get_session_var('filter_visible_images', '');
|
||||
}
|
||||
|
||||
$header_notes[] = l10n_dec('note_filter_day', 'note_filter_days', $user['recent_period']);
|
||||
if (get_filter_page_value('add_notes'))
|
||||
{
|
||||
$header_notes[] = l10n_dec('note_filter_day', 'note_filter_days', $filter['recent_period']);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -118,6 +136,7 @@ else
|
|||
{
|
||||
pwg_unset_session_var('filter_enabled');
|
||||
pwg_unset_session_var('filter_check_key');
|
||||
pwg_unset_session_var('filter_recent_period');
|
||||
pwg_unset_session_var('filter_categories');
|
||||
pwg_unset_session_var('filter_visible_categories');
|
||||
pwg_unset_session_var('filter_visible_images');
|
||||
|
|
|
@ -1104,4 +1104,32 @@ function script_basename()
|
|||
return basename(strtolower($file_name), '.php');
|
||||
}
|
||||
|
||||
/**
|
||||
* Return value for the current page define on $conf['filter_pages']
|
||||
* Îf value is not defined, default value are returned
|
||||
*
|
||||
* @param value name
|
||||
*
|
||||
* @return filter page value
|
||||
*/
|
||||
function get_filter_page_value($value_name)
|
||||
{
|
||||
global $conf;
|
||||
|
||||
$page_name = script_basename();
|
||||
|
||||
if (isset($conf['filter_pages'][$page_name][$value_name]))
|
||||
{
|
||||
return $conf['filter_pages'][$page_name][$value_name];
|
||||
}
|
||||
else if (isset($conf['filter_pages']['default'][$value_name]))
|
||||
{
|
||||
return $conf['filter_pages']['default'][$value_name];
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
|
@ -107,7 +107,10 @@ WHERE
|
|||
usort($cats, 'global_rank_compare');
|
||||
|
||||
// Update filtered data
|
||||
if (function_exists('update_cats_with_filtered_data'))
|
||||
{
|
||||
update_cats_with_filtered_data($cats);
|
||||
}
|
||||
|
||||
return get_html_menu_category($cats);
|
||||
}
|
||||
|
|
|
@ -34,9 +34,9 @@
|
|||
*/
|
||||
function get_filter_check_key()
|
||||
{
|
||||
global $user;
|
||||
global $user, $filter;
|
||||
|
||||
return $user['id'].$user['recent_period'].date('Ymd');
|
||||
return $user['id'].$filter['recent_period'].date('Ymd');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -264,9 +264,9 @@ function add_well_known_params_in_url($url, $params)
|
|||
}
|
||||
}
|
||||
|
||||
if (isset($params['flat_recent_cat']) and $params['flat_recent_cat'] > 0)
|
||||
if (isset($params['flat_cat']))
|
||||
{
|
||||
$url.= '/flat_recent_cat-'.$params['flat_recent_cat'];
|
||||
$url.= '/flat_cat';
|
||||
}
|
||||
|
||||
if (isset($params['start']) and $params['start'] > 0)
|
||||
|
|
|
@ -65,6 +65,8 @@ foreach ($conf['links'] as $url => $label)
|
|||
}
|
||||
|
||||
//------------------------------------------------------------------------ filter
|
||||
if (!empty($conf['filter_pages']) and get_filter_page_value('used'))
|
||||
{
|
||||
if ($filter['enabled'])
|
||||
{
|
||||
$template->assign_block_vars(
|
||||
|
@ -79,11 +81,11 @@ else
|
|||
$template->assign_block_vars(
|
||||
'start_filter',
|
||||
array(
|
||||
'URL' => add_url_params(make_index_url(array()), array('filter' => 'start'))
|
||||
'URL' => add_url_params(make_index_url(array()), array('filter' => 'start-'.$user['recent_period']))
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------ tags
|
||||
if ('tags' == $page['section'])
|
||||
|
|
|
@ -279,10 +279,10 @@ while (isset($tokens[$i]))
|
|||
}
|
||||
|
||||
if ('categories' == $page['section'] and
|
||||
preg_match('/^flat_recent_cat-(\d+)/', $tokens[$i], $matches))
|
||||
'flat_cat' == $tokens[$i])
|
||||
{
|
||||
// indicate a special list of images
|
||||
$page['flat_recent_cat'] = $matches[1];
|
||||
$page['flat_cat'] = true;
|
||||
}
|
||||
|
||||
if (preg_match('/^(posted|created)/', $tokens[$i] ))
|
||||
|
@ -364,7 +364,7 @@ if ('categories' == $page['section'])
|
|||
'title' =>
|
||||
get_cat_display_name($result['name'], '', false),
|
||||
'thumbnails_include' =>
|
||||
(($result['nb_images'] > 0) or (isset($page['flat_recent_cat'])))
|
||||
(($result['nb_images'] > 0) or (isset($page['flat_cat'])))
|
||||
? 'include/category_default.inc.php'
|
||||
: 'include/category_cats.inc.php'
|
||||
)
|
||||
|
@ -374,12 +374,12 @@ if ('categories' == $page['section'])
|
|||
{
|
||||
$page['title'] = $lang['no_category'];
|
||||
$page['thumbnails_include'] =
|
||||
(isset($page['flat_recent_cat']))
|
||||
(isset($page['flat_cat']))
|
||||
? 'include/category_default.inc.php'
|
||||
: 'include/category_cats.inc.php';
|
||||
}
|
||||
|
||||
if (isset($page['flat_recent_cat']))
|
||||
if (isset($page['flat_cat']))
|
||||
{
|
||||
$page['title'] = $lang['recent_pics_cat'].' : '.$page['title'] ;
|
||||
}
|
||||
|
@ -389,7 +389,7 @@ if ('categories' == $page['section'])
|
|||
(!isset($page['chronology_field'])) and
|
||||
(
|
||||
(isset($page['category'])) or
|
||||
(isset($page['flat_recent_cat']))
|
||||
(isset($page['flat_cat']))
|
||||
)
|
||||
)
|
||||
{
|
||||
|
@ -398,7 +398,7 @@ if ('categories' == $page['section'])
|
|||
$conf[ 'order_by' ] = ' ORDER BY '.$result['image_order'];
|
||||
}
|
||||
|
||||
if (isset($page['flat_recent_cat']))
|
||||
if (isset($page['flat_cat']))
|
||||
{
|
||||
// flat recent categories mode
|
||||
$query = '
|
||||
|
@ -408,10 +408,8 @@ FROM '.IMAGES_TABLE.' AS i
|
|||
INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON i.id = ic.image_id
|
||||
INNER JOIN '.CATEGORIES_TABLE.' AS c ON ic.category_id = c.id
|
||||
WHERE
|
||||
date_available > SUBDATE(
|
||||
CURRENT_DATE,INTERVAL '.$page['flat_recent_cat'].' DAY)'.
|
||||
(isset($page['category']) ? '
|
||||
AND uppercats REGEXP \'(^|,)'.$page['category'].'(,|$)\'' : '' ).'
|
||||
'.(isset($page['category']) ? '
|
||||
uppercats REGEXP \'(^|,)'.$page['category'].'(,|$)\'' : '1=1' ).'
|
||||
'.$forbidden.'
|
||||
;';
|
||||
|
||||
|
@ -712,7 +710,7 @@ SELECT id,file
|
|||
|
||||
// add meta robots noindex, nofollow to avoid unnecesary robot crawls
|
||||
$page['meta_robots']=array();
|
||||
if ( isset($page['chronology_field']) or isset($page['flat_recent_cat'])
|
||||
if ( isset($page['chronology_field']) or isset($page['flat_cat'])
|
||||
or 'list'==$page['section'] or 'recent_pics'==$page['section'] )
|
||||
{
|
||||
$page['meta_robots']=array('noindex'=>1, 'nofollow'=>1);
|
||||
|
|
16
index.php
16
index.php
|
@ -106,22 +106,22 @@ if (isset($page['cat_nb_images']) and $page['cat_nb_images'] > 0)
|
|||
$template_title.= ' ['.$page['cat_nb_images'].']';
|
||||
}
|
||||
|
||||
if (isset($page['flat_recent_cat']) or isset($page['chronology_field']))
|
||||
if (isset($page['flat_cat']) or isset($page['chronology_field']))
|
||||
{
|
||||
$template->assign_block_vars(
|
||||
'mode_normal',
|
||||
array(
|
||||
'URL' => duplicate_index_url( array(), array('chronology_field', 'start', 'flat_recent_cat') )
|
||||
'URL' => duplicate_index_url( array(), array('chronology_field', 'start', 'flat_cat') )
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
if (!isset($page['flat_recent_cat']) and 'categories'==$page['section'])
|
||||
if (!isset($page['flat_cat']) and 'categories' == $page['section'])
|
||||
{
|
||||
$template->assign_block_vars(
|
||||
'flat_recent_cat',
|
||||
'flat_cat',
|
||||
array(
|
||||
'URL' => duplicate_index_url(array('flat_recent_cat' => $user['recent_period']), array('start', 'chronology_field'))
|
||||
'URL' => duplicate_index_url(array('flat_cat' => ''), array('start', 'chronology_field'))
|
||||
)
|
||||
);
|
||||
}
|
||||
|
@ -137,7 +137,7 @@ if (!isset($page['chronology_field']))
|
|||
$template->assign_block_vars(
|
||||
'mode_created',
|
||||
array(
|
||||
'URL' => duplicate_index_url( $chronology_params, array('start', 'flat_recent_cat') )
|
||||
'URL' => duplicate_index_url( $chronology_params, array('start', 'flat_cat') )
|
||||
)
|
||||
);
|
||||
|
||||
|
@ -145,7 +145,7 @@ if (!isset($page['chronology_field']))
|
|||
$template->assign_block_vars(
|
||||
'mode_posted',
|
||||
array(
|
||||
'URL' => duplicate_index_url( $chronology_params, array('start', 'flat_recent_cat') )
|
||||
'URL' => duplicate_index_url( $chronology_params, array('start', 'flat_cat') )
|
||||
)
|
||||
);
|
||||
}
|
||||
|
@ -161,7 +161,7 @@ else
|
|||
}
|
||||
$url = duplicate_index_url(
|
||||
array('chronology_field'=>$chronology_field ),
|
||||
array('chronology_date', 'start', 'flat_recent_cat')
|
||||
array('chronology_date', 'start', 'flat_cat')
|
||||
);
|
||||
$template->assign_block_vars(
|
||||
'mode_'.$chronology_field,
|
||||
|
|
|
@ -490,7 +490,7 @@ $lang['maxheight'] = 'Maximum height of the pictures';
|
|||
$lang['maxheight_error'] = 'Maximum height must be a number superior to 50';
|
||||
$lang['maxwidth'] = 'Maximum width of the pictures';
|
||||
$lang['maxwidth_error'] = 'Maximum width must be a number superior to 50';
|
||||
$lang['flat_recent_cat_hint'] = 'display recent elements of categories and sub-categories';
|
||||
$lang['flat_cat_hint'] = 'flat display elements of categories and sub-categories';
|
||||
$lang['start_filter_hint'] = 'displays only recent elements';
|
||||
$lang['stop_filter_hint'] = 'return to display all elements';
|
||||
$lang['mode_created_hint'] = 'displays a calendar by creation date';
|
||||
|
|
|
@ -490,7 +490,7 @@ $lang['maxheight'] = 'Hauteur maximum des images';
|
|||
$lang['maxheight_error'] = 'La hauteur maximum des images doit être supérieure à 50';
|
||||
$lang['maxwidth'] = 'Largeur maximum des images';
|
||||
$lang['maxwidth_error'] = 'La largeur des images doit être supérieure à 50';
|
||||
$lang['flat_recent_cat_hint'] = 'affiche les éléments récents des catégories et des sous-catégories';
|
||||
$lang['flat_cat_hint'] = 'affiche à plat les éléments des catégories et des sous-catégories';
|
||||
$lang['start_filter_hint'] = 'afficher que les éléments récents';
|
||||
$lang['stop_filter_hint'] = 'retourner à l\'affichage de tous les éléments';
|
||||
$lang['mode_created_hint'] = 'afficher un calendrier par date de création';
|
||||
|
|
Before Width: | Height: | Size: 754 B After Width: | Height: | Size: 754 B |
|
@ -31,9 +31,9 @@
|
|||
<li><a href="{mode_normal.URL}" title="{lang:mode_normal_hint}"><img src="{pwg_root}{themeconf:icon_dir}/normal_mode.png" class="button" alt="{lang:mode_normal_hint}"></a></li>
|
||||
<!-- END mode_normal -->
|
||||
|
||||
<!-- BEGIN flat_recent_cat -->
|
||||
<li><a href="{flat_recent_cat.URL}" title="{lang:flat_recent_cat_hint}" rel="nofollow"><img src="{pwg_root}{themeconf:icon_dir}/flat_recent_cat.png" class="button" alt="{lang:flat_recent_cat_hint}"></a></li>
|
||||
<!-- END flat_recent_cat -->
|
||||
<!-- BEGIN flat_cat -->
|
||||
<li><a href="{flat_cat.URL}" title="{lang:flat_cat_hint}" rel="nofollow"><img src="{pwg_root}{themeconf:icon_dir}/flat_cat.png" class="button" alt="{lang:flat_cat_hint}"></a></li>
|
||||
<!-- END flat_cat -->
|
||||
|
||||
<!-- BEGIN mode_posted -->
|
||||
<li><a href="{mode_posted.URL}" title="{lang:mode_posted_hint}" rel="nofollow"><img src="{pwg_root}{themeconf:icon_dir}/calendar.png" class="button" alt="{lang:mode_posted_hint}"></a></li>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue