RichText felter

XPages benytter en CKEditor til RichText redigering. Med simpel kode kan du selv kontrollere menuen og dermed hvilken muligheder brugeren skal have, læs mere her: CKEditor in XPages eller brug XSnippet. Eksempel:

<xp:inputRichText value="#{document1.body}" id="body1" style="width:600px">
 <xp:this.dojoAttributes>
 <xp:dojoAttribute name="toolbar">
 <xp:this.value><![CDATA[#{javascript:var myToolbar = "[['Bold','Italic','Underline','Strike'],['TextColor','BGColor']]";
return myToolbar}]]></xp:this.value>
 </xp:dojoAttribute>
 </xp:this.dojoAttributes>
 </xp:inputRichText>

Hvis du skal vise RichText i en Repeat control (et view), så kan du benytte dette lille trick: Displaying mixed-type Rich Text in an XPages repeat control. Et Panel indsættes i Repeat Controllen og tildeles en datasource – herefter kan Body feltet inkluderes (og bliver renderet korrekt):

<xp:panel>
 <xp:this.data>
 <xp:dominoDocument var="entryDoc" formName="MainTopic"
 documentId="#{javascript:rowData.getUniversalID();}"
 ignoreRequestParams="true" action="editDocument">
 </xp:dominoDocument>
 </xp:this.data>

Med en Custom Converter kan du, on-the-fly, fjerne eks. FONT tags, SCRIPT tags eller andet uønsket html fra feltet inden det vises:

<xp:this.converter>
 <xp:customConverter>
 <xp:this.getAsObject><![CDATA[#{javascript:value}]]></xp:this.getAsObject>
 <xp:this.getAsString><![CDATA[#{javascript:
 try{
 var html=value.toString();
 html=html.replace(/<(FONT|font)([ ]([a-zA-Z]+)=(\"|')[^\"\\']+(\"|'))*[^>]+>/g,"")
 html=html.replace(/(<\/FONT>|<\/font>)/g,"")
 return html;
 }catch(e){
 print (e);
 }}]]>
 </xp:this.getAsString>
 </xp:customConverter>
 </xp:this.converter>

 Per Lausten har lavet ovenstående eksempel som også findes på OpenNTF

Attachments

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *

*