forum.coppermine-gallery.net

Support => cpg1.4.x Support => Older/other versions => cpg1.4 miscellaneous => Topic started by: just_some_guy on November 13, 2007, 06:27:39 pm

Title: Category/Album Jump
Post by: just_some_guy on November 13, 2007, 06:27:39 pm
Category/Album Jump
CPG 1.4x
DEMO (http://www.mysimtractor.com)

This is a new way to navigate your gallery. This creates a dropdown menu with a list of either categories or albums. The dropdown is the same as the one for choosing a theme or language (using coppermines built in JavaScript). It very easy to use and you can activate it by pasting the code below into a new file (say jump.php) and then in your gallery config navigate to the include of a custom header/footer and type jump.php - Simple.

For Category Jump -

Code: [Select]
<?php
// Start Coppermines code
echo "<form name=\"cpgChooseLanguage\" id=\"cpgChooseLanguage\" action=\"index.php\" method=\"get\" style=\"margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;display:inline\">";
echo 
"<select name=\"cpgLanguageSelect\" class=\"listbox_lang\" onchange=\"if (this.options[this.selectedIndex].value) window.location.href='index.php?cat=' + this.options[this.selectedIndex].value;\">";
// End Coppermines code
echo '<option selected>Category Jump</option>';

$sql "SELECT * FROM {$CONFIG['TABLE_CATEGORIES']}";
$result cpg_db_query($sql);
while (
$row mysql_fetch_assoc($result)) {
$cid_mod $row['cid'];
$name_mod $row['name'];
echo 
"last ".$name_mod." by ".$cid_mod."";
echo 
'<option value="';
echo 
$cid_mod;
echo 
'">';
echo 
$name_mod;
echo 
'</option>';
}



echo 
'</select>';
echo 
'</form>';
?>

For Album Jump -

Code: [Select]
<?php
// Start Coppermines code
echo "<form name=\"cpgChooseLanguage\" id=\"cpgChooseLanguage\" action=\"index.php\" method=\"get\" style=\"margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;display:inline\">";
echo 
"<select name=\"cpgLanguageSelect\" class=\"listbox_lang\" onchange=\"if (this.options[this.selectedIndex].value) window.location.href='thumbnails.php?album=' + this.options[this.selectedIndex].value;\">";
// End Coppermines code
echo '<option selected>Album Jump</option>';

$sql "SELECT * FROM {$CONFIG['TABLE_ALBUMS']}";
$result cpg_db_query($sql);
while (
$row mysql_fetch_assoc($result)) {
$cid_mod $row['aid'];
$name_mod $row['title'];
echo 
"last ".$name_mod." by ".$cid_mod."";
echo 
'<option value="';
echo 
$cid_mod;
echo 
'">';
echo 
$name_mod;
echo 
'</option>';
}



echo 
'</select>';
echo 
'</form>';
?>



I would like to hear your feedback,

Thanks,

just_some_guy
Title: Re: Category/Album Jump
Post by: Steve-R on November 13, 2007, 07:06:38 pm
Installed, tested and working well..Great addition and will be handy for many I'm sure. Especially for people like your sefl who have many categories on their site or many albums.

Simple install...

Steve...:)
Title: Re: Category/Album Jump
Post by: just_some_guy on November 13, 2007, 07:10:55 pm
Thanks, Glad it works well.
Title: Re: Category/Album Jump
Post by: Joachim Müller on November 13, 2007, 07:11:43 pm
I appreciate the effort and your readiness to share your mods with the community. However this mod has some serious drawbacks.
I told you before already: don't run queries against the database for stuff that already exists using Coppermine's buillt-in functions: your query will not respect permissions at all. Subsequently, users will use the dropdown to navigate somewhere and all they will see is a message that tells them that they're not allowed to see that page. Additionally, the albums will not be within the proper order nor will they be sorted by category. You might want to look at frogfoot's approach for a dropdown list which is much better.

Mod needs improvement.
Title: Re: Category/Album Jump
Post by: just_some_guy on November 13, 2007, 07:38:43 pm
Ouch, that hurt. When you say the query already exists in coppermine's functions; what is it?  i made the change of using cpg_db_quey instead of mysql_query. But im not sure of the function you are talking about.

Thanks for the advice and i will make sure to improve it ASAP.
Title: Re: Category/Album Jump
Post by: Joachim Müller on November 14, 2007, 08:01:49 am
Take a look at include/functions.inc.php - there are already functions that will return what you need, e.g.
Code: [Select]
/**************************************************************************
   Functions for album/picture management
 **************************************************************************/

// Get the list of albums that the current user can't see

/**
 * get_private_album_set()
 *
 * @param string $aid_str
 * @return
 **/

