WordPress.org

Plugin Directory

Changeset 645917


Ignore:
Timestamp:
12/29/12 22:22:10 (16 months ago)
Author:
joedolson
Message:

Update to version 1.3.0

Location:
content-progress/trunk
Files:
19 added
3 edited

Legend:

Unmodified
Added
Removed
  • content-progress/trunk/content-progress.php

    r576775 r645917  
    44Plugin URI: http://www.joedolson.com/articles/content-progress/ 
    55Description: Adds a column to each post/page or custom post type indicating whether content has been added to the page. 
    6 Version: 1.2.3 
     6Version: 1.3.0 
    77Author: Joseph Dolson 
    88Author URI: http://www.joedolson.com/ 
     
    2626// Prepend the new column to the columns array 
    2727global $cp_version; 
    28 $cp_version = '1.2.3'; 
    29  
    30 load_plugin_textdomain( 'content-progress', false, dirname( plugin_basename( __FILE__ ) ) ); 
    31  
     28$cp_version = '1.3.0'; 
     29load_plugin_textdomain( 'content-progress', false, dirname( plugin_basename( __FILE__ ) . '/lang' ) ); 
     30cp_check_version(); 
     31 
     32function cp_check_version() { 
     33    global $cp_version; 
     34    $prev_version = ( get_option( 'cp_version' ) )?get_option( 'cp_version' ):'1.2.3'; 
     35    if ( version_compare( $prev_version,$cp_version,"<" ) ) { 
     36        cp_activate(); 
     37    } else { 
     38        return; 
     39    } 
     40} 
     41 
     42function cp_activate() { 
     43    global $cp_version; 
     44    add_option( 'cp_statuses',  
     45        array(  
     46        'incomplete'=> array( 'description'=>'Manually marked incomplete','icon'=>plugins_url( 'images/incomplete.png', __FILE__ ),'label'=>'Incomplete' ), 
     47        'complete'=>array(  'description'=>'Manually marked complete', 'icon'=>plugins_url( 'images/complete.png', __FILE__ ),'label'=>'Complete' ), 
     48        'review'=>array(  'description'=>'Needs editorial review', 'icon'=>plugins_url( 'images/review.png', __FILE__ ),'label'=>'Needs Review' )  
     49        ) 
     50    ); 
     51    update_option( 'cp_version', $cp_version ); 
     52} 
    3253 
    3354function cp_column($cols) { 
     
    4162    if ($column_name == 'cp') { 
    4263        $post = get_post($id); 
    43         $marked = get_post_meta($id,'_cp_incomplete',true); 
     64        $marked = ( get_post_meta($id,'_cp_incomplete',true) )?get_post_meta($id,'_cp_incomplete',true):'default'; 
    4465        $content = $post->post_content; 
     66        $statuses = get_option( 'cp_statuses' ); 
    4567        if ( $content == '' && $marked=='default' ) { 
    4668            echo "<img src='".plugins_url( 'images/empty.png', __FILE__ )."' alt='".__('Document is empty','content-progress')."' class='$marked' title='".__('Document is empty','content-progress')."' />"; 
    4769        } else if ( strlen($content) < 60 && $marked=='default' ) { 
    4870            echo "<img src='".plugins_url( 'images/partial.png', __FILE__ )."' alt='".__('Document has less than 60 characters of content.','content-progress')."' class='$marked' title='".__('Document has less than 60 characters of content.','content-progress')."' />";    
    49         } else if ( $marked == 'true' ) { 
    50             echo "<img src='".plugins_url( 'images/incomplete.png', __FILE__ )."' alt='".__('Manually marked incomplete.','content-progress')."' class='$marked' title='".__('Manually marked incomplete.','content-progress')."' />"; 
    51         } else if ( $marked == 'complete' ) { 
    52             echo "<img src='".plugins_url( 'images/complete.png', __FILE__ )."' alt='".__('Manually marked complete.','content-progress')."' class='$marked' title='".__('Manually marked complete.','content-progress')."' />"; 
    53         } else if ( $marked == 'review' ) { 
    54             echo "<img src='".plugins_url( 'images/review.png', __FILE__ )."' alt='".__('Needs Editorial Review.','content-progress')."' class='$marked' title='".__('Needs Editorial Review.','content-progress')."' />"; 
    55         }        
     71        } else { 
     72            foreach ( $statuses as $key => $value ) { 
     73                $marked = ( $marked == 'true' )?'incomplete':$marked; // old data correction. 
     74                if ( $marked == $key ) { 
     75                    echo "<img src='$value[icon]' alt='$value[description]' class='$marked cp_status' title='$value[description]' />"; 
     76                } 
     77            } 
     78        } 
    5679    } 
    5780    if ($column_name == 'cp_notes') { 
     
    106129 
    107130function cp_list_empty_pages( $post_type, $group ) { 
     131    $return = ''; 
    108132    if ( is_user_logged_in() ) { 
    109     $posts = get_posts( array( 'post_type'=>$post_type,'numberposts'=>-1,'orderby'=>'title' ) );  
     133    $posts = get_posts( array( 'post_type'=>$post_type,'numberposts'=>-1,'orderby'=>'title', 'meta_key'=>'_cp_incomplete', 'meta_value'=>$group ) );  
    110134        foreach ( $posts as $post ) { 
    111             switch ($group) { 
    112                 case 'empty': 
    113                 if ( $post->post_content == '' && get_post_meta($post->ID,'_cp_incomplete',true ) != 'complete' ) { 
    114                     $return .= "<li><a href='".esc_url(get_permalink( $post->ID ))."'>$post->post_title</a></li>"; 
    115                 } 
    116                 break; 
    117                 case 'incomplete': 
    118                 if ( strlen($post->post_content) < 60 && get_post_meta($post->ID,'_cp_incomplete',true ) != 'complete' ) { 
    119                     $return .= "<li><a href='".esc_url(get_permalink( $post->ID ))."'>$post->post_title</a></li>"; 
    120                 }                
    121                 break; 
    122                 case 'partial': 
    123                 if ( get_post_meta($post->ID,'_cp_incomplete',true ) == 'true' ) { 
    124                     $return .= "<li><a href='".esc_url(get_permalink( $post->ID ))."'>$post->post_title</a></li>"; 
    125                 }                
    126                 break; 
    127                 case 'review': 
    128                 if ( get_post_meta($post->ID,'_cp_incomplete',true ) == 'review' ) { 
    129                     $return .= "<li><a href='".esc_url(get_permalink( $post->ID ))."'>$post->post_title</a></li>"; 
    130                 }                
    131                 break;               
    132             } 
     135            $return .= "<li><a href='".esc_url(get_permalink( $post->ID ))."'>$post->post_title</a></li>"; 
    133136        } 
    134137        $group_string = ucfirst($group); 
    135     return "<h2>$group_string pages:</h2> <ul>".$return."</ul>"; 
     138    if ( $return == '' ) { return; } 
     139    return "<div class='cp_$group'><h2>$group_string pages:</h2> <ul>".$return."</ul></div>"; 
    136140    } 
    137141} 
    138142 
    139143//Shortcodes:  [empty], [partial], and [incomplete] 
     144function content_progress($atts) { 
     145    extract(shortcode_atts(array( 
     146                'post_type' => 'page', 
     147                'status' => '' 
     148            ), $atts)); 
     149     
     150    return (!$status)?'Status not specified':cp_list_empty_pages($post_type, $status); 
     151} 
     152add_shortcode('list','content_progress'); 
     153 
    140154function list_empty($atts) { 
    141155    extract(shortcode_atts(array( 
     
    143157                'group' => 'empty' 
    144158            ), $atts)); 
    145     return cp_list_empty_pages($type, $group); 
     159    return cp_list_empty_pages($post_type, $group); 
    146160} 
    147161add_shortcode('empty','list_empty'); 
     
    152166                'group' => 'partial' 
    153167            ), $atts)); 
    154     return cp_list_empty_pages($type, $group); 
     168    return cp_list_empty_pages($post_type, $group); 
    155169} 
    156170add_shortcode('partial','list_partial'); 
     
    161175                'group' => 'incomplete' 
    162176            ), $atts)); 
    163     return cp_list_empty_pages($type, $group); 
     177    return cp_list_empty_pages($post_type, $group); 
    164178} 
    165179add_shortcode('incomplete','list_incomplete'); 
     
    178192function cp_quickedit_show( $col, $type ) { 
    179193    $settings = get_option( 'cp_settings' ); 
     194    $statuses = get_option( 'cp_statuses' ); 
    180195    if ( !$settings || in_array( $type, $settings ) ) { 
    181196        if ( $col == 'cp' ) { 
    182197            $label = 'Flag'; 
    183198            $name = '_cp_incomplete'; 
    184             $field = "<select name='$name' id='$name'> 
    185                         <option value='review'>Needs Review</option> 
    186                         <option value='true'>Mark as incomplete</option> 
    187                         <option value='complete'>Mark as complete</option> 
     199            $field = "<select name='$name' id='$name'>"; 
     200                    foreach ( $statuses as $key => $value ) { 
     201                        $field .= "<option value='$key'>$value[2]</option>"; 
     202                    } 
     203            $field .= " 
    188204                        <option value='default'>Default</option> 
    189205                    </select>"; 
     
    253269    $cp = get_post_meta($post_id, '_cp_incomplete',true ); 
    254270    $notes = get_post_meta($post_id, '_cp_notes',true ); 
    255     if ( $cp == 'true' ) { $tchecked = ' checked="checked"'; } else { $tchecked = ''; } 
    256     if ( $cp == 'complete' ) { $cchecked = ' checked="checked"'; } else { $cchecked = ''; } 
    257     if ( $cp == 'review' ) { $rchecked = ' checked="checked"'; } else { $rchecked = ''; }    
    258271    if ( $cp == 'default' || !$cp ) { $dchecked = ' checked="checked"'; } else { $dchecked = ''; } 
    259272    echo "<ul>"; 
    260     echo "<li><input type='radio' name='_cp_incomplete' value='true' id='_cp_incomplete'$tchecked /> <label for='_cp_incomplete'>".__('Mark as incomplete','content-progress')."</label></li>"; 
    261     echo "<li><input type='radio' name='_cp_incomplete' value='complete' id='_cp_incomplete'$cchecked /> <label for='_cp_incomplete'>".__('Mark as complete','content-progress')."</label></li>"; 
    262     echo "<li><input type='radio' name='_cp_incomplete' value='review' id='_cp_incomplete'$rchecked /> <label for='_cp_incomplete'>".__('Mark as "Needs Review"','content-progress')."</label></li>";    
    263     echo "<li><input type='radio' name='_cp_incomplete' value='default' id='_cp_incomplete'$dchecked /> <label for='_cp_incomplete'>".__('Default','content-progress')."</label></li>"; 
     273    $statuses = get_option( 'cp_statuses' ); 
     274    foreach ( $statuses as $key => $value ) { 
     275        $checked = ( $cp == $key || $key == 'incomplete' && $cp == 'true' )?' checked="checked"':''; 
     276        echo "<li><input type='radio' name='_cp_incomplete' value='$key' id='_cp_incomplete_$key'$checked /> <label for='_cp_incomplete_$key'>".stripslashes($value['label'])."</label></li>"; 
     277    }        
     278    echo "<li><input type='radio' name='_cp_incomplete' value='default' id='_cp_incomplete_default'$dchecked /> <label for='_cp_incomplete_default'>".__('Default','content-progress')."</label></li>"; 
    264279    echo "</ul>"; 
    265280    echo "<p><label for='_cp_notes'>".__('Notes:','content-progress')."</label><br /><textarea name='_cp_notes' id='_cp_notes'>$notes</textarea></p>"; 
     
    275290    $wp_version = get_bloginfo('version'); 
    276291    $home_url = home_url(); 
    277     $wp_url = get_bloginfo('wpurl'); 
     292    $wp_url = site_url(); 
    278293    $language = get_bloginfo('language'); 
    279294    $charset = get_bloginfo('charset'); 
     
    394409        update_option( 'cp_settings', $settings ); 
    395410    } 
     411    cp_build_statuses(); 
    396412    $settings = get_option( 'cp_settings' ); 
    397413    $post_types = get_post_types( array('public'=>true), 'objects' ); 
    398414    $cp_post_types = $settings; 
     415    if ( !is_array( $cp_post_types ) ) { $cp_post_types = array(); } 
    399416    $my_post_types = ''; 
    400417        foreach( $post_types as $type ) { 
    401             if ( in_array(  $type->name , $cp_post_types ) || empty($cp_post_types) ) { $selected = ' selected="selected"'; } else { $selected = ''; } 
     418            if ( in_array( $type->name , $cp_post_types ) || empty($cp_post_types) ) { $selected = ' selected="selected"'; } else { $selected = ''; } 
    402419            $my_post_types .= "<option value='$type->name'$selected>$type->name</option>"; 
    403         }                
    404  
    405      
     420        } 
    406421    echo " 
    407422    <form method='post' action='".admin_url('options-general.php?page=content-progress/content-progress.php')."'> 
     
    411426        <label for='post_types'>".__('Enabled for these post types:','content-progress')."</label><br /> 
    412427        <select multiple='multiple' name='cp_post_types[]' id='post_types'> 
    413         $my_post_types; 
     428        $my_post_types 
    414429        </select> 
    415         </p> 
    416         <p> 
     430        </p>"; 
     431        echo cp_setup_statuses(); 
     432        echo "<p> 
    417433        <input type='submit' value='".__('Update Settings','content-progress')."' name='cp_settings' class='button-primary' /> 
    418434        </p> 
     
    421437} 
    422438 
     439 
     440function cp_setup_statuses() { 
     441    $statuses = get_option('cp_statuses'); 
     442        $return = " 
     443        <h4>".__('Customize Statuses','content-progress')."</h4> 
     444        <table class='widefat fixed'> 
     445        <thead><tr><th scope='col'>Status label</th><th scope='col'>Description</th><th scope='col'>Icon URL</th><th scope='col'>Delete Status</th></tr></thead> 
     446        <tbody>"; 
     447    if ( is_array( $statuses ) ) { 
     448        foreach ( $statuses as $key=>$value ) { 
     449            $return .= " 
     450        <tr> 
     451            <td>".stripslashes($value['label'])."</td> 
     452            <td>$value[description]</td>             
     453            <td><img src='$value[icon]' alt='' /></td>           
     454            <td><label for='cp_status_delete_$key'>Delete Status</label> <input type='checkbox' id='cp_status_delete_$key' name='cp_status_delete[]' value='$key' /></td> 
     455        </tr>"; 
     456        } 
     457    } 
     458    $return .= " 
     459        <tr> 
     460            <td><label for='cp_status_label'>Status label</label> <input type='text' id='cp_status_label' name='cp_statuses[label]' value='' /></td> 
     461            <td><label for='cp_status_desc'>Description </label> <input type='text' id='cp_status_desc' name='cp_statuses[description]' value='' /></td>             
     462            <td><label for='cp_status_icon'>Icon URL</label> <input type='text' id='cp_status_icon' name='cp_statuses[icon]' value='' /></td>            
     463            <td></td> 
     464        </tr> 
     465        </tbody></table>"; 
     466    return $return; 
     467} 
     468 
     469function cp_dirlist($directory) { 
     470    // create an array to hold directory list 
     471    $results = array(); 
     472    // create a handler for the directory 
     473    $handler = opendir($directory); 
     474    // keep going until all files in directory have been read 
     475    while ($file = readdir($handler)) { 
     476        // if $file isn't this directory or its parent,  
     477        // add it to the results array 
     478        if ( filesize( $directory.'/'.$file ) > 11 ) { 
     479            if ( $file != '.' && $file != '..' && !is_dir($directory.'/'.$file) && ( 
     480            exif_imagetype($directory.'/'.$file) == IMAGETYPE_GIF ||  
     481            exif_imagetype($directory.'/'.$file) == IMAGETYPE_PNG ||   
     482            exif_imagetype($directory.'/'.$file) == IMAGETYPE_JPEG ) ) { 
     483                $results[] = $file; 
     484            } 
     485        } 
     486    } 
     487    // tidy up: close the handler 
     488    closedir($handler); 
     489    // done! 
     490    sort($results,SORT_STRING); 
     491    return $results; 
     492} 
     493 
     494function cp_build_statuses() { 
     495    $statuses = get_option('cp_statuses'); 
     496        if ( isset($_POST['cp_status_delete']) ) { 
     497            foreach( $_POST['cp_status_delete'] as $value ) { 
     498                unset($statuses[$value]); 
     499            } 
     500        }    
     501    if ( isset($_POST['cp_statuses']) && $_POST['cp_statuses']['label'] != '' ) { 
     502            $status = $_POST['cp_statuses']; 
     503            $new_status = array( 'description'=>$status['description'],'icon'=>$status['icon'],'label'=>$status['label'] ); 
     504            $statuses[ sanitize_title($status['label']) ] = $new_status; 
     505    } 
     506    update_option( 'cp_statuses', $statuses ); 
     507} 
     508 
    423509function cp_support_page() { 
    424510?> 
    425 <div class="wrap"> 
    426 <div class="cp-settings" id="poststuff"> 
     511<div class="wrap" id="content-progress"> 
     512<h2><?php _e('Content Progress','content-progress'); ?></h2> 
     513<div id="wpt_settings_page" class="postbox-container" style="width: 70%"> 
     514<div class='metabox-holder'> 
     515 
     516<div class="cp-settings meta-box-sortables"> 
    427517<div class="postbox" id="settings"> 
    428518<h3><?php _e('Content Progress Settings','content-progress'); ?></h3> 
    429519<div class="inside"> 
    430 <?php cp_show_support_box(); ?> 
    431520 
    432521<?php cp_settings(); ?> 
    433522 
    434 <h4><?php _e('Icon guide:','content-progress'); ?></h4> 
     523<h4><?php _e('Default icon guide:','content-progress'); ?></h4> 
    435524<ul class="icon-guide"> 
    436525<?php  
    437     echo "<li><img src='".plugins_url( 'images/empty.png', __FILE__ )."' alt='".__('Document is empty','content-progress')."' />".__('Document is empty','content-progress')."</li> 
    438     <li><img src='".plugins_url( 'images/partial.png', __FILE__ )."' alt='".__('Document has less than 60 characters of content.','content-progress')."' />".__('Document has less than 60 characters of content.','content-progress')."</li> 
    439     <li><img src='".plugins_url( 'images/incomplete.png', __FILE__ )."' alt='".__('Manually marked incomplete.','content-progress')."' />".__('Manually marked incomplete.','content-progress')."</li> 
    440     <li><img src='".plugins_url( 'images/complete.png', __FILE__ )."' alt='".__('Manually marked complete.','content-progress')."' />".__('Manually marked complete.','content-progress')."</li> 
    441     <li><img src='".plugins_url( 'images/review.png', __FILE__ )."' alt='".__('Needs Editorial Review.','content-progress')."' />".__('Needs Editorial Review.','content-progress')."</li>"; 
     526    echo "<li><img src='".plugins_url( 'images/empty.png', __FILE__ )."' alt='".__('Document is empty','content-progress')."' /> ".__('Document is empty','content-progress')."</li> 
     527    <li><img src='".plugins_url( 'images/partial.png', __FILE__ )."' alt='".__('Document has less than 60 characters of content.','content-progress')."' /> ".__('Document has less than 60 characters of content.','content-progress')."</li> 
     528    <li><img src='".plugins_url( 'images/incomplete.png', __FILE__ )."' alt='".__('Manually marked incomplete.','content-progress')."' /> ".__('Manually marked incomplete.','content-progress')."</li> 
     529    <li><img src='".plugins_url( 'images/complete.png', __FILE__ )."' alt='".__('Manually marked complete.','content-progress')."' /> ".__('Manually marked complete.','content-progress')."</li> 
     530    <li><img src='".plugins_url( 'images/review.png', __FILE__ )."' alt='".__('Needs Editorial Review.','content-progress')."' /> ".__('Needs Editorial Review.','content-progress')."</li>"; 
    442531?> 
    443532</ul> 
    444 </div> 
    445 </div> 
    446 </div> 
    447 <div class="cp-support" id="poststuff"> 
     533<h4><?php _e('Additional included icons','content-progress'); ?></h4> 
     534<p> 
     535<?php _e('You can use any URL to reference an icon of your choice; these are included for your convenience.','content-progress'); ?> 
     536</p> 
     537<?php  
     538$icons = cp_dirlist( dirname(__FILE__).'/images/' );  
     539$defaults = array( 'complete.png','empty.png','incomplete.png','partial.png','review.png' ); 
     540$icons = array_diff( $icons, $defaults ); 
     541echo '<ul class="icon-guide">'; 
     542foreach( $icons as $value ) { 
     543    echo "<li><img src='".plugins_url( "images/$value", __FILE__ )."' alt='$value' /> <strong>URL:</strong> <code>".plugins_url( "images/$value", __FILE__ ). "</code></li>"; 
     544} 
     545echo '</ul>'; 
     546?> 
     547</div> 
     548</div> 
     549</div> 
     550<div class="cp-support meta-box-sortables"> 
    448551<div class="postbox" id="get-support"> 
    449552<h3><?php _e('Get Plug-in Support','content-progress'); ?></h3> 
    450553<div class="inside"> 
     554<?php cp_get_support_form(); ?> 
     555</div> 
     556</div> 
     557</div> 
     558</div> 
     559</div> 
    451560<?php cp_show_support_box(); ?> 
    452  
    453 <?php cp_get_support_form(); ?> 
    454 </div> 
    455 </div> 
    456 </div> 
    457 </div> 
     561</div> 
     562 
    458563<?php 
    459564} 
     
    461566function cp_show_support_box() { 
    462567?> 
    463 <div id="support"> 
    464     <div class="resources"> 
    465     <ul> 
    466         <li><strong><a href="http://www.joedolson.com/donate.php" rel="external"><?php _e("Make a Donation",'content-progress'); ?></a></strong></li> 
    467         <li><form action="https://www.paypal.com/cgi-bin/webscr" method="post"> 
    468             <div> 
    469             <input type="hidden" name="cmd" value="_s-xclick" /> 
    470             <input type="hidden" name="hosted_button_id" value="86NC6DRYKH5DS" /> 
    471             <input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif" name="submit" alt="Make a gift to support Content Progress!" /> 
    472             <img alt="" src="https://www.paypalobjects.com/WEBSCR-640-20110429-1/en_US/i/scr/pixel.gif" width="1" height="1" /> 
    473             </div> 
    474         </form> 
    475         </li> 
    476         <li><a href="http://profiles.wordpress.org/users/joedolson/"><?php _e('Check out my other plug-ins','content-progress'); ?></a></li> 
    477         <li><a href="http://wordpress.org/extend/plugins/content-progress/"><?php _e('Rate this plug-in','content-progress'); ?></a></li>        
    478     </ul> 
     568<div class="postbox-container" style="width:20%"> 
     569<div class="metabox-holder"> 
     570    <div class="meta-box-sortables"> 
     571        <div class="postbox"> 
     572        <h3><?php _e('Support this Plug-in','content-progress'); ?></h3> 
     573        <div id="support" class="inside resources"> 
     574        <ul> 
     575            <li><p> 
     576                <a href="https://twitter.com/intent/tweet?screen_name=joedolson&text=Content%20Progress" class="twitter-mention-button" data-size="large" data-related="joedolson">Tweet to @joedolson</a> 
     577                <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script> 
     578                </p> 
     579            </li> 
     580            <li><p><?php _e('<a href="http://www.joedolson.com/donate.php">Make a donation today!</a> Every donation counts - donate $2, $10, or $100 and help me keep this plug-in running!','content-progress'); ?></p> 
     581                <form action="https://www.paypal.com/cgi-bin/webscr" method="post"> 
     582                    <div> 
     583                    <input type="hidden" name="cmd" value="_s-xclick" /> 
     584                    <input type="hidden" name="hosted_button_id" value="8490399" /> 
     585                    <input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donate_LG.gif" name="submit" alt="Donate" /> 
     586                    <img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1" /> 
     587                    </div> 
     588                </form> 
     589            </li> 
     590            <li><a href="http://profiles.wordpress.org/users/joedolson/"><?php _e('Check out my other plug-ins','content-progress'); ?></a></li> 
     591            <li><a href="http://wordpress.org/extend/plugins/content-progress/"><?php _e('Rate this plug-in','content-progress'); ?></a></li>        
     592        </ul> 
     593        </div> 
     594        </div> 
    479595    </div> 
     596</div> 
    480597</div> 
    481598<?php 
  • content-progress/trunk/cp-styles.css

    r504601 r645917  
    1 #support { background:#fff; padding: 15px; border-radius: 10px; float: right; } 
     1#content-progress .postbox { margin: 10px 10px 0 0; } 
     2#content-progress .meta-box-sortables { min-height: 0; } 
    23.icon-guide img { vertical-align: bottom; position: relative; top: 5px;} 
    3 .icon-guide li { margin: 0; } 
     4.icon-guide li { margin: 0 0 5px; } 
  • content-progress/trunk/readme.txt

    r576775 r645917  
    22Contributors: joedolson 
    33Donate link: http://www.joedolson.com/donate.php 
    4 Tags: page, post, admin, developer, tools, progress, content, editorial, review, overview 
     4Tags: page, post, admin, developer, tools, progress, content, editorial, review, overview, workflow 
    55Requires at least: 3.2.1 
    6 Tested up to: 3.4.1 
     6Tested up to: 3.5.0 
    77Stable tag: trunk 
    88 
    9 Mark your WordPress posts and Pages as completed, partial, needing review. Add notes documenting what needs to be done. 
     9Manage your work flow: mark WordPress posts and Pages as completed, partial, needing review. Add notes documenting editorial needs. 
    1010 
    1111== Description == 
    1212 
    13 Content Progress adds icons to your content listings (Posts, Pages, and custom post types) showing whether the document is complete. While the plug-in has no way to know whether the page has been completely laid out, etc., it can tell whether there is actually content on the page. If there isn't, that document will be flagged as empty. If there's only a small quantity of content on the page, that document will be flagged as partial.  
     13Content Progress is a plug-in to help manage your content editing work flow. It adds icons to your content listings (Posts, Pages, and custom post types) to indicate the current needs for that post.  
    1414 
    1515The plug-in auto-detects empty posts or documents with very small amounts of content; but also allows you to flag documents specifically. 
    1616 
    17 You can flag any document as incomplete or needing review, regardless of the content in that page.  
     17You can flag any document as incomplete or needing review, or create custom content flags suitable to your needs, such as "Needs Research", "Add Media" or "Needs Scheduling". 
    1818 
    1919To help communication between groups (or remembering where you are for large sites!), you can also add notes to each post. 
    2020 
    21 This simply provides a quick and efficient way to scan over which documents in your web site are finished, since it is frequently the case in my own development that I add all new pages (for the purpose of building menus and navigation) before actually filling those pages with content. 
     21This simple work flow plug-in provides a quick way to scan over which documents in your web site are finished, since it is frequently the case in my own development that I add all new pages (for the purpose of building menus and navigation) before actually filling those pages with content. 
    2222 
    2323There are also four shortcodes available for generating front-facing lists of pages: [empty], [partial], [incomplete], and [needs_review] which will produce appropriate unordered lists of documents. Each shortcode accepts an argument for the post type: e.g. [empty type='post'] 
    2424 
     25With the addition of custom statuses available in version 1.3.0, a fifth shortcode [list status=''] is available to produce a list of items with a custom status. 
     26 
    2527Translating my plug-ins is always appreciated. Visit <a href="http://translate.joedolson.com">my translations site</a> to start getting your language into shape! 
    2628 
     29Languages available (in order of completeness): 
     30Irish 
     31 
     32Translator Credits (in no particular order)*: 
     33[Ale Gonzalez](http://60rpm.tv/i), [Outshine Solutions](http://outshinesolutions.com), [Jakob Smith](http://www.omkalfatring.dk/), [globus2008](http://wordpress.org/support/profile/globus2008), Frederic Escallier, Luud Heck, Wim Strijbos, [Daisuke Abe](http://www.alter-ego.jp/), [Alex](http://blog.sotvoril.ru/), Mehmet Ko&ccedil;ali, Uwe Jonas, Florian Edelmann, Efva Nyberg, [Sabir Musta](http://mustaphasabir.altervista.org), Massimo Sgobino, Leonardo Kfoury, Alexandre Carvalho, Amir Khalilnejad, [Aurelio De Rosa](http://www.audero.it/), Bayram Dede, Dani Locasati, Dario Nunez, Dirk Ginader, Evren Erten, Fl&aacute;vio Pereira, Francois-Xavier Benard, [Gianni Diurno](http://www.gidibao.net), Giksi, Heinz Ochsner,  Kazuyuki Kumai, Liam Boogar, Maks, Mano, Massimo Sgobino, Mohsen Aghaei, Oscar, [Rashid Niamat](http://niamatmediagroup.nl/), Stefan Wikstrom, Thomas Meyer, Vedar Ozdemir, [Vikas Arora](http://www.wiznicworld.com), [Miriam de Paula](http://wpmidia.com.br), [HostUCan](http://www.hostucan.com), [Alex Alexandrov](http://www.webhostingrating.com), [Alyona Lompar](http://www.webhostinggeeks.com), [David Gil P&eacute;rez](http://www.sohelet.com), [Burkov Boris](http://chernobog.ru), [Raivo Ratsep](http://raivoratsep.com), [Jibo](http://jibo.ro), [Rasmus Himmelstrup](http://seoanalyst.dk), [kndb](http://blog.layer8.sh/) 
     34 
     35 
     36 
    2737== Changelog == 
     38 
     39= 1.3.0 = 
     40 
     41* Added ability to create custom status labels. 
     42* Added icon library 
     43* Bug fix: posts without set values did not display with default settings. 
     44* Revised description. 
     45* Added Irish translation. 
    2846 
    2947= 1.2.3 = 
     
    82100== Upgrade Notice == 
    83101 
    84 * 1.2.3: Minor bug fix to quick edit script; bug fix. 
     102* 1.3.0: Custom statuses, custom icons, Irish translation. 
Note: See TracChangeset for help on using the changeset viewer.