Personnalisation de l’application de révision
Pour faciliter la personnalisation de l’application de révision, nous avons fourni quelques crochets répertoriés et expliqués ci-dessous :
Révision-Commentaire
- id :
review_comment - hook :
this.next('updateExtraProps'):
Comme mentionné ici, tout nouvel attribut ajouté lors de la personnalisation passe sous this.model.extraProps. La méthode updateExtraProps vous permet d’ajouter des attributs à un commentaire de révision, en gérant également la mise à jour et le stockage de l’attribut ajouté sur le serveur.
Exemple d’utilisation
Par exemple, vous souhaitez ajouter des champs commentRationale et severity à vos commentaires.
Mettons à jour le commentRationale en "C'est une phrase importante." et le severity sur "CRITICAL".
Vous pouvez le faire en utilisant la syntaxe :
this.next('updateExtraProps', {
'commentRationale': 'This is an important sentence.',
'severity': 'CRITICAL'
})
Le fragment de code ci-dessus va gérer la mise à jour et l’enregistrement des valeurs. Les valeurs enregistrées peuvent être rendues sur l’interface utilisateur en définissant la vue.
{
"component" : "label",
"label": "@extraProps.commentRationale"
}
Panneau de révision en ligne
- id :
inline_review_panel
-
hook :
onNewCommentEvent
Le point d’extensiononNewCommentEventvous permet de lancer un événement ou d’appeler une méthode sur un nouveau commentaire ou événement de réponse.
Les arguments reçus dans leonNewCommentEventincluent :- events : l’événement de commentaire/réponse qui a été distribué.
- newComment : boolean
Si l’événement distribué était un nouvel événement de commentaire, c’est-à-direhighlight,insertion,deletion,sticky note comment - newReply: boolean
Si l’événement distribué était un nouvel événement de réponse.
-
hook :
sendExtraProps
Ce point d’extension est bénéfique si vous souhaitez étendre un event et envoyer extraProps à partir du panneau de révision en ligne. Nous allons expliquer l'utilisation de ces deux points d'extension ci-dessous.
Exemple de panneau de révision intégré
Supposons que nous souhaitions envoyer un extraProp, userInfo, chaque fois qu’un nouveau commentaire ou une nouvelle réponse est distribué. Maintenant, cela sera effectué via le panneau de révision intégré, mais nous n’avons pas la référence au commentaireId du commentaire nouvellement généré. Pour ce faire, nous pouvons écrire le code suivant.
onNewCommentEvent(args){
const events = _.get(args, "events")
const currTopicIndex = tcx.model.getValue(tcx.model.KEYS.REVIEW_CURR_TOPIC) || this.getValue('currTopicIndex') || "0"
const event = _.get(_.get(events, currTopicIndex), '0')
const newComment = _.get(args, 'newComment')
const newReply = _.get(args, 'newReply')
if ((newComment || newReply) && event) {
this.next('setUserInfo', event)
}
},
Dans le fragment de code ci-dessus, nous vérifions si l’événement distribué était un nouveau commentaire ou une nouvelle réponse. En cas de nouveau commentaire ou réponse, nous appelons la méthode setUserInfo
const getUserInfo = (userId) => {
return $.ajax({
url: '/bin/dxml/xmleditor/userinfo',
data: {
username: userId,
},
success: (data) => {
return data
}
})
}
setUserInfo(event) {
getUserInfo(event.user).done(userData => {
const extraProps = {
"userFirstName": userData?.givenName || '',
"userLastName": userData?.familyName || '',
"userTitle": userData?.title || '',
"userJobTitle": userData?.jobTitle || '',
'userEmail': userData?.email || '',
}
const data = {... event, extraProps}
this.next(
'sendExtraProps',
data
)
})
},
Dans la méthode ci-dessus, nous étendons l’événement pour envoyer extraProps qui inclut le prénom, l’email, le titre de l’utilisateur, etc. L’extension de l’événement de cette manière garantit que extraProps est envoyé avec le commentaireId correct, en s’assurant qu’il est joint au commentaire approprié.
Le point d'extension updateExtraProps appelle par nature le point d'extension sendExtraProps, donc quand utiliser quoi ?
Nous utilisons updateExtraProps dans le contrôleur review_comment, qui possède déjà le id du commentaire et par conséquent vous devez simplement mentionner le extraProps.
inline_review_panel n’a toutefois pas accès à l’ID du commentaire. Par conséquent, chaque fois que vous devez distribuer un événement à partir du panneau de révision intégré, sendExtraProps sera pratique.