Neste passo, revemos a estrutura das definições especificadas para um componente local.
Semelhante ao ficheiro render.js
no diretório /assets
, este um ficheiro settings.html
pré-criado no mesmo diretório. O ficheiro settings.html
apresenta quaisquer dados de definições customizadas para o seu componente. Na implementação por omissão, existe uma propriedade única imageWidth
nos dados de definições customizadas.
Para rever a estrutura do seu componente local:
Utilizando o cliente de sincronização de ambiente de trabalho do Oracle Content Management, localize o seu componente e sincronize-o com o sistema de ficheiros.
Se não tiver o cliente de sincronização do ambiente de trabalho, pode selecionar o componente no separador Componentes da interface web do Oracle Content Management e definir o nível de detalhe inferior para ver os ficheiros.
Se listar os ficheiros no componente, verá estes ficheiros:
assets render.js settings.html appinfo.json _folder_icon.jpg
Abra o ficheiro settings.html
no diretório /assets
e reveja o conteúdo. Ao contrário do ficheiro render.js
, o ficheiro settings.html
utiliza uma moldura inline no painel Definições no Criador de Sites, que é a razão pela qual também precisa de aceder aos ficheiro suportados para uma apresentação correta na moldura inline. O Criador de Sites é necessário para gerir o seu site pelo que todos os erros no seu código JavaScript podem ser isolados do Criador de Sites, que é a razão pela qual o ficheiro settings.html
utiliza uma moldura inline.
Estas são as áreas principais do ficheiro settings.html
:
Modelo Knockout para apresentar o painel Definições.
<!-- ko if: initialized() --> <div class="scs-component-settings"> <div> <!-- Width --> <label id="widthLabel" for="width" class="settings-heading" data-bind="text: 'Image Width'"></label> <input id="width" data-bind="value: width" placeholder="example: 200px or 33%" class="settings-text-box"> </div> </div> <div data-bind="setSettingsHeight: true"></div> <!-- /ko -->
Rotina de Tratamento de Associação Customizada para ajustar a altura da moldura inline depois de apresentado o painel Definições.
ko.bindingHandlers.scsCompComponentImpl
Um ViewModel Knockout a aplicar ao Modelo Knockout.
SettingsViewModel
Estes são os elementos principais do SettingsViewModel
:
Subscrições no ciclo de vida do componente.
Inicialização do componente:
Certifique-se de que o componente não é apresentado até todos os dados serem extraídos. Este procedimento é efetuado com elementos observáveis Knockout.
self.initialized = ko.observable(false);
Certifique-se de que não tenta atualizar os dados até estarmos prontos.
self.saveData = false;
Obtenha os valores iniciais para quaisquer propriedades necessárias. Este procedimento é efetuado com callbacks para obter os dados.
SitesSDK.getProperty('customSettingsData', function (data) { //update observable self.width(data.width); // note that viewModel is initialized and can start saving data self.initialized(true); self.saveData = true; });
Grave quaisquer alterações de propriedade nos dados de definições customizadas.
self.save = ko.computed(function () { var saveconfig = { 'width': isNaN(self.width()) ? self.width() : self.width() + 'px' }; // save data in page if (self.saveData) { SitesSDK.setProperty('customSettingsData', saveconfig); } }, self);
Para acrescentar outra propriedade que pretenda capturar, são necessários vários passos:
Atualize a interface do utilizador para apresentar o novo valor.
Inicialize o valor no valor atual armazenado no componente.
Grave quaisquer alterações no valor anterior ao componente.
Para acrescentar outra propriedade ao seu componente customizado, efetue estas alterações ao ficheiro settings.html
:
Acrescente outro elemento observável para processar a nova propriedade. Altere este código:
self.width = ko.observable();
Utilize este código como alternativa:
self.width = ko.observable(); self.imageBannerText = ko.observable();
Obtenha qualquer valor atual para a nova propriedade quando o painel de definições for primeiro apresentado. Altere este código:
self.width(data.width);
Utilize este código como alternativa:
self.width(data.width); self.imageBannerText(data.imageBannerText);
Grave quaisquer alterações a esta nova propriedade. Altere este código:
'width': isNaN(self.width()) ? self.width() : self.width() + 'px'
Utilize este código como alternativa:
'width': isNaN(self.width()) ? self.width() : self.width() + 'px', 'imageBannerText': self.imageBannerText()
Acrescente uma interface do utilizador para apresentar o novo campo. Altere este código:
<label id="widthLabel" for="width" class="settings-heading" data-bind="text: 'Image Width'"></label> <input id="width" data-bind="value: width" placeholder="example: 200px or 33%" class="settings-text-box">
Utilize este código como alternativa:
<label id="widthLabel" for="width" class="settings-heading" data-bind="text: 'Image Width'"></label> <input id="width" data-bind="value: width" placeholder="example: 200px or 33%" class="settings-text-box"> <label id="imageBannerTextLabel" for="imageBannerText" class="settings-heading" data-bind="text: 'Image Banner'"></label> <input id="imageBannerText" data-bind="value: imageBannerText" placeholder="Text to display above an image" class="settings-text-box">
Sincronize ou carregue o ficheiro settings.html
.
Se tiver de executar agora, o campo será apresentado. No entanto, o tamanho do painel Definições não é alterado automaticamente. Uma vez que aumentou o tamanho do painel, também deve atualizar a entrada de registo components.json
para o novo tamanho.
Descarregue o ficheiro appinfo.json
, que está no mesmo nível que o diretório assets/
para o seu componente, e atualize o tamanho do painel de definições. Altere este código:
"settingsHeight": 90,
Utilize este código como alternativa:
"settingsHeight": 160,
Sincronize ou carregue o ficheiro appinfo.json
.
Verificar os Resultados para o Passo 3
Deverá agora conseguir ver e introduzir a nova propriedade que acrescentou ao painel Definições.
Renove a sua página no site para que o Criador de Sites possa escolher alterações para o componente.
Apresente a página no modo de edição.
Arraste e largue o seu componente na página.
Abra o painel Definições com o seu componente.
Clique no botão Definições Customizadas.
Verá dois campos apresentados para cada uma das propriedades que tem no seu ficheiro settings.html
.
Avance para Passo 4: Apresentar a Nova Propriedade no Componente.