--- flickr.module.orig	2008-04-02 21:09:05.000000000 +0100
+++ flickr.module	2008-06-11 15:19:34.000000000 +0100
@@ -9,7 +9,7 @@ require_once(drupal_get_path('module', '
 function flickr_help($section, $arg) {
   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 <a href='@link'>@link</a>", 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 <a href='@flickr-api-link'>@flickr-api-link</a> . To create a flickr entry click <a href='@flickr-entry-create'>here</a>", 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.');
   }
@@ -43,6 +43,10 @@ function flickr_theme() {
     'flickr_photoset' => array(
       'arguments' => array('ps', 'owner', 'size', 'attribs' => NULL),
     ),
+    'flickr_admin_entries_form' => array(
+      'arguments' => array(),
+    ),
+
   );
 }
 
@@ -50,6 +54,34 @@ function flickr_theme() {
  * Implementation of hook_menu().
  */
 function flickr_menu() {
+   $items['admin/flickr'] = array(
+    'title' => t('Flickr'),
+    'page callback' => 'flickr_admin',
+    'access arguments' => array('administer site configuration'),
+    'type' => MENU_NORMAL_ITEM,
+    'description' => t('Flickr entries.'),
+  ); 
+  $items['admin/flickr/entry/create'] = array(
+    'title' => t('Create a Flickr entry'),
+    'page callback' => 'flickr_admin_entry_create',
+    'access arguments' => array('administer site configuration'),
+    'type' => MENU_CALLBACK,
+    'description' => t('Create a Flickr entry.'),
+  );
+  $items['admin/flickr/entry/delete'] = array(
+    'title' => t('Are you sure you want to delete this flickr entry?'),
+    'page callback' => 'flickr_admin_entry_delete',
+    'page arguments' => array(4),
+    'access arguments' => array('administer site configuration'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/flickr/entry/edit'] = array(
+    'title' => t('Edit a flickr entry.'),
+     'page callback' => 'flickr_admin_entry_edit',
+     'page arguments' => array(4),
+     'access arguments' => array('administer site configuration'),
+     'type' => MENU_CALLBACK,
+  );                         
   $items['admin/settings/flickr'] = array(
     'title' => 'Flickr',
     'page callback' => 'drupal_get_form',
@@ -100,6 +132,7 @@ function flickr_photos_access($account) 
   return $view_access;
 }
 
+
 /**
  * Implementation of the hook_user()
  * Add an extra field for the user to enter his flickr identifier.
@@ -239,3 +272,197 @@ function theme_flickr_photoset($ps, $own
   return l($img, $photo_url, array('attributes' => array('title' => $title), 'absolute' => TRUE, 'html' => TRUE));
 }
 
+function flickr_admin_entry_create() {
+  return drupal_get_form('flickr_admin_entry_create_form');	
+}
+
+function flickr_admin_entry_create_form(&$form_state) {
+  $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 a flickr entry'),
+  );
+  return $form;
+}
+
+function flickr_admin_entry_create_form_submit($form, &$form_state) {
+  $form_values = $form_state['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 <em>" . $form_values['flickr_entry_name'] . "</em> has been posted");
+  $form_state['redirect'] = 'admin/flickr';
+}
+
+function flickr_admin_entry_edit($flickr_entry) {
+ return drupal_get_form('flickr_admin_entry_edit_form',$flickr_entry);			
+}	
+
+function flickr_admin_entry_edit_form(&$form_state,$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, &$form_state) { 
+  $form_values = $form_state['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 <em>" . $form_values['flickr_entry_name'] . "</em> has been updated.");
+  $form_state['redirect'] = 'admin/flickr';
+}
+ 
+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, array(), t('Entries'));
+  if ($form['pager']['#value']) {
+    $output .= drupal_render($form['pager']);
+  }
+  $output .= drupal_render($form);
+  return $output;
+} 
+
+function flickr_admin_entry_delete($flickr_entry) {
+  return drupal_get_form('flickr_admin_entry_delete_form',$flickr_entry);			
+}	
+
+function flickr_admin_entry_delete_form(&$form_state,$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', 'This action cannot be undone.', t('Confirm'), t('Cancel'));           
+}
+
+function flickr_admin_entry_delete_form_submit($form, &$form_state) { 	
+  $form_values = $form_state['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)));
+  $form_state['redirect'] = 'admin/flickr';
+}
+
+function flickr_admin() {
+  $output = l('Create a flickr entry', "admin/flickr/entry/create");
+  $output .= drupal_get_form('flickr_admin_entries_form');
+  return $output;
+}
+
+
