Index: openid_provider.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/openid_provider/openid_provider.module,v
retrieving revision 1.3
diff -u -r1.3 openid_provider.module
--- openid_provider.module	7 Sep 2008 03:51:58 -0000	1.3
+++ openid_provider.module	11 Mar 2009 01:48:57 -0000
@@ -62,6 +62,14 @@
   return $items;
 }
 
+function openid_provider_theme($existing, $type, $theme, $path) {
+  return array(
+    'openid_provider_sites' => array(
+      'arguments' => array('form' => NULL),
+    ),
+  );
+}
+
 /**
  * Implementation of hook_init()
  *
Index: openid_provider.pages.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/openid_provider/openid_provider.pages.inc,v
retrieving revision 1.1
diff -u -r1.1 openid_provider.pages.inc
--- openid_provider.pages.inc	13 Apr 2008 11:53:04 -0000	1.1
+++ openid_provider.pages.inc	11 Mar 2009 01:48:57 -0000
@@ -79,26 +79,36 @@
   
   module_load_include('inc', 'openid_provider');
   
-  $rps = _openid_provider_rp_load($user->uid);
-  if (count($rps)) {
-    $form = array('#tree' => TRUE);
-    foreach ($rps as $rp) {
-      $form['rpid'][$rp->rpid] = array(
-        '#type' => 'checkbox',
-        '#title' => $rp->realm,
-        '#default_value' => $rp->auto_release,
-        '#description' => t('Last accessed @time', array('@time' => format_date($rp->last_time)))
-      );
-    }
+  $result = pager_query("SELECT * FROM {openid_provider_relying_party} WHERE uid=%d ORDER BY last_time DESC", 50, 0, NULL, $user->uid);
   
-    $form['submit'] = array(
-      '#type' => 'submit',
-      '#value' => t('Save')
+  $form['description'] = array(
+    '#type' => 'item',
+    '#description' => t('If you turn on always approve, the site won\'t ask to confirm the login into the given external site.'),
+  );
+  
+  $form['submit'] = array(
+    '#type' => 'submit',
+    '#value' => t('Update'),
+  );
+  
+  $always_appr = array();
+  while ($rp = db_fetch_object($result)) {
+    $rps[$rp->rpid] = '';
+    $always_appr[$rp->rpid] = !$rp->auto_release;
+    $form['site'][$rp->rpid] = array(
+      '#value' => $rp->realm,
+    );
+    $form['last_access'][$rp->rpid] = array(
+      '#value' => $rp->last_time,
     );
   }
-  else {
-    $form['none']['#value'] = t('No sites yet');
-  }
+  $form['approve'] = array(
+    '#type' => 'checkboxes',
+    '#options' => $rps,
+    '#default_value' => $always_appr,
+  );
+  $form['pager'] = array('#value' => theme('pager', NULL, 50, 0));
+  $form['#theme'] = 'openid_provider_sites';
   return $form;
 }
 
@@ -106,8 +116,36 @@
  * Form submit callback for openid_provider_sites.
  */
 function openid_provider_sites_form_submit(&$form, &$form_state) {
-  foreach ($form_state['values']['rpid'] as $key => $value) {
-    db_query("UPDATE {openid_provider_relying_party} SET auto_release=%d WHERE rpid=%d", $value, $key);
+  foreach ($form_state['values']['approve'] as $key => $value) {
+    db_query("UPDATE {openid_provider_relying_party} SET auto_release=%d WHERE rpid=%d", !$value, $key);
   }
   drupal_set_message(t('Settings saved.'));
 }
+
+/**
+ * Theme openid sites overview.
+ *
+ * @ingroup themeable
+ */
+function theme_openid_provider_sites($form) {
+  // If there are rows in this form, then $form['title'] contains a list of
+  // the title form elements.
+  $header = array(t('Always approve'), t('Site'), t('Last access'));
+  foreach (element_children($form['site']) as $key) {
+    $row = array();
+    $row[] = drupal_render($form['approve'][$key]);
+    $row[] = drupal_render($form['site'][$key]);
+    $row[] = format_date(drupal_render(($form['last_access'][$key])));
+    $rows[] = $row;
+  }
+
+  unset($form['last_access']);
+  $output .= theme('table', $header, $rows);
+  if ($form['pager']['#value']) {
+    $output .= drupal_render($form['pager']);
+  }
+
+  $output .= drupal_render($form);
+
+  return $output;
+}
