TrexConfig.addTool(
"media",
{
wysiwygonly: _TRUE,
sync: _FALSE,
status: _FALSE
}
);
TrexMessage.addMsg({
'@media.title': "멀티미디어",
'@media.prev.url': "#iconpath/spacer2.gif?v=2",
'@media.prev.url.tvpot': "#iconpath/img_multi_tvpot.gif?v=2",
'@media.prev.url.wmp': "#iconpath/spacer2.gif?v=2"
});
Trex.Tool.Media = Trex.Class.create({
$const: {
__Identity: 'media'
},
$extend: Trex.Tool,
oninitialized: function() {
var _editor = this.editor;
this.weave.bind(this)(
new Trex.Button(this.buttonCfg),
_NULL,
function() {
_editor.getSidebar().getEmbeder("media").execute();
}
);
}
});
TrexConfig.addEmbeder(
"media",
{
wysiwygonly: _TRUE,
useCC: _FALSE,
features: {
left:250,
top:65,
width:458,
height:568,
resizable:"yes"
},
popPageUrl: "#host#path/pages/trex/multimedia.html",
allowNetworkingFilter: _FALSE,
allowNetworkingSites: []
},
function(root) {
var _config = root.sidebar.embeder.media;
_config.popPageUrl = TrexConfig.getUrl(_config.popPageUrl);
_config.features = TrexConfig.getPopFeatures(_config.features);
}
);
(function() {
Trex.Embeder.Media = Trex.Class.create({
$const: {
__Identity: 'media'
},
$extend: Trex.Embeder,
name: 'media',
title: TXMSG("@media.title"),
canResized: _TRUE,
getCreatedHtml: function(data){
var _source = data.code || this.makeSourceByUrl(data.url);
return convertToHtml(_source);
},
getDataForEntry: function(){
//This function is not needed anymore but absence may generate initializing error. So remained...
},
makeSourceByUrl: function(url) {
var ext = this.getUrlExt(url);
var size = getDefaultSizeByUrl(url);
switch (ext) {
case "swf":
return this.generateHTMLForFlash(url, size);
case "mp3":
case "wma":
case "asf":
case "asx":
case "mpg":
case "mpeg":
case "wmv":
case "avi":
return this.generateHTMLForMoviePlayer(url, size);
case "mov":
return this.generateHTMLForQuicktime(url, size);
case 'jpg':
case 'bmp':
case 'gif':
case 'png':
return this.generateHTMLForImage(url, size);
default:
var iframeHtml = this.generateHTMLIfIframeSource(url, size);
if (iframeHtml) {
return iframeHtml;
}
return this.generateHTMLForDefaultEmbed(url, size);
}
},
getUrlExt: function(url) {
return url.split(".").pop().split("?")[0].toLowerCase();
},
getAllowScriptAccess: function(url) {
var allowScriptAccessAttr = " allowScriptAccess='never'";
if (this.config.allowNetworkingFilter && isAllowNetworkingSite(url, this.config) == _FALSE) {
allowScriptAccessAttr += " allowNetworking='internal'";
}
return allowScriptAccessAttr;
},
generateHTMLForDefaultEmbed: function (url, size) {
return "";
},
generateHTMLForImage: function (url, size) {
return "
";
},
generateHTMLForFlash: function (url, size) {
return "";
},
generateHTMLForMoviePlayer: function (url, size) {
return "";
},
generateHTMLForQuicktime: function (url, size) {
return "";
},
generateHTMLIfIframeSource: function(url, size) {
var tvpotKey = getTvPotKey(url);
if (tvpotKey) {
return "";
}
var youtubeMovieKey = getYouTubeMovieKey(url);
if (youtubeMovieKey) {
return "";
}
return _NULL;
}
});
Trex.register("filter > media ", function(editor, toolbar, sidebar){
var _config = sidebar.embeders.media.config;
editor.getDocParser().registerFilter('filter/embeder/media', {
'text@load': function(contents){
return contents;
},
'source@load': function(contents){
return convertToHtml(contents);
},
'html@load': function(contents){
return convertToHtml(contents);
},
'text4save': function(contents){
return contents;
},
'source4save': function(contents){
contents = convertFromHtml(contents);
contents = addFlashOptAllowNetworking(contents, _config);
return contents;
},
'html4save': function(contents){
contents = convertFromHtml(contents);
contents = addFlashOptAllowNetworking(contents, _config);
return contents;
},
'text2source': function(contents){
return contents;
},
'text2html': function(contents){
return contents;
},
'source2text': function(contents){
return contents;
},
'source2html': function(contents){
return convertToHtml(contents);
},
'html2text': function(contents){
return convertFromHtml(contents);
},
'html2source': function(contents){
return convertFromHtml(contents);
}
});
});
function isAllowNetworkingSite(url, config) {
var _matchs, host, i, len;
host = "";
_matchs = /[\/]*\/\/([^\/]+)\//i.exec(url);
if (_matchs && _matchs[1]) {
host = _matchs[1];
}
len = config.allowNetworkingSites.length;
for (i = 0; i < len; i += 1) {
if (host == config.allowNetworkingSites[i].host) {
return _TRUE;
}
}
return _FALSE;
}
function addFlashOptAllowNetworking (content, config) {
var filteredContent;
if (config.allowNetworkingFilter == _FALSE) {
return content;
}
filteredContent = content.replace(/(