You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
281 lines
8.8 KiB
281 lines
8.8 KiB
<?xml version="1.0" encoding="utf-8" ?>
|
|
<jsml xmlns="http://cutesoft.net/jsml"
|
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://cutesoft.net/jsml ../../core/jsml.xsd">
|
|
|
|
<execute>
|
|
dialog.set_title(editor.GetLangText("insertyoutube"));
|
|
</execute>
|
|
|
|
<panel jsml-class="insertyoutube_dialog" dock="fill" overflow="visible" back_color="#f9f9f9">
|
|
|
|
<panel dock="top" margin="12">
|
|
<label dock="left" text="@youtubeurl" width="1" overflow="visible" vertical_align="middle" />
|
|
|
|
<textbox dock="fill" jsml-local="urlbox" margin="1,103,1,3" border_color="#ABADB3">
|
|
<initialize>
|
|
setTimeout(function(){self.focus();},300);
|
|
</initialize>
|
|
<attach name="change,enterkey,keyup">
|
|
setTimeout(function(){instance.ParseUrl()},100);
|
|
</attach>
|
|
</textbox>
|
|
|
|
<button right="10" text="@Preview">
|
|
<attach name="click">
|
|
instance.DoPreview();
|
|
</attach>
|
|
</button>
|
|
</panel>
|
|
|
|
<panel dock="bottom" margin="12" overflow="visible">
|
|
<panel right="0" overflow="visible">
|
|
<button dock="left" height="24" margin="2" text="@OK">
|
|
<attach name="click">
|
|
instance.DoInsert();
|
|
</attach>
|
|
</button>
|
|
<button dock="left" height="24" margin="2" text="@Cancel">
|
|
<attach name="click">
|
|
dialog.close();
|
|
</attach>
|
|
</button>
|
|
</panel>
|
|
</panel>
|
|
|
|
<panel dock="left" width="170" padding="6,0,0,6" >
|
|
<panel dock="top">
|
|
<label dock="left" text="@usehttps|:" width="70" text_align="right"/>
|
|
<panel dock="left" width="2" />
|
|
<checkbox jsml-local="cbhttps" dock="left"/>
|
|
</panel>
|
|
<panel dock="top">
|
|
<label dock="left" text="@autoplay|:" width="70" text_align="right"/>
|
|
<panel dock="left" width="2" />
|
|
<checkbox jsml-local="cbautoplay" dock="left"/>
|
|
</panel>
|
|
<panel dock="top">
|
|
<label dock="left" text="@loop|:" width="70" text_align="right"/>
|
|
<panel dock="left" width="2" />
|
|
<checkbox jsml-local="cbloop" dock="left"/>
|
|
</panel>
|
|
<panel dock="top">
|
|
<label dock="left" text="@hideinfo|:" width="70" text_align="right"/>
|
|
<panel dock="left" width="2" />
|
|
<checkbox jsml-local="cbnoinfo" dock="left"/>
|
|
</panel>
|
|
<panel dock="top">
|
|
<label dock="left" text="@hidetoolbar|:" width="70" text_align="right"/>
|
|
<panel dock="left" width="2" />
|
|
<checkbox jsml-local="cbnoctrl" dock="left"/>
|
|
</panel>
|
|
<panel dock="top">
|
|
<label dock="left" text="@lighttheme|:" width="70" text_align="right"/>
|
|
<panel dock="left" width="2" />
|
|
<checkbox jsml-local="cblight" dock="left"/>
|
|
</panel>
|
|
<panel dock="top">
|
|
<label dock="left" text="@DIMENSIONS|:" width="70" text_align="right" vertical_align="middle"/>
|
|
<panel dock="left" width="6" />
|
|
<dropdown jsml-local="ddsize" dock="left" border_color="#ABADB3" width="70">
|
|
<attach name="change">
|
|
<![CDATA[
|
|
var sizes=ddsize.get_text().split('x').join(',').split(',');
|
|
tbwidth.set_text(sizes[0]);
|
|
tbheight.set_text(sizes[1]);
|
|
]]>
|
|
</attach>
|
|
<listitem value="640x480" text="640x480"/>
|
|
<listitem value="640x400" text="640x400"/>
|
|
<listitem value="480x360" text="480x360"/>
|
|
<listitem value="480x300" text="480x300"/>
|
|
<listitem value="360x240" text="360x240"/>
|
|
<listitem value="320x240" text="320x240"/>
|
|
</dropdown>
|
|
</panel>
|
|
<panel dock="top" overflow="visible">
|
|
<panel dock="right" width="25" vertical_align="middle" margin="7,0,0,1">
|
|
<image src="{folder}images/locked.gif" cursor="pointer">
|
|
<attach name="click">
|
|
instance._dimunlocked=!instance._dimunlocked;
|
|
self.set_src(instance._dimunlocked?"{folder}images/unlocked.gif":"{folder}images/locked.gif");
|
|
</attach>
|
|
</image>
|
|
</panel>
|
|
<panel dock="top" margin="2,0,0,0">
|
|
<label dock="left" text="@WIDTH|:" text_align="right" width="70" vertical_align="middle"/>
|
|
<panel jsml-base="rtepropunitbox" jsml-local="tbwidth" width="60" margin="4,0,0,6" dock="left" propname="style:width" border_width="1" border_color="#cccccc">
|
|
<attach name="change">
|
|
instance.onwidthchange();
|
|
</attach>
|
|
</panel>
|
|
</panel>
|
|
<panel dock="top" margin="2,0,0,0">
|
|
<label dock="left" text="@HEIGHT|:" text_align="right" width="70" vertical_align="middle"/>
|
|
<panel jsml-base="rtepropunitbox" jsml-local="tbheight" width="60" margin="4,0,0,6" dock="left" propname="style:height" border_width="1" border_color="#cccccc">
|
|
<attach name="change">
|
|
instance.onheightchange();
|
|
</attach>
|
|
</panel>
|
|
</panel>
|
|
</panel>
|
|
|
|
</panel>
|
|
|
|
<panel dock="right" width="360" margin="0,5,0,0">
|
|
<panel dock="fill" horizontal_align="center" vertical_align="middle">
|
|
<image jsml-local="previewimage" width="320" height="240" overflow="none" zoom="both" border_width="1" border_color="#999999" back_color="white"/>
|
|
</panel>
|
|
<panel jsml-local="previewintro" dock="fill" horizontal_align="center" vertical_align="middle" back_color="white" border_width="1" border_color="#999999">
|
|
<label text="@youtubepreview" word_wrap="true" width="280" height="48" overflow="none"/>
|
|
</panel>
|
|
</panel>
|
|
|
|
<initialize>
|
|
<![CDATA[
|
|
|
|
self._rtenode=new $rte.ContainerElement("div");
|
|
|
|
var url=option.currenturl;
|
|
if(!url)return;
|
|
var movie=option.plugin.FindMovie(url);
|
|
if(!movie)return;
|
|
if(url.substring(0,8)=="https://")
|
|
cbhttps.set_checked(true);
|
|
var pairs=(url.split('#')[0].split('?')[1]||"").split('&');
|
|
for(var i=0;i<pairs.length;i++)
|
|
{
|
|
var pair=pairs[i];
|
|
switch(pair)
|
|
{
|
|
case "autoplay=1":
|
|
cbautoplay.set_checked(true);
|
|
break;
|
|
case "loop=1":
|
|
cbloop.set_checked(true);
|
|
break;
|
|
case "showinfo=0":
|
|
cbnoinfo.set_checked(true);
|
|
break;
|
|
case "controls=0":
|
|
cbnoctrl.set_checked(true);
|
|
break;
|
|
case "theme=light":
|
|
cblight.set_checked(true);
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(option.currentwidth)
|
|
{
|
|
self._rtenode.SetStyle("width",option.currentwidth);
|
|
tbwidth.set_text(option.currentwidth);
|
|
}
|
|
if(option.currentheight)
|
|
{
|
|
self._rtenode.SetStyle("height",option.currentheight);
|
|
tbheight.set_text(option.currentheight);
|
|
}
|
|
|
|
if(option.currentwidth&&option.currentwidth)
|
|
ddsize.set_text(parseInt(option.currentwidth)+"x"+parseInt(option.currentwidth));
|
|
|
|
urlbox.set_text("http://www.youtube.com/watch?v="+movie);
|
|
self.ParseUrl();
|
|
|
|
|
|
]]>
|
|
</initialize>
|
|
|
|
|
|
<method name="onwidthchange">
|
|
<![CDATA[
|
|
if(instance._dimunlocked)return;
|
|
var w=parseInt(tbwidth.get_text());
|
|
if(!w)
|
|
{
|
|
tbheight.set_text("");
|
|
return;
|
|
}
|
|
var sizes=ddsize.get_text().split('x').join(',').split(',')
|
|
var h=Math.floor(w*sizes[1]/sizes[0]);
|
|
tbheight.set_text(h);
|
|
]]>
|
|
</method>
|
|
<method name="onheightchange">
|
|
<![CDATA[
|
|
if(instance._dimunlocked)return;
|
|
var h=parseInt(tbheight.get_text());
|
|
if(!h)
|
|
{
|
|
tbwidth.set_text("");
|
|
return;
|
|
}
|
|
var w=Math.floor(h*sizes[0]/sizes[1]);
|
|
tbwidth.set_text(w);
|
|
]]>
|
|
</method>
|
|
|
|
|
|
<method name="GenerateHTML">
|
|
<![CDATA[
|
|
if(!self.currentmovie)return;
|
|
|
|
var url=(cbhttps.get_checked()?"https":"http")+"://www.youtube.com/embed/"+self.currentmovie;
|
|
if(cbautoplay.get_checked())url+=(url.indexOf("?")==-1?"?":"&")+"autoplay=1";
|
|
if(cbloop.get_checked())url+=(url.indexOf("?")==-1?"?":"&")+"loop=1";
|
|
if(cbnoinfo.get_checked())url+=(url.indexOf("?")==-1?"?":"&")+"showinfo=0";
|
|
if(cbnoctrl.get_checked())url+=(url.indexOf("?")==-1?"?":"&")+"controls=0";
|
|
if(cblight.get_checked())url+=(url.indexOf("?")==-1?"?":"&")+"theme=light";
|
|
|
|
var sizes=ddsize.get_text().split('x').join(',').split(',');
|
|
var width=parseInt(tbwidth.get_text())||parseInt(sizes[0]);
|
|
var height=parseInt(tbheight.get_text())||parseInt(sizes[1]);
|
|
|
|
self.lastwidth=width;
|
|
self.lastheight=height;
|
|
|
|
return "<iframe frameborder='0' style='width:"+width+"px;height:"+height+"px;' src='"+jsml.html_encode(url)+"' ></iframe>";
|
|
]]>
|
|
</method>
|
|
<method name="DoPreview">
|
|
var html=self.GenerateHTML();
|
|
if(!html)return;
|
|
var newoption={};
|
|
newoption.width=self.lastwidth;
|
|
newoption.height=self.lastheight;
|
|
newoption.htmlcode=html;
|
|
editor.ShowXmlDialog(editor.BuildDialogUrl("htmlpreview.xml"),newoption);
|
|
</method>
|
|
<method name="DoInsert">
|
|
<![CDATA[
|
|
var html=self.GenerateHTML();
|
|
if(!html)return;
|
|
var nodes=editor.InsertHTML(html,true);
|
|
dialog.close();
|
|
]]>
|
|
</method>
|
|
|
|
<method name="ParseUrl">
|
|
<![CDATA[
|
|
var url=urlbox.get_text();
|
|
var movie=option.plugin.FindMovie(url);
|
|
if(!movie)
|
|
{
|
|
urlbox.set_text_color("red");
|
|
return;
|
|
}
|
|
movie=movie.split('"')[0].split("'")[0].split('#')[0].split('?')[0].split("&")[0];
|
|
urlbox.set_text_color("");
|
|
if(self.currentmovie==movie)return;
|
|
self.currentmovie=movie;
|
|
previewimage.set_src("http://img.youtube.com/vi/"+movie+"/hqdefault.jpg");
|
|
previewintro.set_visible(false);
|
|
]]>
|
|
</method>
|
|
|
|
</panel>
|
|
|
|
<panel jsml-base="insertyoutube_dialog" />
|
|
|
|
</jsml>
|