# Vodič za skriptovanje za Kopeteov priključak cevi

Od izdanja 1.0, Kopete dolazi sa priključkom zvanim cevi. Cevi omogućavaju provlačenje dolaznih i odlaznih poruka kroz spoljašnju skriptu. Dolazna poruka provlači se kroz skriptu pre nego što dospe u prozor za ćaskanje, dok se odlazna poruka provlači pre nego što se pošalje. Cevi mogu da primaju tekst u jednom od tri oblika:

poruka kao obični tekst

- Telo poruke kao čist tekst.

poruka kao HTML

- Telo poruke u obliku HTML‑a, kako bi izgledalo kada bi vam sagovornik poslao HTML poruke kakva izgleda u prozoru za ćaskanje.

Kopeteov XML porukâ

- XML dokument koji opisuje sve karakteristike poruke, uključujući HTML telo.

. Ovaj dokument opisuje specifičnosti XML formata i kako napisati program za njegovo obrađivanje.

## XML izlaz

Evo primera onoga što će skripta primiti na svoj standardni ulazni tok:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <message subject=""
            route="outbound"
            importance="1"
            formattedTimestamp="11:06:46 am"
            timestamp="Sat Dec 1 11:06:46 2007"
            type="normal"
            mainContactId="spacemonkey1234"
            time="11:06 am" >
            <from>
                    <contact contactId="tdurden"
                            protocolIcon="aim_protocol"
                          userPhoto="/home/kde-devel/.kde4/share/apps/kopete/oscarpictures/tdurden.jpg">
                            <contactDisplayName dir="ltr" text="tdurden" />
                            <metaContactDisplayName dir="ltr"
                                    text="Tyler" />
                    </contact>
            </from>
            <to>
                    <contact contactId="spacemonkey1234"
                            protocolIcon="aim_protocol"
                            userPhoto="/home/kde-devel/.kde4/share/apps/kopete/avatars/User/7e542903e0ac7519a7496e85f5a5b99d.png" >
                            <contactDisplayName dir="ltr" text="spacemonkey1234" />
                            <metaContactDisplayName dir="ltr" text="Robert Paulson" />
                    </contact>
                    </to>
            <body dir="ltr"
                    bgcolor="#000000"
                    color="#000000" >
                    &lt;span style=" color:#000000; "
    >hey&lt;/span
    ></body>
    </message>

Ovaj XML je donekle zasnovan na XSD‑u stilova ćaskanja, koji se može naći na veb sajtu Kopetea. Dati kô̂d predstavlja jednu poruku. Treba obratiti pažnju na nekoliko stvari:

- Atribut `timestamp` u elementu `message` je u formatu standarda ISO 8601.

- Atribut `protocolIcon` u elementu `contact` određuje se ovako:

  1. Ako objekat kontakta ima postavljeno svojstvo fotografije, koristi se ta putanja.

  2. Ako nema, od kontaktovog metakontakta se traži putanja slike, koja se uzima bilo da je nulta ili ne.

- Atributi `color` i `bgcolor` u elementu `body` ostaju prazne niske ako nisu postavljeni u Kopeteu. Inače su u formatu veb boja.

- Sadržaj elementa `body` ima izbegnute znakove `<`, da se ne bi pomešali sa strukturom XML‑a. Da bi se telo ispravno protumačilo kao HTML, očigledno se svi `&lt;` moraju pretvoriti u `<`.

## XML ulaz

Skripta će imati priliku da izmeni XML koji primi na svoj standardni ulazni tok, a zatim ga mora vratiti Kopeteu kroz svoj standardni izlazni tok. Ako skripta izmeni sledeće elemente, unutrašnje stanje koje Kopete nosi o poruci izmeniće se tako da odrazi učinjene izmene.

- atribut `timestamp` u `message`, ali ne i ostali vremenski atributi

- atribut `subject` u `message`

- atribut `type` u `message`

- atribut `importance` u `message`

- atribut `color` u `body`. Obično zadato kao broj veb boje, ali se može zadati i ime. Objekti `QColor` u Qt‑u4 prihvataju imena koja definiše SVG, tako da se jedino ona mogu koristiti.

- atribut `bgcolor` u `body`. Isto ponašanje kao `color`.

- sadržaj elementa `body`

. Ako skripta izmeni elemente ili njihove atribute koji nisu pomenuti ovde, te izmene neće imati efekta.

## Prihvatljive vrednosti

Neki atributi imaju ograničen skup prihvatljivih vrednosti. Priključak cevi uvek će na izlazu dati pravilne vrednosti; ako vaša skripta menja ove atribute, moraju ostati pravilni. Ako to nisu, nedefinisano je šta će Kopete učiniti.

atribut `route` u elementu `message`

- Mora biti `inbound`, `outbound` ili `internal`.

atribut `type` u elementu `message`

- Mora biti `action` ili `normal`.

atribut `importance` u elementu `message`

- Mora biti `0` za malu, `1` za normalnu ili `2` za veliku.

atribut `dir` u mnogim elementima

- Mora biti `ltr` za sleva nadesno, ili `rtl` za zdesna nalevo.