r44269 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r44268‎ | r44269 | r44270 >
Date:15:36, 6 December 2008
Author:dale
Status:deferred
Tags:
Comment:
updated javascript header calls

sequencer updates
* context menus
* multi-select using shift
* SequencePlayer.php minor clean up
Modified paths:
  • /trunk/extensions/MetavidWiki/includes/MV_EditSequencePage.php (added) (history)
  • /trunk/extensions/MetavidWiki/includes/MV_EditStreamPage.php (modified) (history)
  • /trunk/extensions/MetavidWiki/includes/MV_GlobalFunctions.php (modified) (history)
  • /trunk/extensions/MetavidWiki/includes/MV_Hooks.php (modified) (history)
  • /trunk/extensions/MetavidWiki/includes/MV_ImageGallery.php (modified) (history)
  • /trunk/extensions/MetavidWiki/includes/MV_MetavidInterface/MV_SequencePlayer.php (modified) (history)
  • /trunk/extensions/MetavidWiki/includes/MV_MetavidInterface/MV_SequenceTimeline.php (deleted) (history)
  • /trunk/extensions/MetavidWiki/includes/MV_MetavidInterface/MV_SequenceTools.php (modified) (history)
  • /trunk/extensions/MetavidWiki/includes/articlepages/MV_DataPage.php (modified) (history)
  • /trunk/extensions/MetavidWiki/includes/articlepages/MV_SequencePage.php (modified) (history)
  • /trunk/extensions/MetavidWiki/includes/articlepages/MV_StreamPage.php (modified) (history)
  • /trunk/extensions/MetavidWiki/includes/specials/MV_SpecialMediaSearch.php (modified) (history)
  • /trunk/extensions/MetavidWiki/languages/MV_Messages.php (modified) (history)
  • /trunk/extensions/MetavidWiki/maintenance/transcode_to_flv.php (modified) (history)
  • /trunk/extensions/MetavidWiki/skins/mv_allpages.js (modified) (history)
  • /trunk/extensions/MetavidWiki/skins/mv_embed/jquery/plugins/images (added) (history)
  • /trunk/extensions/MetavidWiki/skins/mv_embed/jquery/plugins/images/cut.png (added) (history)
  • /trunk/extensions/MetavidWiki/skins/mv_embed/jquery/plugins/images/door.png (added) (history)
  • /trunk/extensions/MetavidWiki/skins/mv_embed/jquery/plugins/images/page_white_copy.png (added) (history)
  • /trunk/extensions/MetavidWiki/skins/mv_embed/jquery/plugins/images/page_white_delete.png (added) (history)
  • /trunk/extensions/MetavidWiki/skins/mv_embed/jquery/plugins/images/page_white_edit.png (added) (history)
  • /trunk/extensions/MetavidWiki/skins/mv_embed/jquery/plugins/images/page_white_paste.png (added) (history)
  • /trunk/extensions/MetavidWiki/skins/mv_embed/jquery/plugins/jquery.contextMenu.css (added) (history)
  • /trunk/extensions/MetavidWiki/skins/mv_embed/jquery/plugins/jquery.contextMenu.js (added) (history)
  • /trunk/extensions/MetavidWiki/skins/mv_embed/jquery/plugins/jqueryContextMenu.html (added) (history)
  • /trunk/extensions/MetavidWiki/skins/mv_embed/mv_embed.js (modified) (history)
  • /trunk/extensions/MetavidWiki/skins/mv_embed/mv_playlist.js (modified) (history)
  • /trunk/extensions/MetavidWiki/skins/mv_embed/mv_sequencer.js (modified) (history)
  • /trunk/extensions/MetavidWiki/skins/mv_embed/skins/mvpcf/mv_sequence.css (modified) (history)
  • /trunk/extensions/MetavidWiki/skins/mv_sequence.off.js (deleted) (history)
  • /trunk/extensions/MetavidWiki/skins/mv_sequence_page.js.off (added) (history)

Diff [purge]

Index: trunk/extensions/MetavidWiki/includes/MV_Hooks.php
@@ -217,11 +217,9 @@
218218 global $wgTitle, $wgRequest;
219219 switch( $wgTitle->getNamespace() ) {
220220 case MV_NS_SEQUENCE:
221 - /*$MvInterface = new MV_MetavidInterface('edit_sequence', $article);
222 - $MvInterface->render_full();
 221+ $editor = new MV_EditSequencePage( $article );
 222+ $editor->edit();
223223 return false;
224 - */
225 - return true;
226224 break;
227225 case MV_NS_STREAM:
228226 $editor = new MV_EditStreamPage( $article );
@@ -257,10 +255,15 @@
258256 */
259257 function mvDoMvPage ( &$title, &$article, $doOutput = true ) {
260258 global $wgOut, $wgTitle, $wgArticle;
 259+
 260+ //add js
 261+ mvAddPerNamespaceJS( $title );
 262+
 263+ //do page replace:
261264 if ( $title->getNamespace() == NS_CATEGORY ) {
262265 $article = new MV_CategoryPage( $title );
263266 } elseif ( $title->getNamespace() == MV_NS_SEQUENCE ) {
264 - $article = new MV_SequencePage( $title );
 267+ $article = new MV_SequencePage( $title );
265268 } elseif ( $title->getNamespace() == MV_NS_STREAM ) {
266269 mvDoMetavidStreamPage( $title, $article );
267270 } elseif ( $title->getNamespace() == MV_NS_MVD ) {
Index: trunk/extensions/MetavidWiki/includes/MV_MetavidInterface/MV_SequenceTimeline.php
@@ -1,18 +0,0 @@
2 -<?php
3 -/*
4 - * MV_SequenceTimeline.php Created on Nov 2, 2007
5 - *
6 - * All Metavid Wiki code is Released Under the GPL2
7 - * for more info visit http:/metavid.ucsc.edu/code
8 - *
9 - * @author Michael Dale
10 - * @email dale@ucsc.edu
11 - * @url http://metavid.ucsc.edu
12 - */
13 - if ( !defined( 'MEDIAWIKI' ) ) die( 1 );
14 - class MV_SequenceTimeline extends MV_Component {
15 - function render_menu() {
16 - return wfMsg( 'mv_sequence_timeline' );
17 - }
18 - }
19 -?>
Index: trunk/extensions/MetavidWiki/includes/MV_MetavidInterface/MV_SequencePlayer.php
@@ -13,29 +13,31 @@
1414 // make sure the parent class mv_component is included
1515
1616 class MV_SequencePlayer{
 17+ private $oldid='';
1718 function __construct( &$seqTitle ){
1819 $this->seqTitle = $seqTitle;
1920 }
2021 function getEmbedSeqHtml( $options=array() ){
2122 global $mvDefaultVideoPlaybackRes;
22 - if( $options['oldid'] )$oldid = $options['oldid'];
 23+ if( isset( $options['oldid'] ) )
 24+ $this->oldid = $options['oldid'];
2325
24 - $exportTitle = Title::MakeTitle( NS_SPECIAL, 'MvExportSequence/' . $this->seqTitle->getDBKey() );
25 - $title_url = $exportTitle->getFullURL();
26 -
27 - if ( isset( $options['oldid'] ) ) {
28 - $ss = ( strpos( $title_url, '?' ) === false ) ? '?':'&';
29 - $title_url .= $ss . 'oldid=' . htmlspecialchars( $options['oldid'] );
30 - }
31 -
3226 if ( isset( $options['size'] ) ){
3327 list($width, $height) = explode( 'x', $options['size'] );
3428 }else{
3529 list($width, $height) = explode( 'x', $mvDefaultVideoPlaybackRes);
36 - }
37 -
 30+ }
3831 return '<playlist width="' . htmlspecialchars($width) . '" height="'. htmlspecialchars($height) .'" '.
39 - 'src="' . $title_url . '"></playlist>';
 32+ 'src="' . $this->getExportUrl() . '"></playlist>';
4033 }
 34+ function getExportUrl(){
 35+ $exportTitle = Title::MakeTitle( NS_SPECIAL, 'MvExportSequence/' . $this->seqTitle->getDBKey() );
 36+ $export_url = $exportTitle->getFullURL();
 37+ if($this->oldid!=''){
 38+ $ss = ( strpos( $export_url, '?' ) === false ) ? '?':'&';
 39+ $export_url .= $ss . 'oldid=' . htmlspecialchars( $this->oldid );
 40+ }
 41+ return $export_url;
 42+ }
4143 }
4244 ?>
Index: trunk/extensions/MetavidWiki/includes/MV_MetavidInterface/MV_SequenceTools.php
@@ -123,7 +123,11 @@
124124 '<blockquote><input type="radio" value="simple_editor" name="opt_editor">' .
125125 wfMsg('mv_simple_editor_desc') . ' </blockquote>' .
126126 '<blockquote><input type="radio" value="advanced_editor" name="opt_editor">' .
127 - wfMsg('mv_advanced_editor_desc') . ' </blockquote>' );
 127+ wfMsg('mv_advanced_editor_desc') . ' </blockquote>'.
 128+ wfMsg('mv_other_options') . '<br>' .
 129+ '<blockquote><input type="checkbox" value="contextmenu_opt" name="contextmenu_opt">' .
 130+ wfMsg('mv_contextmenu_opt') . ' </blockquote>'
 131+ );
