gyorgy@0: /* gyorgy@0: * ContextMenu Plugin gyorgy@0: * gyorgy@0: * gyorgy@0: */ gyorgy@0: gyorgy@0: gyorgy@0: mejs.MepDefaults.contextMenuItems = [ gyorgy@0: // demo of a fullscreen option gyorgy@0: { gyorgy@0: render: function(player) { gyorgy@0: gyorgy@0: // check for fullscreen plugin gyorgy@0: if (typeof player.enterFullScreen == 'undefined') gyorgy@0: return null; gyorgy@0: gyorgy@0: if (player.isFullScreen) { gyorgy@0: return "Turn off Fullscreen"; gyorgy@0: } else { gyorgy@0: return "Go Fullscreen"; gyorgy@0: } gyorgy@0: }, gyorgy@0: click: function(player) { gyorgy@0: if (player.isFullScreen) { gyorgy@0: player.exitFullScreen(); gyorgy@0: } else { gyorgy@0: player.enterFullScreen(); gyorgy@0: } gyorgy@0: } gyorgy@0: } gyorgy@0: , gyorgy@0: // demo of a mute/unmute button gyorgy@0: { gyorgy@0: render: function(player) { gyorgy@0: if (player.media.muted) { gyorgy@0: return "Unmute"; gyorgy@0: } else { gyorgy@0: return "Mute"; gyorgy@0: } gyorgy@0: }, gyorgy@0: click: function(player) { gyorgy@0: if (player.media.muted) { gyorgy@0: player.setMuted(false); gyorgy@0: } else { gyorgy@0: player.setMuted(true); gyorgy@0: } gyorgy@0: } gyorgy@0: }, gyorgy@0: // separator gyorgy@0: { gyorgy@0: isSeparator: true gyorgy@0: } gyorgy@0: , gyorgy@0: // demo of simple download video gyorgy@0: { gyorgy@0: render: function(player) { gyorgy@0: return "Download Video"; gyorgy@0: }, gyorgy@0: click: function(player) { gyorgy@0: window.location.href = player.media.currentSrc; gyorgy@0: } gyorgy@0: } gyorgy@0: gyorgy@0: ]; gyorgy@0: gyorgy@0: gyorgy@0: (function($) { gyorgy@0: gyorgy@0: gyorgy@0: gyorgy@0: MediaElementPlayer.prototype.buildcontextmenu = function(player, controls, layers, media) { gyorgy@0: gyorgy@0: // create context menu gyorgy@0: player.contextMenu = $('
') gyorgy@0: .appendTo($('body')) gyorgy@0: .hide(); gyorgy@0: gyorgy@0: // create events for showing context menu gyorgy@0: player.container.bind('contextmenu', function(e) { gyorgy@0: e.preventDefault(); gyorgy@0: player.renderContextMenu(e.clientX, e.clientY); gyorgy@0: return false; gyorgy@0: }); gyorgy@0: player.container.bind('click', function() { gyorgy@0: player.contextMenu.hide(); gyorgy@0: }); gyorgy@0: } gyorgy@0: gyorgy@0: MediaElementPlayer.prototype.renderContextMenu = function(x,y) { gyorgy@0: gyorgy@0: // alway re-render the items so that things like "turn fullscreen on" and "turn fullscreen off" are always written correctly gyorgy@0: var t = this, gyorgy@0: html = '', gyorgy@0: items = t.options.contextMenuItems; gyorgy@0: gyorgy@0: for (var i=0, il=items.length; i' + rendered + ''; gyorgy@0: } gyorgy@0: } gyorgy@0: } gyorgy@0: gyorgy@0: // position and show the context menu gyorgy@0: t.contextMenu gyorgy@0: .empty() gyorgy@0: .append($(html)) gyorgy@0: .css({top:y, left:x}) gyorgy@0: .show() gyorgy@0: gyorgy@0: // bind events gyorgy@0: t.contextMenu.find('.mejs-contextmenu-item').click(function() { gyorgy@0: // which one is this? gyorgy@0: var itemIndex = parseInt( $(this).data('itemindex'), 10 ); gyorgy@0: gyorgy@0: // perform click action gyorgy@0: t.options.contextMenuItems[itemIndex].click(t); gyorgy@0: gyorgy@0: // close gyorgy@0: t.contextMenu.hide(); gyorgy@0: }); gyorgy@0: gyorgy@0: } gyorgy@0: gyorgy@0: })(mejs.$);