Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

Get from Datasource the comments based on the ticket_id and show them sorted by data and time.

Something like:

CSS

Code Block
langhtml
<style>
.commentItem {border:1px solid #333;}
.labelHeading {font-size:11px; border: 1px solid #BBBBBB;padding:0px 5px 0px 5px;background-image:-moz-linear-gradient(center top , #FCFCFC 0%, #F7F7F7 24%, #E8E8E8 62%, #E8E8E8 71%, #E8E8E8 100%)}
.buttonEditComment {  background-image: -moz-linear-gradient(center top , #FCFCFC 0%, #F7F7F7 24%, #E8E8E8 62%, #E8E8E8 71%, #E8E8E8 100%); border: 1px solid #BBBBBB;  color: #000000; font-size: 11px; line-height: 30px;padding: 4px; text-decoration: none;    border-radius: 3px 3px 3px 3px;}
.buttonEditComment:hover {background-color: #F0F0F0; background-image: -moz-linear-gradient(center top , #FFFFFF 0%, #E0E0E0 100%); background-repeat: repeat-x; background-size: 100% auto; border-radius: 3px 3px 3px 3px;}


.commentbox { border: 1px solid #ccc; clear: left; float: left; width:95%;margin: 0px 0px 5px 10px;}
.commentbox p {padding: 15px;margin:0px;}
.solution {background-color:#E6FFCA;}
</style>

Javascript

Code Block
langjavascript
isc.ResultSet.create({
         dataSource : "tick_comments",
         ID: "RS_comments_current"
         });
//sort the datasource with
RS_comments_current.setSort([ {property: "date_of_comment", direction: "ascending"}, {property: "time_of_comment", direction: "descending"}])
//When data arrives, run this function
RS_comments_current.dataArrived = function(startRow, endRow)
{
        var listOfRecords = RS_comments_current.getAllRows();
        var comments = '';
        for (var i=0;i<listOfRecords.getLength();i++)
        {
            extrastylecss = ""
            if (listOfRecords[i].solution == "Yes")
            {
                extrastylecss = " solution"
            }
            datetime_of_comment = "<b>" + listOfRecords[i].date_of_comment.getDate()  + "/"+  listOfRecords[i].date_of_comment.getMonth() + "/"+ listOfRecords[i].date_of_comment.getFullYear() + "</b> at <b>" + listOfRecords[i].time_of_comment.getHours() + ":"+ listOfRecords[i].time_of_comment.getMinutes() + "</b>"
            comments += "<br><div class='commentbox" + extrastylecss + "'><p><b>" + listOfRecords[i].comment+"</b><br><a href='#' class='buttonEditComment' align='right' onclick='DF_edit_comments.filterData({pk:"+listOfRecords[i].pk+"})'>Edit comment</a></p>"+datetime_of_comment+" - "+"user</div><br>";


        }
        testHTML.setContents(comments);
}

//go fetch data
RS_comments_current.fetchRemoteData({ticket_id:ticketId[0].pk})

...

Code Block
langjavascript
isc.HTMLPane.create({
    width:"100%",height:200,
    ID: "testHTML",
    styleName:"exampleTextBlock",
    contents:""
})
Code Block
langxml
titletick_comments.ds.xml
langxml
<DataSource ID="tick_comments" serverType="sql" dataSourceVersion="1" dbName="tickets" tableName="comments">
    <fields>
        <field name="pk" type="sequence" primaryKey="true"/>
        <field name="ticket_id" type="integer" required="true" foreignKey="tick_tickets.pk"/>
        <field name="comment" type="text" length="65535"/>
        <field name="solution" length="4" required="true" type="enum" >
            <valueMap>
                <value>Yes</value>
                <value>No</value>
                </valueMap>
        </field>
        <field name="date_of_comment" canEdit="false" type="date" dateFormatter="toEuropeanShortDate"/>
        <field name="time_of_comment" canEdit="false" type="time"/>
    </fields>
    <allowAdvancedCriteria>true</allowAdvancedCriteria>
    <operationBindings>     <OperationBinding  operationType="add">
        <customSQL>
INSERT INTO `comments` (`pk`, `ticket_id`, `comment`, `solution`, `date_of_comment`, `time_of_comment`) VALUES
(null, $criteria.ticket_id, $criteria.comment, $criteria.solution, CURDATE(), CURTIME());
        </customSQL>     </OperationBinding>     </operationBindings>
</DataSource>