128132 }
129133 function add_transitions(){
130134 global $wgOut;
Index: trunk/extensions/MetavidWiki/includes/MV_GlobalFunctions.php
@@ -24,7 +24,7 @@
2525 $wgExtensionAliasesFiles['MetavidWiki'] = $mvgIP . '/languages/MV_Aliases.php';
2626
2727 $markerList = array();
28 -
 28+$mvGlobalJSVariables = array();
2929 // override special search page:
3030 $wgSpecialPages['Search'] = 'MV_SpecialSearch';
3131 $wgAutoloadClasses['MV_SpecialSearch'] = dirname( __FILE__ ) . '/specials/MV_SpecialMediaSearch.php';
@@ -104,9 +104,11 @@
105105 $wgAutoloadClasses['MV_Component'] = dirname( __FILE__ ) . '/MV_MetavidInterface/MV_Component.php';
106106
107107 $wgAutoloadClasses['MV_MetavidInterface'] = dirname( __FILE__ ) . '/MV_MetavidInterface/MV_MetavidInterface.php';
 108+
108109 $wgAutoloadClasses['MV_SequencePlayer'] = dirname( __FILE__ ) . '/MV_MetavidInterface/MV_SequencePlayer.php';
109110 $wgAutoloadClasses['MV_SequenceTools'] = dirname( __FILE__ ) . '/MV_MetavidInterface/MV_SequenceTools.php';
110 - $wgAutoloadClasses['MV_SequenceTimeline'] = dirname( __FILE__ ) . '/MV_MetavidInterface/MV_SequenceTimeline.php';
 111+ $wgAutoloadClasses['MV_EditSequencePage'] = dirname( __FILE__ ) . '/MV_EditSequencePage.php';
 112+
111113 $wgAutoloadClasses['MV_VideoPlayer'] = dirname( __FILE__ ) . '/MV_MetavidInterface/MV_VideoPlayer.php';
112114 $wgAutoloadClasses['MV_Tools'] = dirname( __FILE__ ) . '/MV_MetavidInterface/MV_Tools.php';
113115 $wgAutoloadClasses['MV_Navigator'] = dirname( __FILE__ ) . '/MV_MetavidInterface/MV_Navigator.php';
@@ -137,8 +139,8 @@
138140 $wgSpecialPages['Mv_Add_Stream'] = array( 'MV_SpecialCRUDStream' );
139141
140142 $wgAutoloadClasses['MV_SpecialListStreams'] = dirname( __FILE__ ) . '/specials/MV_SpecialListStreams.php';
141 - $wgSpecialPages['Mv_List_Streams'] = array( 'MV_SpecialListStreams' );
142 -
 143+ $wgSpecialPages['Mv_List_Streams'] = array( 'MV_SpecialListStreams' );
 144+
143145 /* special export views */
144146 $wgAutoloadClasses['MV_SpecialExport'] = dirname( __FILE__ ) . '/specials/MV_SpecialExport.php';
145147
@@ -181,6 +183,8 @@
182184 $wgHooks['LinkEnd'][] = 'mvLinkEnd';
183185 $wgHooks['LinkBegin'][] = 'mvLinkBegin';
184186
 187+ $wgHooks['MakeGlobalVariablesScript'][] = 'mvGlobalJSVariables';
 188+
185189 //our move function hanndles calling SMW hook
186190 foreach($wgHooks['TitleMoveComplete'] as $k=>$f){
187191 if($f=='smwfMoveHook'){
@@ -218,22 +222,24 @@
219223 * OggHandler extension overrides
220224 * if the OggHandler is included remap the object for compatibility with metavid
221225 * MV_OggHandler.php handles all the re-mapping
222 - */
223 - if($wgMediaHandlers['application/ogg'] == 'OggHandler'){
224 - $wgAutoloadClasses['mvOggHandler'] = dirname( __FILE__ ) . '/MV_OggHandler.php';
225 - $wgMediaHandlers['application/ogg']='mvOggHandler';
226 - $wgParserOutputHooks['OggHandler'] = array( 'mvOggHandler', 'outputHook' );
227 - foreach($wgHooks['LanguageGetMagic'] as & $hook_function){
228 - if($hook_function=='OggHandler::registerMagicWords'){
229 - $hook_function='mvOggHandler::registerMagicWords';
 226+ */
 227+ if(isset($wgMediaHandlers['application/ogg'])){
 228+ if($wgMediaHandlers['application/ogg'] == 'OggHandler'){
 229+ $wgAutoloadClasses['mvOggHandler'] = dirname( __FILE__ ) . '/MV_OggHandler.php';
 230+ $wgMediaHandlers['application/ogg']='mvOggHandler';
 231+ $wgParserOutputHooks['OggHandler'] = array( 'mvOggHandler', 'outputHook' );
 232+ foreach($wgHooks['LanguageGetMagic'] as & $hook_function){
 233+ if($hook_function=='OggHandler::registerMagicWords'){
 234+ $hook_function='mvOggHandler::registerMagicWords';
 235+ }
230236 }
231 - }
232 - foreach($wgExtensionCredits as & $ext){
233 - if(isset($ext['name'])){
234 - if($ext['name']=='OggHandler'){
235 - $ext['description'].=' Integrated with the <b>MetaVidWiki Extension</b>';
 237+ foreach($wgExtensionCredits as & $ext){
 238+ if(isset($ext['name'])){
 239+ if($ext['name']=='OggHandler'){
 240+ $ext['description'].=' Integrated with the <b>MetaVidWiki Extension</b>';
 241+ }
236242 }
237 - }
 243+ }
238244 }
239245 }
240246
@@ -285,7 +291,7 @@
286292 * enables linkback and autocomplete for search
287293 */
288294 function mvfAutoAllPageHeader() {
289 - global $mvgScriptPath, $wgJsMimeType, $wgOut, $mvExtraHeader;
 295+ global $mvgScriptPath, $wgJsMimeType, $wgOut, $mvExtraHeader, $wgTitle;
290296 $mvgScriptPath = htmlspecialchars( $mvgScriptPath );
291297 $wgJsMimeType = htmlspecialchars( $wgJsMimeType ) ;
292298 /* (moved to on_dom ready) but here as well*/
@@ -295,8 +301,9 @@
296302
297303 $wgOut->addScript( "<script type=\"{$wgJsMimeType}\" src=\"{$mvgScriptPath}/skins/mv_embed/mv_embed.js\"></script>" );
298304 $wgOut->addScript( "<script type=\"{$wgJsMimeType}\" src=\"{$mvgScriptPath}/skins/mv_allpages.js\"></script>" );
299 - $wgOut->addScript( "<script type=\"{$wgJsMimeType}\" src=\"{$mvgScriptPath}/skins/mv_search.js\"></script>" );
 305+ $wgOut->addScript( "<script type=\"{$wgJsMimeType}\" src=\"{$mvgScriptPath}/skins/mv_search.js\"></script>" );
300306
 307+
301308 $mvCssUrl = $mvgScriptPath . '/skins/mv_custom.css';
302309 $wgOut->addLink( array(
303310 'rel' => 'stylesheet',
@@ -307,6 +314,21 @@
308315
309316 $wgOut->addScript( $mvExtraHeader );
310317 }
 318+function mvAddPerNamespaceJS( &$title ){
 319+ global $mvgScriptPath, $wgJsMimeType, $wgOut;
 320+ if( $title->getNamespace() == MV_NS_STREAM )
 321+ $wgOut->addScript( "<script type=\"{$wgJsMimeType}\" src=\"{$mvgScriptPath}/skins/mv_stream.js\" ></script>" );
 322+}
 323+function mvAddGlobalJSVariables( $values ){
 324+ global $mvGlobalJSVariables;
 325+ $mvGlobalJSVariables = array_merge($mvGlobalJSVariables, $values); ;
 326+}
 327+function mvGlobalJSVariables( $vars ){
 328+ global $mvGlobalJSVariables;
 329+ $vars = array_merge($vars, $mvGlobalJSVariables);
 330+ return true;
 331+}
 332+
311333 /**
312334 * This method is in charge of inserting additional CSS, JScript, and meta tags
313335 * into the html header of each page. It is called by pages
@@ -316,21 +338,28 @@
317339 *
318340 * $out is the modified OutputPage.
319341 */
320 - function mvfAddHTMLHeader( $head_set = '' ) {
 342+ /*function mvfAddHTMLHeader( $head_set = '' ) {
321343 global $mvgHeadersInPlace; // record whether headers were created already (don't call mvfAddHTMLHeader twice)
322344 global $mvgArticleHeadersInPlace; // record whether article name specific headers are already there
323345 global $mvgScriptPath, $wgJsMimeType, $wgOut , $mvEnableAutoComplete, $mvEnableJSLinkBack, $mvEnableJSMVDrewrite;
324346
 347+ print "HEAD SET:$head_set ";
 348+ die;
325349 if ( !$mvgHeadersInPlace ) {
326350 // all sets use mv_common script: *not used much yet*
327351 $wgOut->addScript( "<script type=\"{$wgJsMimeType}\" src=\"{$mvgScriptPath}/skins/mv_common.js\"></script>" );
328 -
 352+ //we always want mv_embed (for metavid pages) (should be cached)
329353 if ( $head_set == 'smw_ext' || $head_set == 'search' || $head_set == 'sequence' || $head_set == 'stream_interface' || $head_set == 'embed' ) {
330354 if ( !( $mvEnableAutoComplete || $mvEnableJSLinkBack || $mvEnableJSMVDrewrite ) ) {
331355 $wgOut->addScript( "<script type=\"{$wgJsMimeType}\" src=\"{$mvgScriptPath}/skins/mv_embed/mv_embed.js\"></script>" );
332356 }
333357 }
334358
 359+ if( $head_set == 'sequence' ){
 360+ //add the sequence page helper
 361+ $wgOut->addScript( "<script type=\"{$wgJsMimeType}\" src=\"{$mvgScriptPath}/skins/mv_sequence_page.js\"></script>" );
 362+ }
 363+
335364 if ( $head_set == 'search' )
336365 $wgOut->addScript( "<script type=\"{$wgJsMimeType}\" src=\"{$mvgScriptPath}/skins/mv_search.js\"></script>" );
337366 if ( $head_set == 'sequence' )
@@ -369,7 +398,7 @@
370399 $mvgHeadersInPlace = true;
371400 }
372401 return true; // always return true, in order not to stop MW's hook processing!
373 - }
 402+ }*/
374403 /**
375404 * Init the additional namepsaces used by Metavid MediaWiki. The
376405 * parameter denotes the least unused even namespace ID that is
Index: trunk/extensions/MetavidWiki/includes/MV_EditStreamPage.php
@@ -14,8 +14,7 @@
1515 // enables inline editing of media files
1616 // enables
1717
18 - // enables "protected" metadata ie strips all
19 - // occurrences of semantic property from page (such as stream duration)
 18+ // enables "protected" metadata ie strips all occurrences of semantic property from page (such as stream duration)
2019 class MV_EditStreamPage extends EditPage {
2120 var $mv_action = '';
2221 var $status_error = '';
Index: trunk/extensions/MetavidWiki/includes/MV_ImageGallery.php
@@ -58,8 +58,6 @@
5959 }
6060 $vidH = round( $this->mWidths * $mvDefaultAspectRatio );
6161 $vidRes = $this->mWidths . 'x' . $vidH;
62 - // make sure we have the mv_embed header:
63 - mvfAddHTMLHeader( 'embed' );
6462 // print "img url: " . $mvTitle->getStreamImageURL();
6563 $thumbhtml = "\n\t\t\t" .
6664 '<div class="thumb" style="padding: 4px 0; width: ' . htmlspecialchars( $this->mWidths + 5 ) . 'px;">'
Index: trunk/extensions/MetavidWiki/includes/specials/MV_SpecialMediaSearch.php
@@ -98,8 +98,6 @@
9999 // @@todo cleaner exit
100100 // exit ();
101101 } else {
102 - // add nessesary js to wgOut:
103 - mvfAddHTMLHeader( 'search' );
104102 // add the search placeholder
105103 // $wgOut->addWikiText( wfMsg( 'searchresulttext' ) );
106104 $sk = $wgUser->getSkin();
Index: trunk/extensions/MetavidWiki/includes/articlepages/MV_SequencePage.php
@@ -23,7 +23,7 @@
2424 var $aHLRD = array(); //array representation of high level resource description
2525 function __construct( $title ) {
2626 global $wgRequest;
27 - return parent::__construct( $title );
 27+ return parent::__construct( $title );
2828 }
2929 /*
3030 * returns the xml output of the sequence with all wiki-text templates/magic words swapped out
Index: trunk/extensions/MetavidWiki/includes/articlepages/MV_DataPage.php
@@ -134,8 +134,8 @@
135135
136136 class MV_EditDataPage extends EditPage {
137137 function getPreviewText() {
138 - // enable embed video:
139 - mvfAddHTMLHeader( 'embed' );
 138+ // enable embed video: (disabled)
 139+ //mvfAddHTMLHeader( 'embed' );
140140 $html = '';
141141 $html .= '<span style="float:left;margin:10px;">';
142142 $html .= $this->mArticle->mvTitle->getEmbedVideoHtml();
Index: trunk/extensions/MetavidWiki/includes/articlepages/MV_StreamPage.php
@@ -49,7 +49,6 @@
5050 // @@TODO fix stream view() for old versions ... will likely have to replicate Article::view()
5151
5252 // include the metavid headers (for embedding video in the page)
53 - mvfAddHTMLHeader( 'stream_interface' );
5453
5554 // copied from CategoryPage ...
5655 $diff = $wgRequest->getVal( 'diff' );
@@ -65,7 +64,7 @@
6665 wfProfileIn( __METHOD__ );
6766 $MV_MetavidInterface = new MV_MetavidInterface( 'stream', $this );
6867 // will require the mv_embed script for video playback:
69 - mvfAddHTMLHeader( 'stream_interface' );
 68+ //mvfAddHTMLHeader( 'stream_interface' );
7069 $MV_MetavidInterface->render_full();
7170 wfProfileOut( __METHOD__ );
7271 }
Index: trunk/extensions/MetavidWiki/includes/MV_EditSequencePage.php
@@ -0,0 +1,38 @@
 2+<?php
 3+/*
 4+ * MV_EditSequencePage.php Created on Dec 5, 2008
 5+ *
 6+ * All Metavid Wiki code is Released Under the GPL2
 7+ * for more info visit http:/metavid.ucsc.edu/code
 8+ *
 9+ * @author Michael Dale
 10+ * @email dale@ucsc.edu
 11+ * @url http://metavid.ucsc.edu
 12+ * @url kaltura.com
 13+ */
 14+class MV_EditSequencePage extends EditPage {
 15+ function edit() {
 16+ global $wgOut, $wgUser, $wgHooks, $wgTitle;
 17+
 18+ //add some user variables
 19+ $seqPlayer = new MV_SequencePlayer( $wgTitle );
 20+ mvAddGlobalJSVariables( array( 'mvSeqExportUrl' => $seqPlayer->getExportUrl() ) );
 21+ //add the "switch" link to the top of the page
 22+ $wgOut->addHTML('<span id="swich_seq_links">
 23+ <a id="swich_seq_text"
 24+ href="javascript:mv_do_sequence_edit_swap(\'text\')">'.
 25+ wfMsg('mv_sequence_edit_text') .
 26+ '</a>' .
 27+ '<a id="switch_seq_wysiwyg" style="display:none"
 28+ href="javascript:mv_do_sequence_edit_swap(\'seq_update\')">' .
 29+ wfMsg('mv_sequence_edit_visual_editor') .
 30+ '</a>' .
 31+ '</span>'.
 32+ '<div id="seq_edit_container" style="display:none;position:relative;width:100%;height:580px;background:#AAA"></div>'
 33+ );
 34+ $wgOut->addHTML('<div id="mv_text_edit_container"> ');
 35+ parent::edit();
 36+ $wgOut->addHTML('</div>');
 37+ }
 38+}
 39+?>
\ No newline at end of file
Index: trunk/extensions/MetavidWiki/languages/MV_Messages.php
@@ -271,6 +271,13 @@
272272 'mv_sequence_add_search_desc' => 'Add clips by media search',
273273 'mv_seq_add_end' => 'Add to end of sequence',
274274
 275+ 'mv_sequence_edit_text' => 'Switch to Text Editor',
 276+ 'mv_sequence_edit_visual_editor' => 'Switch to Visual Editor',
 277+
 278+ 'mv_other_options' => 'Other Options',
 279+ 'mv_contextmenu_opt' => 'Enable Context Menus',
 280+
 281+
275282 'mv_sequence_timeline' => 'Sequence timeline:',
276283 'mv_edit_sequence_desc_help' => 'Sequence description',
277284 'mv_edithelpsequence' => 'Help:Sequence_Editing',
Index: trunk/extensions/MetavidWiki/skins/mv_sequence.off.js
@@ -1,292 +0,0 @@
2 -/*sequencer helper code */
3 -
4 -mv_addLoadEvent(setup_sequencer);
5 -mvSeq=null;
6 -function setup_sequencer(){
7 - mv_do_sequence({
8 - mv_pl_url_id:'mv_pl_url',
9 - video_container_id:'mv_video_container',
10 - sequence_tools_id:'MV_SequenceTools',
11 - timeline_id:'MV_SequenceTimeline'
12 - });
13 -}
14 -
15 -/*
16 - * similar to mv_d_ajax_form_submit in mv_stream.js
17 - * @@todo could be merged with mv_do_ajax_form_submit from mv_stream (into mv_common.js or something like that)
18 - * */
19 -function mv_do_ajax_form_submit(mvd_id, edit_action){
20 - if(mvSeq==null){
21 - js_error('sequence is not ready...');
22 - return '';
23 - }
24 - //set sajax to do a post request
25 - sajax_request_type='POST';
26 - var args = new Object();
27 - var post_vars = new Object();
28 -
29 - var form = document.getElementById('mvd_form_'+mvd_id);
30 - var buttonList = {'wpSave':true, 'wpPreview':true, 'wpLivePreview':true, 'wpDiff':true};
31 - for(i=0;i<form.elements.length;i++){
32 - if(buttonList[ form.elements[i].name ]){
33 - //don't include button unless its the edit action
34 - if(form.elements[i].name.toLowerCase().indexOf( edit_action.toLowerCase() )!=-1){
35 - post_vars[ form.elements[i].name ]=form.elements[i].value;
36 - }
37 - }else{
38 - post_vars[ form.elements[i].name ]=form.elements[i].value;
39 - }
40 - //js_log(form.elements[i].name + ' = ' + form.elements[i].value);
41 - }
42 - post_vars['inline_seq'] = mvSeq.getSeqText('inline');
43 -
44 - js_log("sending: edit action:"+ edit_action + ' url:'+ post_vars.toSource());
45 -
46 - $j('#mv_seq_edit_preview').html( global_loading_txt);
47 - uri = wgServer +
48 - ((wgServer == null) ? (wgScriptPath + "/index.php") : wgScript) +
49 - "?action=ajax";
50 - //add in mediaWiki ajax hook req
51 - uri+='&rs=mv_edit_sequence_submit';
52 - $j.post(uri, post_vars, function(data){
53 - switch(edit_action){
54 - case 'save':
55 - eval(data);
56 - if(mv_result['status']=='ok'){
57 - //wait 1 seconds to give time for defered updates
58 - setTimeout(function(){
59 - window.location.href = wgServer+
60 - ((wgServer == null) ? (wgScriptPath + "/index.php") : wgScript) +
61 - '/' + wgPageName + '?action=purge';
62 - }, 1000);
63 - }else if(mv_result['status']=='error'){
64 - $j('#mv_seq_edit_preview').html( mv_result['error_txt'] );
65 - }
66 - break;
67 - case 'preview':
68 - $j('#mv_seq_edit_preview').html(data);
69 - break;
70 - }
71 - })
72 - //do not actually submit
73 - return false;
74 -}
75 -function mv_seqtool_disp(tool_key){
76 - //hide all not part of the key
77 - $j('.mv_seq_tool').each(function(i){
78 - if(this.id!='mvseq_'+tool_key)$j(this).fadeOut("fast");
79 - });
80 - if($j('#mvseq_'+tool_key).length==0){
81 - $j('#mv_seqtool_cont').append('<div class="mv_seq_tool" id="mvseq_'+tool_key+'">' +
82 - global_loading_txt + '</div>');
83 - //do the request load the added tool
84 - uri = wgServer +
85 - ((wgServer == null) ? (wgScriptPath + "/index.php") : wgScript) +
86 - "?action=ajax";
87 - uri+='&rs=mv_seqtool_disp&rsargs[]='+tool_key;
88 - $j('#mvseq_'+tool_key).load(uri, function(){
89 - //add post hooks based on key:
90 - switch(tool_key){
91 - case 'add_clips_manual':
92 - mv_manual_hooks();
93 - break;
94 - case 'add_clips_search':
95 - mvJsLoader.doLoad({'mv_setup_search':'../mv_search.js'},function(){
96 - mv_setup_search('ajax');
97 - });
98 - break;
99 - }
100 - });
101 - }else{
102 - $j('#mvseq_'+tool_key).fadeIn("fast");
103 - }
104 -
105 -}
106 -function mv_ajax_search_callback(){
107 - js_log('mv_ajax_search_callback');
108 - //rewrite pagging with ajax
109 - $j('#mv_search_pagging a').each(function(){
110 - $j(this).attr('href', 'javascript:mv_do_ajax_search_request(\''+$j(this).attr('href')+'&seq_inline=true\')');
111 - });
112 - //$j('.mv_rtdesc').each(function(){
113 - // $j(this).prepend('<img onClick=" title="'+getMsg('add_to_end_of_sequence')+'" src="'+mv_embed_path + 'images/application_side_expand.png">');
114 - //});
115 -}
116 -//applies mv_seq manual javascript bindings
117 -function mv_manual_hooks(){
118 - js_log('mv_manual_hooks');
119 - //load empty mv_embed in #mv_seq_manual_embed
120 - //will be updated based on autocomplete and selected range of selectors
121 - //add autocomplete hook to stream_name #mv_add_stream_name
122 - uri = wgServer +
123 - ((wgServer == null) ? (wgScriptPath + "/index.php") : wgScript);
124 - $j('#mv_add_stream_name').autocomplete(
125 - uri,
126 - {
127 - autoFill:true,
128 - onItemSelect:function(v){
129 - js_log('selected:' + v.innerHTML );
130 - //unhide adjustment & add hooks (with duration) :
131 - $j('#mv_add_adj_cnt').fadeIn('fast');
132 - add_adjust_hooks('seq', $j(v).children('.mv_stream_duration').html() );
133 - //add embed video clip:
134 - var embedCode = $j(v).children('.mv_vid_embed').html();
135 - $j('#mv_seq_manual_embed').fadeIn('fast');
136 - $j('#mv_seq_manual_embed').html( embedCode );
137 -
138 - js_log("embed code:"+ $j('#mv_seq_manual_embed').html() );
139 -
140 - //base height:
141 - var mv_seq_base_height = $j('#mv_seq_manual_embed').height();
142 -
143 - //run mv_embed rewrite for the video tag:
144 - rewrite_by_id('vid_seq');
145 - var vid_seq = $j('#vid_seq').get(0);
146 - //override play action:
147 - vid_seq['old_play']= vid_seq['play'];
148 - vid_seq['old_stop']= vid_seq['stop'];
149 - vid_seq['play'] = function(){
150 - vid_seq.old_play();
151 - $j('#mv_seq_manual_embed').css('height', (mv_seq_base_height+70) +'px');
152 - js_log('height is: ' + $j('#mv_seq_manual_embed').css('height')); }
153 - vid_seq['stop']=function(){
154 - $j('#mv_seq_manual_embed').css('height',mv_seq_base_height +'px');
155 - vid_seq.old_stop();
156 - }
157 - //@@todo add_drag_drop_hook();
158 -
159 - //add a title output:
160 - $j('#mv_seq_manual_embed').append('<span id="mv_seq_player_time" class="mv_video_time_hr">0:00:00 to 0:00:30</span>');
161 - //'mv_edit_im_'+mvd_id
162 - //$j('#mv_edit_im_'+mvd_id).attr('src', $j(v).children('img').attr('src'));
163 - },
164 - formatItem:function(row){
165 - //hide the duration and embed video in there:
166 - var out = '<div style="display:none;" class="mv_stream_duration">'+row[3]+'</div>' +
167 - '<div style="display:none;" class="mv_vid_embed">'+row[4]+'</div>' +
168 - '<img width="80" height="60" src="'+ row[2] + '">'+row[1];
169 - js_log('OUT:'+ out);
170 - return out;
171 - },
172 - matchSubset:0,
173 - extraParams:{action:'ajax',rs:'mv_auto_complete_stream_name'},
174 - paramName:'rsargs[]',
175 - resultElem:'#mv_add_stream_name_choices'
176 - });
177 -
178 - //add clip adjustment hooks
179 -}
180 -function mv_add_to_seq(target){
181 - js_log('mv_add_to_seq');
182 - //add to the seq:
183 - if(mvSeq){
184 - if(target){
185 - mvSeq.addClip({
186 - track_id:0,
187 - type:'mvClip',
188 - mvclip:target.mvclip,
189 - src: target.src,
190 - img:target.img_url
191 - });
192 - }else{
193 - //do a preloaded mvSeq clip (get the src)
194 - var spos = $j('#vid_seq').get(0).thumbnail.indexOf('size=');
195 - var sepos = $j('#vid_seq').get(0).thumbnail.indexOf('&', spos);
196 - var end_img_url = (sepos!=-1)? $j('#vid_seq').get(0).thumbnail.substring(sepos):'';
197 -
198 - var img_url = (spos!=-1)?
199 - $j('#vid_seq').get(0).thumbnail.substring(0, spos) + 'size=320x240'+end_img_url:
200 - $j('#vid_seq').get(0).thumbnail;
201 - mvSeq.addClip({
202 - track_id:0,
203 - type:'mvClip',
204 - mvclip:$j('#mv_add_stream_name').val() +'?t='+ $j('#mv_start_hr_seq').val() + '/'+
205 - $j('#mv_end_hr_seq').val(),
206 - src: $j('#vid_seq').get(0).src,
207 - img:img_url
208 - });
209 - }
210 - }else{
211 - js_error("error: sequence is not present");
212 - }
213 -}
214 -//currently disabled:
215 -function add_drag_drop_hook(){
216 - /* helper: function(){
217 - $j('body').append($j(this).clone().attr({
218 - id:'img_thum_vid_seq_drag',
219 - style:'position:absolute',
220 - zindex:99
221 - }).get(0));
222 - return $j('#img_thum_vid_seq_drag').get(0);
223 - },
224 - */
225 - $j('#img_thumb_vid_seq').draggable({
226 - opacity:50,
227 - scroll:true,
228 - zindex:99,
229 - drag:function(e, ui){
230 - js_log('left: '+ui.position.left);
231 - }
232 - });
233 - //add drop targets on clips if sequence
234 - if(mvSeq){
235 - for(i in mvSeq.tracks){
236 - for(j in mvSeq.tracks[i]){
237 - clip = mvSeq.tracks[i].clips[j];
238 - $j('#track_'+i+'_clip_'+j).droppable({
239 - over:function(e, ui){
240 - $j(this).css('border-left', 'solid thick red');
241 - },
242 - out:function(e, ui){
243 - $j(this).css('border-left', 'solid thin white');
244 - },
245 - drop:function(e, ui){
246 - js_log('drop');
247 - }
248 - });
249 - }
250 - }
251 - }
252 -}
253 -function do_video_time_update(start_time, end_time){
254 - $j('#mv_seq_player_time').html( start_time + ' to ' + end_time );
255 - if(typeof embed_id=='undefined')embed_id='vid_seq';
256 - js_log('embed_id:' + embed_id + ' src:'+$j('#'+embed_id).get(0).src );
257 - if(typeof org_vid_src=='undefined')org_vid_src=$j('#'+embed_id).get(0).src;
258 - if(typeof org_thum_src=='undefined')org_thum_src=$j('#'+embed_id).get(0).thumbnail;
259 -
260 - if(org_vid_src.indexOf('?')!=-1){
261 - var url = org_vid_src.split('?');
262 - var new_vid_url = url[0] + '?t=' + start_time+'/'+end_time;
263 - //js_log("new vid url:" +new_vid_url);
264 - if(new_vid_url!=$j('#'+embed_id).attr('src'))
265 - $j('#'+embed_id).get(0).updateVideoSrc(new_vid_url);
266 - }
267 - if(org_thum_src.indexOf('?')!=-1){
268 - var url = org_thum_src.split('?');
269 - var sloc = org_thum_src.indexOf('size=');
270 - if( sloc !=-1 ){
271 - var size = '&'+ org_thum_src.substr(org_thum_src.indexOf('size=')) ;
272 - //strip additional arguments if they past size=
273 - if(size.indexOf('&')!=-1){
274 - size = size.substr(0, size.indexOf('&'));
275 - }
276 - }else{
277 - var size ='';
278 - }
279 - var new_thumb = url[0] +'?t='+ start_time +size;
280 - //js_log("new thumb:" + new_thumb);
281 - if(new_thumb!=$j('#'+embed_id).get(0).thumbnail)
282 - $j('#'+embed_id).get(0).updateThumbnail(new_thumb);
283 - }
284 - //make sure the drag hook is applied to the new thumb:
285 - //add_drag_drop_hook();
286 -}
287 -/* build_sequence_from_playlist_state()
288 - *
289 - * gets sequence tag code from the current playlist object
290 - */
291 -function build_sequence_from_playlist_state(){
292 -
293 -}
Index: trunk/extensions/MetavidWiki/skins/mv_embed/mv_sequencer.js
@@ -139,7 +139,7 @@
140140 for(var i in initObj){
141141 //js_log('on '+ i + ' :' + initObj[i]);
142142 if(sequencerDefaultValues[i]){ //make sure its a valid property
143 - this[i]=initObj[i];
 143+ this[i] = initObj[i];
144144 }
145145 }
146146 if(this.sequence_container_id==null)
@@ -150,8 +150,8 @@
151151 return js_log("Error: missing sequence_container_id");
152152
153153 //$j('#'+this.sequence_container_id).css('position', 'relative');
154 - this['base_width']=$j('#'+this.sequence_container_id).width();
155 - this['base_height']=$j('#'+this.sequence_container_id).height();
 154+ this['base_width'] = $j('#'+this.sequence_container_id).width();
 155+ this['base_height'] = $j('#'+this.sequence_container_id).height();
156156
157157
158158 //add the container divs (with basic layout ~universal~
@@ -172,8 +172,7 @@
173173
174174 js_log('set: '+this.sequence_container_id + ' html to:'+ "\n"+
175175 $j('#'+this.sequence_container_id).html()
176 - );
177 -
 176+ );
178177 //first check if we got a cloned PL object:
179178 //(when the editor is invoked with the plalylist already on the page)
180179 //@@NOT WORKING... (need a better "clone" function)
@@ -199,7 +198,7 @@
200199 $j('#'+this.video_container_id).html('<playlist ' + src_attr +
201200 ' style="width:' + this.video_width + 'px;height:' + this.video_height + 'px;" '+
202201 ' sequencer="true" id="' + this.plObj_id + '" />');
203 -
 202+
204203 rewrite_by_id( this.plObj_id );
205204 setTimeout(this.instance_name +'.checkReadyPlObj()', 25);
206205 },
@@ -323,6 +322,7 @@
324323 }).click(function(){
325324 this_seq.doAdvancedTl();
326325 });
 326+ //set up the options for context menus
327327 break;
328328 }
329329 },
@@ -734,7 +734,7 @@
735735 js_log("seq: add clip: at: "+ before_clip_pos + ' in track: ' + track_inx);
736736 var cur_pos = before_clip_pos;
737737 js_log('paste clip before_clip_pos: ' + before_clip_pos);
738 - //smilXML =
 738+ var smilXML =
739739 $j.each(clipSet, function(inx, clipInitDom){
740740 var mediaElement = document.createElement('ref');
741741 for(var i in clipInitDom){
@@ -744,7 +744,7 @@
745745 if( this_seq.plObj.tryAddMedia( mediaElement, cur_pos, track_inx ) )
746746 cur_pos++;
747747 });
748 - debugger;
 748+ //debugger;
749749 this.do_refresh_timeline();
750750 },
751751 removeClips:function( remove_clip_ary ){
@@ -984,13 +984,13 @@
985985 $j(this).addClass('mv_selected_clip');
986986 $j('#' + $j(this).parent().attr("id") + '_adj').fadeIn("fast");
987987 }
988 - //if shift select is down select the inbetween clips
 988+ //if shift select is down select the in-between clips
989989 if( this_seq.key_shift_down ){
990990 //get the min max of current selection (within the current track)
991991 var max_order = 0;
992 - var min_order = 999999999999999;
 992+ var min_order = 999999999999999;
993993 $j('.mv_selected_clip').each(function(){
994 - cur_clip = this_seq.getClipFromSeqID( $j(this).parent().attr('id') );
 994+ var cur_clip = this_seq.getClipFromSeqID( $j(this).parent().attr('id') );
995995 //get min max
996996 if(cur_clip.order < min_order)
997997 min_order = cur_clip.order;
@@ -998,21 +998,16 @@
999999 max_order = cur_clip.order;
10001000 });
10011001 //select all non-selected between max or min
1002 - js_log('sOrder: ' + sClipObj.order + ' min:' + min_order + ' max:'+ max_order);
1003 - // ( only look in the current track )
1004 - if( sClipObj.order <= min_order ){
1005 - $j('#container_track_' + sClipObj.track_id +' .mv_clip_thumb').filter(':not(.mv_selected_clip)').each(function(){
1006 - var cur_clip = this_seq.getClipFromSeqID( $j(this).parent().attr('id') );
1007 - if( cur_clip.order > sClipObj.order && cur_clip.order < max_order)
1008 - $j(this).addClass('mv_selected_clip');
1009 - });
 1002+ js_log('sOrder: ' + sClipObj.order + ' min:' + min_order + ' max:'+ max_order);
 1003+ if( sClipObj.order <= min_order ){
 1004+ for( var i = sClipObj.order; i <= max_order; i++ ){
 1005+ $j('#track_' + track_id + '_clip_' + i + ' > .mv_clip_thumb' ).addClass('mv_selected_clip');
 1006+ }
10101007 }
1011 - if( sClipObj.order >= max_order ){
1012 - $j('#container_track_' + sClipObj.track_id +' .mv_clip_thumb').filter(':not(.mv_selected_clip)').each(function(){
1013 - var cur_clip = this_seq.getClipFromSeqID( $j(this).parent().attr('id') );
1014 - if( cur_clip.order > min_order && cur_clip.order < max_order)
1015 - $j(this).addClass('mv_selected_clip');
1016 - });
 1008+ if( sClipObj.order >= max_order ){
 1009+ for( var i =min_order; i <= max_order; i++ ){
 1010+ $j('#track_' + track_id + '_clip_' + i + ' > .mv_clip_thumb' ).addClass('mv_selected_clip');
 1011+ }
10171012 }
10181013 }
10191014
@@ -1183,7 +1178,7 @@
11841179 track_inx = id_parts[1];
11851180 clip_inx = id_parts[3];
11861181 //set clip:
1187 - var clip = this.plObj.tracks[track_inx].clips[clip_inx];
 1182+ var clip = this.plObj.tracks[ track_inx ].clips[ clip_inx ];
11881183 var clip_desc ='';
11891184 //would be nice if getting the width did not flicker the border
11901185 //@@todo do a work around e in resize function has some screen based offset values
@@ -1306,7 +1301,7 @@
13071302 }
13081303
13091304 }
1310 -/* extension to mvPlayList to support smil properties */
 1305+/* extension to mvPlayList to support sequencer features properties */
13111306 var mvSeqPlayList = function( element ){
13121307 return this.init( element );
13131308 }
@@ -1326,6 +1321,9 @@
13271322 this.pl_layout.title_bar_height=0;
13281323 this.pl_layout.control_height=0;
13291324 },
 1325+ setSliderValue:function(){
 1326+
 1327+ },
13301328 getControlsHTML:function(){
13311329 //get controls from current clip add some playlist specific controls:
13321330 this.cur_clip.embed.supports['prev_next'] = true;
Index: trunk/extensions/MetavidWiki/skins/mv_embed/mv_playlist.js
@@ -118,7 +118,7 @@
119119
120120 $j('#modalbox').html('loading editor<blink>...</blink>');
121121 var _this=this;
122 - js_log("calling sequence with url:"+ _this.src);
 122+ js_log("calling sequence with url:" + _this.src);
123123
124124 //clone the playlist (to make for easy cancel)
125125 /*var this_plObj_Clone = $j('#'+this.id).get(0).cloneNode(true);
@@ -129,10 +129,7 @@
130130 //load sequencer:
131131 mv_do_sequence({
132132 "sequence_container_id":'modalbox',
133 - //@@todo we should copy over "this" playlist object
134 - //for cases where the playlist is already in the page
135 - "mv_pl_src":this.src
136 - //"plObj":this_plObj_Clone
 133+ "mv_pl_src":this.src
137134 });
138135
139136 },
Index: trunk/extensions/MetavidWiki/skins/mv_embed/jquery/plugins/jqueryContextMenu.html
@@ -0,0 +1,195 @@
 2+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
 3+
 4+<html xmlns="http://www.w3.org/1999/xhtml">
 5+
 6+ <head>
 7+ <title>jQuery Context Menu Plugin Demo</title>
 8+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
 9+
 10+ <style type="text/css">
 11+ BODY,
 12+ HTML {
 13+ padding: 0px;
 14+ margin: 0px;
 15+ }
 16+ BODY {
 17+ font-family: Verdana, Arial, Helvetica, sans-serif;
 18+ font-size: 11px;
 19+ background: #FFF;
 20+ padding: 15px;
 21+ }
 22+
 23+ H1 {
 24+ font-family: Georgia, serif;
 25+ font-size: 20px;
 26+ font-weight: normal;
 27+ }
 28+
 29+ H2 {
 30+ font-family: Georgia, serif;
 31+ font-size: 16px;
 32+ font-weight: normal;
 33+ margin: 0px 0px 10px 0px;
 34+ }
 35+
 36+ #myDiv {
 37+ width: 150px;
 38+ border: solid 1px #2AA7DE;
 39+ background: #6CC8EF;
 40+ padding: 1em .5em;
 41+ margin: 1em;
 42+ float: left;
 43+ }
 44+
 45+ #myList {
 46+ margin: 1em;
 47+ float: left;
 48+ }
 49+
 50+ #myList UL {
 51+ padding: 0px;
 52+ margin: 0em 1em;
 53+ }
 54+
 55+ #myList LI {
 56+ width: 100px;
 57+ border: solid 1px #CCC;
 58+ background: #EEE;
 59+ padding: 2px 5px;
 60+ margin: 2px 0px;
 61+ list-style: none;
 62+ }
 63+
 64+ #options {
 65+ clear: left;
 66+ }
 67+
 68+ #options INPUT {
 69+ font-family: Verdana, Arial, Helvetica, sans-serif;
 70+ font-size: 11px;
 71+ width: 150px;
 72+ }
 73+
 74+ </style>
 75+
 76+ <script src="http://abeautifulsite.net/includes/jquery.js" type="text/javascript"></script>
 77+ <script src="jquery.contextMenu.js" type="text/javascript"></script>
 78+ <link href="jquery.contextMenu.css" rel="stylesheet" type="text/css" />
 79+
 80+ <script type="text/javascript">
 81+
 82+ $(document).ready( function() {
 83+
 84+ // Show menu when #myDiv is clicked
 85+ $("#myDiv").contextMenu({
 86+ menu: 'myMenu'
 87+ },
 88+ function(action, el, pos) {
 89+ alert(
 90+ 'Action: ' + action + '\n\n' +
 91+ 'Element ID: ' + $(el).attr('id') + '\n\n' +
 92+ 'X: ' + pos.x + ' Y: ' + pos.y + ' (relative to element)\n\n' +
 93+ 'X: ' + pos.docX + ' Y: ' + pos.docY+ ' (relative to document)'
 94+ );
 95+ });
 96+
 97+ // Show menu when a list item is clicked
 98+ $("#myList UL LI").contextMenu({
 99+ menu: 'myMenu'
 100+ }, function(action, el, pos) {
 101+ alert(
 102+ 'Action: ' + action + '\n\n' +
 103+ 'Element text: ' + $(el).text() + '\n\n' +
 104+ 'X: ' + pos.x + ' Y: ' + pos.y + ' (relative to element)\n\n' +
 105+ 'X: ' + pos.docX + ' Y: ' + pos.docY+ ' (relative to document)'
 106+ );
 107+ });
 108+
 109+ // Disable menus
 110+ $("#disableMenus").click( function() {
 111+ $('#myDiv, #myList UL LI').disableContextMenu();
 112+ $(this).attr('disabled', true);
 113+ $("#enableMenus").attr('disabled', false);
 114+ });
 115+
 116+ // Enable menus
 117+ $("#enableMenus").click( function() {
 118+ $('#myDiv, #myList UL LI').enableContextMenu();
 119+ $(this).attr('disabled', true);
 120+ $("#disableMenus").attr('disabled', false);
 121+ });
 122+
 123+ // Disable cut/copy
 124+ $("#disableItems").click( function() {
 125+ $('#myMenu').disableContextMenuItems('#cut,#copy');
 126+ $(this).attr('disabled', true);
 127+ $("#enableItems").attr('disabled', false);
 128+ });
 129+
 130+ // Enable cut/copy
 131+ $("#enableItems").click( function() {
 132+ $('#myMenu').enableContextMenuItems('#cut,#copy');
 133+ $(this).attr('disabled', true);
 134+ $("#disableItems").attr('disabled', false);
 135+ });
 136+
 137+ });
 138+
 139+ </script>
 140+ </head>
 141+
 142+ <body>
 143+
 144+ <h1>jQuery Context Menu Plugin Demo</h1>
 145+ <p>
 146+ This plugin lets you add context menu functionality to your web applications.
 147+ </p>
 148+
 149+ <p>
 150+ <strong>Tip:</strong> Try using your keyboard to make a selection.
 151+ </p>
 152+
 153+ <p>
 154+ <a href="https://www.mediawiki.org/notebook.php?article=69">Back to the project page</a>
 155+ </p>
 156+
 157+ <h2>Demo</h2>
 158+
 159+ <div id="myDiv">
 160+ Right click for the standard context menu
 161+ </div>
 162+
 163+ <div id="myList">
 164+ <ul>
 165+ <li>Item 1</li>
 166+ <li>Item 2</li>
 167+ <li>Item 3</li>
 168+ <li>Item 4</li>
 169+ <li>Item 5</li>
 170+ <li>Item 6</li>
 171+ </ul>
 172+ </div>
 173+
 174+ <div id="options">
 175+ <p>
 176+ <input type="button" id="disableItems" value="Disable Cut/Copy" />
 177+ <input type="button" id="enableItems" value="Enable Cut/Copy" disabled="disabled" />
 178+ </p>
 179+
 180+ <p>
 181+ <input type="button" id="disableMenus" value="Disable Context Menus" />
 182+ <input type="button" id="enableMenus" value="Enable Context Menus" disabled="disabled" />
 183+ </p>
 184+ </div>
 185+
 186+ <ul id="myMenu" class="contextMenu">
 187+ <li class="edit"><a href="#edit">Edit</a></li>
 188+ <li class="cut separator"><a href="#cut">Cut</a></li>
 189+ <li class="copy"><a href="#copy">Copy</a></li>
 190+ <li class="paste"><a href="#paste">Paste</a></li>
 191+ <li class="delete"><a href="#delete">Delete</a></li>
 192+ <li class="quit separator"><a href="#quit">Quit</a></li>
 193+ </ul>
 194+
 195+ </body>
 196+</html>
\ No newline at end of file
Index: trunk/extensions/MetavidWiki/skins/mv_embed/jquery/plugins/jquery.contextMenu.css
@@ -0,0 +1,62 @@
 2+/* Generic context menu styles */
 3+.contextMenu {
 4+ position: absolute;
 5+ width: 120px;
 6+ z-index: 99999;
 7+ border: solid 1px #CCC;
 8+ background: #EEE;
 9+ padding: 0px;
 10+ margin: 0px;
 11+ display: none;
 12+}
 13+
 14+.contextMenu LI {
 15+ list-style: none;
 16+ padding: 0px;
 17+ margin: 0px;
 18+}
 19+
 20+.contextMenu A {
 21+ color: #333;
 22+ text-decoration: none;
 23+ display: block;
 24+ line-height: 20px;
 25+ height: 20px;
 26+ background-position: 6px center;
 27+ background-repeat: no-repeat;
 28+ outline: none;
 29+ padding: 1px 5px;
 30+ padding-left: 28px;
 31+}
 32+
 33+.contextMenu LI.hover A {
 34+ color: #FFF;
 35+ background-color: #3399FF;
 36+}
 37+
 38+.contextMenu LI.disabled A {
 39+ color: #AAA;
 40+ cursor: default;
 41+}
 42+
 43+.contextMenu LI.hover.disabled A {
 44+ background-color: transparent;
 45+}
 46+
 47+.contextMenu LI.separator {
 48+ border-top: solid 1px #CCC;
 49+}
 50+
 51+/*
 52+ Adding Icons
 53+
 54+ You can add icons to the context menu by adding
 55+ classes to the respective LI element(s)
 56+*/
 57+
 58+.contextMenu LI.edit A { background-image: url(images/page_white_edit.png); }
 59+.contextMenu LI.cut A { background-image: url(images/cut.png); }
 60+.contextMenu LI.copy A { background-image: url(images/page_white_copy.png); }
 61+.contextMenu LI.paste A { background-image: url(images/page_white_paste.png); }
 62+.contextMenu LI.delete A { background-image: url(images/page_white_delete.png); }
 63+.contextMenu LI.quit A { background-image: url(images/door.png); }
Index: trunk/extensions/MetavidWiki/skins/mv_embed/jquery/plugins/jquery.contextMenu.js
@@ -0,0 +1,211 @@
 2+// jQuery Context Menu Plugin
 3+//
 4+// Version 1.00
 5+//
 6+// Cory S.N. LaViska
 7+// A Beautiful Site (http://abeautifulsite.net/)
 8+//
 9+// Visit http://abeautifulsite.net/notebook/80 for usage and more information
 10+//
 11+// Terms of Use
 12+//
 13+// This software is licensed under a Creative Commons License and is copyrighted
 14+// (C)2008 by Cory S.N. LaViska.
 15+//
 16+// For details, visit http://creativecommons.org/licenses/by/3.0/us/
 17+//
 18+(function($){
 19+ $.extend({
 20+
 21+ contextMenu: function(o, callback) {
 22+ // Defaults
 23+ if( o.menu == undefined ) return false;
 24+ if( o.inSpeed == undefined ) o.inSpeed = 150;
 25+ if( o.outSpeed == undefined ) o.outSpeed = 75;
 26+ // 0 needs to be -1 for expected results (no fade)
 27+ if( o.inSpeed == 0 ) o.inSpeed = -1;
 28+ if( o.outSpeed == 0 ) o.outSpeed = -1;
 29+ // Loop each context menu
 30+ $(this).each( function() {
 31+ var el = $(this);
 32+ var offset = $(el).offset();
 33+ // Add contextMenu class
 34+ $('#' + o.menu).addClass('contextMenu');
 35+ // Simulate a true right click
 36+ $(this).mousedown( function(e) {
 37+ var evt = e;
 38+ $(this).mouseup( function(e) {
 39+ var srcElement = $(this);
 40+ $(this).unbind('mouseup');
 41+ if( evt.button == 2 ) {
 42+ // Hide context menus that may be showing
 43+ $(".contextMenu").hide();
 44+ // Get this context menu
 45+ var menu = $('#' + o.menu);
 46+
 47+ if( $(el).hasClass('disabled') ) return false;
 48+
 49+ // Detect mouse position
 50+ var d = {}, x, y;
 51+ if( self.innerHeight ) {
 52+ d.pageYOffset = self.pageYOffset;
 53+ d.pageXOffset = self.pageXOffset;
 54+ d.innerHeight = self.innerHeight;
 55+ d.innerWidth = self.innerWidth;
 56+ } else if( document.documentElement &&
 57+ document.documentElement.clientHeight ) {
 58+ d.pageYOffset = document.documentElement.scrollTop;
 59+ d.pageXOffset = document.documentElement.scrollLeft;
 60+ d.innerHeight = document.documentElement.clientHeight;
 61+ d.innerWidth = document.documentElement.clientWidth;
 62+ } else if( document.body ) {
 63+ d.pageYOffset = document.body.scrollTop;
 64+ d.pageXOffset = document.body.scrollLeft;
 65+ d.innerHeight = document.body.clientHeight;
 66+ d.innerWidth = document.body.clientWidth;
 67+ }
 68+ (e.pageX) ? x = e.pageX : x = e.clientX + d.scrollLeft;
 69+ (e.pageY) ? y = e.pageY : x = e.clientY + d.scrollTop;
 70+
 71+ // Show the menu
 72+ $(document).unbind('click');
 73+ $(menu).css({ top: y, left: x }).fadeIn(o.inSpeed);
 74+ // Hover events
 75+ $(menu).find('A').mouseover( function() {
 76+ $(menu).find('LI.hover').removeClass('hover');
 77+ $(this).parent().addClass('hover');
 78+ }).mouseout( function() {
 79+ $(menu).find('LI.hover').removeClass('hover');
 80+ });
 81+
 82+ // Keyboard
 83+ $(document).keypress( function(e) {
 84+ switch( e.keyCode ) {
 85+ case 38: // up
 86+ if( $(menu).find('LI.hover').size() == 0 ) {
 87+ $(menu).find('LI:last').addClass('hover');
 88+ } else {
 89+ $(menu).find('LI.hover').removeClass('hover').prevAll('LI:not(.disabled)').eq(0).addClass('hover');
 90+ if( $(menu).find('LI.hover').size() == 0 ) $(menu).find('LI:last').addClass('hover');
 91+ }
 92+ break;
 93+ case 40: // down
 94+ if( $(menu).find('LI.hover').size() == 0 ) {
 95+ $(menu).find('LI:first').addClass('hover');
 96+ } else {
 97+ $(menu).find('LI.hover').removeClass('hover').nextAll('LI:not(.disabled)').eq(0).addClass('hover');
 98+ if( $(menu).find('LI.hover').size() == 0 ) $(menu).find('LI:first').addClass('hover');
 99+ }
 100+ break;
 101+ case 13: // enter
 102+ $(menu).find('LI.hover A').trigger('click');
 103+ break;
 104+ case 27: // esc
 105+ $(document).trigger('click');
 106+ break
 107+ }
 108+ });
 109+
 110+ // When items are selected
 111+ $('#' + o.menu).find('A').unbind('click');
 112+ $('#' + o.menu).find('LI:not(.disabled) A').click( function() {
 113+ $(document).unbind('click').unbind('keypress');
 114+ $(".contextMenu").hide();
 115+ // Callback
 116+ if( callback ) callback( $(this).attr('href').substr(1), $(srcElement), {x: x - offset.left, y: y - offset.top, docX: x, docY: y} );
 117+ return false;
 118+ });
 119+
 120+ // Hide bindings
 121+ setTimeout( function() { // Delay for Mozilla
 122+ $(document).click( function() {
 123+ $(document).unbind('click').unbind('keypress');
 124+ $(menu).fadeOut(o.outSpeed);
 125+ return false;
 126+ });
 127+ }, 0);
 128+ }
 129+ });
 130+ });
 131+
 132+ // Disable text selection
 133+ if( $.browser.mozilla ) {
 134+ $('#' + o.menu).each( function() { $(this).css({ 'MozUserSelect' : 'none' }); });
 135+ } else if( $.browser.msie ) {
 136+ $('#' + o.menu).each( function() { $(this).bind('selectstart.disableTextSelect', function() { return false; }); });
 137+ } else {
 138+ $('#' + o.menu).each(function() { $(this).bind('mousedown.disableTextSelect', function() { return false; }); });
 139+ }
 140+ // Disable browser context menu (requires both selectors to work in IE/Safari + FF/Chrome)
 141+ $(el).add('UL.contextMenu').bind('contextmenu', function() { return false; });
 142+
 143+ });
 144+ return $(this);
 145+ },
 146+
 147+ // Disable context menu items on the fly
 148+ disableContextMenuItems: function(o) {
 149+ if( o == undefined ) {
 150+ // Disable all
 151+ $(this).find('LI').addClass('disabled');
 152+ return( $(this) );
 153+ }
 154+ $(this).each( function() {
 155+ if( o != undefined ) {
 156+ var d = o.split(',');
 157+ for( var i = 0; i < d.length; i++ ) {
 158+ $(this).find('A[href="' + d[i] + '"]').parent().addClass('disabled');
 159+
 160+ }
 161+ }
 162+ });
 163+ return( $(this) );
 164+ },
 165+
 166+ // Enable context menu items on the fly
 167+ enableContextMenuItems: function(o) {
 168+ if( o == undefined ) {
 169+ // Enable all
 170+ $(this).find('LI.disabled').removeClass('disabled');
 171+ return( $(this) );
 172+ }
 173+ $(this).each( function() {
 174+ if( o != undefined ) {
 175+ var d = o.split(',');
 176+ for( var i = 0; i < d.length; i++ ) {
 177+ $(this).find('A[href="' + d[i] + '"]').parent().removeClass('disabled');
 178+
 179+ }
 180+ }
 181+ });
 182+ return( $(this) );
 183+ },
 184+
 185+ // Disable context menu(s)
 186+ disableContextMenu: function() {
 187+ $(this).each( function() {
 188+ $(this).addClass('disabled');
 189+ });
 190+ return( $(this) );
 191+ },
 192+
 193+ // Enable context menu(s)
 194+ enableContextMenu: function() {
 195+ $(this).each( function() {
 196+ $(this).removeClass('disabled');
 197+ });
 198+ return( $(this) );
 199+ },
 200+
 201+ // Destroy context menu(s)
 202+ destroyContextMenu: function() {
 203+ // Destroy specified context menus
 204+ $(this).each( function() {
 205+ // Disable action
 206+ $(this).unbind('mousedown').unbind('mouseup');
 207+ });
 208+ return( $(this) );
 209+ }
 210+
 211+ });
 212+})(jQuery);
\ No newline at end of file
Index: trunk/extensions/MetavidWiki/skins/mv_embed/jquery/plugins/images/cut.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/extensions/MetavidWiki/skins/mv_embed/jquery/plugins/images/cut.png
___________________________________________________________________
Added: svn:mime-type
1213 + application/octet-stream
Index: trunk/extensions/MetavidWiki/skins/mv_embed/jquery/plugins/images/page_white_delete.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/extensions/MetavidWiki/skins/mv_embed/jquery/plugins/images/page_white_delete.png
___________________________________________________________________
Added: svn:mime-type
2214 + application/octet-stream
Index: trunk/extensions/MetavidWiki/skins/mv_embed/jquery/plugins/images/page_white_edit.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/extensions/MetavidWiki/skins/mv_embed/jquery/plugins/images/page_white_edit.png
___________________________________________________________________
Added: svn:mime-type
3215 + application/octet-stream
Index: trunk/extensions/MetavidWiki/skins/mv_embed/jquery/plugins/images/door.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/extensions/MetavidWiki/skins/mv_embed/jquery/plugins/images/door.png
___________________________________________________________________
Added: svn:mime-type
4216 + application/octet-stream
Index: trunk/extensions/MetavidWiki/skins/mv_embed/jquery/plugins/images/page_white_copy.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/extensions/MetavidWiki/skins/mv_embed/jquery/plugins/images/page_white_copy.png
___________________________________________________________________
Added: svn:mime-type
5217 + application/octet-stream
Index: trunk/extensions/MetavidWiki/skins/mv_embed/jquery/plugins/images/page_white_paste.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: trunk/extensions/MetavidWiki/skins/mv_embed/jquery/plugins/images/page_white_paste.png
___________________________________________________________________
Added: svn:mime-type
6218 + application/octet-stream
Index: trunk/extensions/MetavidWiki/skins/mv_embed/skins/mvpcf/mv_sequence.css
@@ -143,6 +143,7 @@
144144 padding:5px;
145145 margin:0px;
146146 border: solid thin gray;
 147+ cursor:pointer;
147148 }
148149 #seq_menu li a{
149150 color:#fff;
@@ -173,6 +174,7 @@
174175 }
175176 .mv_submenu li{
176177 border:solid thin gray;
 178+ cursor:pointer;
177179 }
178180 .mv_submenu .mv_sub_selected{
179181 border-right: none;
Index: trunk/extensions/MetavidWiki/skins/mv_embed/mv_embed.js
@@ -252,7 +252,7 @@
253253 for(var i=0; i < global_player_list.length; i++){
254254 if( $j('#'+global_player_list[i]).length !=0){
255255 var cur_vid = $j('#'+global_player_list[i]).get(0);
256 - is_ready = (cur_vid.ready_to_play ) ? is_ready : false;
 256+ is_ready = ( cur_vid.ready_to_play ) ? is_ready : false;
257257 if( !is_ready && cur_vid.load_error ){
258258 is_ready=true;
259259 $j(cur_vid).html( cur_vid.load_error );
@@ -1053,7 +1053,7 @@
10541054 'mvSeqPlayList':'mv_sequencer.js'
10551055 },function(){
10561056 var seqObj = new mvSeqPlayList( pl_element );
1057 - swapEmbedVideoElement( pl_element, seqObj );
 1057+ swapEmbedVideoElement( pl_element, seqObj );
10581058 }
10591059 );
10601060 }else{
@@ -1070,8 +1070,6 @@
10711071 }
10721072
10731073 function mv_do_sequence(initObj){
1074 - if(typeof mvSeq != 'undefined')
1075 - js_log('mv_do_sequence:' + typeof $j.ui.resizable);
10761074 //issue a request to get the css file (if not already included):
10771075 if(!styleSheetPresent(mv_embed_path+'skins/'+mv_skin_name+'/mv_sequence.css'))
10781076 loadExternalCss(mv_embed_path+'skins/'+mv_skin_name+'/mv_sequence.css');
@@ -1081,7 +1079,8 @@
10821080 mvJsLoader.doLoad({
10831081 'mvPlayList':'mv_playlist.js',
10841082 '$j.ui.sortable':'jquery/jquery.ui-1.5.2/ui/minified/ui.sortable.min.js',
1085 - '$j.ui.resizable':'jquery/jquery.ui-1.5.2/ui/minified/ui.resizable.min.js'
 1083+ '$j.ui.resizable':'jquery/jquery.ui-1.5.2/ui/minified/ui.resizable.min.js',
 1084+ '$j.contextMenu':'jquery/plugins/jquery.contextMenu.js'
10861085 //'$j.ui' :'jquery/jquery.ui-1.5.2/ui/minified/ui.core.min.js',
10871086 //'$j.effects':'jquery/jquery.ui-1.5.2/ui/minified/effects.core.min.js',
10881087 //'$j.effects.slide':'jquery/jquery.ui-1.5.2/ui/minified/effects.slide.min.js'
@@ -1093,7 +1092,7 @@
10941093 'mvSequencer':'mv_sequencer.js'
10951094 },function(){
10961095 //init the sequence object (it will take over from there)
1097 - mvSeq = new mvSequencer(initObj);
 1096+ _global['mvSeq'] = new mvSequencer(initObj);
10981097 });
10991098 });
11001099 });
@@ -1159,7 +1158,7 @@
11601159 embed_video.getHTML();
11611160 */
11621161 //js_log('html set:' + document.getElementById(embed_video.id).innerHTML);
1163 - js_log('done with child: ' + embed_video.id + ' len:'+global_player_list.length);
 1162+ js_log('done with child: ' + embed_video.id + ' len:' + global_player_list.length);
