WordPress.org

Plugin Directory

Changeset 622204


Ignore:
Timestamp:
11/07/12 17:04:52 (18 months ago)
Author:
lightningspirit
Message:

Add trunk version for WordPress 3.5 Beta2

Location:
media-features/trunk
Files:
3 added
1 deleted
2 edited

Legend:

Unmodified
Added
Removed
  • media-features/trunk/media-features.php

    r621684 r622204  
    44Plugin Name: Media Features 
    55Plugin URI: http://wordpress.org/extend/plugins/media-features 
    6 Version: 0.1 
     6Version: 0.2 
    77Description: Adds a bunch of new features to Media Files like category organization, file type filter/browser, uploaded image resize, crop and JPEG quality controllers. 
    88Author: lightningspirit 
     
    8585            add_action( 'admin_notices', array( 'WP_Media_Features', 'configure_settings_notice' ) ); 
    8686             
    87          
    8887        add_filter( 'plugin_action_links', array( 'WP_Media_Features', 'plugin_action_links' ), 10, 2 ); 
    8988         
     89        /** Upload workflow */ 
    9090        add_action( 'add_attachment', array( 'WP_Media_Features', 'catch_upload' ), 10, 1 ); 
    9191        add_filter( 'jpeg_quality', array( 'WP_Media_Features', 'set_jpeg_quality' ), 10, 2 ); 
     92         
     93        /** Add and use new mime types */ 
    9294        add_filter( 'upload_mimes', array( 'WP_Media_Features', 'upload_mimes' ) ); 
    9395        add_filter( 'post_mime_types', array( 'WP_Media_Features', 'post_mime_types' ) ); 
    9496         
    95         add_filter( 'media_upload_mime_type_links', array( 'WP_Media_Features', 'media_upload_mime_type_links' ), 10, 1 ); 
    96         add_action( 'restrict_manage_posts', array( 'WP_Media_Features', 'media_upload_filter_dropdowns' ) ); 
    97          
    98         add_action( 'admin_init', array( 'WP_Media_Features', 'add_attachments_taxonomies' ) ); 
    99          
     97        /** Restrict and manage WP_Media_List_Table presentation */ 
     98        add_action( 'load-upload.php', array( 'WP_Media_Features', 'admin_head_upload' ) ); 
    10099        add_action( 'manage_media_columns', array( 'WP_Media_Features', 'manage_media_columns' ) ); 
    101100        add_action( 'manage_media_custom_column', array( 'WP_Media_Features', 'manage_media_custom_column' ), 10, 2 ); 
    102          
     101        add_action( 'restrict_manage_posts', array( 'WP_Media_Features', 'media_upload_filter_dropdowns' ) ); 
     102        add_filter( 'media_row_actions', array( 'WP_Media_Features', 'media_row_actions' ), 10, 3 ); 
     103        add_action( 'wp_ajax_get_media_attach_categories', array( 'WP_Media_Features', 'get_media_attach_categories' ) ); 
     104        //add_filter( 'bulk_actions-upload', array( 'WP_Media_Features', 'bulk_actions_upload' ) ); 
     105        //add_filter( 'wp_redirect', array( 'WP_Media_Features', 'bulk_actions_do' ) ); 
     106         
     107        /** Add and customize taxonomy */ 
     108        add_action( 'admin_init', array( 'WP_Media_Features', 'add_attachments_taxonomies' ) ); 
     109        add_action( 'admin_menu', array( 'WP_Media_Features', 'add_taxonomies_submenus' ) ); 
     110        add_filter( 'parent_file', array( 'WP_Media_Features', 'media_taxonomies_parent_file' ) ); 
     111        add_action( 'media_category_row_actions', array( 'WP_Media_Features', 'filter_row_actions' ) ); 
    103112        add_action( 'manage_edit-media_category_columns', array( 'WP_Media_Features', 'manage_media_category_columns' ) ); 
    104113        add_action( 'manage_media_category_custom_column', array( 'WP_Media_Features', 'manage_media_category_custom_column' ), 10, 3 ); 
    105         add_action( 'media_category_row_actions', array( 'WP_Media_Features', 'filter_row_actions' ) ); 
    106          
    107         add_action( 'admin_menu', array( 'WP_Media_Features', 'add_taxonomies_submenus' ) ); 
    108         add_filter( 'parent_file', array( 'WP_Media_Features', 'media_taxonomies_parent_file' ) ); 
    109         add_filter( 'attachment_fields_to_edit', array( 'WP_Media_Features', 'attachment_fields_to_edit' ), 10, 2 ); 
    110          
    111         add_action( 'load-media.php', array( 'WP_Media_Features', 'load_media_head' ) ); 
    112         add_action( 'load-media-new.php', array( 'WP_Media_Features', 'load_media_head' ) ); 
     114         
     115        /** Add controllers to options-media.php */ 
    113116        add_action( 'admin_init', array( 'WP_Media_Features', 'add_options' ) ); 
    114117         
     
    123126     */ 
    124127    public static function do_upgrade() { 
    125         update_option( 'media_features_plugin_version', '0.1' ); 
     128        update_option( 'media_features_plugin_version', '0.2' ); 
    126129         
    127130    } 
     
    284287    } 
    285288     
     289     
    286290    /**  
    287291     * Return Mime Types 
     
    365369        $types['application'] = array( __( 'Applications', 'media-features' ), __( 'Manage Applications', 'media-features' ), _n_noop( 'Application <span class="count">(%s)</span>', 'Applications <span class="count">(%s)</span>', 'media-features' ) ); 
    366370        return $types; 
     371         
     372    } 
     373     
     374     
     375    /**  
     376     * {@internal Missing Short Description}} 
     377     *  
     378     * @since 0.2 
     379     *  
     380     * @param array $columns 
     381     * @return array 
     382     */ 
     383    public static function admin_head_upload() { 
     384        wp_enqueue_script( 'jquery-ui-tabs' ); 
     385        wp_enqueue_script( 'media-features', plugin_dir_url( __FILE__ ) . '/js/media-features.js', array( 'jquery' ), '1.0' ); 
     386        wp_localize_script( 'media-features', 'media_features', array( 
     387            'detach'        => __( 'Detach', 'media-features' ), 
     388            'categorize'    => __( 'Categorize', 'media-features' ), 
     389            ) 
     390        ); 
     391         
     392        // Save terms to posts 
     393        if ( isset( $_REQUEST['media_category_save_categories'] ) ) { 
     394            $post_ids = explode( ',', $_REQUEST['media_category_save_categories_posts_ids'] ); 
     395            $term_ids = $_REQUEST['media_category_save_categories_terms_ids']; 
     396             
     397            foreach ( $post_ids as $post_id ) { 
     398                wp_set_post_terms( (int) $post_id, $term_ids, 'media_category' ); 
     399                 
     400            } 
     401             
     402             
     403            wp_redirect( add_query_arg( 'attach_categories', '1', remove_query_arg( array( 'media_category_save_categories', 'media_category_save_categories_posts_ids', 'media_category_save_categories_terms_ids' ), stripslashes( $_SERVER['REQUEST_URI'] ) ) ) ); 
     404             
     405        } 
     406         
     407        if ( isset( $_REQUEST['attach_categories'] ) ) { 
     408            add_action( 'admin_notices', array( 'WP_Media_Features', 'notice_attach_categories' ) ); 
     409             
     410        } 
     411         
     412    } 
     413     
     414    /**  
     415     * {@internal Missing Short Description}} 
     416     *  
     417     * @since 0.2 
     418     *  
     419     * @return void 
     420     */ 
     421    public static function notice_attach_categories() { 
     422        echo '<div class="updated"><p>'; 
     423        printf( __( 'Categories attached to media files.', 'media-features' ), 'options-media.php' ); 
     424        echo '</p></div>'; 
     425         
     426    } 
     427 
     428    /**  
     429     * {@internal Missing Short Description}} 
     430     *  
     431     * @since 0.1 
     432     *  
     433     * @param array $columns 
     434     * @return array 
     435     */ 
     436    public static function manage_media_columns( $old_columns ) { 
     437        $columns['cb']          = $old_columns['cb']; 
     438        $columns['icon']        = $old_columns['icon']; 
     439        $columns['title']       = $old_columns['title']; 
     440        $columns['author']      = $old_columns['author']; 
     441        $columns['categories']  = __( 'Categories', 'media-features' ); 
     442        $columns['parent']      = $old_columns['parent']; 
     443        $columns['comments']    = $old_columns['comments']; 
     444        $columns['date']        = $old_columns['date']; 
     445         
     446        return $columns; 
     447         
     448    } 
     449     
     450    /**  
     451     * {@internal Missing Short Description}} 
     452     *  
     453     * @since 0.1 
     454     *  
     455     * @param array $columns 
     456     * @return array 
     457     */ 
     458    public static function manage_media_custom_column( $column, $post_id ) { 
     459        if ( 'categories' == $column ) { 
     460            foreach ( wp_get_post_terms ( $post_id, 'media_category' ) as $term ) 
     461                $terms[] = sprintf( '<a href="upload.php?media_category=%s">%s</a>', $term->slug, $term->name ); 
     462             
     463            echo @implode( ', ', $terms ); 
     464             
     465        } 
    367466         
    368467    } 
     
    393492        remove_filter( 'list_cats', array( 'WP_Media_Features', 'list_cats' ) ); 
    394493         
    395     } 
    396      
    397     /**  
    398      * {@internal Missing Short Description}} 
    399      *  
    400      * @since 0.1 
    401      *  
    402      * @param array $types 
    403      * @return array 
    404      */ 
    405     public static function media_upload_mime_type_links( $types ) { 
    406         return $types; 
     494        ?> 
     495        <div class="alignright actions" style="margin:-1px 0 auto 10px ;"> 
     496            <input id="attach-categories-do" type="button" class="button" value="Attach Categories" /> 
     497        </div> 
     498 
     499 
     500        <div id="attach-categories" class="find-box" style="display:none;"> 
     501            <div id="attach-categories-head" class="find-box-head"> 
     502                <?php _e( 'Attach Categories to Media Files', 'media-features' ); ?> 
     503            </div> 
     504             
     505            <div id="attach-categories-inside" class="find-box-inside" style="background:transparent;width:95%;padding:0 5px;position:relative;"> 
     506                 
     507            </div> 
     508             
     509            <input id="media_category_save_categories" type="hidden" name="media_category_save_categories" value="true"> 
     510            <input id="media_category_save_categories_posts_ids" type="hidden" name="media_category_save_categories_posts_ids" value=""> 
     511            <input id="media_category_save_categories_terms_ids" type="hidden" name="media_category_save_categories_terms_ids" value=""> 
     512         
     513            <div class="find-box-buttons"> 
     514                <input id="attach-categories-close" type="button" class="button alignleft" value="<?php esc_attr_e( 'Close' ); ?>" /> 
     515                <?php submit_button( __( 'Save' ), 'button-primary alignright', 'attach-categories-submit', false ); ?>  
     516            </div> 
     517     
     518        </div> 
     519        <?php 
    407520         
    408521    } 
     
    424537         
    425538    } 
     539     
     540    /**  
     541     * Add row actions for media handle 
     542     *  
     543     * @since 0.2 
     544     *  
     545     * @param array $actions 
     546     * @return array 
     547     */ 
     548    public static function media_row_actions( $actions, $post, $detached ) {         
     549        if ( $detached ) 
     550            return $actions; 
     551         
     552        return array( 
     553            'edit'      => $actions['edit'], 
     554            'category'  => sprintf( '<a href="#the-list" onclick="attachCategories.open( \'media[]\', \'%d\' );return false;" class="hide-if-no-js">%s</a>', $post->ID, __( 'Attach categories', 'media-features' ) ), 
     555            'delete'    => $actions['delete'], 
     556            'view'      => $actions['view'], 
     557        ); 
     558         
     559    } 
     560     
     561    /**  
     562     * AJAX Get postbox media categories according to actual post 
     563     *  
     564     * @since 0.2 
     565     *  
     566     * @return void 
     567     */ 
     568    public static function get_media_attach_categories() { 
     569        //if ( wp_verify_nonce( $_POST['_ajax_nonce'], $_POST['action'] ) ) 
     570        //  die(); 
     571        if ( isset( $_POST['post_id'] ) ) 
     572            $post_id = (int) $_POST['post_id']; 
     573        else 
     574            $post_id = 0; 
     575         
     576        ob_start(); 
     577        WP_Media_Features::media_categories_box( $post_id ); 
     578        $data = ob_get_clean(); 
     579         
     580        $ajax = new WP_Ajax_Response( compact( 'data' ) ); 
     581        $ajax->send(); 
     582         
     583         
     584    } 
     585     
     586    /**  
     587     * Postbox for categories 
     588     *  
     589     * @since 0.2 
     590     *  
     591     * @return void 
     592     */ 
     593    function media_categories_box( $post_id = 0 ) { 
     594        $tax = get_taxonomy( 'media_category' ); 
     595     
     596        ?> 
     597        <div id="taxonomy-media_category" class="categorydiv"> 
     598            <ul id="media_category-tabs" class="category-tabs"> 
     599                <li class="tabs"> 
     600                    <a href="#media_category-all"><?php echo $tax->labels->all_items; ?></a> 
     601                </li> 
     602                <li class="hide-if-no-js"> 
     603                    <a href="#media_category-pop"><?php _e( 'Most Used' ); ?></a> 
     604                </li> 
     605            </ul> 
     606     
     607            <div id="media_category-pop" class="tabs-panel" style="display: none;"> 
     608                <ul id="media_categorychecklist-pop" class="categorychecklist form-no-clear" > 
     609                    <?php $popular_ids = wp_popular_terms_checklist( 'media_category' ); ?> 
     610                </ul> 
     611            </div> 
     612     
     613            <div id="media_category-all" class="tabs-panel"> 
     614                <ul id="media_categorychecklist" data-wp-lists="list:media_category" class="categorychecklist form-no-clear"> 
     615                    <?php wp_terms_checklist( $post_id, array( 'taxonomy' => 'media_category', 'popular_cats' => $popular_ids ) ) ?> 
     616                </ul> 
     617            </div> 
     618        </div> 
     619         
     620        <?php 
     621    } 
     622     
     623     
    426624     
    427625    /**  
     
    467665     * @since 0.1 
    468666     *  
    469      * @param array $columns 
     667     * @return void 
     668     */ 
     669    public static function add_taxonomies_submenus() { 
     670        add_media_page( __( 'Categories', 'media-features' ), __( 'Categories', 'media-features' ), 'manage_categories', 'edit-tags.php?taxonomy=media_category' ); 
     671         
     672    } 
     673     
     674    /**  
     675     * Change parent_slug of Categories to upload.php 
     676     *  
     677     * @since 0.1 
     678     *  
     679     * @param string $parent_file 
     680     * @return string 
     681     */ 
     682    public static function media_taxonomies_parent_file( $parent_file ) { 
     683        global $current_screen; 
     684         
     685        if ( 'edit-media_category' == $current_screen->id )  
     686            return 'upload.php'; 
     687         
     688        return $parent_file; 
     689         
     690    } 
     691 
     692    /**  
     693     * Remove View link from row actions 
     694     *  
     695     * @since 0.1 
     696     *  
     697     * @param array $actions 
    470698     * @return array 
    471699     */ 
    472     public static function manage_media_columns( $old_columns ) { 
    473         $columns['cb']          = $old_columns['cb']; 
    474         $columns['icon']        = $old_columns['icon']; 
    475         $columns['title']       = $old_columns['title']; 
    476         $columns['author']      = $old_columns['author']; 
    477         $columns['categories']  = __( 'Categories', 'media-features' ); 
    478         $columns['parent']      = $old_columns['parent']; 
    479         $columns['comments']    = $old_columns['comments']; 
    480         $columns['date']        = $old_columns['date']; 
    481          
    482         return $columns; 
    483          
    484     } 
    485      
    486     /**  
    487      * {@internal Missing Short Description}} 
    488      *  
    489      * @since 0.1 
    490      *  
    491      * @param array $columns 
    492      * @return array 
    493      */ 
    494     public static function manage_media_custom_column( $column, $post_id ) { 
    495         if ( 'categories' == $column ) { 
    496             foreach ( wp_get_post_terms ( $post_id, 'media_category' ) as $term ) 
    497                 $terms[] = sprintf( '<a href="upload.php?media_category=%s">%s</a>', $term->slug, $term->name ); 
    498              
    499             echo @implode( ', ', $terms ); 
    500              
     700    public static function filter_row_actions( $actions ) { 
     701        unset( $actions['view'] ); 
     702        return $actions; 
     703         
     704    } 
     705     
     706    /**  
     707     * Updates count media_category terms  
     708     *  
     709     * @since 0.1 
     710     *  
     711     * @param array $terms 
     712     * @param string $taxonomy 
     713     * @return void 
     714     */ 
     715    public static function update_count_callback( $terms, $taxonomy ) { 
     716        global $wpdb; 
     717         
     718        foreach ( (array) $terms as $term ) { 
     719 
     720            $count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->term_relationships WHERE term_taxonomy_id = %d", $term ) ); 
     721     
     722            do_action( 'edit_term_taxonomy', $term, $taxonomy ); 
     723            $wpdb->update( $wpdb->term_taxonomy, compact( 'count' ), array( 'term_taxonomy_id' => $term ) ); 
     724            do_action( 'edited_term_taxonomy', $term, $taxonomy ); 
    501725        } 
    502          
     726     
    503727    } 
    504728     
     
    538762    } 
    539763     
    540     /**  
    541      * Remove View link from row actions 
    542      *  
    543      * @since 0.1 
    544      *  
    545      * @param array $actions 
    546      * @return array 
    547      */ 
    548     public static function filter_row_actions( $actions ) { 
    549         unset( $actions['view'] ); 
    550         return $actions; 
    551          
    552     } 
    553      
    554     /**  
    555      * Updates count media_category terms  
    556      *  
    557      * @since 0.1 
    558      *  
    559      * @param array $terms 
    560      * @param string $taxonomy 
    561      * @return void 
    562      */ 
    563     public static function update_count_callback( $terms, $taxonomy ) { 
    564         global $wpdb; 
    565          
    566         foreach ( (array) $terms as $term ) { 
    567  
    568             $count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->term_relationships WHERE term_taxonomy_id = %d", $term ) ); 
    569      
    570             do_action( 'edit_term_taxonomy', $term, $taxonomy ); 
    571             $wpdb->update( $wpdb->term_taxonomy, compact( 'count' ), array( 'term_taxonomy_id' => $term ) ); 
    572             do_action( 'edited_term_taxonomy', $term, $taxonomy ); 
    573         } 
    574      
    575     } 
    576      
    577     /**  
    578      * {@internal Missing Short Description}} 
    579      *  
    580      * @since 0.1 
    581      *  
    582      * @return void 
    583      */ 
    584     public static function add_taxonomies_submenus() { 
    585         add_media_page( __( 'Categories', 'media-features' ), __( 'Categories', 'media-features' ), 'manage_categories', 'edit-tags.php?taxonomy=media_category' ); 
    586          
    587     } 
    588      
    589     /**  
    590      * Change parent_slug of Categories to upload.php 
    591      *  
    592      * @since 0.1 
    593      *  
    594      * @param string $parent_file 
    595      * @return string 
    596      */ 
    597     public static function media_taxonomies_parent_file( $parent_file ) { 
    598         global $current_screen; 
    599          
    600         if ( 'edit-media_category' == $current_screen->id )  
    601             return 'upload.php'; 
    602          
    603         return $parent_file; 
    604          
    605     } 
    606      
    607     /**  
    608      * Replaces default input box for tags. 
    609      * Includes metabox for categories 
    610      *  
    611      * @since 0.1 
    612      *  
    613      * @param array $form_fields 
    614      * @param object $post 
    615      * @return array 
    616      */ 
    617     public static function attachment_fields_to_edit( $form_fields, $post ) { 
    618         /** TODO: Hack against the form field upload **/ 
    619         if ( 'media' != get_current_screen()->id ) { 
    620             unset( $form_fields['media_category'] ); 
    621             return $form_fields; 
    622              
    623         } 
    624          
    625          
    626         $box = array( 
    627             'id' => 'categorydiv', 
    628             'title' => 'Cat', 
    629             'callback' => 'post_categories_meta_box', 
    630             'args' => array( 
    631                 'taxonomy' => 'media_category', 
    632             ), 
    633         );  
    634         ob_start(); 
    635         include( 'includes/meta-boxes.php' ); 
    636         post_categories_meta_box( $post, $box ); 
    637         $html = ob_get_clean(); 
    638          
    639         $form_fields['media_category']['input'] = 'html'; 
    640         $form_fields['media_category']['html'] = apply_filters( 'media_category_html', $html, $form_fields['media_category'], $post ); 
    641          
    642         return $form_fields; 
    643          
    644     } 
    645      
    646     /**  
    647      * {@internal Missing Short Description}} 
    648      *  
    649      * @since 0.1 
    650      *  
    651      * @return void 
    652      */ 
    653     public static function load_media_head() { 
    654         wp_enqueue_script( 'post' ); 
    655         wp_enqueue_style( 'media-features', plugin_dir_url( __FILE__ ) . 'css/media-features.css' ); 
    656          
    657     } 
    658764     
    659765    /**  
  • media-features/trunk/readme.txt

    r621686 r622204  
    33Tags: plugin, media, upload, feature, features, category, media category, media organization, file types, media types, files organization, files category, media resize, upload resize, upload crop, jpeg quality, jpeg 
    44Donate link: http://vcarvalho.com/donate/ 
    5 Requires at least: 3.4 
    6 Tested up to: 3.4 
    7 Stable tag: 0.1 
     5Requires at least: 3.5 
     6Tested up to: 3.5 
     7Stable tag: 0.2 
    88License: GPLv2 - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 
    99 
     
    1717 
    1818* Organize media files with categories 
     19* Bulk categorization 
    1920* Add PDF and Document mime types support 
    2021* Adjust JPEG quality percentage (from 0 to 100) thus increase image quality 
     
    7778== Changelog == 
    7879 
     80= 0.2 = 
     81 
     82* Compatible with version 3.5 
     83* Bulk categorization of media files 
     84 
    7985= 0.1 = 
    8086 
     
    8894== Upgrade Notice == 
    8995 
    90 Initial Release. 
     96* Compatible (only) with version 3.5 
     97* Bulk categorization of media files 
Note: See TracChangeset for help on using the changeset viewer.