Symantec VISUAL PAGE

Sdílet

WWW stránky i pro začátečníky Visual page je produkt, sloužící k vytváření webovských stránek. Jeho tv...


WWW stránky i pro začátečníky



Visual page je produkt, sloužící k vytváření webovských
stránek. Jeho tvůrcem je společnost Symantec, a z toho plyne
i možnost Live Update, což je internetovská služba pro
registrované zákazníky. Konkrétně se jedná o vylepšení
a dodatky k již existujícím produktům, které uživatel
s přípojkou na Internet dostává každou vhodnou chvíli.

Dokumentace

V balení jsou kromě CD i dvě tenké brožury. První popisuje
způsob instalace a základní funkce programu, a druhá je
uživatelská příručka. Hned zkraje je třeba říci, že obě
příručky předpokládají uživatelskou znalost prostředí
textových editorů moderního střihu, které umějí pracovat
i s vkládanými objekty. Zatímco druhá knížečka je klasickou
uživatelskou příručkou, první má bližší spojitost s tím, co je
na cédéčku. Přenese vás do smyšlené cestovní kanceláře, jejíž
jste pracovníkem. Šéf vás pověří vytvořením webovské stránky
vaší cestovní kanceláře. Příručka tedy navrhuje standardní
způsob tvorby Web situ, od přípravy textů a obrázků na
lokálním počítači až po finální přenesení na příslušný server.
Celý tento postup je zdokumentován na CD, i s vyhotovenými
stránkami.

Tvorba WWW stránek

Kromě uvedeného předpokladu znalosti textových editorů,
předpokládá Visual Page i základní znalost objektů používaných
ve webovských prezentacích. Je proto dobře nejprve si přečíst
nějakou literaturu o dané problematice. V případě její
nedostupnosti poslouží i uvedené příručky a samozřejmě
nápověda programu.
Pokud vám nejsou cizí pojmy jako link či frame, pak se můžete
vesele pustit do tvoření. Musíte mít ovšem i nápad a plán,
podle kterého budete stránky konstruovat. Jestli máte zrovna
tvůrčí krizi, pomůže sbírka předdefinovaných stylů.
Samotná práce je rychlá a efektivní. Při otevření nového
dokumentu se objeví prázdná stránka, do které lze přímo psát,
jako v textovém editoru. Není tedy třeba znalost přesné
syntaxe HTML se všemi jeho záludnostmi. Prostě text napíšete
a pomocí tlačítek nástrojové lišty upravíte do požadovaného
tvaru. Pro oživení lze samozřejmě vložit i obrázky a Java
aplety. Jedním tlačítkem lze vytvořit tabulku, rámcovou
strukturu takřka libovolného tvaru nebo vkládat všemožné
formulářové objekty. Upravovat tyto struktury je možno metodou
drag-and-drop co do rozměrů, či pomocí menu (dostupného
pomocí pravého tlačítka myši) co do barev a tvarů. V tomto
menu lze zadat i rozměry, ale to se mi nezdá zrovna praktické.
Linky se vkládají pomocí dalšího tlačítka na nástrojové liště.
Pokud ovšem chcete vložit odkaz mailto, jste odkázáni na jeho
přímý zápis do dialogového okna. Odkazy na ostatní HTML
dokumenty je nejelegantnější zadat pomocí browsování již
existujících souborů. Nelze tedy vymýšlet menu s odkazy na
soubory, jež ještě neexistují. Vnucuje to autorovi koncepci,
která je zřejmě nejvýhodnější.
Zmíněná technika drag-and-drop je použitelná i pro samotný
obsah stránek. Vkládání např. obrázku tak není nutné provádět
prostřednictvím dialogů, ale přímo přetažením obrázku na
požadované místo. Stejně lze přemisťovat i texty či tabulky.
Visual page je poplatný filosofii WYSIWYG. Že je zde tato
technologie použita, je vidět i z funkce preview. Vytvořenou
stránku můžete oživit jak přímo v prostředí Visual Page, tak
pomocí klasického browseru. V případě oživení v editoru se na
první pohled nic nezmění, pouze ožijí linky. Práce
z dokumentem pak probíhá podle schémat, obvyklých
u prohlížečů. Zpět do editačního modu se lze vrátit stiskem
jediného tlačítka nástrojové lišty. Dá se samozřejmě také
zobrazit zdrojový text.

