Цимлеты в зимбре, как сделать простой SearchRequest?

Я немного отчаялся, потому что я не могу выполнить простой поиск по моей зимлет.

Я просто хочу сделать поиск в пользовательской папке.

Поиск должен отображать только те сообщения, которые находятся в моей пользовательской папке.

Например, когда я нажимаю на пользовательскую папку в левой панели. точно так же.

это то, что показывает заголовок HTML, нажав значок моей пользовательской папки на левой панели.

{"Header":{"context":{"_jsns":"urn:zimbra","userAgent":{"name":"ZimbraWebClient - FF39 (Linux)","version":"8.6.0_GA_1153"},"session":{"_content":150,"id":150},"account":{"_content":"admin@localhost.local","by":"name"},"csrfToken":"0_a3050edfdf238eadfdfdfdff2f14b4968e3"}},"Body":{"SearchRequest":{"_jsns":"urn:zimbraMail","sortBy":"dateDesc","header":[{"n":"List-ID"},{"n":"X-Zimbra-DL"},{"n":"IN-REPLY-TO"}],"tz":{"id":"America/Mexico_City"},"locale":{"_content":"es_MX"},"offset":0,"limit":100,"query":"in:\\"mycustomfolder\\"","types":"conversation","recip":"0","fullConversation":1,"needExp":1}}}

Я пытаюсь с этим кодом, в моем com_zimbra_myzimlet.js

com_zimbra_myzimlet_HandlerObject.prototype._getShowResultFolderId = 
    function(t) {
    var e=AjxSoapDoc.create("SearchRequest","urn:zimbraMail");
    var cuery="raulicci";
    e.setMethodAttribute("types","conversation");
    e.setMethodAttribute("limit",100);
    e.setMethodAttribute("offset",0);
    e.set("query",cuery);
    t.response=appCtxt.getAppController().sendRequest({
        soapDoc:e,noBusyOverlay:false}
    );
    this.handleSearchResponse(t)
};

до сих пор я не могу найти способ провести консультацию, хотя я представляю, что это что-то простое, так как уже реализовано в zimbra, когда кто-то нажимает на значок в моей пользовательской папке на левой панели.

1 ответ

Решение

Я хотел бы использовать шаблон по умолчанию, который имеет Zimbra, чтобы показать INBOX, или текущие папки.

Когда вы щелкаете по значку текущей папки на левой панели, у нас появляется список электронных писем в виде INBOX.

Я делаю с одним маленьким запросом на zimlet один раз с мылом и json, и я ответил на строку JSON.

Эта строка json является списком рассылки, который находится в папке, где вы выполняете запрос.

Для запроса используйте:

var jsonObj = {SearchRequest:{_jsns:"urn:zimbraMail"}};
var request = jsonObj.SearchRequest;
request.sortBy = "dateDesc";
request.offset = 0;
request.limit = 100;
request.query = 'in:\"MYCURRENTFOLDER\"';
request.types = "conversation";
request.recips = "0";
request.fullConversation = 1;
request.needExp = 1;

var params = {
        jsonObj:jsonObj,
        asyncMode:true,
        callback: (new AjxCallback(this, this._handleSOAPResponseJSON)),
        errorCallback: (new AjxCallback(this, this._handleSOAPErrorResponseJSON)),
};
return appCtxt.getAppController().sendRequest(params);

Для ответа используйте:

if (result.isException()) {
    // do something with exception
    var exception = result.getException();      

    return;
}
else {
    response = { _jsns: "urn:zimbraMail", more: false };
}
// do something with response (in JSON format)
var response = result.getResponse();
var name = response.name;
var soapURL = response.publicURL;
var soapURL = response.soapURL;
var aller = result.getResponse();
var searchResult = new ZmSearchResult(this);

appCtxt.setStatusMsg("Response (JSON) success - "+name);
alert(aller.toSource());

Ответ в формате JSON для отображения в шаблоне по умолчанию встроенного зимбра INBOX

({SearchResponse:{sortBy:"dateDesc", offset:0, c:[{id:"314", u:0, n:2, f:"s", d:1438663876000, su:"lokitox", fr:"lex", e:[{a:"admin@localhost.local", d:"admin", t:"f"}], m:[{id:"313", l:"300"}, {id:"312", l:"5", f:"s"}], sf:"1438663876000"}, {id:"-309", u:0, n:1, d:1438662639000, su:"Daily mail report for 2015-08-03", fr:"Grand Totals -- messages 91 received 117 delivered 0 forwarded 134 deferred (134 deferrals) 169 bounced 0 rejected (0%) 0 reject warnings 0 held 0 ...", e:[{a:"admin@localhost.local", d:"admin", t:"f"}], m:[{id:"309", s:"7232", l:"300"}], sf:"1438662639000"}], more:false, _jsns:"urn:zimbraMail"}})

Спасибо, я надеюсь, что кто-то знает, как это сделать

Другие вопросы по тегам