Interface de script du portail et associations de contenu

L'interface de scriptage du portail permet de créer des scripts afin d'automatiser la gestion des associations de contenu. Lorsque vous utilisez le bean ContentMapping avec l'interface de scriptage du portail, vous pouvez ajouter, modifier et supprimer les associations de contenu.

Remarque : Pour qu'un script puisse fonctionner avec le bean ContentMapping, vous devez établir une session utilisateur avec le portail à l'aide de la commande login du bean Portal. L'ID utilisateur doit disposer des droits permettant d'administrer les pages de contenu Web et les dossiers de bibliothèque de contenu Web référencés par le script.

Extraction des associations de contenu

Pour extraire des informations d'association de contenu, utilisez la méthode select afin de spécifier l'ID objet de la page de contenu Web. Vous pouvez dériver l'ID objet d'une ressource à partir d'un autre bean et utiliser cela comme entrée pour la méthode select. Par exemple, une page de contenu Web peut avoir le nom unique my.test.page. La méthode find du bean Content permet de déterminer l'ID objet de la page my.test.page.

Exemple Jacl :
$set the_page [$Content find page uniquename "my.test.page"]
$ContentMapping select $the_page
Exemple Jython :
the_page = Content.find('page','uniquename','my.test.page')
ContentMapping.select(the_page)

Une fois que vous possédez l'ID objet de la page de contenu Web, vous pouvez utiliser la méthode list et les méthodes get pour accéder aux associations de contenu. La méthode list renvoie la liste des ID d'association de contenu. Les ID peuvent identifier l'ID de ressource d'un dossier ou le chemin de contenu du dossier, selon la façon dont la page est mappée. Vous pouvez utiliser les ID d'association de contenu renvoyés par la méthode list comme arguments pour la méthode get.

Exemple Jacl :
$set the_page [$Content find page uniquename "my.test.page"]
$ContentMapping select $the_page
foreach mid [$ContentMapping list mappings] {
  puts "  Mapping $mid info:"
  puts "  content id: [$ContentMapping get content-id $mid]"
  puts "  default? [$ContentMapping get isdefault $mid]"
  puts "  scope: [$ContentMapping get scope $mid]"
}
Exemple Jython :
var the_page = Content.find('page','uniquename','my.test.page')
ContentMapping.select(the_page)
for mid in ContentMapping.list('mappings').split():
  print "  Mapping "+mid+" info:"
  print "  content id: "+ContentMapping.get('content-id', mid)
  print "  default? "+ContentMapping.get('isdefault', mid)
  print "  scope: "+ContentMapping.get('scope', mid)

La méthode get peut renvoyer l'association par défaut pour la page de contenu Web sélectionnée. La méthode list peut extraire la liste des portées qui sont définies pour les associations de la page de contenu Web.

Exemple Jacl :
$set the_page [$Content find page uniquename "my.test.page"]
$ContentMapping select $the_page
puts "available scopes: [$ContentMapping list scopes]"
puts "default mapping: [$ContentMapping get defaultmapping]"
puts "portal resource OID: [$ContentMapping get oid]"
Exemple Jython :
var the_page = Content.find('page','uniquename','my.test.page')
ContentMapping.select(the_page)
print "available scopes: "+ContentMapping.list('scopes')
print "default mapping: "+ContentMapping.get('defaultmapping')
print "portal resource OID: "+ContentMapping.get('oid')

Ajout d'associations de contenu

Utilisez la méthode add pour ajouter de nouvelles associations de contenu à une page de contenu Web. Vous pouvez attribuer une association de contenu en spécifiant le chemin de contenu du dossier ou l'ID du dossier. Si vous identifiez le dossier en fonction du chemin de contenu, l'association est transformée en interne pour désigner l'ID du dossier. Ainsi, si vous renommez le dossier ultérieurement, l'association continue de désigner le même dossier.

Exemple Jacl :
$ContentMapping select [$ContentNode find page uniquename "my.sample.page"]
$ContentMapping add content-path "/test1/mapping" 
set the_content_id  .... ## obtain ID of content to be mapped 
$ContentMapping add id $the_content_id
Exemple Jython :
ContentMapping.select(Content.find('all','un','my.sample.page'))
ContentMapping.add('content-path','/test1/mapping') 
var the_content_id = ... ## obtain ID of content to be mapped 
ContentMapping.add('id',the_content_id) 

Suppression des associations de contenu

Le bean ContentMapping fournit deux méthodes de suppression des associations de contenu depuis une page de contenu Web :
supprimer
Supprime une association de contenu individuelle, spécifiée par l'ID de ressource du dossier ou le chemin de contenu du dossier.
supprimer
Supprime toutes les associations de contenu pour la page de contenu Web.

Les exemples suivants illustrent la suppression des associations de contenu pour deux pages de contenu Web. Les associations de contenu de la première page sont supprimées individuellement à l'aide de la méthode remove et celles de la seconde page sont supprimées à l'aide de la méthode delete.

Exemple Jacl :
$set the_first_page [$Content find page uniquename "my.test.page"]
$ContentMapping select $the_first_page
foreach mid [$ContentMapping list mappings] {
  $ContentMapping remove $mid
}

$set another_page [$Content find page uniquename "my.second.test.page"]
$ContentMapping select $another_page
$ContentMapping delete
Exemple Jython :
var the_page = Content.find('page','uniquename','my.test.page')
ContentMapping.select(the_first_page)
for mid in ContentMapping.list('mappings').split():
  ContentMapping.remove(mid)

var another_page = Content.find('page','uniquename','my.second.test.page')
ContentMapping.select(another_page)
ContentMapping.delete()

Modification des associations de contenu

Pour modifier les associations de contenu, utilisez la méthode set du bean ContentMapping. Vous pouvez modifier les attributs suivants :
  • Indicateur par défaut
  • Mode de délégation
  • Portée du mappage

Lorsque vous appelez la méthode set, indiquez l'ID de l'association de contenu à mettre à jour.

L'exemple suivant met à jour deux associations de contenu pour la page de contenu Web identifiée par le nom unique my.test.page. Plusieurs paramètres sont spécifiés pour la première association de contenu :
  • L'indicateur par défaut est défini pour que cette association de contenu soit l'association de contenu par défaut pour la page de contenu Web.
  • La portée de l'association est _scp_.
  • Le contrôle d'accès reposant sur les pages est désactivé car le mode de délégation est associé à la valeur false.
Pour la seconde association de contenu, la portée de l'association est supprimée en spécifiant une chaîne vide.
Exemple Jacl :
$ContentMapping select [$ContentNode find page uniquename "my.sample.page"]
set first_m_id [lindex [$ContentMapping list mappings] 0] 
$ContentMapping set scope $first_m_id "_scp_"
$ContentMapping set default $first_m_id true
$ContentMapping set delegation $first_m_id false
set second_m_id [lindex [$ContentMapping list mappings] 1] 
$ContentMapping set scope $second_m_id ""
Exemple Jython :
ContentMapping.select(Content.find('all','un','my.sample.page'))
var first_m_id = ContentMapping.list('mappings').split()[0]
ContentMapping.set('scope',first_m_id,'_scp_')
ContentMapping.set('default',first_m_id,'true')
ContentMapping.set('delegation',first_m_id,'false')
var second_m_id = ContentMapping.list('mappings').split()[1]
ContentMapping.set('scope',second_m_id,'')