Creare il componente H1 di base

È possibile rimuovere la maggior parte del contenuto dei file predefiniti per creare un componente H1. Il componente visualizza il testo di intestazione specificato quando si crea viewModel. In seguito sarà possibile fornire le impostazioni e gli stili per il componente.

Per esaminare la struttura del componente locale, effettuare le operazioni riportate di seguito.

  1. Utilizzando l'applicazione di sincronizzazione del desktop di Oracle Content Management, individuare il componente e sincronizzarlo con il file system.

    • In una versione recente dell'applicazione di sincronizzazione del desktop, scegliere l'opzione Avvia sincronizzazione o Scegli cartelle da sincronizzare.

    • Se non si dispone dell'applicazione di sincronizzazione del desktop, è possibile selezionare il componente nella scheda Componenti di Oracle Content Management, quindi eseguire il drill-down per visualizzare i file.

  2. Elencando i file sotto il componente è possibile visualizzare i file riportati di seguito.

    • I file del componente nella cartella assets:

      • render.js

      • settings.html

    • appinfo.json: file JSON con la descrizione del componente.

      Vedere Informazioni sullo sviluppo dei componenti.

    • folder_icon.jpg: icona visualizzata nel catalogo componenti.

Per creare un componente H1, effettuare le operazioni riportate di seguito.

  1. Aprire il file appinfo.json e sostituirne il contenuto con le righe seguenti:
    {
       "id": "h1-component-id",
    
       "settingsData": {
                 "settingsHeight": 90,
                 "settingsWidth": 300,
                 "settingsRenderOption": "inline",
                 "componentLayouts": [ ],
                 "triggers": [ ],
                 "actions": [ ]
       },
       "initialData": {
                 "componentId": "h1-component-id",
                 "customSettingsData": {
                         "headingText": "Heading 1"
                 },
                 "nestedComponents": [ ]
       }
    }
  2. Aprire il file render.js contenuto nella cartella assets nell'editor di testo preferito.
  3. Modificare il contenuto del file render.js con le righe seguenti:
    /* globals define */
    define(['knockout', 'jquery', 'text!./render.html'], function(ko, $, template) {
      'use strict';
      // ----------------------------------------------
      // Define a Knockout ViewModel for your template
      // ----------------------------------------------
      var SampleComponentViewModel = function(args) {
        var SitesSDK = args.SitesSDK;
        // create the observables -- this allows updated settings to automatically update the HTML on the page
        this.headingText = ko.observable();
    
        //
        // Handle property changes from the Settings panel
        //
        this.updateCustomSettingsData = $.proxy(function(customData) {
          this.headingText(customData && customData.headingText);
        }, this);
        this.updateSettings = function(settings) {
          if (settings.property === 'customSettingsData') {
            this.updateCustomSettingsData(settings.value);
          } 
        };
        // Register your updateSettings listener to recieve SETTINGS_UPDATED events
        SitesSDK.subscribe(SitesSDK.MESSAGE_TYPES.SETTINGS_UPDATED, $.proxy(this.updateSettings, this)); 
    
        //
        // Get the initial settings data for the component and apply it
        //
        SitesSDK.getProperty('customSettingsData', this.updateCustomSettingsData);
      };
    
    
      // ----------------------------------------------
      // Create a knockout based component implemention
      // ----------------------------------------------
      var SampleComponentImpl = function(args) {
        // Initialze the custom component
        this.init(args);
      };
      // initialize all the values within the component from the given argument values
      SampleComponentImpl.prototype.init = function(args) {
        this.createViewModel(args);
        this.createTemplate(args);
        this.setupCallbacks();
      };
      // create the viewModel from the initial values
      SampleComponentImpl.prototype.createViewModel = function(args) {
        // create the viewModel
        this.viewModel = new SampleComponentViewModel(args);
      };
      // create the template based on the initial values
      SampleComponentImpl.prototype.createTemplate = function(args) {
        // create a unique ID for the div to add, this will be passed to the callback
        this.contentId = args.id + '_content_' + args.viewMode;
        // create a hidden custom component template that can be added to the DOM
        this.template = '<div id="' + this.contentId + '">' + 
          template + 
          '</div>';      
      };
      //
      // SDK Callbacks
      // setup the callbacks expected by the SDK API
      //
      SampleComponentImpl.prototype.setupCallbacks = function() {
        //
        // callback - render: add the component into the page
        //
        this.render = $.proxy(function(container) {
          var $container = $(container);
          // add the custom component template to the DOM
          $container.append(this.template);
          // apply the bindings
          ko.applyBindings(this.viewModel, $('#' + this.contentId)[0]);
        }, this);
        //
        // callback - dispose: cleanup after component when it is removed from the page
        //
        this.dispose = $.proxy(function() {
          // nothing required for this sample since knockout disposal will automatically clean up the node
        }, this);
      };
      // ----------------------------------------------
      // Create the factory object for your component
      // ----------------------------------------------
      var sampleComponentFactory = {
        createComponent: function(args, callback) {
          // return a new instance of the component
          return callback(new SampleComponentImpl(args));
        }
      };
      return sampleComponentFactory;
    });
  4. Nella cartella assets creare un nuovo file, denominato render.html, con il modello HTML semplice del componente.
  5. Utilizzare il contenuto seguente nel file render.html:
    <h1 data-bind="text: headingText()">  
    </h1> 

    Ora la cartella assets del componente contiene tre file.

    • render.html
    • render.js
    • settings.html

Aggiungere il nuovo componente H1 alla pagina (checkpoint 2).