Advanced search  

News:

cpg1.5.48 Security release - upgrade mandatory!
The Coppermine development team is releasing a security update for Coppermine in order to counter a recently discovered vulnerability. It is important that all users who run version cpg1.5.46 or older update to this latest version as soon as possible.
[more]

Pages: [1]   Go Down

Author Topic: Short (Truncated) File Description and Displaying on Intermediate Page  (Read 12291 times)

0 Members and 1 Guest are viewing this topic.

Gizmo

  • Dev Team member
  • Coppermine addict
  • ****
  • Offline Offline
  • Gender: Male
  • Posts: 1015
    • BullsEye Photos

This is an extension of the Short (Truncated) Album Description and Displaying on Thumbnail Page mod that I posted earlier. This mod will truncate long file (image) descriptions that are shown on the thumbnail pages but allow the full description to be shown when viewing the intermediate image.

Add this function to your theme.php file at the end before the ?>. If you've already installed the Short (Truncated) Album Description and Displaying on Thumbnail Page mod, you can skip this step as it's the same function used in that mod.
Code: [Select]
// Function for truncating long text strings.
// Original PHP code by Chirp Internet: www.chirp.com.au
// Please acknowledge use of this code by including this header.
// Adapted for Coppermine Photo Gallery use by Billy Bullock - www.billygbullock.com
function myTruncate($string, $limit, $break=".", $pad="...")
{
// return with no change if string is shorter than $limit
if(strlen($string) <= $limit) return $string;

// is $break present between $limit and the end of the string?
if(false !== ($breakpoint = strpos($string, $break, $limit))) {
if($breakpoint < strlen($string) - 1) {
$string = substr($string, 0, $breakpoint) . $pad;
}
}

return $string;
}