11641163 return true;
11651164 }
11661165 // text interface object (for inline display captions)
@@ -3012,8 +3011,9 @@
30133012 */
30143013 //simple url re-writer for standard temporal and size request urls:
30153014 function getUpdateTimeURL(url, new_time, size){
3016 - pSrc =parseUri(url);
3017 - var new_url = pSrc.protocol +'://'+ pSrc.host + pSrc.path +'?';
 3015+ var pSrc = parseUri(url);
 3016+ //debugger;
 3017+ var new_url = pSrc.protocol +'://'+ pSrc.authority + pSrc.path +'?';
30183018 var amp = '';
30193019
30203020 if(new_time && pSrc.queryKey['t'])
Index: trunk/extensions/MetavidWiki/skins/mv_allpages.js
@@ -16,11 +16,18 @@
1717
1818 var gMvd={};
1919 function mv_setup_allpage(){
20 - js_log("mv embed done loading now setup 'all page'");
21 - //make sure we have jQuery and any base requried libs:
 20+ js_log("mv embed done loading now setup 'all page'");
 21+
 22+ //make sure we have jQuery and any base required libs:
2223 mvJsLoader.doLoad(mvEmbed.lib_jquery, function(){
2324 _global['$j'] = jQuery.noConflict();
2425 js_log('allpage_ did jquery check');
 26+
 27+ //(@@todo genneralize to a script action taken by the php so its not language specifc)
 28+ if(wgCanonicalNamespace=='Sequence' && $j('#ca-edit').hasClass("selected")){
 29+ mv_do_sequence_edit_swap('seq');
 30+ }
 31+
2532 var reqLibs = {'$j.fn.autocomplete':'jquery/plugins/jquery.autocomplete.js',
2633 '$j.fn.hoverIntent':'jquery/plugins/jquery.hoverIntent.js'};
2734 mvJsLoader.doLoad(
@@ -36,6 +43,26 @@
3744 });
3845 });
3946 }
 47+function mv_do_sequence_edit_swap(mode){
 48+ if(mode=='text'){
 49+ $j('#seq_edit_container,#swich_seq_text').hide();
 50+ $j('#mv_text_edit_container,#switch_seq_wysiwyg').show();
 51+ }else if(mode=='seq' || mode=='seq_update'){
 52+ $j('#mv_text_edit_container,#switch_seq_wysiwyg').hide();
 53+ $j('#seq_edit_container,#swich_seq_text').show();
 54+ if( mode == 'seq_update' ){
 55+ js_log('do server side text parse');
 56+ //$j('#seq_edit_container').html( gMsg('loading') );
 57+ }
 58+ //check if the seq is already ready:
 59+ if( typeof _global['mvSeq'] == 'undefined' ){
 60+ mv_do_sequence({
 61+ "sequence_container_id": 'seq_edit_container',
 62+ "mv_pl_src":mvSeqExportUrl
 63+ });
 64+ }
 65+ }
 66+}
