Uzun zamandır, BlogEngine kullananlar IFRAME, EMBED, OBJECT taglerini kullanırken sorun yaşıyorlardı. Yönetim Paneli'ndeki Yazı Ekle kısmından ya da Windows Live Writer kullanarak eklenen video, iframe vb içerikli sayfalar güzel güzel çalışırken, içerikte değişiklik ya da düzenleme yapılmak istendiğinde bilinmeyen bir güç tarafından kayboluyordu. Bu konuda Alp Çoker ilgili bağlantıda şöyle belirtmişti: "Ayrıca tiny_mce editörü embed veya object( ses, video , Java appletleri , resimler , Flash animasyonları , ActiveX, PDF gibi) html kodlarını çalıştırmanıza izin vermiyor."
BlogEngine 1.4.5 ve altındaki sürümlerde kullanılan Tiny MCE editörü varsayılan olarak bu kodları çalıştırmanıza izin vermiyor. Bunu aşmak için türlü taklalar atmamıza gerek yok.
Admin klasörü altındaki tinyMCE.ascx dosyasını açıyoruz. Aşağıdaki kodlar 1.5 üzeri sürüme aittir. Fakat işleyiş açısından bir fark bulunmamaktadır.
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="tinyMCE.ascx.cs" Inherits="admin_tinyMCE" %>
<%@ Import Namespace="BlogEngine.Core" %>
<script type="text/javascript" src="<%=Utils.RelativeWebRoot %>editors/tiny_mce3/tiny_mce.js"></script>
<script type="text/javascript">
tinyMCE.init({
// General options
mode: "exact",
elements : "<%=txtContent.ClientID %>",
theme: "advanced",
plugins : "inlinepopups,fullscreen,contextmenu,emotions,table,iespell,advlink",
convert_urls: false,
// Theme options
theme_advanced_buttons1:
"fullscreen,code,|,cut,copy,paste,|,undo,redo,|,bold,italic,underline,strikethrough,|,justifyleft,justifyce
nter,justifyright,justifyfull,|,bullist,numlist,outdent,indent,|,iespell,link,unlink,sub,sup,removeformat,c
leanup,charmap,emotions,|,formatselect,fontselect,fontsizeselect",
theme_advanced_buttons2: "",
theme_advanced_toolbar_location: "top",
theme_advanced_toolbar_align: "left",
theme_advanced_statusbar_location: "bottom",
theme_advanced_resizing: true,
tab_focus : ":prev,:next"
});
</script>
<asp:TextBox runat="Server" ID="txtContent" CssClass="post" Width="100%" Height="250px"
TextMode="MultiLine" />
Yapmamız gereken theme_advanced_resizing satırının hemen altına aşağıdaki kodu eklemek olacaktır.
extended_valid_elements: "iframe[src|style|scrolling|frameborder|width|height]",
Yukarıda yazmış olduğumuz kod ile (bazılarımız için pek kod olmasa da) artık iframe elementi tinyMCE editörü tarafından engellenmeyecek ve filtrelenmeyecektir. Köşeli parantez içindeki özellikleri yazmamız iframe e ait olan bu özelliklerinde filtrelenmesini önlemek için gereklidir.
Böylelikle dosyanın son hali aşağıdaki gibi olacaktır:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="tinyMCE.ascx.cs" Inherits="admin_tinyMCE" %>
<%@ Import Namespace="BlogEngine.Core" %>
<script type="text/javascript" src="<%=Utils.RelativeWebRoot %>editors/tiny_mce3/tiny_mce.js"></script>
<script type="text/javascript">
tinyMCE.init({
// General options
mode: "exact",
elements : "<%=txtContent.ClientID %>",
theme: "advanced",
plugins : "inlinepopups,fullscreen,contextmenu,emotions,table,iespell,advlink",
convert_urls: false,
// Theme options
theme_advanced_buttons1:
"fullscreen,code,|,cut,copy,paste,|,undo,redo,|,bold,italic,underline,strikethrough,|,justifyleft,justifyce
nter,justifyright,justifyfull,|,bullist,numlist,outdent,indent,|,iespell,link,unlink,sub,sup,removeformat,c
leanup,charmap,emotions,|,formatselect,fontselect,fontsizeselect",
theme_advanced_buttons2: "",
theme_advanced_toolbar_location: "top",
theme_advanced_toolbar_align: "left",
theme_advanced_statusbar_location: "bottom",
theme_advanced_resizing: true,
extended_valid_elements: "iframe[src|style|scrolling|frameborder|width|height]",
tab_focus : ":prev,:next"
});
</script>
<asp:TextBox runat="Server" ID="txtContent" CssClass="post" Width="100%" Height="250px"
TextMode="MultiLine" />
Dikkat: BlogEngine 1.5 sürümü ile birlikte yeni tinyMCE editörü gelmekte ve EMBED kodları desteklenmektedir. Bu bakımdan 1.4.5 ve altındaki sürümlere sahip olanlar MSN Video, YouTube gibi sitelerden aldıkları embed kodlarını çalıştırabilmek için şöyle bir kod ekleyebilirler: embed[quality|type|pluginspage|width|height|src|align]
Bu kodlar tek başına eklenebileceği gibi birden fazlası bir arada eklenebilir. OBJECT tagi için geçerli olan özelliklere HTML Object Tag adresinden ulaşabilirsiniz.
Bu gibi kodların kullanımını etkin hale getirdiğinizde, bazı olası güvenlik açıklarına da maruz kalabileceğinizi lütfen aklınızdan çıkarmayınız.
İyi çalışmalar.