--- flickr.module.orig 2007-06-02 05:46:58.000000000 +0100 +++ flickr.module 2008-02-05 14:43:34.000000000 +0000 @@ -10,7 +10,7 @@ require_once(drupal_get_path('module', ' function flickr_help($section) { switch ($section) { case 'admin/settings/flickr': - return t("You will need a Flickr API key to use this module. You can apply for one at @link", array('@link' => url('http://www.flickr.com/services/api/keys/apply/'))); + return t("You will need a Flickr API key to use this module. You can apply for one at @flickr-api-link . To create a flickr entry click here", array('@flickr-api-link' => url('http://www.flickr.com/services/api/keys/apply/'),'@flickr-entry-create' => url('admin/flickr/entry/create'))); case 'admin/help#flickr': return t('The flickr module uses XML-RPC to connect to Flickr\'s API and retreive photo information.'); } @@ -30,31 +30,75 @@ function flickr_perm () { function flickr_menu($may_cache) { global $user; $items = array(); - if ($may_cache) { $items[] = array( + 'path' => 'admin/flickr', + 'title' => t('Flickr'), + 'callback' => 'flickr_admin', + 'access' => user_access('administer site configuration'), + 'type' => MENU_NORMAL_ITEM, + 'description' => t('Flickr') + ); + $items[] = array( + 'path' => 'admin/flickr/entries', + 'title' => t('Flickr entries'), + 'callback' => 'flickr_admin_entries', + 'access' => user_access('administer site configuration'), + 'type' => MENU_CALLBACK, + 'description' => t('Flickr entries.') + ); + $items[] = array( + 'path' => 'admin/flickr/entry/create', + 'title' => t('Create a Flickr entry'), + 'callback' => 'flickr_admin_entry_create', + 'access' => user_access('administer site configuration'), + 'type' => MENU_CALLBACK, + 'description' => t('Create a Flickr entry.') + ); + $items[] = array( 'path' => 'admin/settings/flickr', 'title' => t('Flickr'), 'callback' => 'drupal_get_form', 'callback arguments' => array('flickr_admin_settings'), 'access' => user_access('administer site configuration'), 'type' => MENU_NORMAL_ITEM, - 'description' => t('Change settings for the flickr module.')); - + 'description' => t('Change settings for the flickr module.') + ); $items[] = array( 'path' => 'flickr', 'title' => t('Flickr photos'), 'access' => TRUE, 'type' => MENU_CALLBACK, 'callback' => 'flickr_photos', - 'description' => t('Flickr photos of default user id.')); - + 'description' => t('Flickr photos of default user id.') + ); $items[] = array( 'path' => 'flickr/auth', 'access' => TRUE, 'type' => MENU_CALLBACK, - 'callback' => 'flickr_auth_callback'); + 'callback' => 'flickr_auth_callback' + ); } - else { + else { + if (arg(0) == 'admin' && arg(1) == 'flickr' && arg(2) == 'entry' && arg(3) == 'delete' && is_numeric(arg(4))) { + $items[] = array( + 'path' => 'admin/flickr/entry/delete/'. arg(4), + 'title' => t('Are you sure you want to delete this flickr entry?'), + 'callback' => 'flickr_admin_entry_delete', + 'access' => user_access('administer site configuration'), + 'callback arguments' => array(arg(4)), + 'type' => MENU_CALLBACK + ); + } + if (arg(0) == 'admin' && arg(1) == 'flickr' && arg(2) == 'entry' && arg(3) == 'edit' && is_numeric(arg(4))) { + $items[] = array( + 'path' => 'admin/flickr/entry/edit/'. arg(4), + 'title' => t('Edit a flickr entry.'), + 'callback' => 'flickr_admin_entry_edit', + 'access' => user_access('administer site configuration'), + 'callback arguments' => array(arg(4)), + 'type' => MENU_CALLBACK + ); + } if (arg(0) == 'flickr' && is_numeric(arg(1)) && arg(1) > 0) { $account = user_load(array('uid' => arg(1))); if ($account !== FALSE && isset($account->flickr['nsid'])) { @@ -132,7 +176,6 @@ function flickr_admin_settings() { $form['flickr_default_userid']['#disabled'] = TRUE; $form['flickr_default_userid']['#description'] .= t(" Disabled until a valid API Key is set."); } - return system_settings_form($form); } @@ -140,7 +183,6 @@ function flickr_admin_settings_validate( $key = trim($form['flickr_api_key']); $sec = trim($form['flickr_api_secret']); $uid = trim($form['flickr_default_userid']); - if ($key && (preg_match('/^[A-Fa-f\d]{32}$/', $key) != 1)) { form_set_error('flickr_api_key', t('This does not appear to be a Flickr API key.')); } @@ -174,7 +216,6 @@ function flickr_admin_settings_submit($f $form['flickr_default_userid'] = $user['id']; } } - // ... and save the settings system_settings_form_submit($form_id, $form); } @@ -197,7 +238,6 @@ function theme_flickr_photo_box($p, $siz $output .= '
'. $title ."
\n"; $output .= ""; $output .= "\n"; - return $output; } @@ -261,12 +301,10 @@ function flickr_user($op, &$edit, &$acco function flickr_photos($uid = NULL) { drupal_add_css(drupal_get_path('module', 'flickr') .'/flickr.css'); - global $pager_page_array, $pager_total, $pager_total_items; //set this to something else if you want multiple pagers $element = 0; $pager_page_array[$element] = $_GET['page'] ? $_GET['page'] : ''; - if ($uid === NULL) { $nsid = variable_get('flickr_default_userid', ''); if (!$nsid) { @@ -284,21 +322,17 @@ function flickr_photos($uid = NULL) { return FALSE; } } - $photos = flickr_photos_search($nsid, $pager_page_array[$element]+1); if (!$photos) { drupal_set_message(t('No accessible photos found for Flickr %userid', array('%userid' => $nsid))); return FALSE; } - //set pager information we just acquired $pager_total[$element] = $photos['pages']; $pager_total_items[$element] = $photos['total']; - return theme('flickr_photos', $uid, $photos); } - function theme_flickr_photos($uid, $photos){ $output = theme('pager', NULL, variable_get('flickr_photos_per_page', 20)); $output .= "
\n"; @@ -317,3 +351,175 @@ function theme_flickr_photoset($ps, $own return l($img, $photo_url, array('title' => $title), NULL, NULL, TRUE, TRUE); } +function flickr_admin_entry_create() { + $output = drupal_get_form('flickr_admin_entry_create_form'); + return $output; +} + +function flickr_admin_entry_create_form() { + $form['#validate'] = array('flickr_admin_entry_create_form_validate' => array()); + $form['flickr_entry_name'] = array( + '#type' => 'textfield', + '#title' => t('Flickr entry name'), + '#required' => TRUE, + '#description' => t("Flickr entry name eg. Birthday party."), + ); + $form['flickr_entry_tags'] = array( + '#type' => 'textfield', + '#title' => t('Flickr tags'), + '#required' => FALSE, + '#description' => t("Flickr tags eg. birthday,party."), + ); + $form['flickr_entry_genre'] = array( + '#type' => 'radios', + '#title' => t('Flickr photos that are'), + '#default_value' => 're', + '#options' => array('re' =>'recently added','ra' =>'randomly selected'), + '#description' => t("Flickr photos that are recently added or randomly selected."), + ); + $form['flickr_entry_scope'] = array( + '#type' => 'radios', + '#title' => t('Flickr photos that are'), + '#default_value' => 'all', + '#options' => array('all' =>'selected from all flickr accounts','you' =>'selected from an individual flickr account'), + '#description' => t("Flickr photos that are selected for all or individual accounts.") + ); + $form['flickr_entry_submit'] = array( + '#type' => 'submit', + '#value' => t('Create an flickr entry'), + ); + return $form ; +} + +function flickr_admin_entry_create_form_submit($form_id, $form_values) { + $flickr_entries = variable_get('flickr_entries', array()); + $flickr_entry = array( + 'name' => $form_values['flickr_entry_name'], + 'tags' => $form_values['flickr_entry_tags'], + 'genre' => $form_values['flickr_entry_genre'], + 'scope' => $form_values['flickr_entry_scope'], + ); + array_push($flickr_entries, $flickr_entry); + variable_set('flickr_entries', $flickr_entries); + drupal_set_message("Flickr entry " . $form_values['flickr_entry_name'] . " has been posted"); +} + +function flickr_admin_entry_edit($flickr_entry) { + $output = drupal_get_form('flickr_admin_entry_edit_form', $flickr_entry); + return $output; +} + +function flickr_admin_entry_edit_form($flickr_entry) { + $flickr_entries = variable_get('flickr_entries', array()); + $flickr_entries[$flickr_entry]['name']; + $form['#validate'] = array('flickr_admin_update_entry_form_validate' => array()); + $form['flickr_entry_name'] = array( + '#type' => 'textfield', + '#default_value' => $flickr_entries[$flickr_entry]['name'], + '#title' => t('Flickr entry name'), + '#required' => TRUE, + '#description' => t("Flickr entry name eg. Birthday party."), + ); + $form['flickr_entry_tags'] = array( + '#type' => 'textfield', + '#default_value' => $flickr_entries[$flickr_entry]['tags'], + '#title' => t('Flickr tags'), + '#required' => FALSE, + '#description' => t("Flickr tags eg. birthday,party."), + ); + $form['flickr_entry_genre'] = array( + '#type' => 'radios', + '#title' => t('Flickr photos that are'), + '#default_value' => $flickr_entries[$flickr_entry]['genre'], + '#options' => array('re' =>'recently added','ra' =>'randomly selected'), + '#description' => t("Flickr photos that are recently added or randomly selected."), + ); + $form['flickr_entry_scope'] = array( + '#type' => 'radios', + '#title' => t('Flickr photos that are'), + '#default_value' => $flickr_entries[$flickr_entry]['scope'], + '#options' => array('all' =>'selected from all flickr accounts','you' =>'selected from an individual flickr account'), + '#description' => t("Flickr photos that are selected for all or individual accounts.") + ); + $form['flickr_entry'] = array( + '#type' => 'hidden', + '#value' => $flickr_entry, + ); + $form['flickr_entry_submit'] = array( + '#type' => 'submit', + '#value' => t('Edit flickr entry'), + ); + return $form ; +} + +function flickr_admin_entry_edit_form_submit($form_id, $form_values) { + $key = $form_values['flickr_entry']; + $flickr_entry = array( + 'name' => $form_values['flickr_entry_name'], + 'tags' => $form_values['flickr_entry_tags'], + 'genre' => $form_values['flickr_entry_genre'], + 'scope' => $form_values['flickr_entry_scope'], + ); + $flickr_entries = variable_get('flickr_entries', array()); + $flickr_entries[$key] = $flickr_entry; + variable_set('flickr_entries', $flickr_entries); + drupal_set_message("Flickr entry " . $form_values['flickr_entry_name'] . " has been updated."); +} + +function flickr_admin_entries() { + $output = drupal_get_form('flickr_admin_entries_form'); + print theme('page', $output); +} + +function flickr_admin_entries_form() { + $form['flickr-admin-entries']['header'] = array('#type' => 'value', '#value' => array( array('data' => t('Name')), array('data' => t('Tags')), array('data' => t('Select')), array('data' => t('From')), + array('data' => t('Edit')), + array('data' => t('Delete')) )); + $flickr_entries = variable_get('flickr_entries', array()); + foreach ($flickr_entries as $key=>$flickr_entry){ + $form['flickr-admin-entries']['name'][$key] = array('#value' => $flickr_entry['name']); + $form['flickr-admin-entries']['tags'][$key] = array('#value' => $flickr_entry['tags']); + $form['flickr-admin-entries']['select'][$key] = array('#value' => $flickr_entry['genre'] == 're' ? 'recent' : 'at random'); + $form['flickr-admin-entries']['from'][$key] = array('#value' => $flickr_entry['scope'] == 'you' ? 'your account' : 'all accounts' ); + $form['flickr-admin-entries']['edit'][$key] = array('#value' => l('edit', "admin/flickr/entry/edit/".$key)); + $form['flickr-admin-entries']['delete'][$key] = array('#value' => l('delete', "admin/flickr/entry/delete/".$key)); + } + return $form['flickr-admin-entries']; +} + +function theme_flickr_admin_entries_form($form) { + if (isset($form['name']) && is_array($form['name'])) { foreach (element_children($form['name']) as $key) { $row = array(); + $row[] = drupal_render($form['name'][$key]); $row[] = drupal_render($form['tags'][$key]); + $row[] = drupal_render($form['select'][$key]); $row[] = drupal_render($form['from'][$key]); + $row[] = drupal_render($form['edit'][$key]); $row[] = drupal_render($form['delete'][$key]); + $rows[] = $row; } } else { $rows[] = array(array('data' => t('No flickr entries'), 'colspan' => '6')); } $output .= theme('table', $form['header']['#value'], $rows); if ($form['pager']['#value']) { $output .= drupal_render($form['pager']); } $output .= drupal_render($form); return $output; } + +function flickr_admin_entry_delete_form($flickr_entry) { + $flickr_entries = variable_get('flickr_entries', array()); + $name = $flickr_entries[$flickr_entry]['name']; + $form['flickr_entry'] = array('#type' => 'hidden', '#value' => $flickr_entry); + $form['name'] = array('#type' => 'value', '#value' => $name); + return confirm_form($form, t('Are you sure you want to delete the flickr entry "%name" ?', array('%name' => $name)), 'admin/flickr/entries', 'This action cannot be undone.', t('Confirm'), t('Cancel')); +} + +function flickr_admin_entry_delete($flickr_entry) { + $output = drupal_get_form('flickr_admin_entry_delete_form', $flickr_entry); + print theme('page', $output); +} + +function flickr_admin_entry_delete_form_submit($form_id, $form_values) { + $flickr_entry = $form_values['flickr_entry']; + $name = $form_values['name']; + $flickr_entries = variable_get('flickr_entries', array()); + unset($flickr_entries[$flickr_entry]); + variable_set('flickr_entries', $flickr_entries); + db_query("DELETE FROM {blocks} WHERE module = 'flickr' AND delta = %d", $flickr_entry); + cache_clear_all(); + drupal_set_message(t('Flickr entry "%name" has been deleted', array('%name' => $name))); + return "admin/flickr/entries"; +} + +function flickr_admin() { + $output = l('Create a flickr entry', "admin/flickr/entry/create") . ' | '. l('Flickr entries', "admin/flickr/entries"); + print theme('page', $output); +} \ No newline at end of file