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; +}