Forum Discussion

Hoekstra_VFZ's avatar
4 years ago

Built a service/status tracker status based on tags

Hello,

I am creating a component that only shows based on the tags given to the message.

The tags are hidden for non admins by the way.

Using Freemarker I have no luck yet in getting/reading the tags or taglist from the current thread.

Please help, half answers are also very welcome 🙂 Does anyone have a code snippet that shows how to 'get' the tags of the thread?

  • Allright: Full component here:

    <#import "theme-lib.common-functions.ftl" as commonUtils />
    <#assign threadId = page.context.thread.topicMessage.uniqueId />
    <#assign query = "SELECT text FROM tags WHERE messages.id = '${threadId}'" />
    <#assign tagData = commonUtils.executeLiQLQuery(query) />
    
    <#if tagData?size gt 0>
    <#assign issueTag = false />
    <#assign onderzoekTag = false />
    <#assign oorzaakbekendTag = false />
    <#assign opgelostTag = false />
    <#assign softwareupdateTag = false />
    <#assign websiteTag = false />
    
    <#list tagData as list>
        <#-- <h1>${list.text}</h1> -->
        <#if list.text == 'issue' || list.text == 'Issue'>
            <#assign issueTag = true />
        </#if>
        <#if list.text == 'onderzoek' || list.text == 'Onderzoek'>
            <#assign onderzoekTag = true />
        </#if>
        <#if list.text == 'oorzaak bekend' || list.text == 'Oorzaak Bekend'>
            <#assign oorzaakbekendTag = true />
        </#if>
        <#if list.text == 'opgelost' || list.text == 'Opgelost'>
            <#assign opgelostTag = true />
        </#if>
        <#if list.text == 'software update' || list.text == 'Software Update'>
            <#assign softwareupdateTag = true />
        </#if>
        <#if list.text == 'website' || list.text == 'Website'>
            <#assign websiteTag = true />
        </#if>
    </#list>
    
    <#if issueTag == true >
        <#assign statusTitle = 'In onderzoek' />
        <#assign statusBody = 'Moderators verzamelen jullie voorbeelden een gaan dit bundelen naar de technische dienst.' />
        <#assign statusButton = ['Geef jouw voorbeeld hier door','https://community.ziggo.nl'] />
    </#if>
    <#if issueTag == true && onderzoekTag == true >
        <#assign statusTitle = 'In onderzoek' />
        <#assign statusBody = 'De technische dienst is op de hoogte gesteld. Zij zoeken nu naar de oorzaak.' />
        <#assign statusButton = ['Lees hoe je kan helpen','https://community.ziggo.nl'] />
    </#if>
    <#if issueTag == true && oorzaakbekendTag == true >
        <#assign statusTitle = 'Issue bekend' />
        <#assign statusBody = 'De technische dienst heeft de oorzaak gevonden. Er wordt aan een oplossing gewerkt.' />
        <#assign statusButton = ['',''] />
    </#if>
    <#if issueTag == true && softwareupdateTag == true >
        <#assign statusBody = statusBody+' Een volgende softwareupdate bevat de fix.' />
        <#assign statusButton = ['Update je software','https://community.ziggo.nl'] />
    </#if>
    <#if issueTag == true && websiteTag == true >
        <#assign statusBody = statusBody+' Volg onze storingschecker voor updates.' />
        <#assign statusButton = ['Naar de storingschecker','https://community.ziggo.nl'] />
    </#if>
    
    <#if statusTitle?? && statusBody??>
        <div class="">${statusTitle}</div>
        <div class=""><p>${statusBody}</p></div>
        <#if statusButton[0] != '' && statusButton[1] != '' >
            <a class="lia-button lia-button-secondary lia-link-ticket-post-action" href="${statusButton[1]}">${statusButton[0]}</a>
        </#if>
    </#if>
    
    </#if>
    
    

