Metruk Root Admin
Mesaj Sayısı : 351 Kayıt tarihi : 02/04/10 Yaş : 33
| Konu: İnternette Özel Belge Türleri Salı Nis. 06, 2010 3:06 pm | |
| İnternette özel belgeleri yayınlamak için ASP'de ContentType özelliğini belge türü olarak ayarlamak yeterlidir. Bu, ASP dosyasının resim, xml, word ya da başka bir belge türü olarak yorumlanabilmesini sağlar.
Windows farklı belge türleri için özelleştirilmiş komutların çalıştırılmasına, belgeler için farklı resimlerin ve ipucu bilgilerinin görüntülenmesine olanak tanır. Her dosya uzantısı için farklı komut listeleri açılabilir, bu dosyalar için özel simgeler görüntülenebilir. HTML belgeleri için ise dosya uzantısı tek olduğu halde farklı davranışlar geliştirilebilir. - İnternette yayınlanan belgeleri özelleştirmek- ASP dosyasından Excel, Word ve diğer Office belgelerini üretmek- ASP ile dinamik takvim dosyası üretmek- HTML içinde belge türü tanımlamak- Windows'ta kendi belge türünüzü tanımlayın- Belge türleri için özel simgeler görüntülemek İNTERNETTE DOSYA TÜRLERİ Internet'te yayınlanan belgelerin özelleştirilip, web gözatıcıları dışındaki programlarda geçerli olarak açılabilmesi, Windows'un sunduğu bir olanaktır. Yüklenen bir web belgesinin içerik türü bilgisi sistemde araştırıldıktan sonra, belgenin ilgili uygulama ile açılması sağlanabilir. Internet'ten yüklenen her belge için ContentType özelliği mevcuttur. HTML belgeleri için bu geçerli olarak "text/html"dir. ASP belgelerinde de aksi belirtilmediği sürece aynıdır. <% Response.Write Response.ContentType %> Yukarıdaki ASP komutu geçerli ContentType özelliğini yazdırmaktadır. Bu özellik belgenin farklı türde yorumlanmasını da sağlayabilir. XML Kursu'nu takip edenler, ASP ile XML belgesi üretilirken "text/xml" değerini kullandığımızı hatırlayacaklardır. <% Response.ContentType = "text/xml" %> Belgenin HTML'den farklı şekilde yorumlanmasının amaçlandığı durumlar için bu yöntem zengin seçenekler sunmaktadır. Örneğin bu değeri "application/msword" şeklinde değiştirerek belgenin bir anda Word içinde açılmasını sağlayabiliriz. <%@ Language=VBScript %> <% Response.ContentType="application/msword" %> <html> <body> Bu belge ASP ile üretilmiş bir Word belgesidir. Response.ContentType özelliğine <b>"<% =Response.ContentType %>"</b> değeri atanmıştır. </body> </html> Excel için ise "application/vnd.ms-excel" kullanılıyor. [Resimleri görebilmek için üye olun veya giriş yapın.]Microsoft'un sitelerinde çokça kullanılan takvim dosyası yükleme uygulaması da benzer yöntemle yapılmaktadır. Bir seminer hakkında duyuru yayınlandığında ek olarak dinamik bir takvim (ics) dosyası yüklenebiliyor. Takvim belgeleri oluşturmak için ContentType özelliğine "text/calendar" değeri atanıyor. Geçerli olarak ics uzantısına sahip bir MS Outlook takvim belgesinin içeriği aşağıdakine benzerdir. toplanti.ics.txt BEGIN:VCALENDAR PRODID:-//Microsoft Corporation//Outlook 10.0 MIMEDIR//EN VERSION:2.0 METHOD:PUBLISH BEGIN:VEVENT ORGANIZER:MAILTO:aliveli@deneme123.com DTSTART:20020906T090000Z DTEND:20020906T093000Z TRANSP:OPAQUE SEQUENCE:0 UID:040000008200E00074C5B7101A82E00800000000A0A14F 273251C DTSTAMP:20020831T180537Z DESCRIPTION:Tum calisanlar bu tarihte toplantiya katilacaktir.\nToplantinin konusu yillik pazarlama faaliyetlerimiz olacaktir. SUMMARY:Sirket Toplantisi PRIORITY:5 CLASS:PUBLIC BEGIN:VALARM TRIGGER:-PT15M ACTION[Resimleri görebilmek için üye olun veya giriş yapın.]ISPLAY DESCRIPTION:Reminder END:VALARM END:VEVENT END:VCALENDAR ContentType özelliğini gerekli şekilde ayarladıktan sonra yukarıdaki gibi bir metni yayınlamak yeterlidir. toplanti.asp.txt <%@ Language=VBSCript %><% Response.ContentType="text/calendar" %>BEGIN:VCALENDAR PRODID:-//Microsoft Corporation//Outlook 10.0 MIMEDIR//EN VERSION:2.0 METHOD:PUBLISH ... ... [Resimleri görebilmek için üye olun veya giriş yapın.] Takvim bilgilerini el ile girmek yerine Microsoft Outlook'ta bunu yapmak daha kolaydır. Outlook'ta Takvim (Calendar) sayfasına gelip yeni bir kayıt (appointment) oluşturduktan sonra File/SaveAs ile bunu iCalendar (ics) biçimine dönüştürebilirsiniz.Office belgelerini yayınlarken belgenin Office uygulamasında değil de, Internet Explorer içinde açılmasından şikayetçiyseniz birkaç küçük ayar değişikliği ile bunu giderebilirsiiz. Windows Gezgini'nde iken Tools / Folder Options / File Types sekmesini açıp Doc uzantısını bulun. Advanced komutunu verdikten sonra açılan diyalog kutusundaki "Browse in same window" seçeneğindeki işareti kaldırın. Böylelikle Internet’ten bir word belgesi yüklemek istediğinizde belge Internet Explorer'da değil, Word uygulaması içinde açılacak. Aynı ayarlamayı diğer Office uygulamaları için de yapabilirsiniz. [Resimleri görebilmek için üye olun veya giriş yapın.] Bu seçeneğin Registry'deki kaydı HKCR\Word.Document.8 altında tutuluyor. Burada REG_DWORD tipinde BrowserFlags adlı bir değer oluşturulup değeri 8 yapılmalı. (Excel 2000 için "Excel.Sheet.8". Powerpoint 2000 sunuları için "PowerPoint.Show.8" ağaçlarında benzer değişiklik yapılmalı.) ÖZEL HTML BELGELERİ Windows'taki tüm belge türü tanımları kayıt defterinde (Registry) tutulur. Bu yüzden belgeler açılırken Windows'un nasıl davranacağını belirlemek mümkündür. Özellikle dosya uzantılarına göre birçok özelleştirme yapılabilir. Bir dosya türü izlenirken gösterilen ipucu bilgisinden tutun, o türe ait simgenin nereden alınacağı, dosyayı açabilecek uygulamaların listesi, fare menüsündeki komutlar ve ayrıntılı daha birçok bilgi kayıt defterinde tanımlanabilmektedir. Bununla birlikte Windows 2000'den itibaren HTML belgelerine özgü olarak birtakım özelleştirilmelerin yapılması mümkün olmaktadır. Bunlardan ikisi belge-klasör bağlantısı ve html içinde belge türü tanımlamasıdır. Internet Explorer'da iken kaydedilen bir HTML belgesi için genellikle ekte "_dosyalar" ya da "_files" uzantılı bir klasör oluşturulur ve sayfadaki resimler ve diğer dosyalar bu klasör içine kaydedilir. Sonrasında Windows 2000 htm dosyasını ve ekteki "_files" klasörünü bağlı olarak kabul eder. Bunlardan biri taşındığında ya da silindiğinde diğeri için de aynı işlem uygulanır. Bunu denemek için htm uzantılı, içeriği önemli olmayan geçici bir dosya oluşturun. Aynı yerde adı bu dosyanın ön adı ile aynı olan bir klasör oluşturun. Bu klasörün adının sonuna işletim sistemi Türkçe ise "_dosyalar", İngilizce ise "_files" ekini getirin. Her ne durumda olursa olsun Windows 2000 bu dosya ve klasörü bağlantılı olarak kabul eder ve biri taşındığında da diğeri taşınır. Silinme durumunda da aynı şey geçerlidir. ("_files" ekinde "_" işareti yerine "." işareti de kullanılabilir.) Bu özelliği HKCU\Software\Microsoft\Windows\CurrentVersion\Exp lorer anahtarı altındaki NoFileFolderConnection bilgisinin değerini "1" yaparak devredışı bırakmak mümkündür. HTML İÇİNDE BELGE TÜRÜ TANIMLAMA HTML belgeleri Windows'ta biraz daha fazla özelleştirilebilmektedir. Yukarıda anlatılan belge-klasör bağlantısı dışında, belge içinde Windows'un anlayacağı şekilde tür tanımlaması yapılması sözkonusudur. Head bölgesinde oluşturulacak ProgID adlı bir Meta bilgisi belgenin türünü tanıtmaktadır. <head> ... <meta name=ProgId content=Excel.sheet> ... </head> ProgID adlı Meta bilgisinin Content özniteliği belgenin türünü belirtmektedir. Buraya "Excel.sheet" değeri atandığında belge Excel dosyasıymış gibi görüntülenir. Zaten Excel ve diğer Office programları, web sayfası olarak kaydettikleri belgelere bu bilgiyi eklemektedirler. Bu durumda farklı HTML belgeleri için düzenleme komutu (edit) verildiğinde Frontpage gibi bir HTML düzenleyici açılmazken ilgili Office uygulaması açılır. Belge dosyasının simgesi de uygulamaya göre farklı şekilde gösterilir. [Resimleri görebilmek için üye olun veya giriş yapın.]Üstteki resimde tüm dosyaların uzantısı HTML olmasına rağmen herbiri için farklı simgeler gösterilmektedir. Bu, tabii ki Office türleri dışındaki belge türleri için de geçerlidir. Resimde “CHIP” simgeli bir html belgesi görüyorsunuz zaten. KENDİ BELGE TÜRÜNÜZÜ TANIMLAYIN Bir belge türü tanımlamak, yalnızca kayıt defterinde bir yığın ayar yapmayı gerektirir. Belge türü için ne kadar çok özelleştirme varsa, yapılması gereken ayarlar da o kadar çoktur. En basit belge türü tanımlaması, geçerli uzantıdaki bir dosyanın çift tıklatılarak açılacağı programı belirleyerek yapılabilir. Windows Gezgini'nde Tools / Folder Options / File Types (Dosya Türleri) bölümünde yeni bir dosya türü, uzantı belirtilerek tanımlanabilir ve bu uzantıya sahip dosyaların hangi programla açılacağı belirlenebilir. Belge türü oluşturulurken kayıt defterine birtakım kayıtlar girilir. Bizim belirlediğimiz ".chip" uzantısı için kayıt defterinde aşağıdaki kayıtları oluşturduk. [HKEY_CLASSES_ROOT\.chip] @="chipdosya" "InfoTip"="Chip deneme dosyası"
[HKEY_CLASSES_ROOT\ChipDosya]
[HKEY_CLASSES_ROOT\ChipDosya\Curver] @="ChipDosya.1"
[HKEY_CLASSES_ROOT\ChipDosya.1] @="Chip uzantılı deneme dosyası"
[HKEY_CLASSES_ROOT\ChipDosya.1\DefaultIcon] @="c:\\chipdosya.ico"
[HKEY_CLASSES_ROOT\ChipDosya.1\Shell]
[HKEY_CLASSES_ROOT\ChipDosya.1\Shell\Open] @="&Aç"
[HKEY_CLASSES_ROOT\ChipDosya.1\Shell\Open\Command] @="notepad.exe %1" [Resimleri görebilmek için üye olun veya giriş yapın.] HKCR altında temel olarak üç anahtar oluşturmak yeterlidir. Bunlar ".chip", "ChipDosya" ve bunun geçerli sürüm bilgisini ifade eden "ChipDosya.1" anahtarlarıdır. Chip uzantılı bir dosyaya erişildiğinde kayıt defterindeki .chip anahtarının geçerli değerindeki "chipdosya" bilgisi elde edilir. Sonra bu anahtara ulaşılır ve Curver altında belirtilen yeni anahtara gidilir. Bilgisayarda yüklü Com nesnelerinin farklı sürümlerine ulaşmak için nesne adının sonunda sürüm bilgisi de kullanılabilmektedir. Örneğin ADO'nun yüklü olan farklı sürümlerine erişmek için, CreateObject komutu ile "ADODB.Connection.2.7" ya da " ADODB.Connection.2.5" nesneleri oluşturulabilir ve bunların kullanımları tabii ki birbirinden farklıdır. Ama Com mimarisinin getirdiği kolaylıklardan biri her yeni sürüm için kodları değiştirmek yerine daha genel isimler kullanmaktır. Bu da ancak Curver (current version) gibi geçerli sürümü işaret eden bir anahtar alanı oluşturmakla mümkündür. Şu durumda bu bilgi genellikle son yüklenen sürümü işaret eder. Bizim bilgisayarımızda bu "ADODB.Connection.2.7" şeklindedir ve her "ADODB.Connection" oluşturma isteğinde aslında bu anahtara yönelinir. ADO'nun olası 2.8 sürümü yüklendiğinde ise CurVer bilgisi herhalde "ADODB.Connection.2.8"den başkası olmayacaktır. Böylelikle ADO'nun kurulu tüm sürümlerine ulaşılabilmesinin yanında genel isim kullanıldığında da son sürüme erişilir. Yani CreateObject(“ADODB.connection”) şeklinde genel bir isim ile Com bileşeninin çağrılması sağlanmış olur. Chip uzantılı dosyalarımız için de benzeri sözkonusudur. Chip uzantılı bir dosyaya ulaşıldığında son olarak "ChipDosya.1" anahtarına kadar gelinir. Burada dosya türünün Windows Gezgini'nde görüntülenecek açıklaması, dosya simgesinin konumu, sağ tuş menüsünde yer alacak komut listesi ve dosyanın çift tıklatıldığında hangi program ile açılacağı gibi bilgiler yer alır. Dosya adı, bir programla ilişkilendirilirken program dosyasının yoluna genellikle " %1" eklenir. Bu, dosyanın yolunu programa göndermektedir. Dosyayı gerçekten açma işlemini başarmak, ilişkili programın sorumluluğundadır. HTML belgelerinde bildirilen belge türleri için ise ek bir dosya türü tanımlanmalıdır. Örneğin Excel belgeleri için .xlshtml uzantılı bir dosya türü oluşturulmuştur. Bu türün tanımlandığı yerde Excelhtmlfile başlığı işaret edilir. Excelhtml altında ise dosyanın ne ile ve nasıl açılması hakkında bilgiler ve simgenin alınacağı adres yer alır. Bu kadarı, HTML içinde türü bildirilen belgelerin gerçekten tanınması için yeterli değildir. Excel sayfalarını ifade eden Excel.Sheet anahtarının altında "HTML Handler" başlıklı bir alt anahtar daha bulunur (HKCR\Excel.Sheet.8\HTML Handler). Burada HTML dosyasının başka bir dosya uzantısına sahipmiş gibi davranmasını sağlayacak tanımlamalar yapılmıştır. Örneğin Icon anahtarında html belgesinin olası dosya uzantılarına karşılık simgenin yüklenmesinde belirleyici gerçek uzantılar bildirilmiştir. [HKEY_CLASSES_ROOT\.chiphtml] @="ChipHTMLDosya"
[HKEY_CLASSES_ROOT\.chiphtml\ChipHTMLDosya]
[HKEY_CLASSES_ROOT\ChipHTMLDosya] @="Chip HTML Dosyası"
[HKEY_CLASSES_ROOT\ChipHTMLDosya\DefaultIcon] @="c:\\chiphtml.ico"
[HKEY_CLASSES_ROOT\ChipHTMLDosya\Shell]
[HKEY_CLASSES_ROOT\ChipHTMLDosya\Shell\Open] @="&Aç"
[HKEY_CLASSES_ROOT\ChipHTMLDosya\Shell\Open\Command] @="notepad.exe %1"
[HKEY_CLASSES_ROOT\ChipDosya\HTML Handler]
[HKEY_CLASSES_ROOT\ChipDosya\HTML Handler\Icon] @=".chiphtml" ".htm"=".chiphtml" ".html"=".chiphtml" ProgID bilgisinin "ChipDosya" şeklinde olduğu HTML belgeleri için, ".htm" ve ".html" uzantıları kullanıldığında belge aslında ".chiphtml" dosyasıymış gibi davranacaktır. [Resimleri görebilmek için üye olun veya giriş yapın.] <head> ... <meta name=ProgId content=ChipDosya> ... </head> ASP'DE ÖZEL BELGE TÜRÜ TANIMLAMA ASP sayfalarından yüklenen belgeler için de özelleştirmeler yapılabilmektedir. [HKCR\MIME\Database\Content Type] anahtarı altında, ASP'deki Response.ContentType ile kullanılabilecek geçerli tüm belge türleri yer alır. Örneğin XML belgeleri için response.contenttype="text/xml" komutunun doğru çalışması buraya bağlıdır. Chip dosyamız için de buraya gerekli bilgileri ekleyerek ASP'deki response.contenttype="text/chip" gibi bir satırın doğru çalışmasını ve yüklenen belgenin .chip uzantılı bir dosya imiş gibi davranmasını sağlayabiliriz.
[HKEY_CLASSES_ROOT\MIME\Database\Content Type\text/chip] "Extension"=".chip".chipDosya uzantısıChipDosya Belge türü tanımlamasıChipDosya.1 Belgenin sürümünü ifade eden belge türü tanımlaması.chiphtml HTML biçimindeki dosyanın uzantısıChipHTMLDosya HTML biçimindeki dosya türü adıDosya türlerine özel simgeler göstermek için DefaultIcon bilgisine geçerli bir simge adresi atamak yeterlidir. Bu ico uzantılı bir simge dosyasının adresi olabileceği gibi, "c:\...\resimler.exe, 15" şeklinde resim kaynağı içeren bir uygulama dosyasındaki kaynak bölgesinin adresi de olabilir. | |
|