コード例 #1
0
/**
 * This file contains the necessary methods for rendering the Playlist Manager
 * tab in the WordPress media popup.  The code is largely borrowed from the
 * WordPress Gallery with necessary modifications for managing playlists and
 * showing all uploaded media.
 * @global string $redir_tab Global reference to the tab to redirect to on
 * submit.
 * @global string $type Global reference to the type of content being managed.
 * @param undefined $errors List of any errors encountered.
 */
function media_jwplayer_insert_form($errors)
{
    global $redir_tab, $type, $jw_query, $p_items;
    $args = array('post_parent' => null, 'posts_per_page' => 10, 'paged' => $_GET['paged'] ? $_GET['paged'] : 1, 'post_status' => 'inherit', 'post_type' => 'attachment', 'orderby' => 'title ASC, ID', 'order' => 'DESC');
    $jw_query = new WP_Query($args);
    $redir_tab = 'jwplayer';
    media_upload_header();
    $post_id = intval($_REQUEST['post_id']);
    $form_action_url = admin_url("media-upload.php?type={$type}&tab=jwplayer&post_id={$post_id}");
    $form_action_url = apply_filters('media_upload_form_url', $form_action_url, $type);
    $playlists = jwplayer_get_playlists();
    if (isset($_POST[LONGTAIL_KEY . "playlist_create"]) || isset($_POST["save"])) {
        $post_title = $_POST[LONGTAIL_KEY . "playlist_name"];
        $new_playlist = array();
        $new_playlist["post_title"] = $post_title;
        $new_playlist["post_type"] = "jw_playlist";
        $new_playlist["post_status"] = null;
        $new_playlist["post_parent"] = null;
        $new_playlist_id = -1;
        if (isset($_POST["save"])) {
            $new_playlist_id = isset($_POST[LONGTAIL_KEY . "playlist_select"]) ? $_POST[LONGTAIL_KEY . "playlist_select"] : $playlists[0]->ID;
        } else {
            $new_playlist_id = wp_insert_post($new_playlist);
            $playlists = jwplayer_get_playlists();
        }
        $current_playlist = $new_playlist_id;
    } else {
        if (isset($_POST["delete"])) {
            wp_delete_post($_POST[LONGTAIL_KEY . "playlist_select"]);
            $playlists = jwplayer_get_playlists();
            $current_playlist = $playlists[0]->ID;
        }
    }
    if (!isset($current_playlist)) {
        if (isset($_POST[LONGTAIL_KEY . "playlist_select"])) {
            $current_playlist = $_POST[LONGTAIL_KEY . "playlist_select"];
        } else {
            if (isset($_GET["playlist"])) {
                $current_playlist = $_GET["playlist"];
            } else {
                $current_playlist = $playlists[0]->ID;
            }
        }
    }
    if (isset($_GET["p_items"])) {
        $p_items = json_decode(str_replace("\\", "", $_GET["p_items"]));
    } else {
        if (isset($_POST["playlist_items"]) && $_POST["old_playlist"] == $current_playlist) {
            $p_items = json_decode(str_replace("\\", "", $_POST["playlist_items"]));
        } else {
            $p_items = explode(",", get_post_meta($current_playlist, LONGTAIL_KEY . "playlist_items", true));
        }
    }
    update_post_meta($new_playlist_id, LONGTAIL_KEY . "playlist_items", implode(",", $p_items));
    echo '<link rel="stylesheet" href="' . WP_PLUGIN_URL . '/' . plugin_basename(dirname(dirname(__FILE__))) . '/' . 'css/playlist.css" type="text/css" media="print, projection, screen" />' . "\n";
    echo '<script type=text/javascript src="' . WP_PLUGIN_URL . '/' . plugin_basename(dirname(__FILE__)) . '/' . 'js/playlist.js"></script>' . "\n";
    ?>

<script type="text/javascript">

  jQuery(function($){
    var desc = false;
    var preloaded = $(".media-item.preloaded");
    if ( preloaded.length > 0 ) {
      preloaded.each(function(){prepareMediaItem({id:this.id.replace(/[^0-9]/g, '')},'');});
      updateMediaForm();
    }
    var playlistPreloaded = $(".playlist-item.preloaded");
    if ( playlistPreloaded.length > 0 ) {
      playlistPreloaded.each(function(){preparePlaylistItem({id:this.id.replace(/[^0-9]/g, '')},'');});
      updatePlaylistForm();
    }
    $('#playlist-items').sortable( {
			items: 'div.playlist-item',
			placeholder: 'sorthelper',
			axis: 'y',
			distance: 2,
			handle: 'div.filename',
			stop: function(e, ui) {
				// When an update has occurred, adjust the order for each item
        var item_list = document.getElementById("playlist_items");
        var p_items = new Array();
        var old_p_items =  eval('(' + item_list.value + ')');
        if (old_p_items[0] == "") {old_p_items = new Array();}
				var all = $('#playlist-items').sortable('toArray'), len = all.length;
				$.each(all, function(i, id) {
					var order = desc ? (len - i) : (1 + i);
					$('#' + id + ' .menu_order input').val(order);
          p_items.push(id.replace("playlist-item-", ""));
				});
        update_page_numbers(p_items, old_p_items);
        document.getElementById("playlist_items").value = dump(p_items);
			}
		} );
  });

  function insertPlaylist() {
    var s;
    var playlist_dropdown = document.getElementById("<?php 
    echo LONGTAIL_KEY . "playlist_select";
    ?>
");
    var player_dropdown = document.getElementById("<?php 
    echo LONGTAIL_KEY . "player_select";
    ?>
");
    s = "[jwplayer ";
    if (player_dropdown.value != "Default") {
      s += "config=\"" + player_dropdown.value + "\" ";
    }
    s += "playlistid=\"" + playlist_dropdown.value + "\"]";
    getJWWin().send_to_editor(s);
    return;
  }

  function getJWWin() {
    return window.dialogArguments || opener || parent || top;
  }

  function deletePlaylistHandler() {
    return confirm("Are you sure wish to delete the Playlist?");
  }

  function createPlaylistHandler() {
    var playlistName = document.forms[0]["<?php 
    echo LONGTAIL_KEY . "playlist_name";
    ?>
"];
    if (playlistName.value == "") {
      alert("Your playlist must have a valid name.");
      return false;
    }
    return true;
  }

  function updatePlaylist(object) {
    var item_list = document.getElementById("playlist_items");
    var p_items = eval('(' + item_list.value + ')');
    if (p_items[0] == "") {p_items = new Array();}
    var old_p_items =  eval('(' + item_list.value + ')');
    if (old_p_items[0] == "") {old_p_items = new Array();}
    var playlist_check = object.id.indexOf("playlist_") > -1;
    var attachment_id = "";
    attachment_id = playlist_check ? object.id.replace("playlist_", "") : object.id;
    attachment_id = attachment_id.replace("attachments[", "").replace("][enabled]", "");
    if (object != null && object.checked === true) {
      p_items.push(attachment_id);
      update_checks(attachment_id, playlist_check, true);
    } else {
      var i = 0;
      for (i=0; i < p_items.length; i++) {
        if (p_items[i] == attachment_id) {
          break;
        }
      }
      update_checks(attachment_id, playlist_check, false);
      p_items.splice(i, 1);
    }
    update_page_numbers(p_items, old_p_items);
    item_list.value = dump(p_items);
  }

  function update_page_numbers(p_items, old_p_items) {
    var pages = jQuery(".page-numbers");
    var j = 0;
    for (j = 0; j < pages.length; j++) {
      var page = pages[j];
      if (page.href) {
        page.href = page.href.replace(encodeURI("&p_items=" + dump(old_p_items)), "");
        page.href = page.href + encodeURI("&p_items=" + dump(p_items));
      }
    }
  }

  function update_checks(attachment_id, playlist_check, new_state) {
    if (playlist_check) {
      var targetBox = document.getElementById("attachments[" + attachment_id + "][enabled]");
      if (targetBox != null) {
        targetBox.checked = new_state;
      }
    }
    if (new_state) {
      var itemToAdd = jQuery("#media-item-" + attachment_id).clone();
      itemToAdd[0].id = itemToAdd[0].id.replace("media", "playlist");
      itemToAdd[0].className = itemToAdd[0].className.replace("media", "playlist");
      var input = itemToAdd.children(".menu_order").children(".menu_order_input")[0];
      input.id = "playlist_" + input.id
      input.name = "playlist_" + input.name;
      if (input != null) input.checked = true;
      itemToAdd.appendTo("#playlist-items");
    } else {
      jQuery("#playlist-item-" + attachment_id).empty().remove();
    }
  }

</script>

<form enctype="multipart/form-data" method="post" action="<?php 
    echo esc_attr($form_action_url);
    ?>
" class="media-upload-form validate" id="playlist-form" style="width: 626px;">
  <?php 
    wp_nonce_field('media-form');
    ?>
  <?php 
    //media_upload_form( $errors );
    ?>
  <div class="tablenav" style="width: 626px;">
    <?php 
    $page_links = paginate_links(array('base' => add_query_arg('paged', '%#%'), 'format' => '', 'prev_text' => __('&laquo;'), 'next_text' => __('&raquo;'), 'total' => ceil($jw_query->found_posts / 10), 'current' => $_GET['paged'] ? $_GET['paged'] : 1, 'add_args' => array('playlist' => $current_playlist)));
    if ($page_links) {
        ?>
        <div class='tablenav-pages'>
          <span style="font-size: 13px;"><?php 
        _e("Available Media:");
        ?>
</span>
          <?php 
        echo $page_links;
        ?>
        </div>
      <?php 
    }
    ?>
    <div class="alignleft actions">
      <div class="hide-if-no-js">
        <?php 
    _e("Playlist:");
    ?>
        <select onchange="this.form.submit()" id="<?php 
    echo LONGTAIL_KEY . "playlist_select";
    ?>
" name="<?php 
    echo LONGTAIL_KEY . "playlist_select";
    ?>
">
          <?php 
    foreach ($playlists as $playlist) {
        ?>
            <option value="<?php 
        echo $playlist->ID;
        ?>
" <?php 
        selected($playlist->ID, $current_playlist);
        ?>
>
              <?php 
        echo $playlist->post_title;
        ?>
            </option>
          <?php 
    }
    ?>
        </select>
        <input type="submit" class="button savebutton" name="save" id="save-all" value="<?php 
    esc_attr_e('Save');
    ?>
" />
        <input type="submit" class="button savebutton" name="delete" id="delete-all" value="<?php 
    esc_attr_e('Delete');
    ?>
" onclick="return deletePlaylistHandler()" />
        <input type="hidden" name="post_id" id="post_id" value="<?php 
    echo (int) $post_id;
    ?>
" />
        <input type="hidden" name="type" value="<?php 
    echo esc_attr($GLOBALS['type']);
    ?>
" />
        <input type="hidden" name="tab" value="<?php 
    echo esc_attr($GLOBALS['tab']);
    ?>
" />
        <input type="hidden" id="playlist_items" name="playlist_items" value='<?php 
    echo json_encode($p_items);
    ?>
' />
        <input type="hidden" id="old_playlist" name="old_playlist" value="<?php 
    echo $current_playlist;
    ?>
" />
      </div>
    </div>
  </div>

  <div id="playlist-items" style="width: 300px; float: left;" class="ui-sortable">
    <?php 
    echo get_jw_playlist_items($post_id, $errors, $current_playlist);
    ?>
  </div>

  <div id="media-items" style="width: 300px; float: right;">
    <?php 
    add_filter('attachment_fields_to_edit', 'media_post_single_attachment_fields_to_edit', 10, 2);
    ?>
    <?php 
    echo get_playlist_items($post_id, $errors, $current_playlist);
    ?>
  </div>

  <div class="clear"></div>

  <p class="ml-submit">
    <?php 
    _e("New Playlist:");
    ?>
    <input type="text" value="" name="<?php 
    echo LONGTAIL_KEY . "playlist_name";
    ?>
" />
    <input type="submit" class="button savebutton" style="" name="<?php 
    echo LONGTAIL_KEY . "playlist_create";
    ?>
" id="<?php 
    echo LONGTAIL_KEY . "playlist_create";
    ?>
" value="<?php 
    esc_attr_e("Create Playlist");
    ?>
" onclick="return createPlaylistHandler()" />
  </p>
  <p class="ml-submit" style="padding: 0em 0;">
    <?php 
    _e("Select Player:");
    ?>
    <select name="<?php 
    echo LONGTAIL_KEY . "player_select";
    ?>
" id="<?php 
    echo LONGTAIL_KEY . "player_select";
    ?>
">
      <option value="Default">Default</option>
      <?php 
    $configs = LongTailFramework::getConfigs();
    ?>
      <?php 
    if ($configs) {
        ?>
        <?php 
        foreach ($configs as $config) {
            ?>
          <?php 
            if ($config != "New Player") {
                ?>
            <option value="<?php 
                echo $config;
                ?>
"><?php 
                echo $config;
                ?>
</option>
          <?php 
            }
            ?>
        <?php 
        }
        ?>
      <?php 
    }
    ?>
    </select>
    <input type="button" class="button-primary" onmousedown="insertPlaylist();" name="insert-gallery" id="insert-gallery" value="<?php 
    esc_attr_e('Insert Playlist');
    ?>
" />
  </p>
</form>
<?php 
}
コード例 #2
0
    } else {
        if ($order_by == "post_author") {
            $author_order = $order == "desc" ? "asc" : "desc";
            $author_class = "sorted {$order}";
        } else {
            if ($order_by == "date") {
                $date_order = $order == "desc" ? "asc" : "desc";
                $date_class = "sorted {$order}";
            }
        }
    }
} else {
    $date_order = "desc";
    $date_class = "sortable desc";
}
$playlist_items = get_jw_playlist_items($p_items);
$paged = isset($_GET['paged']) ? $_GET['paged'] : 1;
$search = isset($_POST["s"]) ? $_POST["s"] : "";
$media_items = get_jw_media_items($paged, $order_by, $order, $search, $p_items);
if ($paged > 1 && !$media_items->have_posts()) {
    $paged = 1;
    $media_items = get_jw_media_items($paged, $order_by, $order, $search, $p_items);
}
$total = ceil($media_items->found_posts / 10);
$page_links = paginate_links(array('base' => add_query_arg('paged', '%#%'), 'format' => '', 'prev_text' => __('&laquo;', 'jw-player-plugin-for-wordpress'), 'next_text' => __('&raquo;', 'jw-player-plugin-for-wordpress'), 'total' => $total, 'current' => $paged, 'add_args' => array('playlist' => $current_playlist, 'orderby' => $order_by, 'order' => $order)));
function get_jw_media_items($page, $column = "date", $sort = "DESC", $search = "", $playlist_items = array())
{
    $args = array('post_parent' => null, 'posts_per_page' => 10, 'paged' => $page, 'post_status' => 'inherit', 'post_type' => 'attachment', 'orderby' => $column, 'order' => $sort, 'post__not_in' => $playlist_items, 's' => $search);
    $query = new WP_Query($args);
    return $query;
}