Création du composant de base H1

Vous pouvez enlever la plupart du contenu des fichiers prédéfinis pour créer un composant H1. Le texte d'en-tête que vous prédéfinissez lors de la création de viewModel apparaît. Vous pourrez ensuite fournir des paramètres et des styles pour le composant.

Pour vérifier la structure de votre composant local, procédez comme suit :

  1. A l'aide de l'application de synchronisation de bureau Oracle Content Management, localisez votre composant et synchronisez-le avec le système de fichiers.

    • Si vous disposez d'une version récente de l'application de synchronisation de bureau, choisissez l'option Démarrer la synchronisation ou Sélectionner les dossiers à synchroniser.

    • Si vous ne disposez pas de l'application de synchronisation de bureau, vous pouvez sélectionner le composant dans l'onglet Composants d'Oracle Content Management, puis effectuer une analyse descendante pour voir les fichiers.

  2. Si vous répertoriez les fichiers sous le composant, vous pouvez voir les fichiers suivants :

    • Fichiers du composant dans le dossier assets :

      • render.js

      • settings.html

    • appinfo.json : fichier JSON contenant la description du composant.

      Reportez-vous à A propos du développement de composants.

    • folder_icon.jpg : icône affichée dans le catalogue de composants.

Pour créer un composant H1, procédez comme suit :

  1. Ouvrez le fichier appinfo.json et remplacez son contenu par les lignes suivantes :
    {
       "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. Ouvrez le fichier render.js du dossier assets dans l'éditeur de texte de votre choix.
  3. Remplacez le contenu de render.js par les lignes suivantes :
    /* 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. Dans le dossier assets, créez un fichier render.html qui sera le modèle HTML simple du composant.
  5. Servez-vous du contenu suivant dans le fichier render.html :
    <h1 data-bind="text: headingText()">  
    </h1> 

    Le dossier assets du composant contient à présent trois fichiers.

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

Ajoutez le nouveau composant H1 à votre page (point de reprise 2).