]> err.no Git - scalable-opengroupware.org/blob - UI/WebServerResources/UIxContactsUserFolders.js
git-svn-id: http://svn.opengroupware.org/SOGo/inverse/trunk@1101 d1b88da0-ebda-0310...
[scalable-opengroupware.org] / UI / WebServerResources / UIxContactsUserFolders.js
1 function onSearchFormSubmit() {
2   var searchValue = $("searchValue");
3
4   var url = (ApplicationBaseURL
5              + "/foldersSearch?ldap-only=YES&search=" + searchValue.value
6              + "&type=" + window.userFolderType);
7   if (document.userFoldersRequest) {
8      document.userFoldersRequest.aborted = true;
9      document.userFoldersRequest.abort();
10   }
11   document.userFoldersRequest
12      = triggerAjaxRequest(url, userFoldersCallback);
13
14   return false;
15 }
16
17 function addLineToTree(tree, parent, line) {
18    var offset = 0;
19
20    var nodes = line.split(";");
21    if (window.userFolderType == "user"
22        || nodes.length > 1) {
23       var parentNode = nodes[0];
24       var userInfos = parentNode.split(":");
25       var email = userInfos[1] + " <" + userInfos[2] + ">";
26       log ("email: " + email);
27       tree.add(parent, 0, email, 0, '#', userInfos[0], 'person',
28                '', '',
29                ResourcesURL + '/abcard.gif',
30                ResourcesURL + '/abcard.gif');
31       for (var i = 1; i < nodes.length; i++) {
32          var folderInfos = nodes[i].split(":");
33          var icon = ResourcesURL + '/';
34          if (folderInfos[2] == 'contact')
35             icon += 'tb-mail-addressbook-flat-16x16.png';
36          else
37             icon += 'calendar-folder-16x16.png';
38          var folderId = userInfos[0] + ":" + folderInfos[1];
39          tree.add(parent + i, parent, folderInfos[0], 0, '#', folderId,
40                   folderInfos[2] + '-folder', '', '', icon, icon);
41       }
42       offset = nodes.length - 1;
43    }
44    else
45       window.alert("nope:" + window.userFolderType);
46
47    return offset;
48 }
49
50 function buildTree(response) { 
51    d = new dTree("d");
52    d.config.folderLlinks = true;
53    d.config.hideRoot = true;
54    d.icon.root = ResourcesURL + '/tbtv_account_17x17.gif';
55    d.icon.folder = ResourcesURL + '/tbtv_leaf_corner_17x17.gif';
56    d.icon.folderOpen = ResourcesURL + '/tbtv_leaf_corner_17x17.gif';
57    d.icon.node = ResourcesURL + '/tbtv_leaf_corner_17x17.gif';
58    d.icon.line = ResourcesURL + '/tbtv_line_17x17.gif';
59    d.icon.join = ResourcesURL + '/tbtv_junction_17x17.gif';
60    d.icon.joinBottom = ResourcesURL + '/tbtv_corner_17x17.gif';
61    d.icon.plus = ResourcesURL + '/tbtv_plus_17x17.gif';
62    d.icon.plusBottom = ResourcesURL + '/tbtv_corner_plus_17x17.gif';
63    d.icon.minus = ResourcesURL + '/tbtv_minus_17x17.gif';
64    d.icon.minusBottom = ResourcesURL + '/tbtv_corner_minus_17x17.gif';
65    d.icon.nlPlus = ResourcesURL + '/tbtv_corner_plus_17x17.gif';
66    d.icon.nlMinus = ResourcesURL + '/tbtv_corner_minus_17x17.gif';
67    d.icon.empty = ResourcesURL + '/empty.gif';
68    d.add(0, -1, '');
69
70    var lines = response.split("\n");
71    var offset = 0;
72    for (var i = 0; i < lines.length; i++) {
73       if (lines[i].length > 0)
74          offset += addLineToTree(d, i + 1 + offset, lines[i]);
75    }
76
77    return d;
78 }
79
80 function onFolderTreeItemClick(event) {
81    preventDefault(event);
82
83    var topNode = $("d");
84    if (topNode.selectedEntry)
85       topNode.selectedEntry.deselect();
86    this.select();
87    topNode.selectedEntry = this;
88 }
89
90 function userFoldersCallback(http) {
91    if (http.readyState == 4) {
92       document.userFoldersRequest = null;
93       if (http.status == 200) {
94          var div = $("folders");
95          var response = http.responseText;
96          div.innerHTML = buildTree(http.responseText);
97          var nodes = document.getElementsByClassName("node", $("d"));
98          for (i = 0; i < nodes.length; i++)
99             nodes[i].addEventListener("click",
100                                       onFolderTreeItemClick, false);
101       }
102    }
103 }
104
105 function onConfirmFolderSelection(event) {
106    var topNode = $("d");
107    if (topNode.selectedEntry) {
108       var node = topNode.selectedEntry.parentNode;
109       var folder = node.getAttribute("dataname");
110       var folderName;
111       if (window.userFolderType == "user") {
112          var spans = document.getElementsByClassName("nodeName",
113                                                      topNode.selectedEntry);
114          var email = spans[0].innerHTML;
115          email = email.replace("&lt;", "<");
116          email = email.replace("&gt;", ">");
117          folderName = email;
118       }
119       else {
120          var spans1 = document.getElementsByClassName("nodeName",
121                                                    node);
122          var spans2 = document.getElementsByClassName("nodeName",
123                                                       node.parentNode.previousSibling);
124          var email = spans2[0].innerHTML;
125          email = email.replace("&lt;", "<");
126          email = email.replace("&gt;", ">");
127          folderName = spans1[0].innerHTML + ' (' + email + ')';
128       }
129       var data = { folderName: folderName, folder: folder };
130       window.opener.subscribeToFolder(window.userFolderCallback, data);
131    }
132 }
133
134 function initUserFoldersWindow() {
135    configureSearchField();
136    $("addButton").addEventListener("click", onConfirmFolderSelection, false);
137 }
138
139 window.addEventListener("load", initUserFoldersWindow, false);