4067 function mv_page_specific_rewrites(){
4168 var mvAskTitle = 'Special:MvExportAsk';
4269 var rssImg = '<img border="0" src="'+wgScriptPath+'/extensions/MetavidWiki/skins/images/feed-icon-28x28.png"/>';
Index: trunk/extensions/MetavidWiki/skins/mv_sequence_page.js.off
@@ -0,0 +1,9 @@
 2+/*sequencer page helper code (included on all sequence namespace pages) NOT currently active*/
 3+
 4+mv_addLoadEvent(sequence_edit_check);
 5+
 6+function sequence_edit_check(){
 7+ if($j('#ca-edit').hasClass("selected")){
 8+ alert('setup sequencer swap');
 9+ }
 10+}
\ No newline at end of file
Property changes on: trunk/extensions/MetavidWiki/skins/mv_sequence_page.js.off
___________________________________________________________________
Added: svn:mergeinfo
Added: svn:eol-style
111 + native
Index: trunk/extensions/MetavidWiki/maintenance/transcode_to_flv.php
@@ -25,19 +25,18 @@
2626 //mencoder based (good)
2727 $flvEncodeCommand = 'mencoder $input -noskip -mc 0 -o $output -of lavf -oac mp3lame -lameopts abr:br=32 -ovc lavc -lavcopts vcodec=flv:vbitrate=250:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -vf scale=400:300 -srate 22050 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames';
2828
29 -if ( count( $args ) == 0 || isset ( $options['help'] ) ) {
 29+if ( isset ( $options['help'] ) ) {
3030 print<<<EOT
3131 Run transcode for HQ oggs
3232 from dir: $mvMountedSource *.HQ.ogg
3333 to dir: $mvMountedDest *.flv
3434
3535 default:
36 - only gennerates flvs where the ogg exists and a flv is missing
 36+ only generates flv where the ogg exists and a flv is missing
3737
3838 arguments:
3939 generate_new_flv // used if you do a new set flv encode (will remove old flv in place)
4040
41 -
4241 EOT;
4342 exit ();
4443 }
@@ -75,6 +74,7 @@
7675 }else{
7776 $local_fl =$mvMountedDest . $stream_name . '.flv';
7877 }
 78+ print "looking at: {$local_fl} \n";
7979 clearstatcache();
8080 if(!is_file($local_fl)){
8181 $doneWithTrascode=false;

Status & tagging log