묻고답하기
미디어플레이어에서 제어부 없애기에 대해 질문입니다.
2008.06.02 01:50
어제도 질문 드렸던 내용인데요. 제가 연구끝에 대략 성공은 했는데요. 모르는 부분이 있어서요.
common/common.js 에서 displayMultimedia를 수정했습니다. 적색으로 표시한 부분이 수정한 부분입니다.
function displayMultimedia(src, width, height, auto_start, flashvars, show_status_bar, show_controls) {
if(src.indexOf('files')==0) src = request_uri+src;
if(auto_start) auto_start = "true";
else auto_start = "false";
if(show_status_bar) show_status_bar = "true";
else show_status_bar = "false";
if(show_controls) show_controls = "true";
else show_controls = "false";
var clsid = "";
var codebase = "";
var html = "";
if(typeof(flashvars)=="undefined") flashvars = "";
if(/\.swf/i.test(src)) {
clsid = "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000";
codebase = "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0";
html = ""+
"<object classid=\""+clsid+"\" codebase=\""+codebase+"\" width=\""+width+"\" height=\""+height+"\" flashvars=\""+flashvars+"\">"+
"<param name=\"wmode\" value=\"transparent\" />"+
"<param name=\"allowScriptAccess\" value=\"sameDomain\" />"+
"<param name=\"movie\" value=\""+src+"\" />"+
"<param name=\"quality\" value=\"high\" />"+
"<param name=\"flashvars\" value=\""+flashvars+"\" />"+
"<embed src=\""+src+"\" autostart=\""+auto_start+"\" width=\""+width+"\" height=\""+height+"\" wmode=\"transparent\"></embed>"+
"<\/object>";
} else if(/\.flv/i.test(src)) {
html = "<embed src=\""+request_uri+"common/tpl/images/flvplayer.swf\" allowfullscreen=\"true\" autostart=\""+auto_start+"\" width=\""+width+"\" height=\""+height+"\" flashvars=\"&file="+src+"&width="+width+"&height="+height+"&autostart="+auto_start+"\" />";
} else {
html = "<embed src=\""+src+"\" autostart=\""+auto_start+"\" width=\""+width+"\" height=\""+height+"\" showcontrols=\""+show_controls+"\" showstatusbar=\""+show_status_bar+"\"></embed>";
}
document.writeln(html);
}
그리고 나서, modules/editor/components/multimedia_link/mumultimedia_link.class.php에서,
$show_status_bar = $xml_obj->attrs->show_status_bar;
if($show_status_bar!="true") $show_status_bar = "false";
else $show_status_bar = "true";
$show_controls = $xml_obj->attrs->show_controls;
if($show_controls!="true") $show_controls = "false";
else $show_controls = "true";
를 추가하고 다음의 부분을 다음으로 바꾸어 주었습니다.
return sprintf("<div><script type=\"text/javascript\">displayMultimedia(\"%s\", \"%s\",\"%s\",%s);</script></div>", $src, $width, $height, $auto_start);
return sprintf("<div><script type=\"text/javascript\">displayMultimedia(\"%s\", \"%s\", \"%s\", %s, null, %s, %s);</script></div>", $src, $width, $height,$auto_start,$show_status_bar,$show_controls);
그리고 modules/editor/components/multimedia_link/tpl/popup.html에서, 다음 부분을 추가하여 입력란을 만들어주고,
<tr>
<th scope="row">{$lang->multimedia_show_controls}</th>
<td><input type="checkbox" id="multimedia_show_controls" value="Y" /></td>
</tr> <tr>
<th scope="row">{$lang->multimedia_show_status_bar}</th>
<td><input type="checkbox" id="multimedia_show_status_bar" value="Y" /></td>
</tr>
그리고 modules/editor/components/multimedia_link/lang/en-lang.php 에 다음을 추가하였습니다.(제가 만드는 홈이 영어인지라... 요기만...)
$lang->multimedia_show_controls = "Control Panel";
$lang->multimedia_show_status_bar = "Status Bar";
그리고 modules/editor/components/multimedia_link/tpl/popup.js에서
getMultimedia() 함수에서
var show_status_bar = node.getAttribute("show_status_bar");
var show_controls = node.getAttribute("show_controls");
if(show_status_bar=="true") xGetElementById("multimedia_show_status_bar").checked = true;
if(show_controls=="true") xGetElementById("multimedia_show_controls").checked = true;
insertMultimedia(obj) 함수에서는
var show_status_bar = "false";
if(xGetElementById("multimedia_show_status_bar").checked) show_status_bar = "true";
var show_controls = "false";
if(xGetElementById("multimedia_show_controls").checked) show_controls = "true";
추가하고
var text = "<img src=\"./common/tpl/images/blank.gif\" editor_component=\"multimedia_link\" multimedia_src=\""+url+"\" width=\""+width+"\" height=\""+height+"\" style=\"display:block;width:"+width+"px;height:"+height+"px;border:2px dotted #4371B9;background:url(./modules/editor/components/multimedia_link/tpl/multimedia_link_component.gif) no-repeat center;\" auto_start=\""+auto_start+"\" show_controls=\""+show_controls+"\" show_status_bar=\""+show_status_bar+"\" alt=\""+caption+"\" />";
했습니다.
제가 궁금한것은 , modules/editor/components/multimedia_link/mumultimedia_link.class.php에서,
return sprintf("<div><script type=\"text/javascript\">displayMultimedia(\"%s\", \"%s\", \"%s\", %s,null, %s, %s);</script></div>", $src, $width, $height,$auto_start,$show_status_bar,$show_controls);
flashvars 변수에 대한 값을 지정하지 않으니까 에러가 나길래, 그냥 null이라고 적어주었습니다. 이러니까 되던데...
저렇게 넣어도 null 값이 들어가서 에러가 없어지는 건가요? 아니면 다른 방법으로 처리해야 할까요?
고수님 부탁드려요. (__)