Index: trunk/extensions/MetavidWiki/includes/MV_Hooks.php |
— | — | @@ -217,11 +217,9 @@ |
218 | 218 | global $wgTitle, $wgRequest; |
219 | 219 | switch( $wgTitle->getNamespace() ) { |
220 | 220 | 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(); |
223 | 223 | return false; |
224 | | - */ |
225 | | - return true; |
226 | 224 | break; |
227 | 225 | case MV_NS_STREAM: |
228 | 226 | $editor = new MV_EditStreamPage( $article ); |
— | — | @@ -257,10 +255,15 @@ |
258 | 256 | */ |
259 | 257 | function mvDoMvPage ( &$title, &$article, $doOutput = true ) { |
260 | 258 | global $wgOut, $wgTitle, $wgArticle; |
| 259 | + |
| 260 | + //add js |
| 261 | + mvAddPerNamespaceJS( $title ); |
| 262 | + |
| 263 | + //do page replace: |
261 | 264 | if ( $title->getNamespace() == NS_CATEGORY ) { |
262 | 265 | $article = new MV_CategoryPage( $title ); |
263 | 266 | } elseif ( $title->getNamespace() == MV_NS_SEQUENCE ) { |
264 | | - $article = new MV_SequencePage( $title ); |
| 267 | + $article = new MV_SequencePage( $title ); |
265 | 268 | } elseif ( $title->getNamespace() == MV_NS_STREAM ) { |
266 | 269 | mvDoMetavidStreamPage( $title, $article ); |
267 | 270 | } 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 @@ |
14 | 14 | // make sure the parent class mv_component is included |
15 | 15 | |
16 | 16 | class MV_SequencePlayer{ |
| 17 | + private $oldid=''; |
17 | 18 | function __construct( &$seqTitle ){ |
18 | 19 | $this->seqTitle = $seqTitle; |
19 | 20 | } |
20 | 21 | function getEmbedSeqHtml( $options=array() ){ |
21 | 22 | global $mvDefaultVideoPlaybackRes; |
22 | | - if( $options['oldid'] )$oldid = $options['oldid']; |
| 23 | + if( isset( $options['oldid'] ) ) |
| 24 | + $this->oldid = $options['oldid']; |
23 | 25 | |
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 | | - |
32 | 26 | if ( isset( $options['size'] ) ){ |
33 | 27 | list($width, $height) = explode( 'x', $options['size'] ); |
34 | 28 | }else{ |
35 | 29 | list($width, $height) = explode( 'x', $mvDefaultVideoPlaybackRes); |
36 | | - } |
37 | | - |
| 30 | + } |
38 | 31 | return '<playlist width="' . htmlspecialchars($width) . '" height="'. htmlspecialchars($height) .'" '. |
39 | | - 'src="' . $title_url . '"></playlist>'; |
| 32 | + 'src="' . $this->getExportUrl() . '"></playlist>'; |
40 | 33 | } |
| 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 | + } |
41 | 43 | } |
42 | 44 | ?> |
Index: trunk/extensions/MetavidWiki/includes/MV_MetavidInterface/MV_SequenceTools.php |
— | — | @@ -123,7 +123,11 @@ |
124 | 124 | '<blockquote><input type="radio" value="simple_editor" name="opt_editor">' . |
125 | 125 | wfMsg('mv_simple_editor_desc') . ' </blockquote>' . |
126 | 126 | '<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 | + ); |
128 | 132 | } |
129 | 133 | function add_transitions(){ |
130 | 134 | global $wgOut; |
Index: trunk/extensions/MetavidWiki/includes/MV_GlobalFunctions.php |
— | — | @@ -24,7 +24,7 @@ |
25 | 25 | $wgExtensionAliasesFiles['MetavidWiki'] = $mvgIP . '/languages/MV_Aliases.php'; |
26 | 26 | |
27 | 27 | $markerList = array(); |
28 | | - |
| 28 | +$mvGlobalJSVariables = array(); |
29 | 29 | // override special search page: |
30 | 30 | $wgSpecialPages['Search'] = 'MV_SpecialSearch'; |
31 | 31 | $wgAutoloadClasses['MV_SpecialSearch'] = dirname( __FILE__ ) . '/specials/MV_SpecialMediaSearch.php'; |
— | — | @@ -104,9 +104,11 @@ |
105 | 105 | $wgAutoloadClasses['MV_Component'] = dirname( __FILE__ ) . '/MV_MetavidInterface/MV_Component.php'; |
106 | 106 | |
107 | 107 | $wgAutoloadClasses['MV_MetavidInterface'] = dirname( __FILE__ ) . '/MV_MetavidInterface/MV_MetavidInterface.php'; |
| 108 | + |
108 | 109 | $wgAutoloadClasses['MV_SequencePlayer'] = dirname( __FILE__ ) . '/MV_MetavidInterface/MV_SequencePlayer.php'; |
109 | 110 | $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 | + |
111 | 113 | $wgAutoloadClasses['MV_VideoPlayer'] = dirname( __FILE__ ) . '/MV_MetavidInterface/MV_VideoPlayer.php'; |
112 | 114 | $wgAutoloadClasses['MV_Tools'] = dirname( __FILE__ ) . '/MV_MetavidInterface/MV_Tools.php'; |
113 | 115 | $wgAutoloadClasses['MV_Navigator'] = dirname( __FILE__ ) . '/MV_MetavidInterface/MV_Navigator.php'; |
— | — | @@ -137,8 +139,8 @@ |
138 | 140 | $wgSpecialPages['Mv_Add_Stream'] = array( 'MV_SpecialCRUDStream' ); |
139 | 141 | |
140 | 142 | $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 | + |
143 | 145 | /* special export views */ |
144 | 146 | $wgAutoloadClasses['MV_SpecialExport'] = dirname( __FILE__ ) . '/specials/MV_SpecialExport.php'; |
145 | 147 | |
— | — | @@ -181,6 +183,8 @@ |
182 | 184 | $wgHooks['LinkEnd'][] = 'mvLinkEnd'; |
183 | 185 | $wgHooks['LinkBegin'][] = 'mvLinkBegin'; |
184 | 186 | |
| 187 | + $wgHooks['MakeGlobalVariablesScript'][] = 'mvGlobalJSVariables'; |
| 188 | + |
185 | 189 | //our move function hanndles calling SMW hook |
186 | 190 | foreach($wgHooks['TitleMoveComplete'] as $k=>$f){ |
187 | 191 | if($f=='smwfMoveHook'){ |
— | — | @@ -218,22 +222,24 @@ |
219 | 223 | * OggHandler extension overrides |
220 | 224 | * if the OggHandler is included remap the object for compatibility with metavid |
221 | 225 | * 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 | + } |
230 | 236 | } |
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 | + } |
236 | 242 | } |
237 | | - } |
| 243 | + } |
238 | 244 | } |
239 | 245 | } |
240 | 246 | |
— | — | @@ -285,7 +291,7 @@ |
286 | 292 | * enables linkback and autocomplete for search |
287 | 293 | */ |
288 | 294 | function mvfAutoAllPageHeader() { |
289 | | - global $mvgScriptPath, $wgJsMimeType, $wgOut, $mvExtraHeader; |
| 295 | + global $mvgScriptPath, $wgJsMimeType, $wgOut, $mvExtraHeader, $wgTitle; |
290 | 296 | $mvgScriptPath = htmlspecialchars( $mvgScriptPath ); |
291 | 297 | $wgJsMimeType = htmlspecialchars( $wgJsMimeType ) ; |
292 | 298 | /* (moved to on_dom ready) but here as well*/ |
— | — | @@ -295,8 +301,9 @@ |
296 | 302 | |
297 | 303 | $wgOut->addScript( "<script type=\"{$wgJsMimeType}\" src=\"{$mvgScriptPath}/skins/mv_embed/mv_embed.js\"></script>" ); |
298 | 304 | $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>" ); |
300 | 306 | |
| 307 | + |
301 | 308 | $mvCssUrl = $mvgScriptPath . '/skins/mv_custom.css'; |
302 | 309 | $wgOut->addLink( array( |
303 | 310 | 'rel' => 'stylesheet', |
— | — | @@ -307,6 +314,21 @@ |
308 | 315 | |
309 | 316 | $wgOut->addScript( $mvExtraHeader ); |
310 | 317 | } |
| 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 | + |
311 | 333 | /** |
312 | 334 | * This method is in charge of inserting additional CSS, JScript, and meta tags |
313 | 335 | * into the html header of each page. It is called by pages |
— | — | @@ -316,21 +338,28 @@ |
317 | 339 | * |
318 | 340 | * $out is the modified OutputPage. |
319 | 341 | */ |
320 | | - function mvfAddHTMLHeader( $head_set = '' ) { |
| 342 | + /*function mvfAddHTMLHeader( $head_set = '' ) { |
321 | 343 | global $mvgHeadersInPlace; // record whether headers were created already (don't call mvfAddHTMLHeader twice) |
322 | 344 | global $mvgArticleHeadersInPlace; // record whether article name specific headers are already there |
323 | 345 | global $mvgScriptPath, $wgJsMimeType, $wgOut , $mvEnableAutoComplete, $mvEnableJSLinkBack, $mvEnableJSMVDrewrite; |
324 | 346 | |
| 347 | + print "HEAD SET:$head_set "; |
| 348 | + die; |
325 | 349 | if ( !$mvgHeadersInPlace ) { |
326 | 350 | // all sets use mv_common script: *not used much yet* |
327 | 351 | $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) |
329 | 353 | if ( $head_set == 'smw_ext' || $head_set == 'search' || $head_set == 'sequence' || $head_set == 'stream_interface' || $head_set == 'embed' ) { |
330 | 354 | if ( !( $mvEnableAutoComplete || $mvEnableJSLinkBack || $mvEnableJSMVDrewrite ) ) { |
331 | 355 | $wgOut->addScript( "<script type=\"{$wgJsMimeType}\" src=\"{$mvgScriptPath}/skins/mv_embed/mv_embed.js\"></script>" ); |
332 | 356 | } |
333 | 357 | } |
334 | 358 | |
| 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 | + |
335 | 364 | if ( $head_set == 'search' ) |
336 | 365 | $wgOut->addScript( "<script type=\"{$wgJsMimeType}\" src=\"{$mvgScriptPath}/skins/mv_search.js\"></script>" ); |
337 | 366 | if ( $head_set == 'sequence' ) |
— | — | @@ -369,7 +398,7 @@ |
370 | 399 | $mvgHeadersInPlace = true; |
371 | 400 | } |
372 | 401 | return true; // always return true, in order not to stop MW's hook processing! |
373 | | - } |
| 402 | + }*/ |
374 | 403 | /** |
375 | 404 | * Init the additional namepsaces used by Metavid MediaWiki. The |
376 | 405 | * parameter denotes the least unused even namespace ID that is |
Index: trunk/extensions/MetavidWiki/includes/MV_EditStreamPage.php |
— | — | @@ -14,8 +14,7 @@ |
15 | 15 | // enables inline editing of media files |
16 | 16 | // enables |
17 | 17 | |
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) |
20 | 19 | class MV_EditStreamPage extends EditPage { |
21 | 20 | var $mv_action = ''; |
22 | 21 | var $status_error = ''; |
Index: trunk/extensions/MetavidWiki/includes/MV_ImageGallery.php |
— | — | @@ -58,8 +58,6 @@ |
59 | 59 | } |
60 | 60 | $vidH = round( $this->mWidths * $mvDefaultAspectRatio ); |
61 | 61 | $vidRes = $this->mWidths . 'x' . $vidH; |
62 | | - // make sure we have the mv_embed header: |
63 | | - mvfAddHTMLHeader( 'embed' ); |
64 | 62 | // print "img url: " . $mvTitle->getStreamImageURL(); |
65 | 63 | $thumbhtml = "\n\t\t\t" . |
66 | 64 | '<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 @@ |
99 | 99 | // @@todo cleaner exit |
100 | 100 | // exit (); |
101 | 101 | } else { |
102 | | - // add nessesary js to wgOut: |
103 | | - mvfAddHTMLHeader( 'search' ); |
104 | 102 | // add the search placeholder |
105 | 103 | // $wgOut->addWikiText( wfMsg( 'searchresulttext' ) ); |
106 | 104 | $sk = $wgUser->getSkin(); |
Index: trunk/extensions/MetavidWiki/includes/articlepages/MV_SequencePage.php |
— | — | @@ -23,7 +23,7 @@ |
24 | 24 | var $aHLRD = array(); //array representation of high level resource description |
25 | 25 | function __construct( $title ) { |
26 | 26 | global $wgRequest; |
27 | | - return parent::__construct( $title ); |
| 27 | + return parent::__construct( $title ); |
28 | 28 | } |
29 | 29 | /* |
30 | 30 | * 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 @@ |
135 | 135 | |
136 | 136 | class MV_EditDataPage extends EditPage { |
137 | 137 | function getPreviewText() { |
138 | | - // enable embed video: |
139 | | - mvfAddHTMLHeader( 'embed' ); |
| 138 | + // enable embed video: (disabled) |
| 139 | + //mvfAddHTMLHeader( 'embed' ); |
140 | 140 | $html = ''; |
141 | 141 | $html .= '<span style="float:left;margin:10px;">'; |
142 | 142 | $html .= $this->mArticle->mvTitle->getEmbedVideoHtml(); |
Index: trunk/extensions/MetavidWiki/includes/articlepages/MV_StreamPage.php |
— | — | @@ -49,7 +49,6 @@ |
50 | 50 | // @@TODO fix stream view() for old versions ... will likely have to replicate Article::view() |
51 | 51 | |
52 | 52 | // include the metavid headers (for embedding video in the page) |
53 | | - mvfAddHTMLHeader( 'stream_interface' ); |
54 | 53 | |
55 | 54 | // copied from CategoryPage ... |
56 | 55 | $diff = $wgRequest->getVal( 'diff' ); |
— | — | @@ -65,7 +64,7 @@ |
66 | 65 | wfProfileIn( __METHOD__ ); |
67 | 66 | $MV_MetavidInterface = new MV_MetavidInterface( 'stream', $this ); |
68 | 67 | // will require the mv_embed script for video playback: |
69 | | - mvfAddHTMLHeader( 'stream_interface' ); |
| 68 | + //mvfAddHTMLHeader( 'stream_interface' ); |
70 | 69 | $MV_MetavidInterface->render_full(); |
71 | 70 | wfProfileOut( __METHOD__ ); |
72 | 71 | } |
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 @@ |
272 | 272 | 'mv_sequence_add_search_desc' => 'Add clips by media search', |
273 | 273 | 'mv_seq_add_end' => 'Add to end of sequence', |
274 | 274 | |
| 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 | + |
275 | 282 | 'mv_sequence_timeline' => 'Sequence timeline:', |
276 | 283 | 'mv_edit_sequence_desc_help' => 'Sequence description', |
277 | 284 | '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 @@ |
140 | 140 | for(var i in initObj){ |
141 | 141 | //js_log('on '+ i + ' :' + initObj[i]); |
142 | 142 | if(sequencerDefaultValues[i]){ //make sure its a valid property |
143 | | - this[i]=initObj[i]; |
| 143 | + this[i] = initObj[i]; |
144 | 144 | } |
145 | 145 | } |
146 | 146 | if(this.sequence_container_id==null) |
— | — | @@ -150,8 +150,8 @@ |
151 | 151 | return js_log("Error: missing sequence_container_id"); |
152 | 152 | |
153 | 153 | //$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(); |
156 | 156 | |
157 | 157 | |
158 | 158 | //add the container divs (with basic layout ~universal~ |
— | — | @@ -172,8 +172,7 @@ |
173 | 173 | |
174 | 174 | js_log('set: '+this.sequence_container_id + ' html to:'+ "\n"+ |
175 | 175 | $j('#'+this.sequence_container_id).html() |
176 | | - ); |
177 | | - |
| 176 | + ); |
178 | 177 | //first check if we got a cloned PL object: |
179 | 178 | //(when the editor is invoked with the plalylist already on the page) |
180 | 179 | //@@NOT WORKING... (need a better "clone" function) |
— | — | @@ -199,7 +198,7 @@ |
200 | 199 | $j('#'+this.video_container_id).html('<playlist ' + src_attr + |
201 | 200 | ' style="width:' + this.video_width + 'px;height:' + this.video_height + 'px;" '+ |
202 | 201 | ' sequencer="true" id="' + this.plObj_id + '" />'); |
203 | | - |
| 202 | + |
204 | 203 | rewrite_by_id( this.plObj_id ); |
205 | 204 | setTimeout(this.instance_name +'.checkReadyPlObj()', 25); |
206 | 205 | }, |
— | — | @@ -323,6 +322,7 @@ |
324 | 323 | }).click(function(){ |
325 | 324 | this_seq.doAdvancedTl(); |
326 | 325 | }); |
| 326 | + //set up the options for context menus |
327 | 327 | break; |
328 | 328 | } |
329 | 329 | }, |
— | — | @@ -734,7 +734,7 @@ |
735 | 735 | js_log("seq: add clip: at: "+ before_clip_pos + ' in track: ' + track_inx); |
736 | 736 | var cur_pos = before_clip_pos; |
737 | 737 | js_log('paste clip before_clip_pos: ' + before_clip_pos); |
738 | | - //smilXML = |
| 738 | + var smilXML = |
739 | 739 | $j.each(clipSet, function(inx, clipInitDom){ |
740 | 740 | var mediaElement = document.createElement('ref'); |
741 | 741 | for(var i in clipInitDom){ |
— | — | @@ -744,7 +744,7 @@ |
745 | 745 | if( this_seq.plObj.tryAddMedia( mediaElement, cur_pos, track_inx ) ) |
746 | 746 | cur_pos++; |
747 | 747 | }); |
748 | | - debugger; |
| 748 | + //debugger; |
749 | 749 | this.do_refresh_timeline(); |
750 | 750 | }, |
751 | 751 | removeClips:function( remove_clip_ary ){ |
— | — | @@ -984,13 +984,13 @@ |
985 | 985 | $j(this).addClass('mv_selected_clip'); |
986 | 986 | $j('#' + $j(this).parent().attr("id") + '_adj').fadeIn("fast"); |
987 | 987 | } |
988 | | - //if shift select is down select the inbetween clips |
| 988 | + //if shift select is down select the in-between clips |
989 | 989 | if( this_seq.key_shift_down ){ |
990 | 990 | //get the min max of current selection (within the current track) |
991 | 991 | var max_order = 0; |
992 | | - var min_order = 999999999999999; |
| 992 | + var min_order = 999999999999999; |
993 | 993 | $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') ); |
995 | 995 | //get min max |
996 | 996 | if(cur_clip.order < min_order) |
997 | 997 | min_order = cur_clip.order; |
— | — | @@ -998,21 +998,16 @@ |
999 | 999 | max_order = cur_clip.order; |
1000 | 1000 | }); |
1001 | 1001 | //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 | + } |
1010 | 1007 | } |
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 | + } |
1017 | 1012 | } |
1018 | 1013 | } |
1019 | 1014 | |
— | — | @@ -1183,7 +1178,7 @@ |
1184 | 1179 | track_inx = id_parts[1]; |
1185 | 1180 | clip_inx = id_parts[3]; |
1186 | 1181 | //set clip: |
1187 | | - var clip = this.plObj.tracks[track_inx].clips[clip_inx]; |
| 1182 | + var clip = this.plObj.tracks[ track_inx ].clips[ clip_inx ]; |
1188 | 1183 | var clip_desc =''; |
1189 | 1184 | //would be nice if getting the width did not flicker the border |
1190 | 1185 | //@@todo do a work around e in resize function has some screen based offset values |
— | — | @@ -1306,7 +1301,7 @@ |
1307 | 1302 | } |
1308 | 1303 | |
1309 | 1304 | } |
1310 | | -/* extension to mvPlayList to support smil properties */ |
| 1305 | +/* extension to mvPlayList to support sequencer features properties */ |
1311 | 1306 | var mvSeqPlayList = function( element ){ |
1312 | 1307 | return this.init( element ); |
1313 | 1308 | } |
— | — | @@ -1326,6 +1321,9 @@ |
1327 | 1322 | this.pl_layout.title_bar_height=0; |
1328 | 1323 | this.pl_layout.control_height=0; |
1329 | 1324 | }, |
| 1325 | + setSliderValue:function(){ |
| 1326 | + |
| 1327 | + }, |
1330 | 1328 | getControlsHTML:function(){ |
1331 | 1329 | //get controls from current clip add some playlist specific controls: |
1332 | 1330 | this.cur_clip.embed.supports['prev_next'] = true; |
Index: trunk/extensions/MetavidWiki/skins/mv_embed/mv_playlist.js |
— | — | @@ -118,7 +118,7 @@ |
119 | 119 | |
120 | 120 | $j('#modalbox').html('loading editor<blink>...</blink>'); |
121 | 121 | var _this=this; |
122 | | - js_log("calling sequence with url:"+ _this.src); |
| 122 | + js_log("calling sequence with url:" + _this.src); |
123 | 123 | |
124 | 124 | //clone the playlist (to make for easy cancel) |
125 | 125 | /*var this_plObj_Clone = $j('#'+this.id).get(0).cloneNode(true); |
— | — | @@ -129,10 +129,7 @@ |
130 | 130 | //load sequencer: |
131 | 131 | mv_do_sequence({ |
132 | 132 | "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 |
137 | 134 | }); |
138 | 135 | |
139 | 136 | }, |
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 |
1 | 213 | + 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 |
2 | 214 | + 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 |
3 | 215 | + 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 |
4 | 216 | + 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 |
5 | 217 | + 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 |
6 | 218 | + application/octet-stream |
Index: trunk/extensions/MetavidWiki/skins/mv_embed/skins/mvpcf/mv_sequence.css |
— | — | @@ -143,6 +143,7 @@ |
144 | 144 | padding:5px; |
145 | 145 | margin:0px; |
146 | 146 | border: solid thin gray; |
| 147 | + cursor:pointer; |
147 | 148 | } |
148 | 149 | #seq_menu li a{ |
149 | 150 | color:#fff; |
— | — | @@ -173,6 +174,7 @@ |
174 | 175 | } |
175 | 176 | .mv_submenu li{ |
176 | 177 | border:solid thin gray; |
| 178 | + cursor:pointer; |
177 | 179 | } |
178 | 180 | .mv_submenu .mv_sub_selected{ |
179 | 181 | border-right: none; |
Index: trunk/extensions/MetavidWiki/skins/mv_embed/mv_embed.js |
— | — | @@ -252,7 +252,7 @@ |
253 | 253 | for(var i=0; i < global_player_list.length; i++){ |
254 | 254 | if( $j('#'+global_player_list[i]).length !=0){ |
255 | 255 | 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; |
257 | 257 | if( !is_ready && cur_vid.load_error ){ |
258 | 258 | is_ready=true; |
259 | 259 | $j(cur_vid).html( cur_vid.load_error ); |
— | — | @@ -1053,7 +1053,7 @@ |
1054 | 1054 | 'mvSeqPlayList':'mv_sequencer.js' |
1055 | 1055 | },function(){ |
1056 | 1056 | var seqObj = new mvSeqPlayList( pl_element ); |
1057 | | - swapEmbedVideoElement( pl_element, seqObj ); |
| 1057 | + swapEmbedVideoElement( pl_element, seqObj ); |
1058 | 1058 | } |
1059 | 1059 | ); |
1060 | 1060 | }else{ |
— | — | @@ -1070,8 +1070,6 @@ |
1071 | 1071 | } |
1072 | 1072 | |
1073 | 1073 | function mv_do_sequence(initObj){ |
1074 | | - if(typeof mvSeq != 'undefined') |
1075 | | - js_log('mv_do_sequence:' + typeof $j.ui.resizable); |
1076 | 1074 | //issue a request to get the css file (if not already included): |
1077 | 1075 | if(!styleSheetPresent(mv_embed_path+'skins/'+mv_skin_name+'/mv_sequence.css')) |
1078 | 1076 | loadExternalCss(mv_embed_path+'skins/'+mv_skin_name+'/mv_sequence.css'); |
— | — | @@ -1081,7 +1079,8 @@ |
1082 | 1080 | mvJsLoader.doLoad({ |
1083 | 1081 | 'mvPlayList':'mv_playlist.js', |
1084 | 1082 | '$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' |
1086 | 1085 | //'$j.ui' :'jquery/jquery.ui-1.5.2/ui/minified/ui.core.min.js', |
1087 | 1086 | //'$j.effects':'jquery/jquery.ui-1.5.2/ui/minified/effects.core.min.js', |
1088 | 1087 | //'$j.effects.slide':'jquery/jquery.ui-1.5.2/ui/minified/effects.slide.min.js' |
— | — | @@ -1093,7 +1092,7 @@ |
1094 | 1093 | 'mvSequencer':'mv_sequencer.js' |
1095 | 1094 | },function(){ |
1096 | 1095 | //init the sequence object (it will take over from there) |
1097 | | - mvSeq = new mvSequencer(initObj); |
| 1096 | + _global['mvSeq'] = new mvSequencer(initObj); |
1098 | 1097 | }); |
1099 | 1098 | }); |
1100 | 1099 | }); |
— | — | @@ -1159,7 +1158,7 @@ |
1160 | 1159 | embed_video.getHTML(); |
1161 | 1160 | */ |
1162 | 1161 | //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); |
1164 | 1163 | return true; |
1165 | 1164 | } |
1166 | 1165 | // text interface object (for inline display captions) |
— | — | @@ -3012,8 +3011,9 @@ |
3013 | 3012 | */ |
3014 | 3013 | //simple url re-writer for standard temporal and size request urls: |
3015 | 3014 | 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 +'?'; |
3018 | 3018 | var amp = ''; |
3019 | 3019 | |
3020 | 3020 | if(new_time && pSrc.queryKey['t']) |
Index: trunk/extensions/MetavidWiki/skins/mv_allpages.js |
— | — | @@ -16,11 +16,18 @@ |
17 | 17 | |
18 | 18 | var gMvd={}; |
19 | 19 | 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: |
22 | 23 | mvJsLoader.doLoad(mvEmbed.lib_jquery, function(){ |
23 | 24 | _global['$j'] = jQuery.noConflict(); |
24 | 25 | 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 | + |
25 | 32 | var reqLibs = {'$j.fn.autocomplete':'jquery/plugins/jquery.autocomplete.js', |
26 | 33 | '$j.fn.hoverIntent':'jquery/plugins/jquery.hoverIntent.js'}; |
27 | 34 | mvJsLoader.doLoad( |
— | — | @@ -36,6 +43,26 @@ |
37 | 44 | }); |
38 | 45 | }); |
39 | 46 | } |
| 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 | +} |
40 | 67 | function mv_page_specific_rewrites(){ |
41 | 68 | var mvAskTitle = 'Special:MvExportAsk'; |
42 | 69 | 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 |
1 | 11 | + native |
Index: trunk/extensions/MetavidWiki/maintenance/transcode_to_flv.php |
— | — | @@ -25,19 +25,18 @@ |
26 | 26 | //mencoder based (good) |
27 | 27 | $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'; |
28 | 28 | |
29 | | -if ( count( $args ) == 0 || isset ( $options['help'] ) ) { |
| 29 | +if ( isset ( $options['help'] ) ) { |
30 | 30 | print<<<EOT |
31 | 31 | Run transcode for HQ oggs |
32 | 32 | from dir: $mvMountedSource *.HQ.ogg |
33 | 33 | to dir: $mvMountedDest *.flv |
34 | 34 | |
35 | 35 | 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 |
37 | 37 | |
38 | 38 | arguments: |
39 | 39 | generate_new_flv // used if you do a new set flv encode (will remove old flv in place) |
40 | 40 | |
41 | | - |
42 | 41 | EOT; |
43 | 42 | exit (); |
44 | 43 | } |
— | — | @@ -75,6 +74,7 @@ |
76 | 75 | }else{ |
77 | 76 | $local_fl =$mvMountedDest . $stream_name . '.flv'; |
78 | 77 | } |
| 78 | + print "looking at: {$local_fl} \n"; |
79 | 79 | clearstatcache(); |
80 | 80 | if(!is_file($local_fl)){ |
81 | 81 | $doneWithTrascode=false; |