2. lépés: A helyi összetevő megjelenítési struktúrájának áttekintése

Ebben a lépésben a helyi összetevőhöz létrehozott alapértelmezett fájlok struktúráját tekintjük át.

Az egyszerű Hello World példánál a négy JavaScript objektum és a számos kódsor túl soknak tűnhet, de ez arra szolgál, hogy alapot biztosítson összetettebb összetevők kialakításához, valamint bemutassa az Oracle Cloud Sites Service szolgáltatásban az oldalak életciklusával való együttműködést.

A helyi összetevő struktúrájának áttekintése:

  1. Az Oracle Content Management kezdőlapján kattintson a Fejlesztő elemre.

    A Fejlesztő oldal jelenik meg.

  2. Kattintson az Összes összetevő megtekintése elemre.

  3. Válassza a menün a Helyi összetevő létrehozása elemet.

  4. Adjon nevet az összetevőnek, például A_Local_Component.

  5. Adjon meg opcionális leírást.

  6. Kattintson a Létrehozás gombra.

    Ennek végrehajtása után az A_Local_Component nevű összetevő megjelenik az összetevők listáján.

  1. Az Oracle Content Management asztali szinkronizáló ügyfélprogramjával keresse meg összetevőjét, és szinkronizálja azt a fájlrendszerrel.

    Ha nem rendelkezik az asztali ügyfélprogrammal, megtekintheti az összes összetevőt, és kijelölheti az összetevőt az Oracle Content Management felületének Összetevők oldalán, majd részletezéssel megtekintheti a fájlokat.

  2. Amikor listázza az összetevőhöz tartozó fájlokat, a következő fájlok jelennek meg:

    assets
        render.js
        settings.html
    appinfo.json
    _folder_icon.jpg
  3. Nyissa meg a render.js fájlt az /assets könyvtárból.

    A render.js fájl alapvető jellemzői a következők:
    • JavaScript AMD modulként van felépítve, így „kötelező” lehet az oldalhoz.

    • Hivatkozásokat tartalmaz a KnockoutJS és a JQuery függvénytárra, amelyek az Oracle Content Management oldalának részeként már be vannak töltve.

Tekintsük át a render.js fájl struktúráját.

A render.js fájl tartalmában két JavaScript objektum található, amelyek az Oracle Content Management összetevőjéhez szükséges API felületeket valósítják meg: sampleComponentFactory és SampleComponentImpl. Ezek az objektumok megvalósítási példaként szolgálnak tetszőleges KnockoutJS alapú összetevő létrehozásához. Az objektumok megvalósítása a használt technológia alapján változik.

  • sampleComponentFactory
    • Ezt az objektumot a render.js AMD modulja adja vissza.

    • Ez rendkívül egyszerű Factory objektum, és az egyetlen createComponent() felületet valósítja meg.

    • Az összetettebb megvalósítások az átadott args értékét használhatják az összetevő különböző megvalósításainak visszaadásához a viewMode paraméter alapján. Ez az összetevő lényegesen egyszerűbb megvalósítását teszi lehetővé futásidőben a Site Builder szerkesztővel összevetve.

  • SampleComponentImpl
    • Az objektum legfontosabb függvénye a render, amely az összetevő oldalon való megjelenítésére szolgál.

      A Knockout összetevő megjelenítéséhez az oldalon a render függvény dinamikusan hozzáadja a sablont az oldalhoz, majd a viewModel kötéseit alkalmazza a sablonra.

    • A megvalósítás fennmaradó része a viewModel paraméter és a sablon inicializálásával foglalkozik, valamint az oldal és az összetevő közötti üzenetváltás kezelésével.