function get_private_album_set($aid_str="")
Title: Re: Category/Album Jump
Post by: Gephri on January 25, 2008, 07:44:19 pm
Hey just_some_guy - don't leave hurt!
Any thoughts of updating your Mod based on Müller's suggestions?
Title: Re: Category/Album Jump
Post by: just_some_guy on January 27, 2008, 11:00:44 am
It sort of went of the "to-do" list, but i may put some more thought into it.

Apologies for the delay,
Title: Re: Category/Album Jump
Post by: skmdd on May 04, 2008, 10:31:43 am
I appreciate the effort and your readiness to share your mods with the community. However this mod has some serious drawbacks.
I told you before already: don't run queries against the database for stuff that already exists using Coppermine's buillt-in functions: your query will not respect permissions at all. Subsequently, users will use the dropdown to navigate somewhere and all they will see is a message that tells them that they're not allowed to see that page. Additionally, the albums will not be within the proper order nor will they be sorted by category. You might want to look at frogfoot's approach for a dropdown list which is much better.

Mod needs improvement.

I used frogfoot's approach he has used in searchnew.php to rewrite this mod. The page below draws a dropdown just like batch add page, but with a javascript which jumps to album on selection.
I want to include this dropdown on every page. I would like it to be included just below language dropdown. Where should I insert this code?

Code: [Select]
<?php
define
('IN_COPPERMINE'true);
define('DB_INPUT_PHP'true);

require(
'include/init.inc.php');
pageheader('DecoratingDesktop.com');

function 
albumselect($id "album") {
// frogfoot re-wrote this function to present the list in categorized, sorted and nicely formatted order

    
global $CONFIG$lang_search_new_php$cpg_udb;
    static 
$select "";

    
// Reset counter
    
$list_count 0;

    if (
$select == "") {
        
$result cpg_db_query("SELECT aid, title FROM {$CONFIG['TABLE_ALBUMS']} WHERE category = 0");
        while (
$row mysql_fetch_array($result)) {
            
// Add to multi-dim array for later sorting
            
$listArray[$list_count]['cat'] = $lang_search_new_php['albums_no_category'];
            
$listArray[$list_count]['aid'] = $row['aid'];
            
$listArray[$list_count]['title'] = $row['title'];
            
$list_count++;
        }
        
mysql_free_result($result);

        
$result cpg_db_query("SELECT DISTINCT a.aid as aid, a.title as title, c.name as cname FROM {$CONFIG['TABLE_ALBUMS']} as a, {$CONFIG['TABLE_CATEGORIES']} as c WHERE a.category = c.cid AND a.category < '" FIRST_USER_CAT "'");
        while (
$row mysql_fetch_array($result)) {
            
// Add to multi-dim array for later sorting
            
$listArray[$list_count]['cat'] = $row['cname'];
            
$listArray[$list_count]['aid'] = $row['aid'];
            
$listArray[$list_count]['title'] = $row['title'];
            
$list_count++;
        }
        
mysql_free_result($result);

        
//if (defined('UDB_INTEGRATION')) {
            
$sql $cpg_udb->get_batch_add_album_list();
        
/*} else {
            $sql = "SELECT aid, CONCAT('(', user_name, ') ', title) AS title " . "FROM {$CONFIG['TABLE_ALBUMS']} AS a " . "INNER JOIN {$CONFIG['TABLE_USERS']} AS u ON category = (" . FIRST_USER_CAT . " + user_id)";
        }*/
        
$result cpg_db_query($sql);
        while (
$row mysql_fetch_array($result)) {
            
// Add to multi-dim array for later sorting
            
$listArray[$list_count]['cat'] = $lang_search_new_php['personal_albums'];
            
$listArray[$list_count]['aid'] = $row['aid'];
            
$listArray[$list_count]['title'] = $row['title'];
            
$list_count++;
        }
        
mysql_free_result($result);

        
$select '<option value="0"> Go to album... </option>\n';

        
// Sort the pulldown options by category and album name
        
$listArray array_csort($listArray,'cat','title');

        
// Create the nicely sorted and formatted drop down list
        
$alb_cat '';
        foreach (
$listArray as $val) {
            if (
$val['cat'] != $alb_cat) {
          if (
$alb_cat$select .= "</optgroup>\n";
                
$select .= '<optgroup label="' $val['cat'] . '">' "\n";
                
$alb_cat $val['cat'];
            }
            
$select .= '<option value="' $val['aid'] . '"' . ($val['aid'] == $sel_album ' selected' '') . '>   ' $val['title'] . "</option>\n";
        }
        if (
$alb_cat$select .= "</optgroup>\n";
    }

    return 
"\n<select name=\"$id\" class=\"listbox\" onchange=\"window.location.href='thumbnails.php?album='+this.value;\">\n$select</select>\n";
}

print 
albumselect();

pagefooter();
?>