Categories
2. Triobo editor

Actions triggered by page load

Do you need to trigger some actions on page load (animation, video start…) perhaps with delay or even repeatedly? You have the option of setting actions that will run when the page loads. All actions can also timed and run repeatedly. And with multi-page articles you can set the behavior for each page separately.

Click on page button – see picture. The pop up menu will appear where you see setting of actions that are activated when the page loads. There are no actions defined with first set up. Page actions

Once you click on window with actions, a dialog box appears with settings of various actions. Typically, in this connection you will use the action to start animation, or to switch variable object to the desired state.

Action setting Note that you have also available actions that allow you to pause and repeat.

Once you set the desired action, a dialog will appear with summary of all actions for that particular page. We have set to start of object animation My image. As you see, you can press the “+” to add more actions and change their order by using arrows.

Dialog with action settings

In Triobo digital publishing you can also generate complex sets of events that start when the page loads. The example below shows a sample of events that were used when making the company PF 2015. There you see how we timed triggering of individual events using pause function.

Example of events after starting PF 2015

Categories
2. Editor Triobo

Akce spuštěné při načtení stránky

Potřebujete při načtení stránky spustit nějaké akce (animace, spuštění videa…), třeba se zpožděním a třeba opakovaně? Máte možnost, když využijete nastavení akcí, které se spustí po načtení stránky. Všechny akce můžete i načasovat a spouštět opakovaně. A u vícestránkových článků můžete nastavit chování pro každou stránku samostatně.

Rozkliknete tlačítko pro stránku – viz obrázek. Rozbalí se nabídka, ve které vidíte nastavení akcí, které se spustí po načtení stránky. Při prvním nastavování nejsou definovány žádné akce. Akce pro stránku

Jakmile kliknete na políčko s akcemi, objeví se dialogové okno s nastavením všech možných typů akcí. Typicky budete v této souvislosti používat akci pro spuštění animace nebo pro přepnutí variabilního objektu do požadovaného stavu.

Nastavení akcí Všimněte si, že máte k dispozici i akce pro pauzu a opakování.

Jakmile nastavíte požadovanou akci, objeví se dialog s přehled všech akcí pro danou stránku. My jsme nastavili spuštění animace objektu My image. Jak vidíte, můžete pomocí tlačítka “+” přidávat další akce a měnit jejich pořadí šipkami.

Dialog s nastavením akcí

V digitálním publikování Triobo můžete tvořit i rozsáhlé sady akcí, které se spustí po načtení stránky. Na příkladu níže je ukázka akcí, které jsme použili při tvorbě firemního PF 2015. Hezky je vidět, jak jsme časovali spouštění jednotlivých akcí pomocí pauzy.

Ukázka akcí po spuštění stránky PF 2015

Categories
2. Triobo editor 4. Video tutorials

VIDEO: How to create scrolling object like panoramic photo etc.

When typesetting digital publications you will sometimes face a problem how to put large objects into small area and maintaining readability at the same time. A typical example is panoramic photo, but it can be also longer text inside of a small frame, and so on.

One way how to deal with such situation in Triobo digital publishing is to use a scrolling object option. So let’s look at the example of sliding panorama, the process is simple and it takes only few clicks.

Place panoramic photo to preferred location on your page. As you see, part of the picture sticks out to the right, outside of the page. But that’s okay because we want to move the picture around.

For setting of scrolling properties we use so-called “group” option. Therefore by pressing editor button we lock photograph inside of one group. Blue dotted line around the picture indicates the use of this option.

Now, let’s make the group smaller and decrease it to the size of scrolling photo. In our example, we want panoramic photo to spread out from one edge to the other. Red dotted line indicates that part of the content is hidden.

Now we permit scrolling inside of a group. We can also choose whether we want the content to scroll horizontally (which is our case), vertically, or in both directions. And we’re done! For better ergonomics reasons we also add new icon that suggests moving option.

Save your work and preview it directly on your computer. The whole panorama is now custom made for all touch devices such as tablets and smartphones – and finally we advise you to use Triobo Reader to check your work on real tablet.

The same process can be used when we combine multiple objects, for example image combined with text. Remember, that scrolling is set just for the group and it does not matter if one or more objects are placed inside of this group.

Also note that Triobo works with text in its natural form – text is not exported as a picture, therefore it is still editable text. Thanks to Triobo visual editor we can instantly create and edit interactive publications and test everything on real tablet.

Categories
2. Editor Triobo

Programování objektů typu HTML

Objekt typu HTML může obsahovat libovolnou aplikaci napsanou v HTML5. Aby vše správně fungovalo na tabletech a telefonech se systémem iOS i Android, je potřeba dodržet několik pravidel. A také pro vás máme několik rad.

Co je nutné dodržet

Triobo neumožňuje nahrávat na distribuční servery stromovou strukturu. Veškeré soubory, které hodláte použít, tedy musejí ležet přímo ve složce článku (případně ve složce jiného článku stejného vydání).

