WordPress.org

Plugin Directory

Changeset 635980


Ignore:
Timestamp:
12/09/12 00:09:43 (17 months ago)
Author:
jeffsebring
Message:

Bug fixes, code cleanup, Github readme added

Location:
gisted/trunk
Files:
2 edited
1 copied

Legend:

Unmodified
Added
Removed
  • gisted/trunk/README.md

    r530823 r635980  
    1 === Gisted === 
    2 Contributors: jeffsebring 
    3 Tags: code, shortcodes, github, development 
    4 Requires at least: 3.3.1 
    5 Tested up to: 3.4 
    6 Stable tag: 0.1.1 
     1Gisted 
     2==== 
    73 
    8 == Description == 
     4* Contributors: jeffsebring 
     5* Tags: code, shortcodes, github, development 
     6* Requires at least: 3.3.1 
     7* Tested up to: 3.5 
     8* Stable tag: 0.1.2 
     9 
     10Description 
     11---------------- 
    912 
    1013Use shortcodes to print Github Gists as HTML, with optional meta data. 
    1114 
    12 = Info = 
     15Info 
     16----- 
    1317 
    1418[Gisted Plugin Home](http://jeffsebring.com/wordpress/plugins/gisted) 
    1519 
    16 == Installation == 
     20Installation 
     21--------------- 
    1722 
    18231. Upload and activate Gisted. 
     
    2530    [gisted repo="2273600" header="true" file="gisted.php"] 
    2631 
    27 = 0.1 = 
     32Changes 
     33----------- 
     34 
     35###0.1 
    2836 
    2937Gisted is Born! 
    3038 
    31 = 0.1.1 = 
     39###0.1.1 
    3240 
    3341html cleanup 
     42 
     43###0.1.2 
     44 
     45Bug fixes, objects to arrays 
  • gisted/trunk/gisted.php

    r530823 r635980  
    55Description: Print your Github Gists as HTML on your WordPress blog 
    66Author: Jeff Sebring 
    7 Version: 0.1.1 
     7Version: 0.1.2 
    88Author URI: http://jeffsebring.com/ 
    99 
     
    2828if ( ! class_exists( 'rGisted' ) )  : 
    2929 
    30 class rGisted  { 
    31  
    32    public function shortcode( $atts ) 
    33    { 
    34  
    35       extract( shortcode_atts( array( 
    36          'repo' => null, 
    37          'file' => false, 
    38          'header' => false, 
    39       ), $atts ) ); 
    40  
    41       return self::_html( $repo, $file, $header ); 
    42  
    43    } 
    44  
    45    public function css() 
    46    { 
    47  
    48       wp_enqueue_style( 'gisted', plugins_url( 'css/gisted.css', __FILE__ ) ); 
    49  
    50    } 
    51  
    52    public function parser() 
    53    { 
    54  
    55       wp_enqueue_script( 'json2' ); 
    56  
    57    } 
    58  
    59    private function _gist( $repo ) 
    60    { 
    61  
    62       if ( ! $repo ) 
    63          return; 
    64  
    65       $clean      = ( object ) null; 
    66       $transient  = 'render_gisted_' . $repo; 
    67       $clean      = get_transient( $transient ); 
    68  
    69       if ( ! $clean ) : 
    70  
    71          add_action( 'wp_print_scripts', 'rGisted::parser' ); 
    72  
    73          $raw  = wp_remote_get( 'https://api.github.com/gists/' . $repo ); 
    74          $raw  = json_decode( maybe_unserialize( $raw[ 'body' ] ) ); 
    75  
    76          if ( isset( $raw->description ) ) 
    77             $clean->description        = esc_attr( $raw->description ); 
    78  
    79          if ( isset( $raw->html_url ) ) 
    80             $clean->html_url           = esc_attr( $raw->html_url ); 
    81  
    82          if ( isset( $raw->user->login ) ) 
    83             $clean->user->login        = esc_attr( $raw->user->login ); 
    84  
    85          if ( isset( $raw->user->avatar_url ) ) 
    86             $clean->user->avatar_url   = esc_attr( $raw->user->avatar_url ); 
    87  
    88          if ( ! empty( $file ) && isset( $raw->files->$file ) ) 
    89             $clean->files->$file = esc_attr( $raw->files->$file );  
    90  
    91          if ( ! empty( $raw->files ) ) 
    92             foreach ( $raw->files as $file => $data ) 
    93                $clean->files->$file->content = esc_html( $data->content ); 
    94  
    95          set_transient( $transient, $clean, 60 * 60 * 24 ); 
    96  
    97       endif; 
    98  
    99       return $clean; 
    100  
    101    } 
    102  
    103    private function _html( $repo = null, $file = null, $header = null ) 
    104    { 
    105  
    106       if ( ! $repo ) 
    107          return; 
    108  
    109       $gist = self::_gist( $repo );  
    110  
    111       if ( empty( $gist->files ) ) 
    112          return; 
    113  
    114       ob_start(); ?> 
    115  
    116       <div class="gisted"> 
    117  
    118          <?php if ( $header == true )  : ?> 
    119  
    120          <header class="gist-header"> 
    121  
    122             <div class="gist-info"> 
    123  
    124                <h4><?php echo $gist->description; ?></h4> 
    125  
    126                <span class="gist-link">by  
    127                   <a target="_blank" class="gist-author-link" href="http://github.com/<?php echo $gist->user->login; ?>"> 
    128                      <?php echo $gist->user->login; ?> 
    129                   </a> 
    130                </span> 
    131  
    132                <span class="gist-link">Fork it on  
    133                   <a target="_blank" href="<?php echo $gist->html_url; ?>">    
    134                      Github 
    135                   </a> 
    136                </span> 
    137  
    138  
    139             </div> 
    140  
    141             <img class="gist-author-avatar" src="<?php echo $gist->user->avatar_url; ?>" /> 
    142  
    143          </header> 
    144  
    145          <?php endif; ?> 
    146  
    147          <section class="gist-files"> 
    148          <?php if ( $file )   : 
    149  
    150                if ( empty( $gist->files->$file ) ) 
    151                   return; 
    152  
    153                   $data = $gist->files->$file; ?> 
    154  
    155                <span class="gisted-file" id="<?php echo $file; ?>"> 
    156                   <h5><?php echo $gist->description; ?></h5> &rArr;  
    157                   <a target="_blank" href="<?php echo $gist->html_url . '#' . $file; ?>"> 
    158                      <?php echo $file; ?> 
    159                   </a> 
    160                </span> 
    161  
    162             <pre class="gisted-file-contents"><?php echo $data->content; ?></pre> 
    163  
    164             <?php else  : 
    165  
    166             if ( ! empty( $gist->files ) )   : 
    167  
    168                foreach ( $gist->files as $file => $data )  : ?> 
    169  
    170                   <span class="gisted-file" id="<?php echo $file; ?>"> 
    171                      <h5><?php echo $gist->description; ?></h5> &rArr;  
    172                      <a target="_blank" href="<?php echo $gist->html_url . '#' . $file; ?>"> 
    173                         <?php echo $file; ?> 
    174                      </a> 
    175                   </span> 
    176  
    177                <pre class="gisted-file-contents"><?php echo $data->content; ?></pre> 
    178  
    179                <?php endforeach; 
    180  
    181             endif; 
    182  
    183          endif; ?> 
    184  
    185          </section> 
    186  
    187       </div> 
    188  
    189       <?php return ob_get_clean(); 
    190  
    191    } 
     30class rGisted 
     31{ 
     32 
     33    private $raw = null; 
     34    private $clean = null; 
     35 
     36    public function __construct() 
     37    { 
     38 
     39        add_action( 'wp_enqueue_scripts', array( $this, 'css' ) ); 
     40        add_shortcode( 'gisted', array( $this, 'shortcode' ) ); 
     41 
     42    } 
     43 
     44    public function shortcode( $atts ) 
     45    { 
     46 
     47        extract( shortcode_atts( array( 
     48            'repo' => null, 
     49            'file' => false, 
     50            'file_info' => false, 
     51            'header' => false, 
     52        ), $atts ) ); 
     53 
     54        return $this->_html( $repo, $file, $file_info, $header ); 
     55 
     56    } 
     57 
     58    public function css() 
     59    { 
     60 
     61        wp_enqueue_style( 'gisted', plugins_url( 'css/gisted.css', __FILE__ ) ); 
     62 
     63    } 
     64 
     65    public function parser() 
     66    { 
     67 
     68        wp_enqueue_script( 'json2' ); 
     69 
     70    } 
     71 
     72    private function _gist( $repo ) 
     73    { 
     74 
     75        if ( ! $repo ) 
     76        return; 
     77 
     78        $transient = 'gisted_repo_' . $repo; 
     79        $this->clean = get_transient( $transient ); 
     80 
     81        if ( ! $this->clean ) : 
     82 
     83            add_action( 'wp_print_scripts', array( $this, 'parser' ) ); 
     84 
     85            $this->raw  = wp_remote_get( 'https://api.github.com/gists/' . $repo ); 
     86            $this->raw  = json_decode( maybe_unserialize( $this->raw[ 'body' ] ) ); 
     87 
     88            if ( isset( $this->raw->description ) ) 
     89                $this->clean[ 'description' ] = esc_attr( $this->raw->description ); 
     90 
     91            if ( isset( $this->raw->html_url ) ) 
     92                $this->clean[ 'html_url' ] = esc_attr( $this->raw->html_url ); 
     93 
     94            if ( isset( $this->raw->user->login ) ) 
     95                $this->clean[ 'user' ][ 'login' ] = esc_attr( $this->raw->user->login ); 
     96 
     97            if ( isset( $this->raw->user->avatar_url ) ) 
     98                $this->clean[ 'user' ][ 'avatar_url' ] = esc_attr( $this->raw->user->avatar_url ); 
     99 
     100            if ( ! empty( $file ) && isset( $this->raw->files->$file ) ) 
     101                $this->clean[ 'files' ][ 'file' ] = esc_attr( $this->raw->files->$file );  
     102 
     103            if ( ! empty( $this->raw->files ) ) 
     104                foreach ( $this->raw->files as $file => $data ) 
     105                    $this->clean[ 'files' ][ $file ][ 'content' ] = esc_html( $data->content ); 
     106 
     107            set_transient( $transient, $this->clean, 60 * 5 ); 
     108 
     109        endif; 
     110 
     111        return $this->clean; 
     112 
     113    } 
     114 
     115    private function _html( $repo = null, $file = null, $file_info = false, $header = null ) 
     116    { 
     117 
     118        if ( ! $repo ) return; 
     119 
     120        $gist = $this->_gist( $repo );  
     121 
     122        if ( empty( $gist[ 'files' ] ) ) return; 
     123 
     124         
     125        $out = '<div class="gisted">'; 
     126 
     127        if ( $header == true )  : 
     128 
     129            $out .= '<header class="gist-header">' . PHP_EOL; 
     130            $out .= '<div class="gist-info">' . PHP_EOL; 
     131            $out .= '<h4>' . $gist[ 'description' ] . '</h4>' . PHP_EOL; 
     132            $out .= '<span class="gist-link">by ' . PHP_EOL; 
     133            $out .= '<a target="_blank" class="gist-author-link" href="http://github.com/' . $gist[ 'user' ][ 'login' ] . '">' . PHP_EOL; 
     134            $out .= $gist[ 'user' ][ 'login' ]; 
     135            $out .= '</a>' . PHP_EOL; 
     136            $out .= '</span>' . PHP_EOL; 
     137            $out .= '<span class="gist-link">Fork it on ' . PHP_EOL; 
     138            $out .= '<a target="_blank" href="' . $gist[ 'html_url' ] . '">' . PHP_EOL; 
     139            $out .= 'Github' . PHP_EOL; 
     140            $out .= '</a>' . PHP_EOL; 
     141            $out .= '</span>' . PHP_EOL; 
     142            $out .= '</div>' . PHP_EOL; 
     143            $out .= '<img class="gist-author-avatar" src="' . $gist[ 'user' ][ 'avatar_url' ] . '" />' . PHP_EOL; 
     144            $out .= '</header>' . PHP_EOL; 
     145 
     146        endif; 
     147 
     148        $out .= '<section class="gist-files">' . PHP_EOL; 
     149 
     150        if ( $file )   : 
     151 
     152        if ( empty( $gist[ 'files' ][ $file ] ) ) return; 
     153 
     154            $data = $gist[ 'files' ][ $file ];  
     155 
     156            if ( $file_info )   : 
     157 
     158                $out .= '<span class="gisted-file" id="' . $file . '">' . PHP_EOL; 
     159                $out .= '<h5>' .  $gist[ 'description' ] . '</h5> &rArr;' . PHP_EOL;  
     160                $out .= '<a target="_blank" href="' . $gist[ 'html_url' ] . '#' . $file . '">' . PHP_EOL;  
     161                $out .= $file; 
     162                $out .= '</a>' . PHP_EOL;  
     163                $out .= '</span>' . PHP_EOL; 
     164 
     165            endif; 
     166 
     167            $out .= '<pre class="gisted-file-contents">' . $data[ 'content' ] . '</pre>' . PHP_EOL; 
     168 
     169            else  : 
     170 
     171            if ( ! empty( $gist[ 'files' ] ) )   : 
     172 
     173                foreach ( $gist[ 'files' ] as $file => $data )  : 
     174 
     175                    $out .= '<span class="gisted-file" id="' . $file . '">' . PHP_EOL; 
     176                    $out .= '<h5>' . $gist[ 'description' ] . '</h5> &rArr;' . PHP_EOL; 
     177                    $out .= '<a target="_blank" href="' . $gist[ 'html_url' ] . '#' . $file . '">' . PHP_EOL; 
     178                    $out .= $file . PHP_EOL; 
     179                    $out .= '</a>' . PHP_EOL; 
     180                    $out .= '</span>' . PHP_EOL; 
     181                    $out .= '<pre class="gisted-file-contents">' . $data[ 'content' ] . '</pre>' . PHP_EOL; 
     182 
     183                endforeach; 
     184 
     185            endif; 
     186 
     187        endif; 
     188 
     189        $out .= '</section>' . PHP_EOL; 
     190        $out .= '</div>' . PHP_EOL; 
     191         
     192        return $out; 
     193 
     194    } 
    192195 
    193196} 
    194197 
    195 add_action( 'wp_enqueue_scripts', 'rGisted::css' ); 
    196  
    197 add_shortcode( 'gisted', 'rGisted::shortcode' ); 
     198new rGisted; 
    198199 
    199200endif; 
  • gisted/trunk/readme.txt

    r530823 r635980  
    44Requires at least: 3.3.1 
    55Tested up to: 3.4 
    6 Stable tag: 0.1.1 
     6Stable tag: 0.1.2 
    77 
    88== Description == 
     
    3232 
    3333html cleanup 
     34 
     35= 0.1.2 = 
     36 
     37Bug fixes, objects to arrays 
Note: See TracChangeset for help on using the changeset viewer.