Below this function, paste this modded theme_display_thumbnails(&$thumb_list, $nbThumb, $album_name, $aid, $cat, $page, $total_pages, $sort_options, $display_tabs, $mode = 'thumb') function.
Code: [Select]
function theme_display_thumbnails(&$thumb_list, $nbThumb, $album_name, $aid, $cat, $page, $total_pages, $sort_options, $display_tabs, $mode = 'thumb')
{
    global $CONFIG;
    global $template_thumb_view_title_row,$template_fav_thumb_view_title_row, $lang_thumb_view, $template_tab_display, $template_thumbnail_view, $lang_album_list;

    static $header = '';
    static $thumb_cell = '';
    static $empty_cell = '';
    static $row_separator = '';
    static $footer = '';
    static $tabs = '';
    static $spacer = '';

    if ($header == '') {
        $thumb_cell = template_extract_block($template_thumbnail_view, 'thumb_cell');
        $tabs = template_extract_block($template_thumbnail_view, 'tabs');
        $header = template_extract_block($template_thumbnail_view, 'header');
        $empty_cell = template_extract_block($template_thumbnail_view, 'empty_cell');
        $row_separator = template_extract_block($template_thumbnail_view, 'row_separator');
        $footer = template_extract_block($template_thumbnail_view, 'footer');
        $spacer = template_extract_block($template_thumbnail_view, 'spacer');
    }

    $cat_link = is_numeric($aid) ? '' : '&amp;cat=' . $cat;
    $uid_link = (isset($_GET['uid']) && is_numeric($_GET['uid'])) ? '&amp;uid=' . $_GET['uid'] : '';

    $theme_thumb_tab_tmpl = $template_tab_display;

    if ($mode == 'thumb') {
        $theme_thumb_tab_tmpl['left_text'] = strtr($theme_thumb_tab_tmpl['left_text'], array('{LEFT_TEXT}' => $aid == 'lastalb' ? $lang_album_list['album_on_page'] : $lang_thumb_view['pic_on_page']));
        $theme_thumb_tab_tmpl['inactive_tab'] = strtr($theme_thumb_tab_tmpl['inactive_tab'], array('{LINK}' => 'thumbnails.php?album=' . $aid . $cat_link . $uid_link . '&amp;page=%d'));
        $theme_thumb_tab_tmpl['inactive_next_tab'] = strtr($theme_thumb_tab_tmpl['inactive_next_tab'], array('{LINK}' => 'thumbnails.php?album=' . $aid . $cat_link . $uid_link . '&amp;page=%d'));
        $theme_thumb_tab_tmpl['inactive_prev_tab'] = strtr($theme_thumb_tab_tmpl['inactive_prev_tab'], array('{LINK}' => 'thumbnails.php?album=' . $aid . $cat_link . $uid_link . '&amp;page=%d'));
    } else {
        $theme_thumb_tab_tmpl['left_text'] = strtr($theme_thumb_tab_tmpl['left_text'], array('{LEFT_TEXT}' => $lang_thumb_view['user_on_page']));
        $theme_thumb_tab_tmpl['inactive_tab'] = strtr($theme_thumb_tab_tmpl['inactive_tab'], array('{LINK}' => 'index.php?cat=' . $cat . '&amp;page=%d'));
        $theme_thumb_tab_tmpl['inactive_next_tab'] = strtr($theme_thumb_tab_tmpl['inactive_next_tab'], array('{LINK}' => 'index.php?cat=' . $cat . '&amp;page=%d'));
        $theme_thumb_tab_tmpl['inactive_prev_tab'] = strtr($theme_thumb_tab_tmpl['inactive_prev_tab'], array('{LINK}' => 'index.php?cat=' . $cat . '&amp;page=%d'));
    }

    $thumbcols = $CONFIG['thumbcols'];
    $cell_width = ceil(100 / $CONFIG['thumbcols']) . '%';

    $tabs_html = $display_tabs ? create_tabs($nbThumb, $page, $total_pages, $theme_thumb_tab_tmpl) : '';
    // The sort order options are not available for meta albums
    if ($sort_options) {
        $param = array('{ALBUM_NAME}' => $album_name,
            '{AID}' => $aid,
            '{PAGE}' => $page,
            '{NAME}' => $lang_thumb_view['name'],
            '{TITLE}' => $lang_thumb_view['title'],
            '{DATE}' => $lang_thumb_view['date'],
            '{SORT_TA}' => $lang_thumb_view['sort_ta'],
            '{SORT_TD}' => $lang_thumb_view['sort_td'],
            '{SORT_NA}' => $lang_thumb_view['sort_na'],
            '{SORT_ND}' => $lang_thumb_view['sort_nd'],
            '{SORT_DA}' => $lang_thumb_view['sort_da'],
            '{SORT_DD}' => $lang_thumb_view['sort_dd'],
            '{POSITION}' => $lang_thumb_view['position'],
            '{SORT_PA}' => $lang_thumb_view['sort_pa'],
            '{SORT_PD}' => $lang_thumb_view['sort_pd'],
            );
        $title = template_eval($template_thumb_view_title_row, $param);
    } else if ($aid == 'favpics' && $CONFIG['enable_zipdownload'] == 1) { //Lots of stuff can be added here later
       $param = array('{ALBUM_NAME}' => $album_name,
                             '{DOWNLOAD_ZIP}'=>$lang_thumb_view['download_zip']
                               );
       $title = template_eval($template_fav_thumb_view_title_row, $param);
    }else{
        $title = $album_name;
    }


    if ($mode == 'thumb') {
        starttable('100%', $title, $thumbcols);
    } else {
        starttable('100%');
    }

    echo $header;

    $i = 0;
    foreach($thumb_list as $thumb) {
        $i++;
        $caption = $thumb['caption'];
        if ($mode == 'thumb') {
            if ($aid == 'lastalb') {
                $params = array('{CELL_WIDTH}' => $cell_width,
                    '{LINK_TGT}' => "thumbnails.php?album={$thumb['aid']}",
                    '{THUMB}' => $thumb['image'],
                    '{CAPTION}' => myTruncate($caption, 80, " "), // changing the number changes the # of characters printed for the thumbnail caption.
                    '{ADMIN_MENU}' => $thumb['admin_menu']
                    );
            } else {
                $params = array('{CELL_WIDTH}' => $cell_width,
                    '{LINK_TGT}' => "displayimage.php?album=$aid$cat_link&amp;pos={$thumb['pos']}$uid_link",
                    '{THUMB}' => $thumb['image'],
                    '{CAPTION}' => myTruncate($caption, 80, " "), // changing the number changes the # of characters printed for the thumbnail caption.
                    '{ADMIN_MENU}' => $thumb['admin_menu']
                    );
            }
        } else {
            $params = array('{CELL_WIDTH}' => $cell_width,
                '{LINK_TGT}' => "index.php?cat={$thumb['cat']}",
                '{THUMB}' => $thumb['image'],
                '{CAPTION}' => $thumb['caption'], // changed to fix user gallery viewing Aug. 10, 2008
                '{ADMIN_MENU}' => ''
                );
        }
        echo template_eval($thumb_cell, $params);

        if ((($i % $thumbcols) == 0) && ($i < count($thumb_list))) {
            echo $row_separator;
        }
    }
    for (;($i % $thumbcols); $i++) {
        echo $empty_cell;
    }
    echo $footer;

    if ($display_tabs) {
        $params = array('{THUMB_COLS}' => $thumbcols,
            '{TABS}' => $tabs_html
            );
        echo template_eval($tabs, $params);
    }

    endtable();
    echo $spacer;
}

