Changeset 18165


Ignore:
Timestamp:
09/23/12 13:19:26 (7 years ago)
Author:
mistic100
Message:

feature 2614: pagination on albums

Location:
trunk
Files:
1 added
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/admin/configuration.php

    r18164 r18165  
    223223    case 'display' : 
    224224    { 
     225      if (!preg_match($int_pattern, $_POST['nb_categories_page']) 
     226            or $_POST['nb_categories_page'] < 4) 
     227      { 
     228        array_push($page['errors'], l10n('The number of albums a page must be above 4.')); 
     229      } 
    225230      foreach( $display_checkboxes as $checkbox) 
    226231      { 
     
    423428        'display', 
    424429        array( 
    425           'picture_informations' => unserialize($conf['picture_informations']) 
     430          'picture_informations' => unserialize($conf['picture_informations']), 
     431          'NB_CATEGORIES_PAGE' => $conf['nb_categories_page'], 
    426432          ), 
    427433        true 
  • trunk/admin/themes/default/template/configuration.tpl

    r18164 r18165  
    646646      </label> 
    647647    </li> 
     648     
     649    <li> 
     650      <label> 
     651        {'Number of albums per page'|@translate} 
     652        <input type="text" size="3" maxlength="4" name="nb_categories_page" id="nb_categories_page" value="{$display.NB_CATEGORIES_PAGE}"> 
     653      </label> 
     654    </li> 
    648655  </ul> 
    649656</fieldset> 
  • trunk/include/category_cats.inc.php

    r12930 r18165  
    2323 
    2424/** 
    25  * This file is included by the main page to show thumbnails for a category 
    26  * that have only subcategories or to show recent categories 
     25 * This file is included by the main page to show subcategories of a category 
     26 * or to show recent categories or main page categories list 
    2727 * 
    2828 */ 
     29 
     30$selection = array_slice( 
     31  $page['categories'], 
     32  $page['starta'], 
     33  $conf['nb_categories_page'] 
     34  ); 
     35 
     36$selection = trigger_event('loc_index_categories_selection', $selection); 
    2937 
    3038// $user['forbidden_categories'] including with USER_CACHE_CATEGORIES_TABLE 
     
    3947    count_categories 
    4048  FROM '.CATEGORIES_TABLE.' c 
    41     INNER JOIN '.USER_CACHE_CATEGORIES_TABLE.' ucc ON id = cat_id AND user_id = '.$user['id']; 
    42  
    43 if ('recent_cats' == $page['section']) 
    44 { 
    45   $query.= ' 
    46   WHERE date_last >= '.pwg_db_get_recent_period_expression($user['recent_period']); 
    47 } 
    48 else 
    49 { 
    50   $query.= ' 
    51   WHERE id_uppercat '.(!isset($page['category']) ? 'is NULL' : '= '.$page['category']['id']); 
    52 } 
    53  
    54 $query.= ' 
    55     '.get_sql_condition_FandF( 
    56   array( 
    57     'visible_categories' => 'id', 
    58     ), 
    59   'AND' 
    60   ); 
    61  
     49    INNER JOIN '.USER_CACHE_CATEGORIES_TABLE.' ucc  
     50    ON id = cat_id  
     51    AND user_id = '.$user['id'].' 
     52  WHERE c.id IN('.implode(',', $selection).')'; 
     53   
    6254if ('recent_cats' != $page['section']) 
    6355{ 
  • trunk/include/functions.inc.php

    r18164 r18165  
    14301430 * return an array which will be sent to template to display navigation bar 
    14311431 */ 
    1432 function create_navigation_bar($url, $nb_element, $start, $nb_element_page, $clean_url = false) 
     1432function create_navigation_bar($url, $nb_element, $start, $nb_element_page, $clean_url = false, $param_name='start') 
    14331433{ 
    14341434  global $conf; 
     
    14361436  $navbar = array(); 
    14371437  $pages_around = $conf['paginate_pages_around']; 
    1438   $start_str = $clean_url ? '/start-' : (strpos($url, '?')===false ? '?':'&amp;').'start='; 
     1438  $start_str = $clean_url ? '/'.$param_name.'-' : (strpos($url, '?')===false ? '?':'&amp;').$param_name.'='; 
    14391439 
    14401440  if (!isset($start) or !is_numeric($start) or (is_numeric($start) and $start < 0)) 
  • trunk/include/functions_url.inc.php

    r15383 r18165  
    459459            and strpos($tokens[$current_token], 'posted-')!==0 
    460460            and strpos($tokens[$next_token], 'start-')!==0 
     461            and strpos($tokens[$next_token], 'starta-')!==0 
    461462            and $tokens[$current_token] != 'flat') 
    462463        { 
     
    652653      $page['start'] = $matches[1]; 
    653654    } 
     655    elseif (preg_match('/^starta-(\d+)/', $tokens[$i], $matches)) 
     656    { 
     657      $page['starta'] = $matches[1]; 
     658    } 
    654659    $i++; 
    655660  } 
  • trunk/include/section_init.inc.php

    r13872 r18165  
    4242//   ); 
    4343 
    44 $page['items'] = array(); 
     44// exemple of dynamic nb_categories_page (%2 for nice display) 
     45// $conf['nb_categories_page'] = 2*round($user['nb_image_page']/4); 
     46 
     47$page['items'] = $page['categories'] = array(); 
     48$page['start'] = $page['starta'] = 0; 
    4549 
    4650// some ISPs set PATH_INFO to empty string or to SCRIPT_FILENAME while in the 
     
    247251    $page['title'] = ''; // will be set later 
    248252 
     253     
     254  // GET IMAGES LIST 
    249255  if 
    250256    ( 
     257      $page['starta'] == 0 and 
    251258      (!isset($page['chronology_field'])) and 
    252259      ( 
     
    311318    $page['items'] = array_from_query($query, 'image_id'); 
    312319  } //otherwise the calendar will requery all subitems 
     320   
     321  // GET CATEGORIES LIST 
     322  if ( 0==$page['start'] 
     323    and !isset($page['flat']) 
     324    and !isset($page['chronology_field']) 
     325    and ('recent_cats'==$page['section'] or 'categories'==$page['section']) 
     326    and (!isset($page['category']['count_categories']) or $page['category']['count_categories']>0 ) 
     327  ) 
     328  { 
     329    $query = ' 
     330SELECT c.id 
     331  FROM '.CATEGORIES_TABLE.' c 
     332    INNER JOIN '.USER_CACHE_CATEGORIES_TABLE.' ucc  
     333    ON id = cat_id  
     334    AND user_id = '.$user['id']; 
     335 
     336    if ('recent_cats' == $page['section']) 
     337    { 
     338      $query.= ' 
     339      WHERE date_last >= '.pwg_db_get_recent_period_expression($user['recent_period']); 
     340    } 
     341    else 
     342    { 
     343      $query.= ' 
     344      WHERE id_uppercat '.(!isset($page['category']) ? 'is NULL' : '= '.$page['category']['id']); 
     345    } 
     346 
     347    $query.= ' 
     348        '.get_sql_condition_FandF( 
     349          array('visible_categories' => 'id'), 
     350          'AND' 
     351          ); 
     352 
     353    $query.= ' 
     354    ;'; 
     355 
     356    $page['categories'] = array_from_query($query, 'id'); 
     357  } 
    313358} 
    314359// special sections 
  • trunk/index.php

    r16987 r18165  
    3030check_status(ACCESS_GUEST); 
    3131 
    32 if (!isset($page['start'])) 
    33 { 
    34   $page['start'] = 0; 
    35 } 
    3632 
    3733// access authorization check 
     
    7571//-------------------------------------------------------------- initialization 
    7672 
     73// navigation bar 
    7774$page['navigation_bar'] = array(); 
    7875if (count($page['items']) > $page['nb_image_page']) 
     
    8380    $page['start'], 
    8481    $page['nb_image_page'], 
    85     true 
    86     ); 
    87 } 
     82    true, 'start' 
     83    ); 
     84} 
     85 
     86$page['cats_navigation_bar'] = array(); 
     87if (count($page['categories']) > $conf['nb_categories_page']) 
     88{ 
     89  $page['cats_navigation_bar'] = create_navigation_bar( 
     90    duplicate_index_url(array(), array('starta')), 
     91    count($page['categories']), 
     92    $page['starta'], 
     93    $conf['nb_categories_page'], 
     94    true, 'starta' 
     95    ); 
     96} 
     97 
     98$template->assign( 'thumb_navbar', $page['navigation_bar'] ); 
     99$template->assign( 'cats_navbar', $page['cats_navigation_bar'] ); 
    88100 
    89101// caddie filling :-) 
     
    243255} 
    244256 
    245 // navigation bar 
    246 $template->assign( 'navbar', $page['navigation_bar'] ); 
    247257 
    248258if ( $conf['index_sort_order_input'] 
     
    289299 
    290300//------------------------------------------------------ main part : thumbnails 
    291 if ( 0==$page['start'] 
    292     and !isset($page['flat']) 
    293     and !isset($page['chronology_field']) 
    294     and ('recent_cats'==$page['section'] or 'categories'==$page['section']) 
    295     and (!isset($page['category']['count_categories']) or $page['category']['count_categories']>0 ) 
    296   ) 
     301if ( !empty($page['categories']) ) 
    297302{ 
    298303  include(PHPWG_ROOT_PATH.'include/category_cats.inc.php'); 
  • trunk/install/config.sql

    r18164 r18165  
    2222INSERT INTO piwigo_config (param,value,comment) VALUES ('allow_user_registration','true','allow visitors to register?'); 
    2323INSERT INTO piwigo_config (param,value,comment) VALUES ('allow_user_customization','true','allow users to customize their gallery?'); 
     24INSERT INTO piwigo_config (param,value,comment) VALUES ('nb_categories_page','12'); 
    2425INSERT INTO piwigo_config (param,value,comment) VALUES ('nbm_send_html_mail','true','Send mail on HTML format for notification by mail'); 
    2526INSERT INTO piwigo_config (param,value,comment) VALUES ('nbm_send_mail_as','','Send mail as param value for notification by mail'); 
  • trunk/language/en_UK/admin.lang.php

    r18080 r18165  
    539539$lang['Notify administrators when a comment is'] = 'Notify administrators when a comment is'; 
    540540$lang['Number of comments per page'] = "Number of comments per page"; 
     541$lang['Number of albums per page'] = 'Number of albums per page'; 
    541542$lang['Number of downloads'] = "Number of downloads"; 
    542543$lang['number of miniaturized photos'] = "number of thumbnails created"; 
  • trunk/language/fr_FR/admin.lang.php

    r18080 r18165  
    937937$lang['Manage photos'] = 'Gérer les photos'; 
    938938$lang['View in gallery'] = 'Voir dans la galerie'; 
     939$lang['Number of albums per page'] = 'Nombre d\'albums par page'; 
    939940?> 
  • trunk/themes/default/template/index.tpl

    r14180 r18165  
    164164 
    165165{if !empty($CATEGORIES)}{$CATEGORIES}{/if} 
     166{if !empty($cats_navbar)} 
     167  {assign var=navbar value=$cats_navbar} 
     168  {include file='navigation_bar.tpl'|@get_extent:'navbar'} 
     169{/if} 
     170 
    166171{if !empty($THUMBNAILS)} 
    167172<ul class="thumbnails" id="thumbnails"> 
     
    169174</ul> 
    170175{/if} 
    171  
    172 {if !empty($navbar)}{include file='navigation_bar.tpl'|@get_extent:'navbar'}{/if} 
     176{if !empty($thumb_navbar)} 
     177  {assign var=navbar value=$thumb_navbar} 
     178  {include file='navigation_bar.tpl'|@get_extent:'navbar'} 
     179{/if} 
    173180 
    174181{if !empty($PLUGIN_INDEX_CONTENT_END)}{$PLUGIN_INDEX_CONTENT_END}{/if} 
Note: See TracChangeset for help on using the changeset viewer.