WordPress.org

Plugin Directory

Changeset 1475726


Ignore:
Timestamp:
08/16/16 16:58:05 (8 months ago)
Author:
norcross
Message:

updating for WPCS standards and general cleanup

Location:
media-item-url
Files:
11 added
3 edited

Legend:

Unmodified
Added
Removed
  • media-item-url/trunk/lib/js/rkvmr.admin.js

    r857633 r1475726  
    1 //******************************************************** 
     1//****************************************************************************** 
    22// now start the engine 
    3 //******************************************************** 
     3//****************************************************************************** 
    44jQuery(document).ready( function($) { 
    55 
     6//****************************************************************************** 
     7// Set some vars for later. 
     8//****************************************************************************** 
     9    var editLink; 
     10    var editRow; 
    611 
    7 //******************************************************** 
    8 // hide my meta fields 
    9 //******************************************************** 
    10  
    11     $( 'table.media td.title div.row-actions' ).each(function() { 
    12  
     12//****************************************************************************** 
     13// Hide any existing media box URLs on load. 
     14//****************************************************************************** 
     15    $( 'table.media td.title div.row-actions' ).each( function() { 
    1316        $( this ).find( 'div.media-url-box' ).hide(); 
    14  
    1517    }); 
    1618 
     19//****************************************************************************** 
     20// Show our inputs on click. 
     21//****************************************************************************** 
     22    $( 'span.media-url' ).on( 'click', 'a.media-url-click', function( event ) { 
    1723 
    18 //******************************************************** 
    19 // show inputs on click 
    20 //******************************************************** 
    21  
    22     $( 'span.media-url' ).on( 'click', 'a.media-url-click', function(event) { 
    23  
    24         // this removes the hash in the URL for cleaner UI 
     24        // This removes the hash in the URL for cleaner UI. 
    2525        event.preventDefault(); 
    2626 
    27         // stop the propagation 
     27        // Stop the propagation. 
    2828        event.stopPropagation(); 
    2929 
    30         // target the specific row we are editing 
    31         var edit_row = $( this ).next( 'div.media-url-box' ); 
     30        // Determine our clicked item. 
     31        editLink = $( this ); 
    3232 
    33         // add a new class 
    34         $( this ).toggleClass( 'media-url-open' ); 
     33        // Target the specific row we are editing. 
     34        editRow = editLink.next( 'div.media-url-box' ); 
    3535 
    36         // add a class 
    37         $( edit_row ).addClass( 'media-url-visible' ); 
     36        // Add a new class. 
     37        editLink.toggleClass( 'media-url-open' ); 
    3838 
    39         // show my edit fields 
    40         $( edit_row ).slideToggle( 'slow' ); 
     39        // Add a class to the row itself. 
     40        editRow.toggleClass( 'media-url-visible' ); 
    4141 
    42         // hide the rest 
    43         $( 'div.media-url-box' ).not( edit_row ).slideUp( 'slow' ); 
     42        // Show my edit fields. 
     43        editRow.slideToggle( 'slow' ); 
    4444 
     45        // Hide the rest. 
     46        $( 'div.media-url-box' ).not( editRow ).slideUp( 'slow' ).removeClass( 'media-url-visible' ); 
    4547    }); 
    4648 
    47  
    48 //******************************************************** 
     49//****************************************************************************** 
    4950// select text on click 
    50 //******************************************************** 
    51  
    52     $( 'input.media-url-field' ).focus(function(){ 
     51//****************************************************************************** 
     52    $( 'input.media-url-field' ).focus( function() { 
    5353        this.select(); 
    5454    }); 
    5555 
    56 //******************************************************** 
     56//****************************************************************************** 
    5757// that's all folks. we're done here 
    58 //******************************************************** 
    59  
     58//****************************************************************************** 
    6059}); 
  • media-item-url/trunk/media-item-url.php

    r857636 r1475726  
    11<?php 
    2 /* 
    3 Plugin Name: Media Item URL 
    4 Plugin URI: http://reaktivstudios.com/custom-plugins 
    5 Description: Get full attachment URL from the media row table without opening item 
    6 Author: Andrew Norcross 
    7 Version: 1.0.0 
    8 Requires at least: 3.8 
    9 Author URI: http://andrewnorcross.com 
    10 */ 
    11 /*  Copyright 2014 Andrew Norcross 
    12  
    13     This program is free software; you can redistribute it and/or modify 
    14     it under the terms of the GNU General Public License as published by 
    15     the Free Software Foundation; version 2 of the License (GPL v2) only. 
    16  
    17     This program is distributed in the hope that it will be useful, 
    18     but WITHOUT ANY WARRANTY; without even the implied warranty of 
    19     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
    20     GNU General Public License for more details. 
    21  
    22     You should have received a copy of the GNU General Public License 
    23     along with this program; if not, write to the Free Software 
    24     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
    25 */ 
    26  
    27 if( ! defined( 'RKV_MR_VER' ) ) 
    28     define( 'RKV_MR_VER', '1.0.0' ); 
    29  
    30 class RKV_Media_Image_URL 
     2/** 
     3 * Plugin Name: Media Item URL 
     4 * Plugin URI: https://github.com/norcross/media-item-url 
     5 * Description: Get full attachment URL from the media row table without opening item. 
     6 * Author: Andrew Norcross 
     7 * Author URI: http://reaktivstudios.com/ 
     8 * Version: 1.0.1 
     9 * Text Domain: media-item-url 
     10 * Domain Path: languages 
     11 * License: MIT 
     12 * GitHub Plugin URI: https://github.com/norcross/media-item-url 
     13 */ 
     14 
     15// Set my base for the plugin. 
     16if ( ! defined( 'RKV_MEDIA_ITEM_URL_BASE' ) ) { 
     17    define( 'RKV_MEDIA_ITEM_URL_BASE', plugin_basename( __FILE__ ) ); 
     18} 
     19 
     20// Set my directory for the plugin. 
     21if ( ! defined( 'RKV_MEDIA_ITEM_URL_DIR' ) ) { 
     22    define( 'RKV_MEDIA_ITEM_URL_DIR', plugin_dir_path( __FILE__ ) ); 
     23} 
     24 
     25// Set my version for the plugin. 
     26if ( ! defined( 'RKV_MEDIA_ITEM_URL_VER' ) ) { 
     27    define( 'RKV_MEDIA_ITEM_URL_VER', '1.0.1' ); 
     28} 
     29 
     30/** 
     31 * Set up and load our class. 
     32 */ 
     33class RKV_Media_Item_URL 
    3134{ 
    3235 
    3336    /** 
    34      * This is our constructor 
    35      * 
    36      * @return 
    37      */ 
    38     public function __construct() { 
    39  
    40         add_action          (   'plugins_loaded',                   array(  $this,  'textdomain'            )           ); 
    41         add_action          (   'admin_enqueue_scripts',            array(  $this,  'scripts_styles'        ),  10      ); 
    42         add_filter          (   'media_row_actions',                array(  $this,  'media_url_field'       ),  50, 3   ); 
    43  
    44     } 
    45  
    46     /** 
    47      * load textdomain for localization 
     37     * Load our hooks and filters. 
     38     * 
     39     * @return void 
     40     */ 
     41    public function init() { 
     42        add_action( 'plugins_loaded',                   array( $this, 'textdomain'          )           ); 
     43        add_action( 'admin_head',                       array( $this, 'load_admin_css'      )           ); 
     44        add_action( 'admin_enqueue_scripts',            array( $this, 'load_admin_js'       ),  10      ); 
     45        add_filter( 'media_row_actions',                array( $this, 'media_url_field'     ),  50, 3   ); 
     46    } 
     47 
     48    /** 
     49     * Load textdomain for international goodness. 
     50     * 
    4851     * @return void 
    4952     */ 
    5053    public function textdomain() { 
    51  
    5254        load_plugin_textdomain( 'media-item-url', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); 
    5355    } 
    5456 
    5557    /** 
    56      * load CSS and JS files in media library 
    57      * @param  [type] $hook [description] 
    58      * @return [type]       [description] 
    59      */ 
    60     public function scripts_styles( $hook ) { 
    61  
    62         if ( $hook !== 'upload.php' ) 
     58     * Load our tiny amount of CSS. 
     59     * 
     60     * @return void 
     61     */ 
     62    public function load_admin_css() { 
     63 
     64        // Bail if we aren't on the uploads (i.e. media ) page. 
     65        if ( false === $check = self::check_current_screen() ) { 
    6366            return; 
    64  
    65         wp_enqueue_style( 'rkv-media-row', plugins_url( 'lib/css/rkvmr.admin.css', __FILE__), array(), RKV_MR_VER, 'all' ); 
    66  
    67         wp_enqueue_script( 'rkv-media-row', plugins_url( 'lib/js/rkvmr.admin.js', __FILE__ ) , array( 'jquery' ), RKV_MR_VER, true ); 
    68  
    69     } 
    70  
    71     /** 
    72      * build the text link and hidden field containing the item URL 
    73      * @param  [type] $actions  [description] 
    74      * @param  [type] $post     [description] 
    75      * @param  [type] $detached [description] 
    76      * @return [type]           [description] 
     67        } 
     68 
     69        // Echo out the CSS. 
     70        echo '<style media="screen" type="text/css">' . "\n"; 
     71        echo 'a.media-url-click { outline: 0 none; box-shadow: none; }' . "\n"; 
     72        echo 'a.media-url-click.media-url-open { font-weight: bold; }' . "\n"; 
     73        echo 'div.media-url-box { margin: 10px 0; }' . "\n"; 
     74        echo '</style>'; 
     75    } 
     76 
     77    /** 
     78     * Load our JS file in media library. 
     79     * 
     80     * @param  string $hook  The admin page currently loaded. 
     81     * 
     82     * @return void 
     83     */ 
     84    public function load_admin_js( $hook ) { 
     85 
     86        // Bail if we aren't on the uploads (i.e. media ) page. 
     87        if ( false === $check = self::check_current_screen() ) { 
     88            return; 
     89        } 
     90 
     91        // Set up loading our normal or minified file based on script debug. 
     92        $file   = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? 'rkvmr.admin.js' : 'rkvmr.admin.min.js'; 
     93        $vers   = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? time() : RKV_MEDIA_ITEM_URL_VER; 
     94 
     95        // Load our JS file. 
     96        wp_enqueue_script( 'rkv-media-row', plugins_url( 'lib/js/' . $file, __FILE__ ) , array( 'jquery' ), $vers, true ); 
     97    } 
     98 
     99    /** 
     100     * Build the text link and hidden field containing the item URL. 
     101     * 
     102     * @param  array  $actions   The existing array of action links for each attachment. 
     103     * @param  object $post      The WP_Post object for the current attachment. 
     104     * @param  bool   $detached  Whether the list table contains media not attached to any posts. 
     105     * 
     106     * @return array  $actions   The updated array of action links for each attachment. 
    77107     */ 
    78108    public function media_url_field( $actions, $post, $detached ) { 
    79109 
    80         $media_url      = wp_get_attachment_url( $post->ID ); 
    81         $media_label    = self::get_media_type_label( $post->ID ); 
    82  
    83         $media_link     = '<a class="media-url-click" href="#">' . esc_html( $media_label ) . '</a>'; 
    84  
    85         $media_link     .= '<div class="media-url-box">'; 
    86         $media_link     .= '<input type="text" class="widefat media-url-field" value="'.esc_url( $media_url ).'" readonly>'; 
    87         $media_link     .= '</div>'; 
    88  
    89         $actions['media-url'] = $media_link; 
    90  
     110        // Only load on attachment post type. 
     111        if ( ! is_object( $post ) || empty( $post->ID ) || 'attachment' !== $post->post_type ) { 
     112            return $actions; 
     113        } 
     114 
     115        // Get our media item URL. 
     116        $link   = wp_get_attachment_url( $post->ID ); 
     117 
     118        // If we have no URL, return our actions. 
     119        if ( empty( $link ) ) { 
     120            return $actions; 
     121        } 
     122 
     123        // Now fetch our label. 
     124        $label  = self::get_media_type_label( $post->ID ); 
     125 
     126        // Now build out our box. 
     127        $build  = ''; 
     128 
     129        $build .= '<a class="media-url-click" href="#">' . esc_html( $label ) . '</a>'; 
     130        $build .= '<div class="media-url-box">'; 
     131        $build .= '<input type="url" class="widefat media-url-field" value="' . esc_url( $link ) . '" readonly>'; 
     132        $build .= '</div>'; 
     133 
     134        // Add our newly built box to the action row. 
     135        $actions['media-url'] = $build; 
     136 
     137        // Return the actions. 
    91138        return $actions; 
    92  
    93     } 
    94  
    95     /** 
    96      * fetch the item label based on MIME type 
    97      * @param  [int]        $post_id [the attachment ID] 
    98      * @return string   the appropriate label 
    99      */ 
    100     static function get_media_type_label( $post_id ) { 
    101  
    102         // fetch our item MIME type 
    103         $type   = get_post_mime_type( $post_id ); 
    104  
    105  
    106         // filter through my types and return the label based on that 
     139    } 
     140 
     141    /** 
     142     * Fetch the item label based on MIME type. 
     143     * 
     144     * @param  integer $post_id  The attachment ID. 
     145     * 
     146     * @return string            The appropriate label. 
     147     */ 
     148    public static function get_media_type_label( $post_id ) { 
     149 
     150        // Fetch our item MIME type. 
     151        $type   = get_post_mime_type( $post_id ); 
     152 
     153        // Filter through my types and return the label based on that. 
    107154        switch ( $type ) { 
    108155            case 'image/jpeg': 
    109156            case 'image/png': 
    110157            case 'image/gif': 
    111                 $label  = __( 'View Image URL', 'media-item-url' ); 
     158                $label  = __( 'View Image URL', 'media-item-url' ); 
    112159                break; 
    113160 
     
    117164            case 'video/ogg': 
    118165            case 'video/quicktime': 
    119                 $label  = __( 'View Video URL', 'media-item-url' ); 
     166                $label  = __( 'View Video URL', 'media-item-url' ); 
    120167                break; 
    121168 
    122169            case 'text/csv': 
    123170            case 'text/xml': 
    124                 $label  = __( 'View Data File URL', 'media-item-url' ); 
     171                $label  = __( 'View Data File URL', 'media-item-url' ); 
    125172                break; 
    126173 
    127174            case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': 
    128175            case 'application/vnd.ms-excel': 
    129                 $label  = __( 'View Spreadsheet URL', 'media-item-url' ); 
     176                $label  = __( 'View Spreadsheet URL', 'media-item-url' ); 
    130177                break; 
    131178 
     
    134181            case 'application/msword': 
    135182            case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': 
    136                 $label  = __( 'View Document URL', 'media-item-url' ); 
     183                $label  = __( 'View Document URL', 'media-item-url' ); 
    137184                break; 
    138185 
    139186            case 'text/html': 
    140                 $label  = __( 'View HTML file URL', 'media-item-url' ); 
     187                $label  = __( 'View HTML file URL', 'media-item-url' ); 
    141188                break; 
    142189 
    143190            default: 
    144                 $label  = __( 'View Item URL', 'media-item-url' ); 
    145         } 
    146  
    147         // pass through filter to catch whatever else may be out there 
    148         $label  = apply_filters( 'rkv_media_type_label', $label, $type ); 
    149  
    150         // send it back 
     191                $label  = __( 'View Item URL', 'media-item-url' ); 
     192        } 
     193 
     194        // Pass through filter to catch whatever else may be out there. 
     195        $label  = apply_filters( 'rkv_media_type_label', $label, $type ); 
     196 
     197        // Return the label. 
    151198        return $label; 
    152  
    153     } 
    154  
    155 /// end class 
    156 } 
    157  
    158 // Instantiate our class 
    159 new RKV_Media_Image_URL(); 
     199    } 
     200 
     201    /** 
     202     * A helper function for checking the current screen on admin. 
     203     * 
     204     * @param  string $id  The screen ID we are checking against. 
     205     * 
     206     * @return bool        Whether or not we're on the desired screen. 
     207     */ 
     208    public static function check_current_screen( $id = 'upload' ) { 
     209 
     210        // If we don't have the `get_current_screen` function, bail immediately. 
     211        if ( ! function_exists( 'get_current_screen' ) ) { 
     212            return false; 
     213        } 
     214 
     215        // Get current screen info. 
     216        $screen = get_current_screen(); 
     217 
     218        // Our various checks that would return false. 
     219        if ( ! is_object( $screen ) || empty( $screen->id ) || empty( $id ) ) { 
     220            return false; 
     221        } 
     222 
     223        // Now do our check against the desired ID. 
     224        return esc_attr( $id ) === esc_attr( $screen->id ) ? true : false; 
     225    } 
     226 
     227    // End class. 
     228} 
     229 
     230// Instantiate our class. 
     231$RKV_Media_Item_URL = new RKV_Media_Item_URL(); 
     232$RKV_Media_Item_URL->init(); 
  • media-item-url/trunk/readme.txt

    r857641 r1475726  
    44Donate link: http://andrewnorcross.com/donate 
    55Requires at least: 3.8 
    6 Tested up to: 3.8.1 
    7 Stable tag: 1.0.0 
    8 License: GPLv2 or later 
    9 License URI: http://www.gnu.org/licenses/gpl-2.0.html 
     6Tested up to: 4.6.0 
     7Stable tag: 1.0.1 
     8License: MIT 
     9License URI: http://norcross.mit-license.org/ 
    1010 
    1111Get the full attachment URL from the media row table without opening item. 
     
    2121 
    2222== Frequently Asked Questions == 
     23 
    2324= Why do I need this? = 
    2425You don't *need* this. Maybe you like doing things the hard way. But it's helpful. 
    2526 
     27= I don't see the "view item" link = 
     28The link is only viewable when the media library is in "list" mode. 
    2629 
    2730== Screenshots == 
    28311. Item URL field when visible. 
     32 
     33== Changelog == 
     34 
     35= 1.0.1 = 
     36* Updating for WPCS standards and general cleanup. 
    2937 
    3038= 1.0.0 = 
Note: See TracChangeset for help on using the changeset viewer.