--- xspf_playlist_thumb.module.orig 2009-05-06 19:56:18.000000000 +0200 +++ xspf_playlist_thumb.module 2009-09-12 18:57:37.640625000 +0200 @@ -98,9 +98,10 @@ function xspf_playlist_thumb_xspf_playli switch($op){ case 'define': $items = array( - 'xspf_playlist_thumb--1' => t('none'), - 'xspf_playlist_thumb--2' => t('XSPF: Default thumbnail'), - 'xspf_playlist_thumb--3' => t('Drupal: Upload attached files'), + 'xspf_playlist_thumb--1' => t('None'), + 'xspf_playlist_thumb--2' => t('Drupal: Upload attached files'), + 'xspf_playlist_thumb--3' => t('XSPF: CCK Imagefield/Filefield field'), + 'xspf_playlist_thumb--4' => t('XSPF: Default thumbnail'), ); return $items; break; @@ -115,7 +116,16 @@ function xspf_playlist_thumb_xspf_playli '#prefix' => '
', '#suffix' => '
', ); - return $form; + $form['xspf_playlist_thumb_cck_imagefield_field_'. $node->type] = array( + '#type' => 'select', + '#title' => t('CCK Imagefield/filefield field name with the thumbnail'), + '#options' => xspf_playlist_thumb_cck_fields($node->type), + '#default_value' => variable_get('xspf_playlist_thumb_cck_imagefield_field_'. $node->type, NULL), + '#description' => t('Enter a CCK Imagefield/Filefield Field name with the thumbnail you wish to use'), + '#prefix' => '
', + '#suffix' => '
', + ); + return $form; break; case 'return': @@ -124,14 +134,15 @@ function xspf_playlist_thumb_xspf_playli return; break; case 2: - // return default thumbnail - return variable_get('xspf_playlist_thumb_'. $node->type, null); + return xspf_playlist_thumb_get_attached_files($node); break; - case 3: - return xspf_playlist_thumb_get_attached_files($node); + return xspf_playlist_thumb_get_cck_imagefield_files($node, variable_get('xspf_playlist_thumb_cck_imagefield_field_'. $node->type, null)); break; - + case 4: + // return default thumbnail + return variable_get('xspf_playlist_thumb_'. $node->type, null); + break; } break; } @@ -162,7 +173,43 @@ function xspf_playlist_thumb_get_attache $thumbs[] = $file->filepath; } } - if ($thumbs) {return $thumbs;} + return $thumbs ? $thumbs : ''; + } +} + +/** + * Return an array of files defined in a CCK Imagefield/Filefield field in a node suitable for use as thumbnail images. + * + * @param $node + * A node object. + * @param $field_name + * CCK Field name where is the thumbnail + */ +function xspf_playlist_thumb_get_cck_imagefield_files($node, $field_name) { + if (isset($node->{$field_name})) { + $thumbs = array(); + foreach ($node->{$field_name} as $field) { + $thumbs[] = $GLOBALS['base_path'] . $field['filepath']; + } + return $thumbs ? $thumbs : ''; + } +} + +/** + * This function gets a list of all CCK fields that can be used for this content type + * + */ +function xspf_playlist_thumb_cck_fields($content_type) { + // get our content type's field + $fields = content_fields(NULL, $content_type); + if ($fields) { + foreach ($fields as $name => $field) { + // only bother with specified field types Filefield and Imagefield + if (in_array($field['type'], array('image', 'filefield') )) { + $return[$field['field_name']] .= t('CCK !type: !name', array('!type' => $field['type'], '!name' => $field['widget']['label'])); + } + } + return $return; } }