Triobo při publikování na distribuční server nahrává jen ty zdroje, které jsou reálně použit. Jelikož není možné zjistit, které soubory skutečně využíváte, je nutné řádně všechny označit. Použijte v nastavení rozvržení tlačítko Povinné soubory a vyberte vše, co vaše HTML aplikace používá (obrázky, zvuky, písma apod.)

Spouštění stránky a komunikace se systémem Triobo

Vaše aplikace se může přednačítat dříve, než ji čtenář uvidí. Proto může pro vás být důležité, aby se některé funkce spustily teprve v okamžiku, kdy se článek objeví čtenáři na displeji. Stejně tak někdy můžete potřebovat vědět, kde jsou uloženy soubory jiného článku, nebo vyvolat animaci objektu nebo přepnout variabilní objekt.

Pro správnou funkci umístěte do svého kódu objekt trioboAPI (kód naleznete níže). Objekt je nutné inicializovat voláním trioboAPI.init();

V kódu se dále musí vyskytovat funkce startPage() – ta bude vyvolána při zobrazení stránky. Funkci můžete ponechat prázdnou.

Objekt trioboAPI můžete využít k vykonání akce ve stránce, nebo k získání informace od systému Triobo. Použijte trioboAPI.call(název_operace, parametry_operace, funkce_pro_zpracování_výsledku);

Příklad:

var prefix, myImageSrc;
trioboAPI.call("getFolderOfArticleId","12345",function(x){
  prefix=x;
  myImageSrc=prefix+"image.png";
});

Tímto způsobem do globální proměnné prefix uložíte cestu k souborům článku s identifikátorem 12345 a můžete jej tak použít třeba pro odkazování na obrázek.

Pokud některá operace má více parametrů, jsou odděleny středníkem. K dispozici jsou následující operace:

  • goToArticleId – přejde na článek daný jeho ID
  • goToArticleNumber – přejde na článek daný pořadím
  • animateObjectId – animuje objekt daný jeho ID, za středníkem následuje způsom animace: 0=do normálního stavu, 1=do alternativního stavu, 2=přepnout mezi normálním a alternativním stavem
  • switchObjectID – přepne objekt daný jeho ID, za středníkem následuje typ přepnutí (0=na další, 1=na předchozí, 2=na první, 3=na poslední, 4=na konkrétní stav), za dalším středníkem označení stavu
  • getFolderOfArticleID – do zadané funkce vrátí prefix složky souborů článku daného jeho ID
  • getFolderOfArticleNumber – do zadané funkce vrátí prefix složky souborů článku daného jeho pořadím

Ukládání dat do lokální paměti tabletu/telefonu

Pro mnoho aplikací je důležité zapamatovat si údaje. Běžně se používá objekt localStorage, který ale nefunguje na všech verzích Androidu správně, navíc často není společný pro všechny články (a není tak možné z článku A načítat hodnoty uložené v článku B). Tyto nedostatky řeší objekt storage, který můžete do své aplikace vložit (viz dále). Ihned jej inicializujte pomocí storage.init()

K dispozici dále máte tři metody:

  • storage.get(key) – vrátí hodnotu danou klíčem key, případně vrátí hodnotu null, pokud klíč není definován
  • storage.set(key, value) – pro klíč key uloží hodnotu value, pokud již klíč existuje, je jeho hodnota přepsána
  • storage.remove(key) – odebere klíč key (metoda proběhne bez chyby i pokud klíč key neexistuje)

Kód

Objekt trioboAPI:

var trioboAPI={
  lastCall:null,
  call:function(fn,pars,backCall){
    if (backCall) trioboAPI.lastCall=backCall;else trioboAPI.lastCall=null;
    parent.postMessage(fn+";"+pars,"*");
  },
  init:function(){
    addEventListener('message',function(e){
      if (e.data=='trioboStartPage') {
        startPage();
      } else {
        if (trioboAPI.lastCall) trioboAPI.lastCall(e.data);
        trioboAPI.lastCall=null;
      }
    },false);
  }
}

Objekt storage:

var storage={
  LS:false,
  ok:false,
  badLS:true,
  lsFail:false,
  init:function(){
    try {
      if (LocalStorage) storage.LS=true;
      LocalStorage.setItem('TrioboPokus',1);
      var pokus=LocalStorage.getItem('TrioboPokus');
      LocalStorage.removeItem('TrioboPokus');
      if (pokus==1) {
        storage.badLS=false;
      } else {
        storage.LS=false;
      }   
    } catch(e) {
      storage.LS=false; 
    }
    if (!storage.LS) {
      try {
        localStorage.setItem('TrioboPokus',1);
        localStorage.removeItem('TrioboPokus');
        storage.ok=true;
      } catch(e) {
        storage.ok=false;
        storage.lsFail=true;  
      }
    }
  },
  set:function(key,value){
    if (storage.LS) LocalStorage.setItem(key,value);
    else if (storage.ok) localStorage.setItem(key,value);
  },
  get:function(key){
    if (storage.LS) return LocalStorage.getItem(key);
    else if (storage.ok) return localStorage.getItem(key);
  },
  remove:function(key){
    if (storage.LS) LocalStorage.removeItem(key);
    else if (storage.ok) localStorage.removeItem(key);
  }
}