variable_get('ns_gallery_path', 'ns_gallery'), 'title' => t('Gallery'), 'callback' => 'ns_gallery_display', 'access' => TRUE, 'type' => MENU_CALLBACK, ); $items[] = array( 'path' => 'admin/settings/ns_gallery', 'title' => t('ns_gallery'), 'callback' => 'drupal_get_form', 'callback arguments' => array('ns_gallery_admin_settings'), 'access' => user_access('administer site configuration'), 'type' => MENU_NORMAL_ITEM ); return $items; } /** * @desc ns_gallery settings */ function ns_gallery_admin_settings(){ $form['ns_gallery_path'] = array( '#type' => 'textfield', '#required' => TRUE, '#title' => t('Path'), '#default_value' => variable_get('ns_gallery_path', 'ns_gallery'), '#description' => t('Path to which the gallery is display on.'), ); $form['ns_gallery_vocab'] = array( '#type' => 'select', '#options' => ns_gallery_get_galleries(), '#title' => t('Vocabulary association'), '#default_value' => variable_get('ns_gallery_vocab', 0), '#description' => t('Select the vocabulary that is currently applied to image that will display the albums.'), ); $form['ns_gallery_default_album'] = array( '#type' => 'select', '#options' => ns_gallery_get_albums(), '#title' => t('Default Album'), '#default_value' => variable_get('ns_gallery_default_album', 0), '#description' => t('The default album that will be displayed upon gallery entry. (only needed when associated to a vocabulary)'), ); $form['ns_gallery_captions'] = array( '#type' => 'checkbox', '#title' => t('Show image captions'), '#default_value' => variable_get('ns_gallery_captions', 0), '#description' => t('When true the title of the image uploaded will be used as the image caption.'), ); return system_settings_form($form); } /** * @desc get all vocabulary associated with image */ function ns_gallery_get_galleries($vid = NULL){ if (!is_null($vid) && is_numeric($vid)){ $select = db_query("SELECT name, tid, weight FROM term_data WHERE vid='{$vid}'"); while ($vocab = db_fetch_array($select)){ $pass[$vocab['tid']] = $vocab['name']; } return $pass; }else{ $select = db_query("SELECT vnt.vid, vnt.type, v.vid, v.name FROM vocabulary_node_types vnt LEFT JOIN vocabulary v ON v.vid WHERE v.vid = vnt.vid AND type='image'"); // array formatted for the select options $pass[0] = ''; while($vocab = db_fetch_array($select)){ $pass[$vocab['vid']] = $vocab['name']; } return $pass; } } /** * @desc select and return gallery name */ function ns_gallery_get_gallery_name($vid, $default){ $select = db_query("SELECT name FROM vocabulary WHERE vid='{$vid}'"); $vocab = db_fetch_array($select); if ($vocab){ return $vocab['name']; }else{ return $default; } } /** * @desc get all albums within a gallery */ function ns_gallery_get_albums($tname = NULL){ $gallery = variable_get('ns_gallery_vocab', 0); if ($gallery > 0){ $select = db_query("SELECT tid, name FROM term_data WHERE vid='{$gallery}'"); while($result = db_fetch_array($select)){ $pass[$result['tid']] = $result['name']; } return $pass; }else{ return array('no gallery associated'); } } /** * @desc display album links */ function ns_gallery_albums(){ $vocabid = variable_get('ns_gallery_vocab', 0); // no albums if ($vocabid == 0){ // albums }else{ $albums = ns_gallery_get_galleries($vocabid); foreach($albums AS $tid => $name){ // apply class to active or default album $add = ((arg(1) == $tid) OR (!arg(1)) AND ($tid == variable_get('ns_gallery_default_album', 0)))? 'class="active"' : '' ; $album_links .= ''.$name.''; } $display .= ''; return $display; } } /** * @desc display the thickbox gallery */ function ns_gallery_images(){ // include needed files drupal_add_js(drupal_get_path('module', 'ns_gallery').'/thickbox/thickbox.js'); drupal_add_css(drupal_get_path('module', 'ns_gallery').'/thickbox/thickbox.css'); drupal_add_css(drupal_get_path('module', 'ns_gallery').'/ns_gallery.css'); // if gallery associated if (variable_get('ns_gallery_vocab', 0)){ // if album is selected if (arg(1)){ $tid = arg(1); $add = "AND tn.tid = '{$tid}'"; }else{ $tid = variable_get('ns_gallery_default_album', 0); $add = "AND tn.tid = '{$tid}'"; } } $result = db_query("SELECT f.nid, f.filename, f.filepath, f.filemime, n.title, tn.tid FROM node n LEFT JOIN files f ON f.nid = n.nid LEFT JOIN term_node tn ON tn.nid = n.nid WHERE f.filename = 'thumbnail' {$add}"); // output images $display .= ''; return $display; } /** * @desc display gallery */ function ns_gallery_display(){ $display .= ns_gallery_albums(); $display .= ns_gallery_images(); return $display; }