3 Replies

  • Claudius I see you are online recently, therefore I am so bold as to tag you.

    Have you ever made a component that had logic based on the tags of the thread? 🙂

  • One step closer! The following is what I could find on the knowledgebase. 848 is just a test topic that has tags.

     

    SELECT * FROM custom_tags WHERE messages.id = '848'

     

     

    After fooling around a bit (removing 'custom_') I have the following, which does give a JSON response!

     

    SELECT * FROM tags WHERE messages.id = '848'
    --
    {
      "status" : "success",
      "message" : "",
      "http_code" : 200,
      "data" : {
        "type" : "tags",
        "list_item_type" : "tag",
        "size" : 2,
        "items" : [ {
          "type" : "tag",
          "id" : "34",
          "href" : "/tags/34",
          "text" : "issue",
          "messages" : {
            "query" : "SELECT * FROM messages WHERE tags.text = 'issue'"
          }
        }, {
          "type" : "tag",
          "id" : "35",
          "href" : "/tags/35",
          "text" : "onderzoek",
          "messages" : {
            "query" : "SELECT * FROM messages WHERE tags.text = 'onderzoek'"
          }
        } ]
      },
      "metadata" : { }
    }

     

     

    Now I can go build that component. Keep you guys up to date!

  • Allright: Full component here:

    <#import "theme-lib.common-functions.ftl" as commonUtils />
    <#assign threadId = page.context.thread.topicMessage.uniqueId />
    <#assign query = "SELECT text FROM tags WHERE messages.id = '${threadId}'" />
    <#assign tagData = commonUtils.executeLiQLQuery(query) />
    
    <#if tagData?size gt 0>
    <#assign issueTag = false />
    <#assign onderzoekTag = false />
    <#assign oorzaakbekendTag = false />
    <#assign opgelostTag = false />
    <#assign softwareupdateTag = false />
    <#assign websiteTag = false />
    
    <#list tagData as list>
        <#-- <h1>${list.text}</h1> -->
        <#if list.text == 'issue' || list.text == 'Issue'>
            <#assign issueTag = true />
        </#if>
        <#if list.text == 'onderzoek' || list.text == 'Onderzoek'>
            <#assign onderzoekTag = true />
        </#if>
        <#if list.text == 'oorzaak bekend' || list.text == 'Oorzaak Bekend'>
            <#assign oorzaakbekendTag = true />
        </#if>
        <#if list.text == 'opgelost' || list.text == 'Opgelost'>
            <#assign opgelostTag = true />
        </#if>
        <#if list.text == 'software update' || list.text == 'Software Update'>
            <#assign softwareupdateTag = true />
        </#if>
        <#if list.text == 'website' || list.text == 'Website'>
            <#assign websiteTag = true />
        </#if>
    </#list>
    
    <#if issueTag == true >
        <#assign statusTitle = 'In onderzoek' />
        <#assign statusBody = 'Moderators verzamelen jullie voorbeelden een gaan dit bundelen naar de technische dienst.' />
        <#assign statusButton = ['Geef jouw voorbeeld hier door','https://community.ziggo.nl'] />
    </#if>
    <#if issueTag == true && onderzoekTag == true >
        <#assign statusTitle = 'In onderzoek' />
        <#assign statusBody = 'De technische dienst is op de hoogte gesteld. Zij zoeken nu naar de oorzaak.' />
        <#assign statusButton = ['Lees hoe je kan helpen','https://community.ziggo.nl'] />
    </#if>
    <#if issueTag == true && oorzaakbekendTag == true >
        <#assign statusTitle = 'Issue bekend' />
        <#assign statusBody = 'De technische dienst heeft de oorzaak gevonden. Er wordt aan een oplossing gewerkt.' />
        <#assign statusButton = ['',''] />
    </#if>
    <#if issueTag == true && softwareupdateTag == true >
        <#assign statusBody = statusBody+' Een volgende softwareupdate bevat de fix.' />
        <#assign statusButton = ['Update je software','https://community.ziggo.nl'] />
    </#if>
    <#if issueTag == true && websiteTag == true >
        <#assign statusBody = statusBody+' Volg onze storingschecker voor updates.' />
        <#assign statusButton = ['Naar de storingschecker','https://community.ziggo.nl'] />
    </#if>
    
    <#if statusTitle?? && statusBody??>
        <div class="">${statusTitle}</div>
        <div class=""><p>${statusBody}</p></div>
        <#if statusButton[0] != '' && statusButton[1] != '' >
            <a class="lia-button lia-button-secondary lia-link-ticket-post-action" href="${statusButton[1]}">${statusButton[0]}</a>
        </#if>
    </#if>
    
    </#if>