If you already have this function in your theme.php file, find
Code: [Select]
'{CAPTION}' => $thumb['caption'],and replace with
Code: [Select]
'{CAPTION}' => myTruncate($caption, 80, " "), // changing the number changes the # of characters printed for the thumbnail caption.
To change the number of characters shown in the truncated description, edit {CAPTION}' => myTruncate($caption, 80, " "), and change 80 to a suitable number. For some reason, this number does not exactly correspond to the number of characters in the string so you may have to play a bit with it. 80 is roughly 14 characters. The truncated text ends with "..." (3 dots) to let viewers know that there's more text to read. This is controlled by the variable $pad in the function myTruncate($string, $limit, $break=".", $pad="...") and can be changed to suit your needs.

I should also add that there's an easier way to truncate text with a single php command but it doesn't give you the trailing "..." to alert viewers to the additional text.

Enjoy!

Gizmo

[UPDATE - Aug. 10, 2008] The above code for function theme_display_thumbnails has been updated to fix the issue of using this function and user galleries view being messed up. The line I changed has been commented with "changed to fix user gallery viewing Aug. 10, 2008".
« Last Edit: August 10, 2008, 03:45:02 pm by Gizmo »
Logged
Did you read the manual first???? Taking 2 minutes to backup your files can save you hours of wondering what you screwed up.
Billy Bullock - BullsEyePhotos Blog of Indecision

Fabrian

  • Coppermine frequent poster
  • ***
  • Offline Offline
  • Posts: 126
Re: Short (Truncated) File Description and Displaying on Intermediate Page
« Reply #1 on: January 29, 2007, 04:01:46 am »

To change the number of characters shown in the truncated description, edit {CAPTION}' => myTruncate($caption, 80, " "), and change 80 to a suitable number. For some reason, this number does not exactly correspond to the number of characters in the string so you may have to play a bit with it. 80 is roughly 14 characters. The truncated text ends with "..." (3 dots) to let viewers know that there's more text to read. This is controlled by the variable $pad in the function myTruncate($string, $limit, $break=".", $pad="...") and can be changed to suit your needs.

Maybe this is a silly question, but both?  there are two {CAPTION}' => myTruncate($caption, 80, " ").
Logged

Sami

  • VIP
  • Coppermine addict
  • ***
  • Offline Offline
  • Gender: Male
  • Posts: 3686
  • BMossavari
    • My Project
Re: Short (Truncated) File Description and Displaying on Intermediate Page
« Reply #2 on: January 29, 2007, 06:20:33 am »

Yes both
Logged
‍I don't answer to PM with support question
Please post your issue to related board

Gizmo

  • Dev Team member
  • Coppermine addict
  • ****
  • Offline Offline
  • Gender: Male
  • Posts: 1015
    • BullsEye Photos
Re: Short (Truncated) File Description and Displaying on Intermediate Page
« Reply #3 on: January 29, 2007, 11:31:15 am »

Actually there are three (3).
Logged
Did you read the manual first???? Taking 2 minutes to backup your files can save you hours of wondering what you screwed up.
Billy Bullock - BullsEyePhotos Blog of Indecision

anaemia

  • Coppermine newbie
  • Offline Offline
  • Posts: 3

any way to stop it from truncating the number of views and ratings on topn and toprated.

Regards.
Logged

kryspin

  • Coppermine novice
  • *
  • Offline Offline
  • Posts: 21
Re: Short (Truncated) File Description and Displaying on Intermediate Page
« Reply #5 on: November 25, 2007, 09:29:01 pm »

It works fine (i have the number set on 120). However, I use album_fav_boxes plugins and of course it truncates the "Remove from ..." and removes the check box. Raising the number to 130 and higher helps, but it also makes the normal captions too long. Is there a way, how to exclude this truncate function from dispalying favorites? (I also use the theme_display_thumbnails function only in this plugin). I would be gratefull for any help.
Logged

popersman

  • Coppermine novice
  • *
  • Offline Offline
  • Posts: 20
Re: Short (Truncated) File Description and Displaying on Intermediate Page
« Reply #6 on: February 02, 2008, 03:15:38 pm »

IMHO this should be considered as a feature to include in the next version.
Logged
Pages: [1]   Go Up
 

Page created in 0.024 seconds with 21 queries.