WordPress.org

Plugin Directory

Changeset 579587


Ignore:
Timestamp:
07/31/12 06:05:31 (21 months ago)
Author:
c3mdigital
Message:

Updating Trunk

Location:
media-tools/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • media-tools/trunk/README.md

    r578339 r579587  
    22========================= 
    33 
     4=== Media Tools  === 
     5Contributors: c3mdigital 
     6Tags: media, media library, images, featured images, post thumbnails, timthumb 
     7Requires at least: 3.1 
     8Tested up to: 3.4.1 
     9Stable tag: 1.0 
     10Donate link: http://www.redcross.org/ 
     11License: GPLv2 or later 
     12License URI: http://www.gnu.org/licenses/gpl-2.0.html 
     13 
     14A set of tools to help manage your media library. Imports external images and attaches them to your posts, pages or custom post types. 
     15 
    416### A set of tools to help manage your media library.   
    517 
    6 Big improvements are coming to the WordPress media library in 3.5.  If your not using the media library this plugin will 
    7 import all the external images found in your posts or pages and import them into the media library and attach them. 
     18== Description == 
    819 
    9 This plugin will help you recover from your Timthumb addiction.  If you have been using Timthumb now is the time to come clean.   
     20Big improvements are coming to the WordPress media library in 3.5. If your not using the media library this plugin will import all the external images found in your posts or pages and import them into the media library and attach them. 
     21 
     22This plugin will help you convert from using Timthumb to WordPress built in featured image / post thumbnail support 
    1023 
    1124 
     
    2235 
    2336Ajax interface that converts the images with one simple click. 
     37 
     38== Changelog == 
     39 
     40= 1.0 = 
     41 
     42* Initial version added to WordPress.org 
     43 
     44= 1.0.1 = 
     45 
     46* Added WordPress and PHP version check on activation hook 
  • media-tools/trunk/js/media.tools.ajax.js

    r578339 r579587  
    11/** 
    2  * Created with JetBrains PhpStorm. 
    3  * User: chris 
    4  * Date: 7/24/12 
    5  * Time: 8:25 PM 
    6  * To change this template use File | Settings | File Templates. 
     2 * Media Tools Admin Ajax Handler 
     3 * @author Chris Olbekson 
     4 * 
     5 * @package Media Tools WordPress plugin 
     6 * @subpackage javascript 
     7 * 
     8 * @version 1.0.1 
     9 * 
    710 */ 
    811 
     
    1215    $(function() { 
    1316 
    14         $("form#export-filters").submit(function() { 
    15             $("form#export-filters").hide(); 
    16             $("#convert-title").replaceWith( "<h3 id='converting'>Converting Images</h3>" ); 
     17        var form = $('#export-filters'); 
     18        var filters = form.find('.export-filters'); 
     19        filters.hide(); 
     20        form.find('input:radio').change(function () { 
     21            filters.slideUp('fast'); 
     22            switch ($(this).val()) { 
     23                case 'post': 
     24                    $('#post-filters').slideDown(); 
     25                    break; 
     26                case 'page': 
     27                    $('#page-filters').slideDown(); 
     28                    break; 
     29            } 
     30        }); 
     31 
     32        $.fn.serializeObject = function() { 
     33            var o = {}; 
     34            var a = this.serializeArray(); 
     35            $.each(a, function() { 
     36                if (o[this.name] !== undefined ) { 
     37 
     38                if(!o[this.name].push) { 
     39                    o[this.name] = [o[this.name]]; 
     40                } 
     41                o[this.name].push(this.value || ''); 
     42            } else { 
     43                o[this.name] = this.value || ''; 
     44            } 
     45            }); 
     46        return o; 
     47 
     48        }; 
     49 
     50            form.submit(function(e) { 
     51            form.hide(); 
     52            $("#convert-title").replaceWith( "<h3 id='converting'>Running......Please be patient. This could take a while.</h3>" ); 
    1753            $("#ajax-spinner").show(); 
    18             var obj  = $(this).serializeArray(); 
     54            var obj  = form.serializeObject(e); 
    1955                $.ajax({ 
    2056                    type: "POST", 
     
    2965                        $("#converting").replaceWith("<h3>Results</h3>"); 
    3066                        $("#ajax-spinner").hide(); 
     67                    }, 
     68 
     69                    error: function() { 
     70                        return false; 
    3171                    } 
    3272 
     
    3575        }); 
    3676 
    37         $("select#choose-tool").change(function() { 
     77        $("select#choose-tool").change(function(e) { 
    3878               var tool = ''; 
    39             $("select#choose-tool option:selected").each(function() { 
     79            $("select#choose-tool option:selected").each(function(e) { 
    4080                 tool += $(this).text(); 
    4181            }); 
  • media-tools/trunk/media-tools.php

    r578339 r579587  
    44 * Plugin URI: https://github.com/c3mdigital/media-tools-for-WordPress 
    55 * Description: Tools for working with the WordPress media library and converting images to attachments and featured images 
    6  * Version: 1.0 
     6 * Version: 1.0.1 
    77 * Author: Chris Olbekson 
    88 * Author URI: http://c3mdigital.com 
    99 * License: GPL v2 
    10  *  
     10 * 
    1111 */ 
    1212 
     
    2626    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
    2727*/ 
    28   
    29  $c3m_media_tools = new C3M_Media_Tools(); 
     28 
     29$c3m_media_tools = new C3M_Media_Tools(); 
     30register_activation_hook( __FILE__, array( $c3m_media_tools, 'activate' ) ); 
    3031 
    3132 class C3M_Media_Tools { 
     
    4748    } 
    4849 
     50     /** 
     51      * Plugin Activation hook function to check for Minimum PHP and WordPress versions 
     52      * @param string $wp Minimum version of WordPress required for this plugin 
     53      * @param string $php Minimum version of PHP required for this plugin 
     54      */ 
     55     function activate( $wp = '3.1', $php = '5.2.4' ) { 
     56        global $wp_version; 
     57        if ( version_compare( PHP_VERSION, $php, '<' ) ) 
     58            $flag = 'PHP'; 
     59        elseif 
     60            ( version_compare( $wp_version, $wp, '<' ) ) 
     61            $flag = 'WordPress'; 
     62        else 
     63            return; 
     64        $version = 'PHP' == $flag ? $php : $wp; 
     65        deactivate_plugins( basename( __FILE__ ) ); 
     66        wp_die('<p>The <strong>Media Tools</strong> plugin requires'.$flag.'  version '.$version.' or greater.</p>','Plugin Activation Error',  array( 'response'=>200, 'back_link'=>TRUE ) ); 
     67    } 
     68 
    4969    function actions() { 
    5070        add_action( 'admin_menu', array ( $this, 'admin_menu' ) ); 
    5171        add_action( 'init', array( $this, 'load_settings' ) ); 
    52         add_action( 'admin_head', array ( $this, 'home_tab_js' ) ); 
    5372        add_action( 'admin_enqueue_scripts', array ( $this, 'media_tools_js' ) ); 
    5473        add_action( 'wp_ajax_convert-featured', array ( $this, 'ajax_handler' ) ); 
     
    124143 
    125144            $url = current_user_can( 'install_plugins' ) ? wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=regenerate-thumbnails' ), 'install-plugin_regenerate-thumbnails' ) : 'http://wordpress.org/extend/plugins/regenerate-thumbnails/'; 
    126             _e( '<a href="'.esc_url( $url ).'"> class="button-secondary>Install Regenerate Thumbnails</a>' ); 
     145            _e( '<a href="'.esc_url( $url ).'" class="button-secondary">Install Regenerate Thumbnails</a>' ); 
    127146        } 
    128147 
     
    143162            <?php foreach( $_wp_additional_image_sizes as $size => $props ) { 
    144163                $crop = true == $props['crop'] ? 'Hard Crop' : 'Soft Crop'; 
    145                 _e( '<li><h3>'     .$size.'</h3>' ); 
    146                 _e( 'Width: '  .$props['width'].'<br>' ); 
    147                 _e( 'Height: ' .$props['height'].'<br>' ); 
    148                 _e( 'Crop: '   .$crop.'<br>' ); 
     164                _e( '<li><h3>'.$size.'</h3>' ); 
     165                _e( 'Width: '.$props['width'].'<br>' ); 
     166                _e( 'Height: '.$props['height'].'<br>' ); 
     167                _e( 'Crop: '  .$crop.'<br>' ); 
    149168                _e( '</li>' ); 
    150169        } 
     
    169188        $tab = isset( $_GET['tab'] ) ? $_GET['tab'] : $this->media_tools_key; ?> 
    170189        <div class="wrap"> 
    171             <?php  $this->menu_tabs( $tab ); 
     190            <?php    $this->menu_tabs( $tab ); 
    172191 
    173192            switch ( $tab ) : 
    174193                case $this->media_tools_key : 
    175                     $this->home_tab(); 
     194                     $this->home_tab(); 
    176195                break; 
    177196                case $this->media_settings_key : 
    178                     $this->options_tab( $tab ); 
     197                     $this->options_tab( $tab ); 
    179198                break; 
    180199            endswitch; ?> 
     
    186205    function menu_tabs() { 
    187206        $current_tab = isset( $_GET['tab'] ) ? $_GET['tab'] : $this->media_tools_key; 
    188         echo '<div id="icon-options-general" class="icon32"><br></div>'; 
     207        echo  '<div id="icon-options-general" class="icon32"><br></div>'; 
    189208        echo  '<h2 class="nav-tab-wrapper">'; 
    190209 
     
    197216 
    198217    } 
    199  
    200  
    201     function home_tab_js() { 
    202         ?> 
    203         <script type="text/javascript"> 
    204             //<![CDATA[ 
    205             jQuery(document).ready(function ($) { 
    206             var form = $('#export-filters'), 
    207             filters = form.find('.export-filters'); 
    208             filters.hide(); 
    209             form.find('input:radio').change(function () { 
    210             filters.slideUp('fast'); 
    211                 switch ($(this).val()) { 
    212                 case 'posts': 
    213                 $('#post-filters').slideDown(); 
    214                 break; 
    215                 case 'pages': 
    216                 $('#page-filters').slideDown(); 
    217                 break; 
    218                 } 
    219             }); }); 
    220             //]]> 
    221         </script> 
    222  
    223 <?php } 
    224218 
    225219     function home_tab() { 
     
    262256                <p class="description"><?php _e( 'This will convert the first image from  all of your posts, pages, custom posts.' ); ?></p> 
    263257 
    264                 <p><label><input type="radio" name="content" value="posts"/> <?php _e( 'Posts' ); ?></label></p> 
     258                <p><label><input type="radio" name="content" value="post"/> <?php _e( 'Posts' ); ?></label></p> 
    265259                    <ul id="post-filters" class="export-filters"> 
    266260                        <li><label><?php _e( 'Categories:' ); ?></label><?php wp_dropdown_categories( array ( 'show_option_all' => __( 'All' ) ) ); ?></li> 
     
    289283                    </ul> 
    290284 
    291                 <p><label><input type="radio" name="content" value="pages"/> <?php _e( 'Pages' ); ?></label></p> 
     285                <p><label><input type="radio" name="content" value="page"/> <?php _e( 'Pages' ); ?></label></p> 
    292286                    <ul id="page-filters" class="export-filters"> 
    293287                        <li><label><?php _e( 'Authors:' ); ?></label><?php 
     
    332326 
    333327        /** @var object $data The  serialized form object */ 
    334         $data = $_POST['args']; 
    335  
    336         if ( ! isset( $data[1]['content'] ) || 'all' == $data[1]['content'] ) { 
    337             $args['content'] = 'all'; 
    338         } 
    339         else if ( 'posts' == $data[1]['content'] ) { 
    340             $args['content'] = 'post'; 
    341  
    342             if ( $data[2]['cat'] ) 
    343                 $args['category'] = (int)$data[2]['cat']; 
    344  
    345             if ( $data[3]['post_author'] ) 
    346                 $args['author'] = (int)$data[3]['post_author']; 
    347  
    348             if ( $data[4]['post_start_date'] || $data[5]['post_end_date'] ) { 
    349                 $args['start_date'] = $data[4]['post_start_date']; 
    350                 $args['end_date'] = $data[5]['post_end_date']; 
    351             } 
    352  
    353             if ( $data[6]['post_status'] ) 
    354                 $args['status'] = $data[6]['post_status']; 
    355         } 
    356         else if ( 'pages' == $data[1]['content'] ) { 
    357             $args['content'] = 'page'; 
    358  
    359             if ( $data[7]['page_author'] ) 
    360                 $args['author'] = (int)$data[7]['page_author']; 
    361  
    362             if ( $data[8]['page_start_date'] || $data[9]['page_end_date'] ) { 
    363                 $args['start_date'] = $data[8]['page_start_date']; 
    364                 $args['end_date'] = $data[9]['page_end_date']; 
    365             } 
    366  
    367             if ( $data[10]['page_status'] ) 
    368                 $args['status'] = $data[10]['page_status']; 
    369         } 
    370         else { 
    371             $args['content'] = $data[1]['content']; 
    372         } 
    373         $response = array(); 
     328        $data = isset( $_POST['args'] ) ? $_POST['args'] : array(); 
     329 
     330        if ( empty( $data ) ) 
     331            return new WP_Error( 'Error processing the form. Please try again' ); 
     332 
     333        $args = array_slice( $data, 1 ); 
     334 
     335        if ( 'post' == $args['content'] ) { 
     336            if ( $args['cat'] ) 
     337                $args['category'] = (int)$args['cat']; 
     338 
     339            if ( $args['post_author'] ) 
     340                $args['author'] = (int) $args['post_author']; 
     341 
     342            if ( $args['post_start_date'] || $args['post_end_date'] ) { 
     343                $args['start_date'] = $args['post_start_date']; 
     344                $args['end_date'] = $args['post_end_date']; 
     345            } 
     346 
     347            if ( $args['post_status'] ) 
     348                $args['status'] = $args['post_status']; 
     349        } elseif ( 'page' == $args['content'] ) { 
     350            if ( $args['page_author'] ) 
     351                $args['author'] = $args['page_author']; 
     352 
     353            if ( $args['page_start_date'] || $args['page_end_date'] ) { 
     354                $args['start_date'] = $args['page_start_date']; 
     355                $args['end_date'] = $args['page_end_date']; 
     356            } 
     357 
     358            if ( $args['page_status'] ) 
     359                $args['status'] = $args['page_status']; 
     360        } 
     361 
     362        $response = ''; 
     363        echo 'Getting content selected<br>'; 
    374364        $ids = $this->query( $args ); 
     365        $count = count( $ids ); 
     366        echo $count.' Posts found....'; 
    375367 
    376368        /** @var $i @param array $ids The array of post ids returned from the query  */ 
    377369        for ( $i = 0; $i < count( $ids ); $i ++ ) { 
    378370            $post = get_post( $ids[ $i ] ); 
    379  
    380             if ( in_array( 'import-media', $data[0] ) ) { 
    381                  $this->extract_multi( $post ); 
     371            echo  '<h3>Results for <a href="' . esc_url( admin_url( 'post.php?post=' . $post->ID . '&action=edit' ) ) . '">'.get_the_title( $post->ID ) . '</a></h3>'; 
     372 
     373            if ( 'import-media' == $data['choose-tool'] ) { 
     374                    echo  'Running import media tool<br>'; 
     375                    echo  $this->extract_multi( $post ); 
    382376                    continue; 
    383             } 
    384  
    385             if ( in_array( 'convert-import', $data[0] ) ) 
    386                  $this->extract_multi( $post ); 
    387  
     377 
     378            } elseif ( 'convert-import' == $data['choose-tool'] ) { 
     379                 echo  'Running import and set featured image tool<br>'; 
     380                 echo  $this->extract_multi( $post ); 
     381 
     382            } 
    388383            /** If the post already has an attached thumbnail continue with the loop  */ 
    389             if ( has_post_thumbnail( $post->ID ) ) 
     384            if ( has_post_thumbnail( $post->ID ) ) { 
     385                echo 'Featured image already set <br>'; 
    390386                continue; 
    391  
     387            } 
    392388            /** @var $attachments array of attached images to the post */ 
    393389 
     
    396392            if ( ! $attachments ) { 
    397393                $img = $this->extract_image( $post ); 
    398                 if( empty( $img ) ) 
     394                if( empty( $img ) ) { 
     395                    echo 'No images found <br>'; 
    399396                    continue; 
     397                } 
     398 
    400399                /** @var $file string or WP_Error of image attached to the post  */ 
    401400                $file = media_sideload_image( $img, (int)$post->ID ); 
    402  
    403                 if ( ! is_wp_error( $file ) ) { 
     401                    if ( is_wp_error( $file ) ) { 
     402                        echo '<span style="color:red">Upload Error: Could not upload image. Check for malformed img src url</span><br>'; 
     403 
     404                    } else { 
     405 
    404406                    $atts = $this->get_attach( $post->ID ); 
    405407                    foreach ( $atts as $a ) { 
    406408 
    407                         /** @var $img bool attaches image as the post thumbnail  */ 
    408  
    409409                        $img = set_post_thumbnail( $post->ID, $a['ID'] ); 
    410                         if ( $img ) 
    411                             $response .= $post->post_title . ' featured image set' . "\n"; 
     410                        if ( $img ) { 
     411                            $thumb = wp_get_attachment_thumb_url( $a['ID'] ); 
     412                            echo '<img src="'.esc_url( $thumb ).'" />'; 
     413                            echo '<a href="' . wp_nonce_url( get_edit_post_link( $a['ID'], true ) ) . '" >' . get_the_title( $a['ID'] ) . '</a>  Set as Featured Image</p>'; 
     414                        } 
     415                    } 
     416                    unset( $atts ); 
     417                    unset( $a ); 
     418                } 
     419            } else { 
     420 
     421                foreach( $attachments as $a ) { 
     422                    $img = set_post_thumbnail( $post->ID, $a['ID'] ); 
     423                    if ( $img ) { 
     424                        $thumb = wp_get_attachment_thumb_url( $a['ID'] ); 
     425                        echo '<img src="' . esc_url( $thumb ) . '" />'; 
     426                        echo '<a href="' . wp_nonce_url( get_edit_post_link( $a['ID'], true ) ) . '" >' . get_the_title( $a['ID'] ) . '</a>  Set as Featured Image</p>'; 
    412427                    } 
    413428                } 
    414             } else { 
    415  
    416                 foreach( $attachments as $a ) { 
    417                     $img = set_post_thumbnail( $post->ID, $a['ID'] ); 
    418                     if ( $img ) 
    419                         $response .=  $post->post_title. ' featured image set'."\n"; 
    420                 } 
    421             } 
    422         } 
    423  
    424         echo $response; 
    425             wp_die(1); 
     429                unset( $attachments ); 
     430                unset( $a ); 
     431            } 
     432        } 
     433 
     434        echo '<br>'.$response . ' Media tool complete'; 
     435            die(1); 
    426436    } 
    427437 
     
    432442                'post_type'      => 'attachment', 
    433443                'post_mime_type' => 'image', 
    434                 'post_per_page'  => 1 
     444                'post_per_page'  => (int) 1 
    435445            ), ARRAY_A 
    436446        ); 
     
    470480        global $wpdb; 
    471481        $html = $post->post_content; 
    472         $upload_path = wp_upload_dir(); 
    473  
     482        $path = wp_upload_dir(); 
     483        $path = $path['baseurl']; 
     484 
     485        $response = ''; 
    474486        if ( stripos( $html, '<img' ) !== false ) { 
    475             echo '<h3>Results for <a href="' . esc_url( admin_url( 'post.php?post=' . $post->ID . '&action=edit' ) ) . '">Post ID: ' . $post->ID. '</a></h3>'; 
     487 
    476488            $regex = '#<\s*img [^\>]*src\s*=\s*(["\'])(.*?)\1#im'; 
    477489             preg_match_all( $regex, $html, $matches ); 
     
    482494                foreach( $matches[2] as $img ) { 
    483495                    /** Compare image source against upload directory to prevent adding same attachment multiple times  */ 
    484                     if ( false != strpbrk( $img, $upload_path['path'] ) ) 
    485                         continue; 
     496 
     497                        if (  stripos( $img, $path ) !== false ) { 
     498                            $response .= 'Img already in media library<br>'; 
     499                            continue; 
     500                        } 
     501 
    486502                    $tmp = download_url( $img ); 
    487503 
     
    502518                        $thumb = wp_get_attachment_thumb_url( $id ); 
    503519                        array_push( $new, $url ); 
    504                         array_push( $old, $img ); ?> 
    505                         <p> 
    506                         <a href="<?php echo wp_nonce_url( get_edit_post_link( $id, true ) ); ?>" title="edit-image"><img src="<?php echo esc_url( $thumb ); ?>" style="max-width:100px;" /></a> 
    507                         </p> 
    508  
    509                     <?php 
     520                        array_push( $old, $img ); 
     521 
     522                        $response .= '<p><a href="'. wp_nonce_url( get_edit_post_link( $id, true ) ).'" title="edit-image"><img src="'.esc_url( $thumb ).'" style="max-width:100px;" /></a><br>'; 
     523                        $response .= '<a href="'. wp_nonce_url( get_edit_post_link( $id, true ) ).'" >'.get_the_title( $id ). '</a>  Imported and attached</p>'; 
     524                    } else { 
     525                        echo '<span style="color:red">Upload Error: Could not upload image. Check for malformed img src url</span><br>'; 
    510526                    } 
    511527                } 
     
    516532                    $post_id = wp_update_post( $post_args ); 
    517533                    if ( isset( $post_id ) ) 
    518                         echo 'Post Content updated for Post: '.$post_id.'<br>'; 
    519                 } echo 'No external images found for '.$post->ID; 
     534                        $response .= 'Post Content updated for Post: '.$post_id.'<br>'; 
     535                        return $response; 
     536                } else 
     537                    return $response . 'No external images found for ' . $post->ID . '<br>'; 
     538 
    520539 
    521540            } else { 
    522                 return false; 
     541                return $response . 'Error processing images for '. $post->ID .'<br>'; 
    523542            } 
    524543        } else { 
    525             return false; 
    526  
    527         } 
    528  
    529         return 'Process Complete'; 
     544            return $response . 'No images found for ' . $post->ID . '<br>'; 
     545 
     546        } 
    530547    } 
    531548 
  • media-tools/trunk/readme.txt

    r578563 r579587  
    44Requires at least: 3.1 
    55Tested up to: 3.4.1 
    6 Stable tag: 1.0 
    7 Donate link: http://www.redcross.org/ 
     6Stable tag: 1.0.1 
    87License: GPLv2 or later 
    98License URI: http://www.gnu.org/licenses/gpl-2.0.html 
    109 
    11 A set of tools to help manage your media library. Imports external images and attaches them to your posts, pages or custom post types. 
     10A set of tools to help manage your media library. 
    1211 
     12Big improvements are coming to the WordPress media library in 3.5. If your not using the media library this plugin will import all the external images found in your posts or pages and import them into the media library and attach them 
    1313 
    1414== Description == 
     
    1818Big improvements are coming to the WordPress media library in 3.5. If your not using the media library this plugin will import all the external images found in your posts or pages and import them into the media library and attach them. 
    1919 
    20 This plugin will help you recover from your Timthumb addiction. If you have been using Timthumb now is the time to come clean. 
     20This plugin will help you convert from using Timthumb to WordPress built in featured image / post thumbnail support 
    2121 
    2222The Tools 
     
    2424* Import and attach - imports and attaches all external referenced images in your posts 
    2525* Set Featured Image - finds the first attached image to post and sets it as the featured image 
    26 * Add post thumbnail support to your site set thumbnail sizes 
     26* Add post thumbnail support to your site 
     27* Set additional thumbnail sizes 
    2728 
    2829Control and filter the import script by post type, author, date range, or category. 
    2930 
    3031Ajax interface that imports, attaches and sets featured images with one click. 
    31 Integrates with the Regenerate Thumbnails plugin to regenerate thumbnail crops based on newly selected image sizes 
     32Integrates with the Regenerate Thumbnails plugin to regenerate thumbnail crops based on newly selected image sizes. 
     33 
     34Vist http://c3mdigital.com/wordpress for more plugin information. 
    3235 
    3336== Installation == 
     
    5760= Isn't it illegal to download images and show them on my website? = 
    5861 
    59 If you do not have permission to use the images then yes it is a copyright violation to use other peoples images on your website.  It is your 
     62If you do not have permission to use the images and or the copyright does not allow use, then yes it is a copyright violation.   It is your 
    6063responsibility to make sure you have legal right to use any images.  PLEASE DON'T USE THIS PLUGIN TO VIOLATE COPYRIGHT LAWS! 
    6164 
     
    7275== Changelog == 
    7376 
     77= 1.0.1 = 
     78 
     79* Added WordPress and PHP version checks 
     80* Improved file upload error handling 
     81* Improved responses from the media tools 
     82* Small bug fixes and improvements 
     83* Better procedure for checking if image is already attached to post 
     84 
    7485= 1.0 = 
    7586 
     
    7889== Upgrade Notice == 
    7990 
    80 Upgrade? This is the first version you don't need to upgrade yet... 
     91= 1.0.1 = 
     92 
     93Please update to this version.  Numerous bug fixes and improvements. See changelog for more details. 
Note: See TracChangeset for help on using the changeset viewer.