A render.js fájlban a két további objektum, sampleComponentTemplate és SampleComponentViewModel, egyéni megvalósítást biztosít az összetevő számára. Ezek megvalósítása a felhasználó igényeinek megfelelően változik.

  • sampleComponentTemplate
    • Ez az objektum a KnockoutJS sablon létrehozását biztosítja. Ez megvárja, amíg az összetevő rendelkezik az összes inicializált adattal, és csak ezután kísérli meg bárminek a megjelenítését.

  • SampleComponentViewModel
    • A viewModel lekéri az összetevő nevében az Oracle Content Management által tárolt adatokat, majd az adatok alapján eldönti, hogy hogyan rendezhető el megfelelően az összetevő.

    • A Knockout általános observable (megfigyelhető) elemeit használja a sablon az összetevő nevében tárolt metaadatokhoz való hozzáférés kezeléséhez:

      self.imageWidth = ko.observable('200px');
      self.alignImage = ko.observable();
      self.layout = ko.observable();
      self.showTopLayout = ko.observable();
      self.showStoryLayout = ko.observable();
    • Triggerek és műveletek integrációja:

      Trigger: Függvény az Oracle Content Management triggerének indításához az összetevőből, amely az oldalon lévő más összetevők műveleteihez kapcsolódhat.

          self.imageClicked = function (data, event) {
            self.raiseTrigger("imageClicked"); // matches appinfo.json
          };

      Művelet: Függvény a visszahívás kezeléséhez, amikor a összetevő utasítást kap művelet végrehajtására adott adattörzzsel.

          self.executeActionsListener = function (args) {
            // get action and payload
            var payload = args.payload,
            action = args.action;
      
            // handle 'setImageWidth' actions
            if (action && action.actionName === 'setImageWidth') {
              $.each(payload, function(index, data) {
                if (data.name === 'imageWidth') {
                  self.imageWidth(data.value);
                }
              });
            }
          };

      Visszahívás tetszőleges regisztrált művelet igény szerinti végrehajtásához.

      SitesSDK.subscribe(SitesSDK.MESSAGE_TYPES.EXECUTE_ACTION, 
      $.proxy(self.executeActionsListener, self));
    • Előfizetések összetevő életciklusára:

      • Összetevő inicializálása: Biztosítani kell, hogy az összes adat behívásáig az összetevő ne indítson megjelenítést. Ennek kezelése Knockout observable (megfigyelhető) elemeken keresztül történik.

        self.componentLayoutInitialized = ko.observable(false);
        self.customSettingsDataInitialized = ko.observable(false);

        Minden szükséges tulajdonság kezdőértékének beolvasása. Ennek kezelése visszahívásokkal történik az adatok lekéréséhez.

        SitesSDK.getProperty('componentLayout', self.updateComponentLayout);
        SitesSDK.getProperty('customSettingsData', self.updateCustomSettingsData);
      • Metaadat-frissítések: Visszahívás, amikor az összetevő nevében tárolt metaadatok megváltoznak; például amikor a felhasználó megnyitja a Beállítások panelt, és módosítja az adatokat.

        SitesSDK.subscribe(SitesSDK.MESSAGE_TYPES.SETTINGS_UPDATED, 
        $.proxy(self.updateSettings, self));
        

Megjegyzés:

Mivel az Oracle Content Management kiszolgálója mindig beállítja a mime-type értékét a .html fájlokhoz, nem tölthet fel .html fájlt, és nem használhatja a "text!" beépülő modult a betöltéséhez. Ezért a sablonoknál eltérő kiterjesztést kell használnia a betöltéshez a "text!" beépülő modul használatával, vagy töltse be azt a JavaScript kódba közvetlenül beágyazva a beépített adatokban látható módon.

A 2. lépéshez tartozó eredmények ellenőrzése

Most már áttekintéssel rendelkezik az egyéni összetevő megjelenítője struktúrájának létrehozási módjáról. Működésének ellenőrzése:

  1. Módosítsa a sampleComponentTemplate objektumot a render.js fájlban a következő sor megváltoztatásával. Módosítsa a következő kódot:

    '<!-- ko if: initialized -->'+

    Ezt a kódot használja helyette:

    '<!-- ko if: initialized -->'+ 
    '<div data-bind="text:\'image width is: \' + imageWidth()"></div>' +
  2. Szinkronizálja vagy töltse fel az összetevőt az Oracle Content Management példánykiszolgálójára.

  3. Szerkessze az oldalt a webhelyen belül, és húzza az A_Local_Component egyéni összetevőt az oldalra.

    Ekkor az image width is: 260px beállítást kell látnia az összetevőben.

  4. Nyissa meg a Beállítások panelt, és kattintson az Egyéni beállítások gombra.

  5. Módosítsa az image Width mezőt 300px értékűre.

  6. Ekkor két dolog történik az összetevőben:
    1. Az alapértelmezett kép mérete 260 képpontról 300 képpontra változik.

    2. A felvett szöveg image width is 300px értékűre módosul.

A következő témakör: 3. lépés: A helyi összetevő beállítási struktúrájának áttekintése.