Plugin Directory

Changeset 666050


Ignore:
Timestamp:
02/10/2013 10:42:27 PM (13 years ago)
Author:
davidosomething
Message:

add options page in admin_menu hook

Location:
dko-openid-delegation/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • dko-openid-delegation/trunk/README.txt

    r658250 r666050  
    5050== Changelog ==
    5151
     52= 1.0.3 =
     53* Add options menu item on admin_menu hook
     54
    5255= 1.0.2 =
    5356* Add settings link on plugins page
  • dko-openid-delegation/trunk/dkoopenid.php

    r658131 r666050  
    11<?php
    22/**
    3  * Plugin Name: DKO OpenID Delegation
     3 * Plugin Name: DKO OpenID Delegate
    44 * Plugin URI:  http://davidosomething.com/
    5  * Description: Adds OpenID delegation link and meta tags to your HTML head
    6  * Version:     1.0.2
     5 * Description: Adds OpenID delegate link tags to your HTML head
     6 * Version:     1.0.3
    77 * Author:      David O'Trakoun (@davidosomething)
    88 * Author URI:  http://davidosomething.com/
     
    2828class DKOOpenID {
    2929
    30   private $option_group             = 'dkoopenid_option_group';
     30  private $option_group            = 'dkoopenid_option_group';
    3131  private $settings_page_menu_slug  = 'dkoopenid_settings_page';
    3232  private $settings_section_name    = 'dkoopenid_settings_section';
    33   private $settings_page_title      = 'DKO OpenID Delegation Settings';
    3433
    3534  public function __construct() {
     
    3837    }
    3938    else {
     39      add_action('admin_menu', array(&$this, 'add_options_page'));
    4040      add_action('admin_init', array(&$this, 'register_settings'));
    41       add_action('admin_menu', array(&$this, 'add_settings_submenu'));
    42 
    43       add_filter("plugin_action_links_" . plugin_basename(__FILE__), array(&$this, 'add_settings_link_to_plugins_page'));
    4441    }
    4542  }
    4643
    47   public function add_settings_link_to_plugins_page($links) {
    48     $page               = basename(__FILE__);
    49     $settings_page_href = admin_url('options-general.php?page=' . $this->settings_page_menu_slug);
    50     $settings_link      = '<a href="' . $settings_page_href . '">Settings</a>';
    51     array_unshift($links, $settings_link);
    52     return $links;
     44  public function add_options_page() {
     45    $page_title = 'DKO OpenID Settings Page';
     46    $menu_title = 'DKO OpenID Settings';
     47    $capability = 'manage_options';
     48    $menu_slug  = $this->settings_page_menu_slug;
     49    $function   = array(&$this, 'settings_page_html');
     50    add_options_page($page_title, $menu_title, $capability, $menu_slug, $function);
    5351  }
    5452
     
    7169  }
    7270
    73   /**
    74    * add_settings_submenu
    75    *
    76    * @return void
    77    */
    78   public function add_settings_submenu() {
    79     $menu_title = 'DKO OpenID Delegation';
    80     $capability = 'manage_options';
    81     $function   = array(&$this, 'settings_page_html');
    82     add_options_page($this->settings_page_title, $menu_title, $capability, $this->settings_page_menu_slug, $function);
    83   }
    84 
    8571  public function settings_page_html() {
    86 ?><div class="wrap">
    87     <div id="icon-options-general" class="icon32"><br></div><h2><?php echo $this->settings_page_title; ?></h2>
    88     <form method="post" action="options.php">
    89       <p>For information on what OpenID is, check out this site: <a href="http://openid.net/">OpenID.net</a>.</p>
    90       <?php
    91         settings_fields($this->option_group);
    92         do_settings_sections($this->settings_page_menu_slug);
    93       ?>
    94       <p class="submit"><input type="submit" name="submit" id="submit" class="button button-primary" value="<?php esc_attr_e('Save Changes'); ?>"></p>
     72?>
     73  <div class="wrap">
     74    <h2>DKO OpenID Settings</h2>
     75    <form method="post" action="options.php">
     76      <?php settings_fields($this->option_group); ?>
     77      <?php do_settings_sections($this->settings_page_menu_slug); ?>
     78      <input name="Submit" type="submit" value="<?php esc_attr_e('Save Changes'); ?>" />
    9579    </form>
    9680  </div>
     
    10589      $this->settings_page_menu_slug
    10690    );
    107 
    108     $option_key = 'dkoopenid_provider';
    10991    add_settings_field(
    110       $option_key,
    111       'OpenID Provider',
     92      'dkoopenid_provider',
     93      'OpenID server (openid.server and openid2.provider)',
    11294      array(&$this, 'text_input_html'),
    11395      $this->settings_page_menu_slug,
    114       $this->settings_section_name,
    115       array(
    116         'option_key'  => $option_key,
    117         'label_for'   => 'dkoopenid_field_' . $option_key,
    118         'placeholder' => 'https://www.myopenid.com/server',
    119         'description' => 'This is the href for the <code>openid.server</code> and <code>openid2.provider</code> link tags.',
    120         'required'    => true,
    121       )
     96      $this->settings_section_name
    12297    );
    123     $option_key = 'dkoopenid_local_id';
    12498    add_settings_field(
    125       $option_key,
    126       'OpenID Local ID',
     99      'dkoopenid_local_id',
     100      'OpenID delegate (openid.delegate and openid2.local_id)',
    127101      array(&$this, 'text_input_html'),
    128102      $this->settings_page_menu_slug,
    129       $this->settings_section_name,
    130       array(
    131         'option_key'  => $option_key,
    132         'label_for'   => 'dkoopenid_field_' . $option_key,
    133         'placeholder' => 'http://USERNAME.myopenid.com',
    134         'description' => 'This is the href for the <code>openid.delegate</code> and <code>openid2.local_id</code> link tags.',
    135         'field_type'  => 'url',
    136         'required'    => true,
    137       )
     103      $this->settings_section_name
    138104    );
    139 
    140     $option_key = 'dkoopenid_xrds_location';
    141105    add_settings_field(
    142       $option_key,
     106      'dkoopenid_xrds_location',
    143107      'X-XRDS-Location',
    144108      array(&$this, 'text_input_html'),
    145109      $this->settings_page_menu_slug,
    146       $this->settings_section_name,
    147       array(
    148         'option_key'  => $option_key,
    149         'label_for'   => 'dkoopenid_field_' . $option_key,
    150         'placeholder' => 'http://www.myopenid.com/xrds?username=USERNAME.myopenid.com',
    151         'description' => 'This is the content value for the <code>X-XRDS-Location</code> meta tag.',
    152         'field_type'  => 'url',
    153         'required'    => false,
    154       )
     110      $this->settings_section_name
    155111    );
    156112
     
    163119
    164120  public function settings_section_html() {
    165     echo <<<EOF
    166 <p>Enter in your OpenID server information here. To obtain an OpenID, check out
    167 <a href="http://www.myopenid.com/">MyOpenID</a> (not affiliated). For help on
    168 how to fill in these fields, check with your OpenID provider, e.g.,
    169 <a href="https://www.myopenid.com/help#own_domain">https://www.myopenid.com/help#own_domain</a>.
    170 EOF;
    171121    // HTML output
    172122  }
    173123
    174   public function text_input_html($args) {
    175     $options     = get_option(DKOOPENID_OPTIONS_KEY);
    176     $field_name  = DKOOPENID_OPTIONS_KEY . "[{$args['option_key']}]";
    177     $field_id    = 'dkoopenid_field_' . $args['option_key'];
    178 
    179     $field_value = $options[$args['option_key']];
    180     if (!empty($args['field_type']) && $args['field_type'] == 'url') {
    181       $field_value = esc_url($field_value);
    182     }
    183 
    184     echo '<input type="text" name="', $field_name, '" id="', $field_id ,'" value="', $field_value , '" placeholder="', $args['placeholder'], '" class="regular-text ltr">';
    185     if (!empty($args['required']) && $args['required']) {
    186       ?><abbr class="required">*</abbr><?php
    187     }
    188     if (!empty($args['description'])) {
    189       ?><p class="description"><?php echo $args['description']; ?></p><?php
    190     }
     124  public function text_input_html() {
     125    $options = get_option(DKOOPENID_OPTIONS_KEY);
     126    echo '<input type="text" name="" id="" value="', $options['dkoopenid_'], '">';
    191127  }
    192128
    193   /**
    194    * validate_settings
    195    * Since this plugin only takes URLs in the settings fields, we just
    196    * filter all the inputs through WP's esc_url_raw() function if it is a valid
    197    * URL.
    198    *
    199    * @param array $input
    200    * @return array
    201    */
    202129  public function validate_settings($input) {
    203     $output = array();
    204     foreach ($input as $field => $value) {
    205       $is_url = filter_var($value, FILTER_VALIDATE_URL);
    206       if ($is_url) {
    207         $output[$field] = esc_url_raw($value);
    208       }
    209       else {
    210         $output[$field] = '';
    211       }
    212     }
    213     return $output;
     130    return $input;
    214131  }
    215132
Note: See TracChangeset for help on using the changeset viewer.