Závěrem

Visual Page je silný prostředek pro tvorbu webovských stránek,
bez nutnosti znát podrobnou syntaxi HTML. Proto je vhodný
i pro začátečníky, zvláště kvůli technologii WYSIWYG.
Podporuje jak Javu, tak i další rozšíření (plug-in) stránek,
tvorbu klikacích map a všemožných struktur, používaných na
Webu. Práce je rychlá a efektivní, stránku je možno bez
většího úsilí prošpikovat různými efektními vylepšeními.
V neposlední řadě obsahuje i komunikační protokol FTP pro
přenesení hotových stránek na příslušný server.
Dokumentace je kvalitní, až na nepodařený tisk některých
obrázků.
Program je určen pro prostředí Windows 95 a NT. Minimální
požadavky na hardware jsou procesor 486 / 66MHz, RAM 8 MB
(pro NT 12 MB), 256barevná VGA a 18 MB na disku pro plnou
instalaci, 3 MB pro minimální.




Symantec Visual Page
+ jednoduchost ovládání
+ rychlost a efektivita
+/- kvalitní dokumentace, ale některé špatné obrázky
K recenzi poskytla firma:
Virklis
XXXXX
XXXXX
Cena: XXXXX Kč

Autor článku

'; document.getElementById('preroll-iframe').onload = function () { setupIframe(); } prerollContainer = document.getElementsByClassName('preroll-container-iframe')[0]; } function setupIframe() { prerollDocument = document.getElementById('preroll-iframe').contentWindow.document; let el = prerollDocument.createElement('style'); prerollDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:20px;right:25px}"; videoContent = prerollDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('PREROLL sound allowed'); // setUpIMA(true); videoContent.volume = 1; videoContent.muted = false; setUpIMA(); }).catch(function () { console.log('PREROLL sound forbidden'); videoContent.volume = 0; videoContent.muted = true; setUpIMA(); }); } } function setupDimensions() { prerollWidth = Math.min(iinfoPrerollPosition.offsetWidth, 480); prerollHeight = Math.min(iinfoPrerollPosition.offsetHeight, 320); } function setUpIMA() { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Preroll advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = prerollWidth; // adsRequest.linearAdSlotHeight = prerollHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. prerollDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( prerollDocument.getElementById('adContainer'), videoContent); } function unmutePrerollAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } } function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(prerollWidth, prerollHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } function onAdEvent(adEvent) { const ad = adEvent.getAd(); console.log('Preroll event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: if (!ad.isLinear()) { videoContent.play(); } prerollDocument.getElementById('adContainer').style.width = '100%'; prerollDocument.getElementById('adContainer').style.maxWidth = '640px'; prerollDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); if (ad.isLinear()) { intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } prerollDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (prerollLastError === 303) { playYtVideo(); } break; case google.ima.AdEvent.Type.COMPLETE: if (ad.isLinear()) { clearInterval(intervalTimer); } playYtVideo(); break; } } function onAdError(adErrorEvent) { console.log(adErrorEvent.getError()); prerollLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { playYtVideo(); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoPrerollPosition.remove(); playPrerollAd(); } else { return false; } adVolume = 1; return true; } function onContentPauseRequested() { videoContent.pause(); } function onContentResumeRequested() { videoContent.play(); } function onActiveView() { if (prerollContainer) { const containerOffset = prerollContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (prerollPaused) { adsManager.resume(); prerollPaused = false; } return true; } else { if (!prerollPaused) { adsManager.pause(); prerollPaused = true; } } } return false; } function playYtVideo() { iinfoPrerollPosition.remove(); youtubeIframe.style.display = 'block'; youtubeIframe.src += '&autoplay=1&mute=1'; } }