WordPress.org

Plugin Directory

Changeset 1527063


Ignore:
Timestamp:
11/02/16 23:47:48 (14 months ago)
Author:
greatislander
Message:

Tagging and releasing version 0.4.8.

Location:
hypothesis
Files:
6 added
2 deleted
6 edited
1 copied

Legend:

Unmodified
Added
Removed
  • hypothesis/tags/0.4.8/hypothesis.php

    r1431925 r1527063  
    22/** 
    33 * @package Hypothesis 
    4  * @version 0.4.5 
     4 * @version 0.4.8 
    55 */ 
     6 
    67/* 
    78Plugin Name: Hypothesis 
     
    910Description: Hypothesis is an open platform for the collaborative evaluation of knowledge. This plugin embeds the necessary scripts in your Wordpress site to enable any user to use Hypothesis without installing any extensions. 
    1011Author: The Hypothesis Project and contributors 
    11 Version: 0.4.7 
     12Version: 0.4.8 
    1213Author URI: http://hypothes.is/ 
    1314*/ 
    1415 
    15 // Exit if called directly 
    16 defined( 'ABSPATH' ) or die ( 'Cannot access pages directly.' ); 
    17  
    18  
    19 // From https://codex.wordpress.org/Creating_Options_Pages 
    20 class HypothesisSettingsPage 
    21 { 
     16// Exit if called directly. 
     17defined( 'ABSPATH' ) or die( 'Cannot access pages directly.' ); 
     18 
     19/** 
     20 * Create settings page (see https://codex.wordpress.org/Creating_Options_Pages) 
     21 */ 
     22class HypothesisSettingsPage { 
    2223    /** 
    2324     * Holds the values to be used in the fields callbacks 
     25     * 
     26     * @var array 
    2427     */ 
    2528    private $options; 
    2629 
    2730    /** 
     31     * Holds the posttypes to be used in the fields callbacks 
     32     * 
     33     * @var array 
     34     */ 
     35    private $posttypes; 
     36 
     37    /** 
    2838     * Start up 
    2939     */ 
    30     public function __construct() 
    31     { 
     40    public function __construct() { 
    3241        add_action( 'admin_menu', array( $this, 'add_plugin_page' ) ); 
    3342        add_action( 'admin_init', array( $this, 'page_init' ) ); 
     
    3746     * Add options page 
    3847     */ 
    39     public function add_plugin_page() 
    40     { 
    41         // This page will be under "Settings" 
     48    public function add_plugin_page() { 
    4249        add_options_page( 
    43             'Settings Admin', 
     50            'Hypothesis Settings', 
    4451            'Hypothesis', 
    4552            'manage_options', 
     
    5057 
    5158    /** 
     59     * Return an array of post type slugs and corresponding plural display names for options page. 
     60     * 
     61     * @returns array 
     62     */ 
     63    public static function get_posttypes() { 
     64        return apply_filters('hypothesis_supported_posttypes', array( 
     65            'post' => 'posts', 
     66            'page' => 'pages', 
     67        ) ); 
     68    } 
     69 
     70    /** 
    5271     * Options page callback 
    5372     */ 
    54     public function create_admin_page() 
    55     { 
    56         // Set class property 
    57         $this->options = get_option( 'wp_hypothesis_options' ); 
    58         include ( 'formgen.php' ); 
    59     } 
     73    public function create_admin_page() { 
     74        // Set class property. 
     75        $this->options = get_option( 'wp_hypothesis_options' ); ?> 
     76        <div class="wrap"> 
     77        <form method="post" action="options.php"> 
     78        <?php 
     79                settings_fields( 'hypothesis_option_group' ); 
     80                do_settings_sections( 'hypothesis-setting-admin' ); 
     81                submit_button(); 
     82            ?> 
     83        </form> 
     84        </div> 
     85    <?php } 
    6086 
    6187    /** 
    6288     * Register and add settings 
    6389     */ 
    64     public function page_init() 
    65     {        
     90    public function page_init() { 
     91        $posttypes = $this->get_posttypes(); 
     92 
    6693        register_setting( 
    67             'my_option_group', // Option group 
    68             'wp_hypothesis_options', // Option name 
    69             array( $this, 'sanitize' ) // Sanitize 
     94            'hypothesis_option_group', // Option group. 
     95            'wp_hypothesis_options', // Option name. 
     96            array( $this, 'sanitize' ) // Sanitize callback. 
    7097        ); 
    7198 
     
    74101         */ 
    75102        add_settings_section( 
    76             'setting_section_id2', // ID 
    77             'Hypothesis Settings', // Title 
    78             array( $this, 'print_section_info' ), // Callback 
    79             'hypothesis-setting-admin' // Page 
     103            'hypothesis_settings_section', // ID. 
     104            'Hypothesis Settings', // Title. 
     105            array( $this, 'settings_section_info' ), // Callback. 
     106            'hypothesis-setting-admin' // Page. 
    80107        ); 
    81108 
     
    85112            array( $this, 'highlights_on_by_default_callback' ), 
    86113            'hypothesis-setting-admin', 
    87             'setting_section_id2' 
     114            'hypothesis_settings_section' 
    88115        ); 
    89116 
     
    93120            array( $this, 'sidebar_open_by_default_callback' ), 
    94121            'hypothesis-setting-admin', 
    95             'setting_section_id2' 
     122            'hypothesis_settings_section' 
    96123        ); 
    97124 
     
    101128            array( $this, 'serve_pdfs_with_via_default_callback' ), 
    102129            'hypothesis-setting-admin', 
    103             'setting_section_id2' 
     130            'hypothesis_settings_section' 
    104131        ); 
    105132 
    106133        /** 
    107134         * Content Settings 
    108          * Control which pages / posts Hypothesis is loaded on. 
     135         * Control which pages / posts / custom post types Hypothesis is loaded on. 
    109136         */ 
    110137        add_settings_section( 
    111             'setting_section_id', // ID 
    112             'Content Settings', // Title 
    113             array( $this, 'print_section_info2' ), // Callback 
    114             'hypothesis-setting-admin' // Page 
    115         ); 
    116          
     138            'hypothesis_content_section', // ID. 
     139            'Content Settings', // Title. 
     140            array( $this, 'content_section_info' ), // Callback. 
     141            'hypothesis-setting-admin' // Page. 
     142        ); 
     143 
    117144        add_settings_field( 
    118145            'allow-on-front-page', 
     
    120147            array( $this, 'allow_on_front_page_callback' ), 
    121148            'hypothesis-setting-admin', 
    122             'setting_section_id' 
     149            'hypothesis_content_section' 
    123150        ); 
    124151 
     
    128155            array( $this, 'allow_on_blog_page_callback' ), 
    129156            'hypothesis-setting-admin', 
    130             'setting_section_id' 
    131         ); 
    132  
    133         add_settings_field( 
    134             'allow-on-posts', 
    135             'Allow on posts', 
    136             array( $this, 'allow_on_posts_callback' ), 
    137             'hypothesis-setting-admin', 
    138             'setting_section_id' 
    139         ); 
    140  
    141         add_settings_field( 
    142             'allow-on-pages', 
    143             'Allow on pages', 
    144             array( $this, 'allow_on_pages_callback' ), 
    145             'hypothesis-setting-admin', 
    146             'setting_section_id' 
    147         ); 
    148  
    149         add_settings_field( 
    150             'post_ids_show_h', // ID 
    151             'Allow on posts (list of comma-separated post ids, no spaces)', // Title 
    152             array( $this, 'post_ids_show_h_callback' ), // Callback 
    153             'hypothesis-setting-admin', // Page 
    154             'setting_section_id' // Section 
    155         ); 
    156  
    157         add_settings_field( 
    158             'page_ids_show_h', // ID 
    159             'Allow on pages (list of comma-separated page ids, no spaces)', // Title 
    160             array( $this, 'page_ids_show_h_callback' ), // Callback 
    161             'hypothesis-setting-admin', // Page 
    162             'setting_section_id' // Section 
    163         ); 
    164  
    165         add_settings_field( 
    166             'post_ids_override', // ID 
    167             'Disallow on posts (list of comma-separated post ids, no spaces)', // Title 
    168             array( $this, 'post_ids_override_callback' ), // Callback 
    169             'hypothesis-setting-admin', // Page 
    170             'setting_section_id' // Section 
    171         ); 
    172  
    173         add_settings_field( 
    174             'page_ids_override', // ID 
    175             'Disallow on pages (list of comma-separated page ids, no spaces)', // Title 
    176             array( $this, 'page_ids_override_callback' ), // Callback 
    177             'hypothesis-setting-admin', // Page 
    178             'setting_section_id' // Section 
    179         ); 
     157            'hypothesis_content_section' 
     158        ); 
     159 
     160        foreach ( $posttypes as $slug => $name ) { 
     161            if ( 'post' === $slug ) { 
     162                $slug = 'posts'; 
     163            } elseif ( 'page' === $slug ) { 
     164                $slug = 'pages'; 
     165            } 
     166 
     167            add_settings_field( 
     168                "allow-on-$slug", 
     169                "Allow on $name", 
     170                array( $this, 'allow_on_posttype_callback' ), 
     171                'hypothesis-setting-admin', 
     172                'hypothesis_content_section', 
     173                array( 
     174                    $slug, 
     175                    $name, 
     176                ) 
     177            ); 
     178        } 
     179 
     180        foreach ( $posttypes as $slug => $name ) { 
     181            add_settings_field( 
     182                $slug . '_ids_show_h', // ID. 
     183                "Allow on specific $name (list of comma-separated $slug IDs, no spaces)", // Title. 
     184                array( $this, 'posttype_ids_show_h_callback' ), // Callback. 
     185                'hypothesis-setting-admin', // Page. 
     186                'hypothesis_content_section', // Section. 
     187                array( 
     188                    $slug, 
     189                    $name, 
     190                ) 
     191            ); 
     192        } 
     193 
     194        foreach ( $posttypes as $slug => $name ) { 
     195            add_settings_field( 
     196                $slug . '_ids_override', // ID. 
     197                "Disallow on specific $name (list of comma-separated $slug IDs, no spaces)", // Title. 
     198                array( $this, 'posttype_ids_override_callback' ), // Callback. 
     199                'hypothesis-setting-admin', // Page. 
     200                'hypothesis_content_section', // Section. 
     201                array( 
     202                    $slug, 
     203                    $name, 
     204                ) 
     205            ); 
     206        } 
    180207    } 
    181208 
     
    183210     * Sanitize each setting field as needed 
    184211     * 
    185      * @param array $input Contains all settings fields as array keys 
    186      */ 
    187     public function sanitize( $input ) 
    188     { 
     212     * @param array $input Contains all settings fields as array keys. 
     213     */ 
     214    public function sanitize( $input ) { 
     215        $posttypes = $this->get_posttypes(); 
    189216        $new_input = array(); 
    190217 
    191         if( isset( $input['highlights-on-by-default'] ) ) 
    192             $new_input['highlights-on-by-default'] = absint($input['highlights-on-by-default']); 
    193         // else $new_input['highlights-on-by-default'] = 1; 
    194  
    195         if( isset( $input['sidebar-open-by-default'] ) ) 
    196             $new_input['sidebar-open-by-default'] = absint($input['sidebar-open-by-default']); 
    197  
    198         if( isset( $input['serve-pdfs-with-via'] ) ) 
    199             $new_input['serve-pdfs-with-via'] = absint($input['serve-pdfs-with-via']); 
    200  
    201         if( isset( $input['allow-on-blog-page'] ) ) 
    202             $new_input['allow-on-blog-page'] = absint($input['allow-on-blog-page']); 
    203  
    204         if( isset( $input['allow-on-front-page'] ) ) 
    205             $new_input['allow-on-front-page'] = absint($input['allow-on-front-page']); 
    206          
    207         if( isset( $input['allow-on-posts'] ) ) 
    208             $new_input['allow-on-posts'] = absint($input['allow-on-posts']); 
    209  
    210         if( isset( $input['allow-on-pages'] ) ) 
    211             $new_input['allow-on-pages'] = absint($input['allow-on-pages']); 
    212  
    213         if( isset( $input['post_ids_show_h'] ) ) 
    214             $new_input['post_ids_show_h'] = explode(',', esc_attr($input['post_ids_show_h'])); 
    215  
    216         if( isset( $input['page_ids_show_h'] ) ) 
    217             $new_input['page_ids_show_h'] = explode(',', esc_attr($input['page_ids_show_h'])); 
    218  
    219         if( isset( $input['post_ids_override'] ) ) 
    220             $new_input['post_ids_override'] = explode(',', esc_attr($input['post_ids_override'])); 
    221  
    222         if( isset( $input['page_ids_override'] ) ) 
    223             $new_input['page_ids_override'] = explode(',', esc_attr($input['page_ids_override'])); 
     218        if ( isset( $input['highlights-on-by-default'] ) ) { 
     219            $new_input['highlights-on-by-default'] = absint( $input['highlights-on-by-default'] ); 
     220        } 
     221 
     222        if ( isset( $input['sidebar-open-by-default'] ) ) { 
     223            $new_input['sidebar-open-by-default'] = absint( $input['sidebar-open-by-default'] ); 
     224        } 
     225 
     226        if ( isset( $input['serve-pdfs-with-via'] ) ) { 
     227            $new_input['serve-pdfs-with-via'] = absint( $input['serve-pdfs-with-via'] ); 
     228        } 
     229 
     230        if ( isset( $input['allow-on-blog-page'] ) ) { 
     231            $new_input['allow-on-blog-page'] = absint( $input['allow-on-blog-page'] ); 
     232        } 
     233 
     234        if ( isset( $input['allow-on-front-page'] ) ) { 
     235            $new_input['allow-on-front-page'] = absint( $input['allow-on-front-page'] ); 
     236        } 
     237 
     238        foreach ( $posttypes as $slug => $name ) { 
     239            if ( 'post' === $slug ) { // Adjust for backwards compatibility. 
     240                $slug = 'posts'; 
     241            } elseif ( 'page' === $slug ) { 
     242                $slug = 'pages'; 
     243            } 
     244 
     245            if ( isset( $input[ "allow-on-$slug" ] ) ) { 
     246                $new_input[ "allow-on-$slug" ] = absint( $input[ "allow-on-$slug" ] ); 
     247            } 
     248 
     249            if ( 'posts' === $slug ) { // Adjust for backwards compatibility. 
     250                $slug = 'post'; 
     251            } elseif ( 'pages' === $slug ) { 
     252                $slug = 'page'; 
     253            } 
     254 
     255            if ( isset( $input[ $slug . '_ids_show_h' ] ) ) { 
     256                $new_input[ $slug . '_ids_show_h' ] = explode( ',', esc_attr( $input[ $slug . '_ids_show_h' ] ) ); 
     257            } 
     258 
     259            if ( isset( $input[ $slug . '_ids_override' ] ) ) { 
     260                $new_input[ $slug . '_ids_override' ] = explode( ',', esc_attr( $input[ $slug . '_ids_override' ] ) ); 
     261            } 
     262        } 
    224263 
    225264        return $new_input; 
     
    229268     * Print the Hypothesis Settings section text 
    230269     */ 
    231     public function print_section_info() 
    232     { 
    233         print 'Customize Hypothesis defaults and behavior below:'; 
     270    public function settings_section_info() { 
     271        print 'Customize Hypothesis defaults and behavior.'; 
    234272    } 
    235273 
     
    237275     * Print the Content Settings section text 
    238276     */ 
    239     public function print_section_info2() 
    240     { 
    241         print 'Control which pages Hypothesis is loaded on below:'; 
    242     } 
    243  
    244     /** 
    245      * HYPOTHESIS SETTINGS Callbacks 
    246      * These get the settings option array for a setting and print one of its values. 
    247      * They are used to set various defaults for the Hypothesis application. 
    248      */ 
    249  
    250     public function highlights_on_by_default_callback() 
    251     { 
    252         printf( 
    253             '<input type="checkbox" id="highlights-on-by-default" name="wp_hypothesis_options[highlights-on-by-default]" value="1" '.checked( isset($this->options["highlights-on-by-default"]) ? $this->options["highlights-on-by-default"]: null, 1, false ).'/>', 
    254             isset( $this->options['highlights-on-by-default'] ) ? esc_attr( $this->options['highlights-on-by-default']) : 0 
    255         ); 
    256     } 
    257  
    258     public function sidebar_open_by_default_callback() 
    259     { 
    260         printf( 
    261             '<input type="checkbox" id="sidebar-open-by-default" name="wp_hypothesis_options[sidebar-open-by-default]" value="1" '.checked( isset($this->options["sidebar-open-by-default"]) ? $this->options["sidebar-open-by-default"]: null, 1, false ).'/>', 
    262             isset( $this->options['sidebar-open-by-default'] ) ? esc_attr( $this->options['sidebar-open-by-default']) : 0 
    263         ); 
    264     } 
    265  
    266     public function serve_pdfs_with_via_default_callback() 
    267     { 
    268         printf( 
    269             '<input type="checkbox" id="serve-pdfs-with-via" name="wp_hypothesis_options[serve-pdfs-with-via]" value="1" '.checked( isset($this->options["serve-pdfs-with-via"]) ? $this->options["serve-pdfs-with-via"]: null, 1, false ).'/>', 
    270             isset( $this->options['serve-pdfs-with-via'] ) ? esc_attr( $this->options['serve-pdfs-with-via']) : 0 
    271         ); 
    272     } 
    273  
    274     /** 
    275      * CONTENT SETTINGS Callbacks 
    276      * These get the settings option array for a setting and print one of its values. 
    277      * They are used to determine what pages Hypothesis is loaded on. 
    278      */ 
    279     public function allow_on_blog_page_callback() 
    280     { 
    281         printf( 
    282             '<input type="checkbox" id="allow-on-blog-page" name="wp_hypothesis_options[allow-on-blog-page]" value="1" '.checked( isset($this->options["allow-on-blog-page"]) ? $this->options["allow-on-blog-page"]: null, 1, false ).'/>', 
    283             isset( $this->options['allow-on-blog-page'] ) ? esc_attr( $this->options['allow-on-blog-page']) : 0 
    284         ); 
    285     } 
    286  
    287     public function allow_on_front_page_callback() 
    288     { 
    289         printf( 
    290             '<input type="checkbox" id="allow-on-front-page" name="wp_hypothesis_options[allow-on-front-page]" value="1"  
    291             '.checked( isset($this->options["allow-on-front-page"]) ? $this->options["allow-on-front-page"]: null, 1, false ).' />', 
    292             isset( $this->options['allow-on-front-page'] ) ? esc_attr( $this->options['allow-on-front-page']) : 0 
    293         ); 
    294     } 
    295  
    296     public function allow_on_posts_callback() 
    297     { 
    298         printf( 
    299             '<input type="checkbox" id="allow-on-posts" name="wp_hypothesis_options[allow-on-posts]" value="1"  
    300             '.checked( isset($this->options["allow-on-posts"]) ? $this->options["allow-on-posts"]: null, 1, false ).' />', 
    301             isset( $this->options['allow-on-posts'] ) ? esc_attr( $this->options['allow-on-posts']) : 0 
    302         ); 
    303     } 
    304  
    305     public function allow_on_pages_callback() 
    306     { 
    307         printf( 
    308             '<input type="checkbox" id="allow-on-pages" name="wp_hypothesis_options[allow-on-pages]" value="1"  
    309             '.checked( isset($this->options["allow-on-pages"]) ? $this->options["allow-on-pages"]: null, 1, false ).' />', 
    310             isset( $this->options['allow-on-pages'] ) ? esc_attr( $this->options['allow-on-pages']) : 0 
    311         ); 
    312     } 
    313  
    314     public function page_ids_show_h_callback() 
    315     { 
    316         printf( 
    317             '<input type="text" id="page_ids_show_h" name="wp_hypothesis_options[page_ids_show_h]" value="%s" />', 
    318             isset( $this->options['page_ids_show_h'] ) ? esc_attr( implode(',', $this->options['page_ids_show_h'])) : '' 
    319         ); 
    320     } 
    321  
    322     public function post_ids_show_h_callback() 
    323     { 
    324         printf( 
    325             '<input type="text" id="post_ids_show_h" name="wp_hypothesis_options[post_ids_show_h]" value="%s" />', 
    326             isset( $this->options['post_ids_show_h'] ) ? esc_attr( implode(',', $this->options['post_ids_show_h'])) : '' 
    327         ); 
    328     } 
    329  
    330     public function post_ids_override_callback() 
    331     { 
    332         printf( 
    333             '<input type="text" id="post_ids_override" name="wp_hypothesis_options[post_ids_override]" value="%s" />', 
    334             isset( $this->options['post_ids_override'] ) ? esc_attr( implode(',', $this->options['post_ids_override'])) : '' 
    335         ); 
    336     } 
    337  
    338     public function page_ids_override_callback() 
    339     { 
    340         printf( 
    341             '<input type="text" id="page_ids_override" name="wp_hypothesis_options[page_ids_override]" value="%s" />', 
    342             isset( $this->options['page_ids_override'] ) ? esc_attr( implode(',',$this->options['page_ids_override'])) : '' 
     277    public function content_section_info() { 
     278        print 'Control where Hypothesis is loaded.'; 
     279    } 
     280 
     281    /** 
     282     * Callback for 'highlights-on-by-default'. 
     283     */ 
     284    public function highlights_on_by_default_callback() { 
     285        $val = isset( $this->options['highlights-on-by-default'] ) ? esc_attr( $this->options['highlights-on-by-default'] ) : 0; 
     286 
     287        printf( 
     288            '<input type="checkbox" id="highlights-on-by-default" name="wp_hypothesis_options[highlights-on-by-default]" value="1" %s/>', 
     289            checked( $val, 1, false ) 
     290        ); 
     291    } 
     292 
     293    /** 
     294     * Callback for 'sidebar-open-by-default'. 
     295     */ 
     296    public function sidebar_open_by_default_callback() { 
     297        $val = isset( $this->options['sidebar-open-by-default'] ) ? esc_attr( $this->options['sidebar-open-by-default'] ) : 0; 
     298        printf( 
     299            '<input type="checkbox" id="sidebar-open-by-default" name="wp_hypothesis_options[sidebar-open-by-default]" value="1" %s/>', 
     300            checked( $val, 1, false ) 
     301        ); 
     302    } 
     303 
     304    /** 
     305     * Callback for 'serve-pdfs-with-via'. 
     306     */ 
     307    public function serve_pdfs_with_via_default_callback() { 
     308        $val = isset( $this->options['serve-pdfs-with-via'] ) ? esc_attr( $this->options['serve-pdfs-with-via'] ) : 0; 
     309        printf( 
     310            '<input type="checkbox" id="serve-pdfs-with-via" name="wp_hypothesis_options[serve-pdfs-with-via]" value="1" %s/>', 
     311            checked( $val, 1, false ) 
     312        ); 
     313    } 
     314 
     315    /** 
     316     * Callback for 'allow_on_blog_page'. 
     317     */ 
     318    public function allow_on_blog_page_callback() { 
     319        $val = isset( $this->options['allow-on-blog-page'] ) ? esc_attr( $this->options['allow-on-blog-page'] ) : 0; 
     320        printf( 
     321            '<input type="checkbox" id="allow-on-blog-page" name="wp_hypothesis_options[allow-on-blog-page]" value="1" %s/>', 
     322            checked( $val, 1, false ) 
     323        ); 
     324    } 
     325 
     326    /** 
     327     * Callback for 'allow-on-front-page'. 
     328     */ 
     329    public function allow_on_front_page_callback() { 
     330        $val = isset( $this->options['allow-on-front-page'] ) ? esc_attr( $this->options['allow-on-front-page'] ) : 0; 
     331        printf( 
     332            '<input type="checkbox" id="allow-on-front-page" name="wp_hypothesis_options[allow-on-front-page]" value="1" %s/>', 
     333            checked( $val, 1, false ) 
     334        ); 
     335    } 
     336 
     337    /** 
     338     * Callback for 'allow-on-<posttype>'. 
     339     */ 
     340    public function allow_on_posttype_callback( $args ) { 
     341        $slug = $args[0]; 
     342        $val = isset( $this->options[ "allow-on-$slug" ] ) ? esc_attr( $this->options[ "allow-on-$slug" ] ) : 0; 
     343 
     344        printf( 
     345            '<input type="checkbox" id="allow-on-%s" name="wp_hypothesis_options[allow-on-%s]" value="1" %s/>', 
     346            esc_attr( $slug ), 
     347            esc_attr( $slug ), 
     348            checked( $val, 1, false ) 
     349        ); 
     350    } 
     351 
     352    /** 
     353     * Callback for '<posttype>_ids_show_h'. 
     354     * 
     355     * @param array $args An arry containing the post type slug and the post type name (plural). 
     356     */ 
     357    public function posttype_ids_show_h_callback( $args ) { 
     358        $slug = $args[0]; 
     359        $val = isset( $this->options[ $slug . '_ids_show_h' ] ) ? esc_attr( implode( ',', $this->options[ $slug . '_ids_show_h' ] ) ) : ''; 
     360 
     361        printf( 
     362            '<input type="text" id="%s_ids_show_h" name="wp_hypothesis_options[%s_ids_show_h]" value="%s" />', 
     363            esc_attr( $slug ), 
     364            esc_attr( $slug ), 
     365            esc_attr( $val ) 
     366        ); 
     367    } 
     368 
     369    /** 
     370     * Callback for '<posttype>_ids_override'. 
     371     * 
     372     * @param array $args An arry containing the post type slug and the post type name (plural). 
     373     */ 
     374    public function posttype_ids_override_callback( $args ) { 
     375        $slug = $args[0]; 
     376        $val = isset( $this->options[ $slug . '_ids_override' ] ) ? esc_attr( implode( ',', $this->options[ $slug . '_ids_override' ] ) ) : ''; 
     377 
     378        printf( 
     379            '<input type="text" id="%s_ids_override" name="wp_hypothesis_options[%s_ids_override]" value="%s" />', 
     380            esc_attr( $slug ), 
     381            esc_attr( $slug ), 
     382            esc_attr( $val ) 
    343383        ); 
    344384    } 
    345385} 
    346386 
    347 if( is_admin() ) 
     387if ( is_admin() ) { 
    348388    $hypothesis_settings_page = new HypothesisSettingsPage(); 
    349  
     389} 
    350390 
    351391/** 
    352392 * Add Hypothesis based on conditions set in the plugin settings. 
    353393 */ 
    354 add_action('wp', 'add_hypothesis'); 
    355  
    356 function add_hypothesis($param) { 
     394add_action( 'wp', 'add_hypothesis' ); 
     395 
     396/** 
     397 * Wrapper for the primary Hypothesis wp_enqueue call. 
     398 */ 
     399function enqueue_hypothesis() { 
     400    wp_enqueue_script( 'hypothesis', 'https://hypothes.is/embed.js', array(), false, true ); 
     401} 
     402 
     403/** 
     404 * Add Hypothesis script(s) to front end. 
     405 */ 
     406function add_hypothesis() { 
    357407    $options = get_option( 'wp_hypothesis_options' ); 
    358  
    359     // Set defaults if we $options is not set yet. 
    360     if (empty($options)): 
     408    $posttypes = HypothesisSettingsPage::get_posttypes(); 
     409 
     410        // Set defaults if we $options is not set yet. 
     411    if ( empty( $options ) ) : 
    361412        $defaults = array( 
    362          'highlights-on-by-default' => 1, 
     413            'highlights-on-by-default' => 1, 
    363414        ); 
    364415        add_option( 'wp_hypothesis_options', $defaults ); 
    365416    endif; 
    366417 
    367     // otherwise highlighting is on by default 
     418    // Otherwise highlighting is on by default. 
    368419    wp_enqueue_script( 'nohighlights', '/wp-content/plugins/hypothesis/js/nohighlights.js', '', false, true ); 
    369420 
    370  
    371     // Embed options 
    372     if (isset($options['highlights-on-by-default'])): 
     421        // Embed options. 
     422    if ( isset( $options['highlights-on-by-default'] ) ) : 
    373423        wp_enqueue_script( 'showhighlights', '/wp-content/plugins/hypothesis/js/showhighlights.js', '', false, true ); 
    374424    endif; 
    375425 
    376     if (isset($options['sidebar-open-by-default'])): 
     426    if ( isset( $options['sidebar-open-by-default'] ) ) : 
    377427        wp_enqueue_script( 'sidebaropen', '/wp-content/plugins/hypothesis/js/sidebaropen.js', '', false, true ); 
    378428    endif; 
    379429 
    380     if (isset($options['serve-pdfs-with-via'])): 
     430    if ( isset( $options['serve-pdfs-with-via'] ) ) : 
    381431        wp_enqueue_script( 'pdfs-with-via', '/wp-content/plugins/hypothesis/js/via-pdf.js', '', false, true ); 
    382432    endif; 
    383433 
    384  
    385     // Content settings 
    386     if (isset($options['allow-on-blog-page']) && is_home()): 
    387         wp_enqueue_script( 'hypothesis', '//hypothes.is/embed.js', '', false, true ); 
    388  
    389     elseif (isset($options['allow-on-front-page']) && is_front_page()): 
    390         wp_enqueue_script( 'hypothesis', '//hypothes.is/embed.js', '', false, true ); 
    391  
    392     elseif (isset($options['post_ids_show_h']) && is_single($options['post_ids_show_h'])): 
    393         wp_enqueue_script( 'hypothesis', '//hypothes.is/embed.js', '', false, true ); 
    394  
    395     elseif (isset($options['page_ids_show_h']) && is_page($options['page_ids_show_h'])): 
    396         wp_enqueue_script( 'hypothesis', '//hypothes.is/embed.js', '', false, true ); 
    397  
    398     elseif (isset($options['allow-on-posts']) && is_single()): 
    399         if (isset($options['post_ids_override']) && is_single($options['post_ids_override'])); 
    400         else 
    401             wp_enqueue_script( 'hypothesis', '//hypothes.is/embed.js', '', false, true ); 
    402  
    403     elseif (isset($options['allow-on-pages']) && is_page() && !is_front_page() && !is_home()): 
    404         if (isset($options['page_ids_override']) && is_page($options['page_ids_override'])); 
    405         else 
    406             wp_enqueue_script( 'hypothesis', '//hypothes.is/embed.js', '', false, true ); 
    407     endif; 
     434    // Content settings. 
     435    $enqueue = false; 
     436 
     437    if ( is_front_page() && isset( $options['allow-on-front-page'] ) ) { 
     438        enqueue_hypothesis(); 
     439    } elseif ( is_home() && isset( $options['allow-on-blog-page'] ) ) { 
     440        enqueue_hypothesis(); 
     441    } 
     442 
     443    foreach ( $posttypes as $slug => $name ) { 
     444        if ( 'page' !== $slug ) { 
     445            $posttype = $slug; 
     446            if ( 'post' === $slug ) { 
     447                $slug = 'posts'; // Backwards compatibility. 
     448            } 
     449            if ( isset( $options[ "allow-on-$slug" ] ) && is_singular( $posttype ) ) { // Check if Hypothesis is allowed on this post type. 
     450                if ( isset( $options[ $posttype . '_ids_override' ] ) && ! is_single( $options[ $posttype . '_ids_override' ] ) ) { // Make sure this post isn't in the override list if it exists. 
     451                    enqueue_hypothesis(); 
     452                } 
     453            } elseif ( ! isset( $options[ "allow-on-$slug" ] ) && isset( $options[ $posttype . '_ids_show_h' ] ) && is_single( $options[ $posttype . '_ids_show_h' ] ) ) { // Check if Hypothesis is allowed on this specific post. 
     454                enqueue_hypothesis(); 
     455            } 
     456        } elseif ( 'page' === $slug ) { 
     457            if ( isset( $options['allow-on-pages'] ) && is_page() && ! is_front_page() && ! is_home() ) { // Check if Hypothesis is allowed on pages (and that we aren't on a special page). 
     458                if ( isset( $options['page_ids_override'] ) && ! is_page( $options['page_ids_override'] ) ) { // Make sure this page isn't in the override list if it exists. 
     459                    enqueue_hypothesis(); 
     460                } 
     461            } elseif ( ! isset( $options['allow-on-pages'] ) && isset( $options['page_ids_show_h'] ) && is_page( $options['page_ids_show_h'] ) ) { // Check if Hypothesis is allowed on this specific page. 
     462                enqueue_hypothesis(); 
     463            } 
     464        } 
     465    } 
    408466} 
    409  
    410 ?> 
  • hypothesis/tags/0.4.8/js/sidebaropen.js

    r1431925 r1527063  
    55    return { 
    66      showHighlights: true, 
    7       firstRun: true 
     7      openSidebar: true 
    88    } 
    99  } 
     
    1111  window.hypothesisConfig = function () { 
    1212    return { 
    13       firstRun: true 
     13      openSidebar: true 
    1414    } 
    1515  } 
  • hypothesis/tags/0.4.8/readme.txt

    r1431925 r1527063  
    11=== Plugin Name === 
    2 Contributors: timmmmyboy, BigBlueHat, jakehartnell 
     2Contributors: timmmmyboy, BigBlueHat, JakeHartnell 
    33Tags: hypothesis, annotation, comments 
    44Requires at least: 3.0.1 
    55Tested up to: 4.3 
    6 Stable tag: 0.4.7 
     6Stable tag: 0.4.5 
    77License: BSD 
    88License URI: http://opensource.org/licenses/BSD-2-Clause 
  • hypothesis/trunk/hypothesis.php

    r1431925 r1527063  
    22/** 
    33 * @package Hypothesis 
    4  * @version 0.4.5 
     4 * @version 0.4.8 
    55 */ 
     6 
    67/* 
    78Plugin Name: Hypothesis 
     
    910Description: Hypothesis is an open platform for the collaborative evaluation of knowledge. This plugin embeds the necessary scripts in your Wordpress site to enable any user to use Hypothesis without installing any extensions. 
    1011Author: The Hypothesis Project and contributors 
    11 Version: 0.4.7 
     12Version: 0.4.8 
    1213Author URI: http://hypothes.is/ 
    1314*/ 
    1415 
    15 // Exit if called directly 
    16 defined( 'ABSPATH' ) or die ( 'Cannot access pages directly.' ); 
    17  
    18  
    19 // From https://codex.wordpress.org/Creating_Options_Pages 
    20 class HypothesisSettingsPage 
    21 { 
     16// Exit if called directly. 
     17defined( 'ABSPATH' ) or die( 'Cannot access pages directly.' ); 
     18 
     19/** 
     20 * Create settings page (see https://codex.wordpress.org/Creating_Options_Pages) 
     21 */ 
     22class HypothesisSettingsPage { 
    2223    /** 
    2324     * Holds the values to be used in the fields callbacks 
     25     * 
     26     * @var array 
    2427     */ 
    2528    private $options; 
    2629 
    2730    /** 
     31     * Holds the posttypes to be used in the fields callbacks 
     32     * 
     33     * @var array 
     34     */ 
     35    private $posttypes; 
     36 
     37    /** 
    2838     * Start up 
    2939     */ 
    30     public function __construct() 
    31     { 
     40    public function __construct() { 
    3241        add_action( 'admin_menu', array( $this, 'add_plugin_page' ) ); 
    3342        add_action( 'admin_init', array( $this, 'page_init' ) ); 
     
    3746     * Add options page 
    3847     */ 
    39     public function add_plugin_page() 
    40     { 
    41         // This page will be under "Settings" 
     48    public function add_plugin_page() { 
    4249        add_options_page( 
    43             'Settings Admin', 
     50            'Hypothesis Settings', 
    4451            'Hypothesis', 
    4552            'manage_options', 
     
    5057 
    5158    /** 
     59     * Return an array of post type slugs and corresponding plural display names for options page. 
     60     * 
     61     * @returns array 
     62     */ 
     63    public static function get_posttypes() { 
     64        return apply_filters('hypothesis_supported_posttypes', array( 
     65            'post' => 'posts', 
     66            'page' => 'pages', 
     67        ) ); 
     68    } 
     69 
     70    /** 
    5271     * Options page callback 
    5372     */ 
    54     public function create_admin_page() 
    55     { 
    56         // Set class property 
    57         $this->options = get_option( 'wp_hypothesis_options' ); 
    58         include ( 'formgen.php' ); 
    59     } 
     73    public function create_admin_page() { 
     74        // Set class property. 
     75        $this->options = get_option( 'wp_hypothesis_options' ); ?> 
     76        <div class="wrap"> 
     77        <form method="post" action="options.php"> 
     78        <?php 
     79                settings_fields( 'hypothesis_option_group' ); 
     80                do_settings_sections( 'hypothesis-setting-admin' ); 
     81                submit_button(); 
     82            ?> 
     83        </form> 
     84        </div> 
     85    <?php } 
    6086 
    6187    /** 
    6288     * Register and add settings 
    6389     */ 
    64     public function page_init() 
    65     {        
     90    public function page_init() { 
     91        $posttypes = $this->get_posttypes(); 
     92 
    6693        register_setting( 
    67             'my_option_group', // Option group 
    68             'wp_hypothesis_options', // Option name 
    69             array( $this, 'sanitize' ) // Sanitize 
     94            'hypothesis_option_group', // Option group. 
     95            'wp_hypothesis_options', // Option name. 
     96            array( $this, 'sanitize' ) // Sanitize callback. 
    7097        ); 
    7198 
     
    74101         */ 
    75102        add_settings_section( 
    76             'setting_section_id2', // ID 
    77             'Hypothesis Settings', // Title 
    78             array( $this, 'print_section_info' ), // Callback 
    79             'hypothesis-setting-admin' // Page 
     103            'hypothesis_settings_section', // ID. 
     104            'Hypothesis Settings', // Title. 
     105            array( $this, 'settings_section_info' ), // Callback. 
     106            'hypothesis-setting-admin' // Page. 
    80107        ); 
    81108 
     
    85112            array( $this, 'highlights_on_by_default_callback' ), 
    86113            'hypothesis-setting-admin', 
    87             'setting_section_id2' 
     114            'hypothesis_settings_section' 
    88115        ); 
    89116 
     
    93120            array( $this, 'sidebar_open_by_default_callback' ), 
    94121            'hypothesis-setting-admin', 
    95             'setting_section_id2' 
     122            'hypothesis_settings_section' 
    96123        ); 
    97124 
     
    101128            array( $this, 'serve_pdfs_with_via_default_callback' ), 
    102129            'hypothesis-setting-admin', 
    103             'setting_section_id2' 
     130            'hypothesis_settings_section' 
    104131        ); 
    105132 
    106133        /** 
    107134         * Content Settings 
    108          * Control which pages / posts Hypothesis is loaded on. 
     135         * Control which pages / posts / custom post types Hypothesis is loaded on. 
    109136         */ 
    110137        add_settings_section( 
    111             'setting_section_id', // ID 
    112             'Content Settings', // Title 
    113             array( $this, 'print_section_info2' ), // Callback 
    114             'hypothesis-setting-admin' // Page 
    115         ); 
    116          
     138            'hypothesis_content_section', // ID. 
     139            'Content Settings', // Title. 
     140            array( $this, 'content_section_info' ), // Callback. 
     141            'hypothesis-setting-admin' // Page. 
     142        ); 
     143 
    117144        add_settings_field( 
    118145            'allow-on-front-page', 
     
    120147            array( $this, 'allow_on_front_page_callback' ), 
    121148            'hypothesis-setting-admin', 
    122             'setting_section_id' 
     149            'hypothesis_content_section' 
    123150        ); 
    124151 
     
    128155            array( $this, 'allow_on_blog_page_callback' ), 
    129156            'hypothesis-setting-admin', 
    130             'setting_section_id' 
    131         ); 
    132  
    133         add_settings_field( 
    134             'allow-on-posts', 
    135             'Allow on posts', 
    136             array( $this, 'allow_on_posts_callback' ), 
    137             'hypothesis-setting-admin', 
    138             'setting_section_id' 
    139         ); 
    140  
    141         add_settings_field( 
    142             'allow-on-pages', 
    143             'Allow on pages', 
    144             array( $this, 'allow_on_pages_callback' ), 
    145             'hypothesis-setting-admin', 
    146             'setting_section_id' 
    147         ); 
    148  
    149         add_settings_field( 
    150             'post_ids_show_h', // ID 
    151             'Allow on posts (list of comma-separated post ids, no spaces)', // Title 
    152             array( $this, 'post_ids_show_h_callback' ), // Callback 
    153             'hypothesis-setting-admin', // Page 
    154             'setting_section_id' // Section 
    155         ); 
    156  
    157         add_settings_field( 
    158             'page_ids_show_h', // ID 
    159             'Allow on pages (list of comma-separated page ids, no spaces)', // Title 
    160             array( $this, 'page_ids_show_h_callback' ), // Callback 
    161             'hypothesis-setting-admin', // Page 
    162             'setting_section_id' // Section 
    163         ); 
    164  
    165         add_settings_field( 
    166             'post_ids_override', // ID 
    167             'Disallow on posts (list of comma-separated post ids, no spaces)', // Title 
    168             array( $this, 'post_ids_override_callback' ), // Callback 
    169             'hypothesis-setting-admin', // Page 
    170             'setting_section_id' // Section 
    171         ); 
    172  
    173         add_settings_field( 
    174             'page_ids_override', // ID 
    175             'Disallow on pages (list of comma-separated page ids, no spaces)', // Title 
    176             array( $this, 'page_ids_override_callback' ), // Callback 
    177             'hypothesis-setting-admin', // Page 
    178             'setting_section_id' // Section 
    179         ); 
     157            'hypothesis_content_section' 
     158        ); 
     159 
     160        foreach ( $posttypes as $slug => $name ) { 
     161            if ( 'post' === $slug ) { 
     162                $slug = 'posts'; 
     163            } elseif ( 'page' === $slug ) { 
     164                $slug = 'pages'; 
     165            } 
     166 
     167            add_settings_field( 
     168                "allow-on-$slug", 
     169                "Allow on $name", 
     170                array( $this, 'allow_on_posttype_callback' ), 
     171                'hypothesis-setting-admin', 
     172                'hypothesis_content_section', 
     173                array( 
     174                    $slug, 
     175                    $name, 
     176                ) 
     177            ); 
     178        } 
     179 
     180        foreach ( $posttypes as $slug => $name ) { 
     181            add_settings_field( 
     182                $slug . '_ids_show_h', // ID. 
     183                "Allow on specific $name (list of comma-separated $slug IDs, no spaces)", // Title. 
     184                array( $this, 'posttype_ids_show_h_callback' ), // Callback. 
     185                'hypothesis-setting-admin', // Page. 
     186                'hypothesis_content_section', // Section. 
     187                array( 
     188                    $slug, 
     189                    $name, 
     190                ) 
     191            ); 
     192        } 
     193 
     194        foreach ( $posttypes as $slug => $name ) { 
     195            add_settings_field( 
     196                $slug . '_ids_override', // ID. 
     197                "Disallow on specific $name (list of comma-separated $slug IDs, no spaces)", // Title. 
     198                array( $this, 'posttype_ids_override_callback' ), // Callback. 
     199                'hypothesis-setting-admin', // Page. 
     200                'hypothesis_content_section', // Section. 
     201                array( 
     202                    $slug, 
     203                    $name, 
     204                ) 
     205            ); 
     206        } 
    180207    } 
    181208 
     
    183210     * Sanitize each setting field as needed 
    184211     * 
    185      * @param array $input Contains all settings fields as array keys 
    186      */ 
    187     public function sanitize( $input ) 
    188     { 
     212     * @param array $input Contains all settings fields as array keys. 
     213     */ 
     214    public function sanitize( $input ) { 
     215        $posttypes = $this->get_posttypes(); 
    189216        $new_input = array(); 
    190217 
    191         if( isset( $input['highlights-on-by-default'] ) ) 
    192             $new_input['highlights-on-by-default'] = absint($input['highlights-on-by-default']); 
    193         // else $new_input['highlights-on-by-default'] = 1; 
    194  
    195         if( isset( $input['sidebar-open-by-default'] ) ) 
    196             $new_input['sidebar-open-by-default'] = absint($input['sidebar-open-by-default']); 
    197  
    198         if( isset( $input['serve-pdfs-with-via'] ) ) 
    199             $new_input['serve-pdfs-with-via'] = absint($input['serve-pdfs-with-via']); 
    200  
    201         if( isset( $input['allow-on-blog-page'] ) ) 
    202             $new_input['allow-on-blog-page'] = absint($input['allow-on-blog-page']); 
    203  
    204         if( isset( $input['allow-on-front-page'] ) ) 
    205             $new_input['allow-on-front-page'] = absint($input['allow-on-front-page']); 
    206          
    207         if( isset( $input['allow-on-posts'] ) ) 
    208             $new_input['allow-on-posts'] = absint($input['allow-on-posts']); 
    209  
    210         if( isset( $input['allow-on-pages'] ) ) 
    211             $new_input['allow-on-pages'] = absint($input['allow-on-pages']); 
    212  
    213         if( isset( $input['post_ids_show_h'] ) ) 
    214             $new_input['post_ids_show_h'] = explode(',', esc_attr($input['post_ids_show_h'])); 
    215  
    216         if( isset( $input['page_ids_show_h'] ) ) 
    217             $new_input['page_ids_show_h'] = explode(',', esc_attr($input['page_ids_show_h'])); 
    218  
    219         if( isset( $input['post_ids_override'] ) ) 
    220             $new_input['post_ids_override'] = explode(',', esc_attr($input['post_ids_override'])); 
    221  
    222         if( isset( $input['page_ids_override'] ) ) 
    223             $new_input['page_ids_override'] = explode(',', esc_attr($input['page_ids_override'])); 
     218        if ( isset( $input['highlights-on-by-default'] ) ) { 
     219            $new_input['highlights-on-by-default'] = absint( $input['highlights-on-by-default'] ); 
     220        } 
     221 
     222        if ( isset( $input['sidebar-open-by-default'] ) ) { 
     223            $new_input['sidebar-open-by-default'] = absint( $input['sidebar-open-by-default'] ); 
     224        } 
     225 
     226        if ( isset( $input['serve-pdfs-with-via'] ) ) { 
     227            $new_input['serve-pdfs-with-via'] = absint( $input['serve-pdfs-with-via'] ); 
     228        } 
     229 
     230        if ( isset( $input['allow-on-blog-page'] ) ) { 
     231            $new_input['allow-on-blog-page'] = absint( $input['allow-on-blog-page'] ); 
     232        } 
     233 
     234        if ( isset( $input['allow-on-front-page'] ) ) { 
     235            $new_input['allow-on-front-page'] = absint( $input['allow-on-front-page'] ); 
     236        } 
     237 
     238        foreach ( $posttypes as $slug => $name ) { 
     239            if ( 'post' === $slug ) { // Adjust for backwards compatibility. 
     240                $slug = 'posts'; 
     241            } elseif ( 'page' === $slug ) { 
     242                $slug = 'pages'; 
     243            } 
     244 
     245            if ( isset( $input[ "allow-on-$slug" ] ) ) { 
     246                $new_input[ "allow-on-$slug" ] = absint( $input[ "allow-on-$slug" ] ); 
     247            } 
     248 
     249            if ( 'posts' === $slug ) { // Adjust for backwards compatibility. 
     250                $slug = 'post'; 
     251            } elseif ( 'pages' === $slug ) { 
     252                $slug = 'page'; 
     253            } 
     254 
     255            if ( isset( $input[ $slug . '_ids_show_h' ] ) ) { 
     256                $new_input[ $slug . '_ids_show_h' ] = explode( ',', esc_attr( $input[ $slug . '_ids_show_h' ] ) ); 
     257            } 
     258 
     259            if ( isset( $input[ $slug . '_ids_override' ] ) ) { 
     260                $new_input[ $slug . '_ids_override' ] = explode( ',', esc_attr( $input[ $slug . '_ids_override' ] ) ); 
     261            } 
     262        } 
    224263 
    225264        return $new_input; 
     
    229268     * Print the Hypothesis Settings section text 
    230269     */ 
    231     public function print_section_info() 
    232     { 
    233         print 'Customize Hypothesis defaults and behavior below:'; 
     270    public function settings_section_info() { 
     271        print 'Customize Hypothesis defaults and behavior.'; 
    234272    } 
    235273 
     
    237275     * Print the Content Settings section text 
    238276     */ 
    239     public function print_section_info2() 
    240     { 
    241         print 'Control which pages Hypothesis is loaded on below:'; 
    242     } 
    243  
    244     /** 
    245      * HYPOTHESIS SETTINGS Callbacks 
    246      * These get the settings option array for a setting and print one of its values. 
    247      * They are used to set various defaults for the Hypothesis application. 
    248      */ 
    249  
    250     public function highlights_on_by_default_callback() 
    251     { 
    252         printf( 
    253             '<input type="checkbox" id="highlights-on-by-default" name="wp_hypothesis_options[highlights-on-by-default]" value="1" '.checked( isset($this->options["highlights-on-by-default"]) ? $this->options["highlights-on-by-default"]: null, 1, false ).'/>', 
    254             isset( $this->options['highlights-on-by-default'] ) ? esc_attr( $this->options['highlights-on-by-default']) : 0 
    255         ); 
    256     } 
    257  
    258     public function sidebar_open_by_default_callback() 
    259     { 
    260         printf( 
    261             '<input type="checkbox" id="sidebar-open-by-default" name="wp_hypothesis_options[sidebar-open-by-default]" value="1" '.checked( isset($this->options["sidebar-open-by-default"]) ? $this->options["sidebar-open-by-default"]: null, 1, false ).'/>', 
    262             isset( $this->options['sidebar-open-by-default'] ) ? esc_attr( $this->options['sidebar-open-by-default']) : 0 
    263         ); 
    264     } 
    265  
    266     public function serve_pdfs_with_via_default_callback() 
    267     { 
    268         printf( 
    269             '<input type="checkbox" id="serve-pdfs-with-via" name="wp_hypothesis_options[serve-pdfs-with-via]" value="1" '.checked( isset($this->options["serve-pdfs-with-via"]) ? $this->options["serve-pdfs-with-via"]: null, 1, false ).'/>', 
    270             isset( $this->options['serve-pdfs-with-via'] ) ? esc_attr( $this->options['serve-pdfs-with-via']) : 0 
    271         ); 
    272     } 
    273  
    274     /** 
    275      * CONTENT SETTINGS Callbacks 
    276      * These get the settings option array for a setting and print one of its values. 
    277      * They are used to determine what pages Hypothesis is loaded on. 
    278      */ 
    279     public function allow_on_blog_page_callback() 
    280     { 
    281         printf( 
    282             '<input type="checkbox" id="allow-on-blog-page" name="wp_hypothesis_options[allow-on-blog-page]" value="1" '.checked( isset($this->options["allow-on-blog-page"]) ? $this->options["allow-on-blog-page"]: null, 1, false ).'/>', 
    283             isset( $this->options['allow-on-blog-page'] ) ? esc_attr( $this->options['allow-on-blog-page']) : 0 
    284         ); 
    285     } 
    286  
    287     public function allow_on_front_page_callback() 
    288     { 
    289         printf( 
    290             '<input type="checkbox" id="allow-on-front-page" name="wp_hypothesis_options[allow-on-front-page]" value="1"  
    291             '.checked( isset($this->options["allow-on-front-page"]) ? $this->options["allow-on-front-page"]: null, 1, false ).' />', 
    292             isset( $this->options['allow-on-front-page'] ) ? esc_attr( $this->options['allow-on-front-page']) : 0 
    293         ); 
    294     } 
    295  
    296     public function allow_on_posts_callback() 
    297     { 
    298         printf( 
    299             '<input type="checkbox" id="allow-on-posts" name="wp_hypothesis_options[allow-on-posts]" value="1"  
    300             '.checked( isset($this->options["allow-on-posts"]) ? $this->options["allow-on-posts"]: null, 1, false ).' />', 
    301             isset( $this->options['allow-on-posts'] ) ? esc_attr( $this->options['allow-on-posts']) : 0 
    302         ); 
    303     } 
    304  
    305     public function allow_on_pages_callback() 
    306     { 
    307         printf( 
    308             '<input type="checkbox" id="allow-on-pages" name="wp_hypothesis_options[allow-on-pages]" value="1"  
    309             '.checked( isset($this->options["allow-on-pages"]) ? $this->options["allow-on-pages"]: null, 1, false ).' />', 
    310             isset( $this->options['allow-on-pages'] ) ? esc_attr( $this->options['allow-on-pages']) : 0 
    311         ); 
    312     } 
    313  
    314     public function page_ids_show_h_callback() 
    315     { 
    316         printf( 
    317             '<input type="text" id="page_ids_show_h" name="wp_hypothesis_options[page_ids_show_h]" value="%s" />', 
    318             isset( $this->options['page_ids_show_h'] ) ? esc_attr( implode(',', $this->options['page_ids_show_h'])) : '' 
    319         ); 
    320     } 
    321  
    322     public function post_ids_show_h_callback() 
    323     { 
    324         printf( 
    325             '<input type="text" id="post_ids_show_h" name="wp_hypothesis_options[post_ids_show_h]" value="%s" />', 
    326             isset( $this->options['post_ids_show_h'] ) ? esc_attr( implode(',', $this->options['post_ids_show_h'])) : '' 
    327         ); 
    328     } 
    329  
    330     public function post_ids_override_callback() 
    331     { 
    332         printf( 
    333             '<input type="text" id="post_ids_override" name="wp_hypothesis_options[post_ids_override]" value="%s" />', 
    334             isset( $this->options['post_ids_override'] ) ? esc_attr( implode(',', $this->options['post_ids_override'])) : '' 
    335         ); 
    336     } 
    337  
    338     public function page_ids_override_callback() 
    339     { 
    340         printf( 
    341             '<input type="text" id="page_ids_override" name="wp_hypothesis_options[page_ids_override]" value="%s" />', 
    342             isset( $this->options['page_ids_override'] ) ? esc_attr( implode(',',$this->options['page_ids_override'])) : '' 
     277    public function content_section_info() { 
     278        print 'Control where Hypothesis is loaded.'; 
     279    } 
     280 
     281    /** 
     282     * Callback for 'highlights-on-by-default'. 
     283     */ 
     284    public function highlights_on_by_default_callback() { 
     285        $val = isset( $this->options['highlights-on-by-default'] ) ? esc_attr( $this->options['highlights-on-by-default'] ) : 0; 
     286 
     287        printf( 
     288            '<input type="checkbox" id="highlights-on-by-default" name="wp_hypothesis_options[highlights-on-by-default]" value="1" %s/>', 
     289            checked( $val, 1, false ) 
     290        ); 
     291    } 
     292 
     293    /** 
     294     * Callback for 'sidebar-open-by-default'. 
     295     */ 
     296    public function sidebar_open_by_default_callback() { 
     297        $val = isset( $this->options['sidebar-open-by-default'] ) ? esc_attr( $this->options['sidebar-open-by-default'] ) : 0; 
     298        printf( 
     299            '<input type="checkbox" id="sidebar-open-by-default" name="wp_hypothesis_options[sidebar-open-by-default]" value="1" %s/>', 
     300            checked( $val, 1, false ) 
     301        ); 
     302    } 
     303 
     304    /** 
     305     * Callback for 'serve-pdfs-with-via'. 
     306     */ 
     307    public function serve_pdfs_with_via_default_callback() { 
     308        $val = isset( $this->options['serve-pdfs-with-via'] ) ? esc_attr( $this->options['serve-pdfs-with-via'] ) : 0; 
     309        printf( 
     310            '<input type="checkbox" id="serve-pdfs-with-via" name="wp_hypothesis_options[serve-pdfs-with-via]" value="1" %s/>', 
     311            checked( $val, 1, false ) 
     312        ); 
     313    } 
     314 
     315    /** 
     316     * Callback for 'allow_on_blog_page'. 
     317     */ 
     318    public function allow_on_blog_page_callback() { 
     319        $val = isset( $this->options['allow-on-blog-page'] ) ? esc_attr( $this->options['allow-on-blog-page'] ) : 0; 
     320        printf( 
     321            '<input type="checkbox" id="allow-on-blog-page" name="wp_hypothesis_options[allow-on-blog-page]" value="1" %s/>', 
     322            checked( $val, 1, false ) 
     323        ); 
     324    } 
     325 
     326    /** 
     327     * Callback for 'allow-on-front-page'. 
     328     */ 
     329    public function allow_on_front_page_callback() { 
     330        $val = isset( $this->options['allow-on-front-page'] ) ? esc_attr( $this->options['allow-on-front-page'] ) : 0; 
     331        printf( 
     332            '<input type="checkbox" id="allow-on-front-page" name="wp_hypothesis_options[allow-on-front-page]" value="1" %s/>', 
     333            checked( $val, 1, false ) 
     334        ); 
     335    } 
     336 
     337    /** 
     338     * Callback for 'allow-on-<posttype>'. 
     339     */ 
     340    public function allow_on_posttype_callback( $args ) { 
     341        $slug = $args[0]; 
     342        $val = isset( $this->options[ "allow-on-$slug" ] ) ? esc_attr( $this->options[ "allow-on-$slug" ] ) : 0; 
     343 
     344        printf( 
     345            '<input type="checkbox" id="allow-on-%s" name="wp_hypothesis_options[allow-on-%s]" value="1" %s/>', 
     346            esc_attr( $slug ), 
     347            esc_attr( $slug ), 
     348            checked( $val, 1, false ) 
     349        ); 
     350    } 
     351 
     352    /** 
     353     * Callback for '<posttype>_ids_show_h'. 
     354     * 
     355     * @param array $args An arry containing the post type slug and the post type name (plural). 
     356     */ 
     357    public function posttype_ids_show_h_callback( $args ) { 
     358        $slug = $args[0]; 
     359        $val = isset( $this->options[ $slug . '_ids_show_h' ] ) ? esc_attr( implode( ',', $this->options[ $slug . '_ids_show_h' ] ) ) : ''; 
     360 
     361        printf( 
     362            '<input type="text" id="%s_ids_show_h" name="wp_hypothesis_options[%s_ids_show_h]" value="%s" />', 
     363            esc_attr( $slug ), 
     364            esc_attr( $slug ), 
     365            esc_attr( $val ) 
     366        ); 
     367    } 
     368 
     369    /** 
     370     * Callback for '<posttype>_ids_override'. 
     371     * 
     372     * @param array $args An arry containing the post type slug and the post type name (plural). 
     373     */ 
     374    public function posttype_ids_override_callback( $args ) { 
     375        $slug = $args[0]; 
     376        $val = isset( $this->options[ $slug . '_ids_override' ] ) ? esc_attr( implode( ',', $this->options[ $slug . '_ids_override' ] ) ) : ''; 
     377 
     378        printf( 
     379            '<input type="text" id="%s_ids_override" name="wp_hypothesis_options[%s_ids_override]" value="%s" />', 
     380            esc_attr( $slug ), 
     381            esc_attr( $slug ), 
     382            esc_attr( $val ) 
    343383        ); 
    344384    } 
    345385} 
    346386 
    347 if( is_admin() ) 
     387if ( is_admin() ) { 
    348388    $hypothesis_settings_page = new HypothesisSettingsPage(); 
    349  
     389} 
    350390 
    351391/** 
    352392 * Add Hypothesis based on conditions set in the plugin settings. 
    353393 */ 
    354 add_action('wp', 'add_hypothesis'); 
    355  
    356 function add_hypothesis($param) { 
     394add_action( 'wp', 'add_hypothesis' ); 
     395 
     396/** 
     397 * Wrapper for the primary Hypothesis wp_enqueue call. 
     398 */ 
     399function enqueue_hypothesis() { 
     400    wp_enqueue_script( 'hypothesis', 'https://hypothes.is/embed.js', array(), false, true ); 
     401} 
     402 
     403/** 
     404 * Add Hypothesis script(s) to front end. 
     405 */ 
     406function add_hypothesis() { 
    357407    $options = get_option( 'wp_hypothesis_options' ); 
    358  
    359     // Set defaults if we $options is not set yet. 
    360     if (empty($options)): 
     408    $posttypes = HypothesisSettingsPage::get_posttypes(); 
     409 
     410        // Set defaults if we $options is not set yet. 
     411    if ( empty( $options ) ) : 
    361412        $defaults = array( 
    362          'highlights-on-by-default' => 1, 
     413            'highlights-on-by-default' => 1, 
    363414        ); 
    364415        add_option( 'wp_hypothesis_options', $defaults ); 
    365416    endif; 
    366417 
    367     // otherwise highlighting is on by default 
     418    // Otherwise highlighting is on by default. 
    368419    wp_enqueue_script( 'nohighlights', '/wp-content/plugins/hypothesis/js/nohighlights.js', '', false, true ); 
    369420 
    370  
    371     // Embed options 
    372     if (isset($options['highlights-on-by-default'])): 
     421        // Embed options. 
     422    if ( isset( $options['highlights-on-by-default'] ) ) : 
    373423        wp_enqueue_script( 'showhighlights', '/wp-content/plugins/hypothesis/js/showhighlights.js', '', false, true ); 
    374424    endif; 
    375425 
    376     if (isset($options['sidebar-open-by-default'])): 
     426    if ( isset( $options['sidebar-open-by-default'] ) ) : 
    377427        wp_enqueue_script( 'sidebaropen', '/wp-content/plugins/hypothesis/js/sidebaropen.js', '', false, true ); 
    378428    endif; 
    379429 
    380     if (isset($options['serve-pdfs-with-via'])): 
     430    if ( isset( $options['serve-pdfs-with-via'] ) ) : 
    381431        wp_enqueue_script( 'pdfs-with-via', '/wp-content/plugins/hypothesis/js/via-pdf.js', '', false, true ); 
    382432    endif; 
    383433 
    384  
    385     // Content settings 
    386     if (isset($options['allow-on-blog-page']) && is_home()): 
    387         wp_enqueue_script( 'hypothesis', '//hypothes.is/embed.js', '', false, true ); 
    388  
    389     elseif (isset($options['allow-on-front-page']) && is_front_page()): 
    390         wp_enqueue_script( 'hypothesis', '//hypothes.is/embed.js', '', false, true ); 
    391  
    392     elseif (isset($options['post_ids_show_h']) && is_single($options['post_ids_show_h'])): 
    393         wp_enqueue_script( 'hypothesis', '//hypothes.is/embed.js', '', false, true ); 
    394  
    395     elseif (isset($options['page_ids_show_h']) && is_page($options['page_ids_show_h'])): 
    396         wp_enqueue_script( 'hypothesis', '//hypothes.is/embed.js', '', false, true ); 
    397  
    398     elseif (isset($options['allow-on-posts']) && is_single()): 
    399         if (isset($options['post_ids_override']) && is_single($options['post_ids_override'])); 
    400         else 
    401             wp_enqueue_script( 'hypothesis', '//hypothes.is/embed.js', '', false, true ); 
    402  
    403     elseif (isset($options['allow-on-pages']) && is_page() && !is_front_page() && !is_home()): 
    404         if (isset($options['page_ids_override']) && is_page($options['page_ids_override'])); 
    405         else 
    406             wp_enqueue_script( 'hypothesis', '//hypothes.is/embed.js', '', false, true ); 
    407     endif; 
     434    // Content settings. 
     435    $enqueue = false; 
     436 
     437    if ( is_front_page() && isset( $options['allow-on-front-page'] ) ) { 
     438        enqueue_hypothesis(); 
     439    } elseif ( is_home() && isset( $options['allow-on-blog-page'] ) ) { 
     440        enqueue_hypothesis(); 
     441    } 
     442 
     443    foreach ( $posttypes as $slug => $name ) { 
     444        if ( 'page' !== $slug ) { 
     445            $posttype = $slug; 
     446            if ( 'post' === $slug ) { 
     447                $slug = 'posts'; // Backwards compatibility. 
     448            } 
     449            if ( isset( $options[ "allow-on-$slug" ] ) && is_singular( $posttype ) ) { // Check if Hypothesis is allowed on this post type. 
     450                if ( isset( $options[ $posttype . '_ids_override' ] ) && ! is_single( $options[ $posttype . '_ids_override' ] ) ) { // Make sure this post isn't in the override list if it exists. 
     451                    enqueue_hypothesis(); 
     452                } 
     453            } elseif ( ! isset( $options[ "allow-on-$slug" ] ) && isset( $options[ $posttype . '_ids_show_h' ] ) && is_single( $options[ $posttype . '_ids_show_h' ] ) ) { // Check if Hypothesis is allowed on this specific post. 
     454                enqueue_hypothesis(); 
     455            } 
     456        } elseif ( 'page' === $slug ) { 
     457            if ( isset( $options['allow-on-pages'] ) && is_page() && ! is_front_page() && ! is_home() ) { // Check if Hypothesis is allowed on pages (and that we aren't on a special page). 
     458                if ( isset( $options['page_ids_override'] ) && ! is_page( $options['page_ids_override'] ) ) { // Make sure this page isn't in the override list if it exists. 
     459                    enqueue_hypothesis(); 
     460                } 
     461            } elseif ( ! isset( $options['allow-on-pages'] ) && isset( $options['page_ids_show_h'] ) && is_page( $options['page_ids_show_h'] ) ) { // Check if Hypothesis is allowed on this specific page. 
     462                enqueue_hypothesis(); 
     463            } 
     464        } 
     465    } 
    408466} 
    409  
    410 ?> 
  • hypothesis/trunk/js/sidebaropen.js

    r1431925 r1527063  
    55    return { 
    66      showHighlights: true, 
    7       firstRun: true 
     7      openSidebar: true 
    88    } 
    99  } 
     
    1111  window.hypothesisConfig = function () { 
    1212    return { 
    13       firstRun: true 
     13      openSidebar: true 
    1414    } 
    1515  } 
  • hypothesis/trunk/readme.txt

    r1431925 r1527063  
    11=== Plugin Name === 
    2 Contributors: timmmmyboy, BigBlueHat, jakehartnell 
     2Contributors: timmmmyboy, BigBlueHat, JakeHartnell 
    33Tags: hypothesis, annotation, comments 
    44Requires at least: 3.0.1 
    55Tested up to: 4.3 
    6 Stable tag: 0.4.7 
     6Stable tag: 0.4.5 
    77License: BSD 
    88License URI: http://opensource.org/licenses/BSD-2-Clause 
Note: See TracChangeset for help on using the changeset viewer.