Index: trunk/extensions/MetavidWiki/maintenance/metavid2mvWiki.inc.php |
— | — | @@ -631,12 +631,19 @@ |
632 | 632 | include_once( 'scrape_and_insert.inc.php' ); |
633 | 633 | $mvScrape = new MV_BaseScraper(); |
634 | 634 | |
635 | | - // do people query: |
636 | | - if ( $forcePerson != '' ) { |
637 | | - $res = $dbr->query( "SELECT * FROM `metavid`.`people` WHERE `name_clean` LIKE '$forcePerson'" ); |
638 | | - } else { |
639 | | - $res = $dbr->query( "SELECT * FROM `metavid`.`people`" ); |
| 635 | + //get all people from the people category |
| 636 | + $result = $dbr->select( 'categorylinks', 'cl_sortkey', array ( |
| 637 | + 'cl_to' => 'Person', |
| 638 | + '`cl_sortkey` LIKE \'%' . mysql_escape_string( $val |
| 639 | + ) . '%\' COLLATE latin1_general_ci' ), __METHOD__, array ( |
| 640 | + 'LIMIT' => $result_limit |
| 641 | + ) ); |
| 642 | + $out = ''; |
| 643 | + while ( $row = $dbr->fetchObject( $result ) ) { |
| 644 | + $person_name = $row->cl_sortkey; |
| 645 | + $person_ary[$person_name] = true; |
640 | 646 | } |
| 647 | + |
641 | 648 | if ( $dbr->numRows( $res ) == 0 ) |
642 | 649 | die( 'could not find people: ' . "\n" ); |
643 | 650 | $person_ary = array (); |
Index: trunk/extensions/MetavidWiki/includes/MV_GlobalFunctions.php |
— | — | @@ -6,7 +6,7 @@ |
7 | 7 | * for more info visit http://metavid.org/wiki/Code |
8 | 8 | * |
9 | 9 | */ |
10 | | -define( 'MV_VERSION', '1.0r46610' ); |
| 10 | +define( 'MV_VERSION', '1.0r46611' ); |
11 | 11 | |
12 | 12 | if ( !defined( 'MEDIAWIKI' ) ) die( 1 ); |
13 | 13 | |
— | — | @@ -606,6 +606,21 @@ |
607 | 607 | return sprintf( "%d:%02d:%02d", $dur['hours'], $dur['minutes'], $dur['seconds'] ); |
608 | 608 | } |
609 | 609 | } |
| 610 | +function seconds2Description( $seconds, $short=false){ |
| 611 | + $dur = time_duration_2array( $seconds ); |
| 612 | + $o=''; |
| 613 | + if( $dur['hours'] ) |
| 614 | + $o.= wfMsg('mv_hours', intval( $dur['hours']) ); |
| 615 | + if( $dur['minutes'] ){ |
| 616 | + $o.=($o!='')?' ':''; |
| 617 | + $o.= wfMsg('mv_minutes', intval( $dur['minutes']) ); |
| 618 | + } |
| 619 | + if( $short==false && $dur['seconds'] ){ |
| 620 | + $o.=($o!='')?' ':''; |
| 621 | + $o.= wfMsg('mv_seconds', intval( $dur['seconds']) ); |
| 622 | + } |
| 623 | + return $o; |
| 624 | +} |
610 | 625 | /* |
611 | 626 | * converts seconds to time unit array |
612 | 627 | */ |
Index: trunk/extensions/MetavidWiki/includes/MV_Stream.php |
— | — | @@ -99,6 +99,14 @@ |
100 | 100 | return $this->name; |
101 | 101 | } |
102 | 102 | } |
| 103 | + function getStreamStartDate(){ |
| 104 | + if( $this->date_start_time == '' ){ |
| 105 | + $this->db_load_stream(); |
| 106 | + return $this->date_start_time; |
| 107 | + }else{ |
| 108 | + return $this->date_start_time; |
| 109 | + } |
| 110 | + } |
103 | 111 | /* |
104 | 112 | * @@todo cache this!: |
105 | 113 | */ |
Index: trunk/extensions/MetavidWiki/includes/MV_MagicWords.php |
— | — | @@ -55,9 +55,12 @@ |
56 | 56 | case 'POPULARCLIPS': |
57 | 57 | return $this->getTopClips(); |
58 | 58 | break; |
| 59 | + case 'RECENTSTREAMS': |
| 60 | + return $this->getRecentStreams(); |
| 61 | + break; |
59 | 62 | case 'PERSONSPEECHES': |
60 | 63 | return $this->getPersonOut(); |
61 | | - break; |
| 64 | + break; |
62 | 65 | case 'VIDEOBILL': |
63 | 66 | return $this->getBillOut(); |
64 | 67 | break; |
Index: trunk/extensions/MetavidWiki/includes/MV_Index.php |
— | — | @@ -70,7 +70,7 @@ |
71 | 71 | $do_cat_lookup = true; |
72 | 72 | } else { |
73 | 73 | if ( SMW_VERSION >= 1.2 ) { |
74 | | - // the following is too slow to use but gennerally works: |
| 74 | + // the following is too slow to use but generally works: |
75 | 75 | // has to be rewritten with sub-queries or something more elaborate |
76 | 76 | // for now just do lookup after the fact |
77 | 77 | $do_smw_lookup = true; |
Index: trunk/extensions/MetavidWiki/includes/specials/MV_SpecialListStreams.php |
— | — | @@ -84,7 +84,7 @@ |
85 | 85 | # make sure the first letter is upper case (makeTitle() should do that) |
86 | 86 | $result->title = strtoupper( $result->title[0] ) . substr( $result->title, 1 ); |
87 | 87 | $img_url = $mvImageArchive . $result->title . '?size=icon&time=0:00:00'; |
88 | | - $img_url = MV_StreamImage::getStreamImageURL( $result->stream_id, '0:00:00', 'icon', true ); |
| 88 | + $img_url = MV_StreamImage::getStreamImageURL( $result->stream_id, '0:00:10', 'icon', true ); |
89 | 89 | $img_html = '<img src="' . htmlspecialchars( $img_url ) . '" width="80" height="60">'; |
90 | 90 | |
91 | 91 | |
Index: trunk/extensions/MetavidWiki/includes/MV_Title.php |
— | — | @@ -90,6 +90,18 @@ |
91 | 91 | if ( $sn == '' )$sn = $this->stream_name; |
92 | 92 | return ucfirst( str_replace( '_', ' ', $sn ) ); |
93 | 93 | } |
| 94 | + function getStreamNameDate(){ |
| 95 | + $d = $this->mvStream->getStreamStartDate(); |
| 96 | + if(!isset($d) || $d==0) |
| 97 | + return $this->getStreamNameText(); |
| 98 | + $sn_parts = split('_',$this->stream_name); |
| 99 | + //remove the date part of the array: |
| 100 | + array_pop( $sn_parts); |
| 101 | + foreach($sn_parts as & $sp) |
| 102 | + $sp = ucfirst($sp); |
| 103 | + $sn = (count($sn_parts)>1)? implode(' ', $sn_parts): $sp[0]; |
| 104 | + return $sn .' on '. date('M jS, Y',$d); |
| 105 | + } |
94 | 106 | /* |
95 | 107 | * makes title like db key: |
96 | 108 | */ |
Index: trunk/extensions/MetavidWiki/includes/MV_MetavidInterface/MV_MetavidInterface.php |
— | — | @@ -80,13 +80,14 @@ |
81 | 81 | |
82 | 82 | // also add prev next paging |
83 | 83 | $this->page_header = '<h1 class="videoHeader">' . |
84 | | - $this->article->mvTitle->getStreamNameText() . ' :: ' . |
| 84 | + $this->article->mvTitle->getStreamNameDate() . ' :: ' . |
85 | 85 | $this->components['MV_Tools']->stream_paging_links( 'prev' ) . |
86 | 86 | ' <span title="' . htmlspecialchars( wfMsg( 'mv_click_to_edit' ) ) . '" id="mv_stream_time">' . $this->article->mvTitle->getTimeDesc( $span_separated = true ) . '</span>' . |
87 | 87 | $this->components['MV_Tools']->stream_paging_links( 'next' ) . |
88 | | - wfMsg( 'mv_of' ) . seconds2ntp( $this->article->mvTitle->getDuration() ) . |
89 | | - '</h1>'; |
90 | | - |
| 88 | + '<br><span style="font-size:80%">'. |
| 89 | + wfMsg( 'mv_stream_length' ) . seconds2Description( $this->article->mvTitle->getDuration(), true ) . |
| 90 | + '</span></h1>'; |
| 91 | + |
91 | 92 | if($mvEnableStreamNotice){ |
92 | 93 | $wgOut->addWikiText( wfMsg('mv_warning_wiki')); |
93 | 94 | $this->page_header.=$wgOut->getHTML(); |
Index: trunk/extensions/MetavidWiki/includes/MV_MetavidInterface/MV_Navigator.php |
— | — | @@ -54,7 +54,12 @@ |
55 | 55 | $tool_tip = ''; |
56 | 56 | // print_r($row); |
57 | 57 | if ( trim( $row->Speech_by ) != '' ) { |
58 | | - $o .= wfMsg( 'mv_' . $pntype . '_speech', $sk->makeKnownLinkObj( $streamTitle, str_replace( '_', ' ', $row->Speech_by ) ) ); |
| 58 | + //check if the person has an icon: |
| 59 | + $pimg = mv_get_person_img( $row->Speech_by ); |
| 60 | + $o .= wfMsg( 'mv_' . $pntype . '_speech', $sk->makeKnownLinkObj( $streamTitle, '<img title="'.str_replace('_',' ',$row->Speech_by).'" width="40" src="' . $pimg->getURL() . '">' ) ); |
| 61 | + //$o .= wfMsg( 'mv_' . $pntype . '_speech', $sk->makeKnownLinkObj( $streamTitle, str_replace( '_', ' ', $row->Speech_by ) ) ); |
| 62 | + |
| 63 | + |
59 | 64 | // $tool_tip.= 'Speech By: '. $row->Speech_by; |
60 | 65 | } else if ( trim( $row->Bill ) != '' ) { |
61 | 66 | $o .= wfMsg( 'mv_' . $pntype . '_bill', $sk->makeKnownLinkObj( $streamTitle, str_replace( '_', ' ', $row->Bill ) ) ); |
Index: trunk/extensions/MetavidWiki/languages/MV_Messages.php |
— | — | @@ -277,8 +277,11 @@ |
278 | 278 | |
279 | 279 | 'mv_other_options' => 'Other Options', |
280 | 280 | 'mv_contextmenu_opt' => 'Enable Context Menus', |
| 281 | + 'mv_hours'=>'$1 {{PLURAL:$1|hour|hours}} ', |
| 282 | + 'mv_minutes' => '$1 {{PLURAL:$1|minute|minutes}}', |
| 283 | + 'mv_seconds' => '$1 {{PLURAL:$1|second|seconds}}', |
| 284 | + 'mv_stream_length' => 'Total Video Length: ', |
281 | 285 | |
282 | | - |
283 | 286 | 'mv_sequence_timeline' => 'Sequence timeline:', |
284 | 287 | 'mv_edit_sequence_desc_help' => 'Sequence description', |
285 | 288 | 'mv_edithelpsequence' => 'Help:Sequence_Editing', |
Index: trunk/extensions/MetavidWiki/skins/mv_embed/libAddMedia/mv_upload.js |
— | — | @@ -12,6 +12,7 @@ |
13 | 13 | gMsg['uploaded-status'] = 'Uploaded'; |
14 | 14 | gMsg['upload-select-file'] = 'Select File...'; |
15 | 15 | gMsg['wgfogg_wrong_version'] = 'You have firefogg installed but its outdated, <a href="http://firefogg.org">please upgrade</a> '; |
| 16 | +gMsg['wgfogg_waring_ogg_upload'] = 'You have selected an ogg file for conversion to ogg (this is probably unessesary). Maybe disable the video converter?'; |
16 | 17 | |
17 | 18 | var default_upload_options = { |
18 | 19 | 'target_div':'', |
— | — | @@ -98,14 +99,17 @@ |
99 | 100 | $j('#mw-upload-table .mw-input').eq(0).html('<div id="wg-base-upload">' + itd_html + '</div>'); |
100 | 101 | //add in firefogg control |
101 | 102 | $j('#wg-base-upload').after('<p id="fogg-enable-item" >' + |
102 | | - '<input style="display:none" id="fogg-video-file" name="fogg-video-file" type="button" value="Select File..">' + |
103 | | - '<span id="wgfogg_not_installed">' + |
| 103 | + '<input style="display:none" id="fogg-video-file" name="fogg-video-file" type="button" value="' + getMsg('upload-select-file') + '">' + |
| 104 | + "<span class='error' id='wgfogg_not_installed'>" + |
104 | 105 | getMsg('upload-fogg_not_installed') + |
105 | 106 | '</span>'+ |
106 | | - '<span id="wgfogg_wrong_version">'+ |
| 107 | + "<span class='error' id='wgfogg_wrong_version'>"+ |
107 | 108 | getMsg('wgfogg_wrong_version')+ |
108 | 109 | '</span>'+ |
109 | | - '<span id="wgfogg_installed" style="display:none" >'+ |
| 110 | + "<span class='error' id='wgfogg_waring_ogg_upload' style='display:none' >"+ |
| 111 | + getMsg('wgfogg_waring_ogg_upload')+ |
| 112 | + '</span>'+ |
| 113 | + "<span id='wgfogg_installed' style='display:none' >"+ |
110 | 114 | '<input id="wgEnableFirefogg" type="checkbox" name="wgEnableFirefogg" >' + |
111 | 115 | getMsg('upload-enable-converter') + |
112 | 116 | '<span><br></p>'); |
Index: trunk/extensions/MetavidWiki/skins/mv_embed/libAddMedia/firefogg.js |
— | — | @@ -8,7 +8,7 @@ |
9 | 9 | init_firefogg(); |
10 | 10 | }); |
11 | 11 | } |
12 | | -var min_firefogg_version = '0.9.2'; |
| 12 | +var min_firefogg_version = '0.9.3'; |
13 | 13 | function init_firefogg( iObj ){ |
14 | 14 | if(!iObj) |
15 | 15 | iObj = {}; |
— | — | @@ -39,7 +39,7 @@ |
40 | 40 | var fogg = new upFirefogg( iObj ); |
41 | 41 | |
42 | 42 | //do the version check: |
43 | | - var fv = fogg.ogg.version; |
| 43 | + var fv = fogg.fogg.version; |
44 | 44 | if(fv.replace(/[^0-9]/gi, '') < min_firefogg_version.replace(/[^0-9]/gi, '') ){ |
45 | 45 | e = document.getElementById('wgfogg_wrong_version'); |
46 | 46 | if(e) |
— | — | @@ -86,7 +86,7 @@ |
87 | 87 | } |
88 | 88 | } |
89 | 89 | //init the Firefogg obj |
90 | | - this.ogg = new Firefogg(); |
| 90 | + this.fogg = new Firefogg(); |
91 | 91 | }, |
92 | 92 | enable_fogg:function(){ |
93 | 93 | var _this = this; |
— | — | @@ -114,30 +114,65 @@ |
115 | 115 | }, |
116 | 116 | select_fogg:function(){ |
117 | 117 | var _this = this; |
118 | | - if(_this.ogg.selectVideo()) { |
| 118 | + if(_this.fogg.selectVideo()) { |
119 | 119 | var editForm = document.getElementById( 'mw-upload-form' ); |
120 | 120 | _this.org_onsubmit = editForm.onsubmit; |
121 | 121 | editForm.onsubmit = function return_false(){ |
122 | 122 | return false; |
123 | | - }; |
| 123 | + }; |
| 124 | + |
| 125 | + //update destination filename: |
| 126 | + if( _this.fogg.sourceFilename ){ |
| 127 | + var destFileInput = document.getElementById( 'wpDestFile'); |
| 128 | + var sf = _this.fogg.sourceFilename; |
| 129 | + |
| 130 | + var ext = ''; |
| 131 | + if( sf.lastIndexOf('.') != -1){ |
| 132 | + ext = sf.substring( sf.lastIndexOf('.')+1 ); |
| 133 | + } |
| 134 | + //set upload warning |
| 135 | + if( ext == 'ogg' || ext == 'ogv' ){ |
| 136 | + e = document.getElementById('wgfogg_waring_ogg_upload'); |
| 137 | + if(e) |
| 138 | + e.style.display='block'; |
| 139 | + return false; |
| 140 | + }else if( ext == 'avi' || ext == 'mov' || ext == 'mp4' || |
| 141 | + ext == 'mpeg' || ext == 'mpeg2' || ext == 'mpeg4' || |
| 142 | + ext == 'dv' ){ |
| 143 | + //hide ogg warning |
| 144 | + e = document.getElementById('wgfogg_waring_ogg_upload'); |
| 145 | + if(e) |
| 146 | + e.style.display='none'; |
| 147 | + sf = sf.replace(ext, 'ogg'); |
| 148 | + destFileInput.value = sf; |
| 149 | + }else{ |
| 150 | + //not ogg extension error |
| 151 | + e = document.getElementById('wgfogg_waring_bad_extension'); |
| 152 | + if(e) |
| 153 | + e.style.display='block'; |
| 154 | + } |
| 155 | + } |
124 | 156 | //set binding for "upload" button to call our transcode process |
125 | 157 | addHandler( editForm, 'submit', function() { |
126 | 158 | //check if the title and or description are empty don't let the person submit |
127 | 159 | e = document.getElementById('wpDestFile') |
128 | | - if(typeof e.value == 'undefined' || e.value=='' || e.value.substr(-4) != '.ogg') |
129 | | - return alert('destination file is empty or does not end with .ogg'); |
| 160 | + //if(typeof e.value == 'undefined' || e.value=='' || e.value.substr(-4) != '.fogg') |
| 161 | + // return alert('destination file is empty or does not end with .fogg'); |
130 | 162 | |
131 | | - e = document.getElementById('wpUploadDescription'); |
132 | | - if(e){ |
133 | | - if(typeof e.value == 'undefined' || e.value=='') |
134 | | - return alert('Description is empty'); |
135 | | - } |
| 163 | + //e = document.getElementById('wpUploadDescription'); |
| 164 | + //if(e){ |
| 165 | + // if(typeof e.value == 'undefined' || e.value=='') |
| 166 | + // return alert('Description is empty'); |
| 167 | + //} |
136 | 168 | //for commons check wpDescText1 |
137 | 169 | e = document.getElementById('wpDescText1'); |
138 | 170 | if(e){ |
139 | 171 | if(typeof e.value == 'undefined' || e.value=='') |
140 | 172 | return alert('Description is empty'); |
141 | 173 | } |
| 174 | + //get the input |
| 175 | + var formData = _this.getEditFormData( editForm ); |
| 176 | + debugger; |
142 | 177 | |
143 | 178 | //display the loader: |
144 | 179 | e = document.getElementById('dlbox-centered') |
— | — | @@ -153,54 +188,51 @@ |
154 | 189 | |
155 | 190 | //@@todo read this from the config file rather than hard code it: |
156 | 191 | var options = JSON.stringify({'maxSize': 400, 'videoBitrate': 500}); |
157 | | - _this.ogg.encode(options); |
| 192 | + _this.fogg.encode(options); |
158 | 193 | var encodingStatus = function() { |
159 | | - var status = _this.ogg.status(); |
| 194 | + var status = _this.fogg.status(); |
160 | 195 | |
161 | 196 | //update progress bar |
162 | | - _this.fogg_update_progress( _this.ogg.progress() ); |
| 197 | + _this.fogg_update_progress( _this.fogg.progress() ); |
163 | 198 | |
164 | 199 | //loop to get new status if still encoding |
165 | | - if( _this.ogg.state == 'encoding' ) { |
| 200 | + if( _this.fogg.state == 'encoding' ) { |
166 | 201 | setTimeout(encodingStatus, 500); |
167 | 202 | } |
168 | 203 | //encoding done, state can also be 'encoding failed' |
169 | | - else if ( _this.ogg.state == 'encoding done' ) { |
| 204 | + else if ( _this.fogg.state == 'encoding done' ) { |
170 | 205 | //hide the fogg-status-transcode |
171 | 206 | e = document.getElementById('fogg-status-transcode'); |
172 | 207 | e.style.display='none'; |
173 | 208 | //show the fogg-status-upload |
174 | 209 | e = document.getElementById('fogg-status-upload'); |
175 | | - e.style.display='inline'; |
176 | | - |
177 | | - //get the input |
178 | | - var data = _this.getEditFormData( editForm ); |
| 210 | + e.style.display='inline'; |
179 | 211 | |
180 | 212 | //hard code some values |
181 | | - data['wpSourceType']='file'; |
| 213 | + formData['wpSourceType']='file'; |
182 | 214 | |
183 | | - var data_str = JSON.stringify(data); |
| 215 | + var data_str = JSON.stringify( formData ); |
184 | 216 | //alert('send data:'+ data_str); |
185 | 217 | //send to the post url: |
186 | 218 | js_log('sending to:' + editForm.action); |
187 | | - _this.ogg.upload(editForm.action, 'wpUploadFile', data_str); |
| 219 | + _this.fogg.upload(editForm.action, 'wpUploadFile', data_str); |
188 | 220 | var uploadStatus = function() { |
189 | | - var status = _this.ogg.status(); |
190 | | - //js_log(' up stats: ' + status + ' p:' + _this.ogg.progress() + ' state: '+ _this.ogg.state + ' result page:' + result_page); |
| 221 | + var status = _this.fogg.status(); |
| 222 | + //js_log(' up stats: ' + status + ' p:' + _this.fogg.progress() + ' state: '+ _this.fogg.state + ' result page:' + result_page); |
191 | 223 | |
192 | 224 | //update progress bar |
193 | | - _this.fogg_update_progress( _this.ogg.progress() ); |
| 225 | + _this.fogg_update_progress( _this.fogg.progress() ); |
194 | 226 | |
195 | 227 | //loop to get new status if still uploading |
196 | | - if(_this.ogg.state == 'uploading') { |
| 228 | + if(_this.fogg.state == 'uploading') { |
197 | 229 | setTimeout(uploadStatus, 500); |
198 | 230 | } |
199 | 231 | //upload sucsefull, state can also be 'upload failed' |
200 | | - else if(_this.ogg.state == 'upload done') { |
201 | | - //js_log('upload done: ' + JSON.parse(_this.ogg.uploadstatus()).responseText); |
| 232 | + else if(_this.fogg.state == 'upload done') { |
| 233 | + //js_log('upload done: ' + JSON.parse(_this.fogg.uploadstatus()).responseText); |
202 | 234 | //@@todo handle errors same problem as #695 in mv_remote_media_search.js |
203 | 235 | //we need to add image uploading to the api rather than parse the HTML output of the pages |
204 | | - var result_page = JSON.parse(_this.ogg.uploadstatus()).responseText; |
| 236 | + var result_page = JSON.parse(_this.fogg.uploadstatus()).responseText; |
205 | 237 | var sstring = 'var wgTitle = "' + data['wpDestFile'].replace('_',' '); |
206 | 238 | if( result_page.toLowerCase().indexOf( sstring.toLowerCase() ) != -1){ |
207 | 239 | js_log('upload done got redirect found: ' +sstring + ' r:' + _this.upload_done_action); |
— | — | @@ -233,11 +265,11 @@ |
234 | 266 | } |
235 | 267 | //upload error: |
236 | 268 | else{ |
237 | | - alert('upload error: ' + _this.ogg.state); |
| 269 | + alert('upload error: ' + _this.fogg.state); |
238 | 270 | } |
239 | 271 | } |
240 | 272 | uploadStatus(); |
241 | | - }else if(_this.ogg.state == 'encoding fail'){ |
| 273 | + }else if(_this.fogg.state == 'encoding fail'){ |
242 | 274 | //@@todo error handling: |
243 | 275 | alert('encoding failed'); |
244 | 276 | } |
— | — | @@ -251,7 +283,7 @@ |
252 | 284 | } |
253 | 285 | }, |
254 | 286 | getEditFormData:function( editForm ){ |
255 | | - var data = {}; |
| 287 | + var data = {}; |
256 | 288 | //get all the form fields: |
257 | 289 | var inputs = editForm.getElementsByTagName('input'); |
258 | 290 | for(var i=0;i < inputs.length; i++){ |
— | — | @@ -278,6 +310,16 @@ |
279 | 311 | e = document.getElementById('wg-base-upload'); |
280 | 312 | if(e) e.style.display='inline'; |
281 | 313 | |
| 314 | + //hide ogg warning |
| 315 | + e = document.getElementById('wgfogg_waring_ogg_upload'); |
| 316 | + if(e) |
| 317 | + e.style.display='none'; |
| 318 | + |
| 319 | + //hide not ogg extension error |
| 320 | + e = document.getElementById('wgfogg_waring_bad_extension'); |
| 321 | + if(e) |
| 322 | + e.style.display='block'; |
| 323 | + |
282 | 324 | //hide fogg stuff |
283 | 325 | e = document.getElementById('fogg-video-file'); |
284 | 326 | if(e) e.style.display='none'; |