2 * Copyright 1998 - 2009 The Citadel Team
3 * Licensed under the GPL V3
12 var roomsForFloors = [];
18 var RN_LIST_ORDER = 3;
19 var RN_ACCESS_CONTROL = 4;
22 var RN_LAST_CHANGE = 7;
26 var QR_MAILBOX = 16384;
29 var UA_GOTOALLOWED = 4;
30 var UA_HASNEWMSGS = 8;
35 var VIEW_ADDRESSBOOK = 2;
36 var VIEW_CALENDAR = 3;
40 var VIEW_CALBRIEF = 7;
43 function fillRooms(callback) {
44 var roomFlr = new Ajax.Request("json_roomflr?SortBy=byfloorroom?SortOrder=1", {method: 'get', onSuccess: function(transport) { ProcessRoomFlr(transport); callback.call(); }});
46 function ProcessRoomFlr(transport) {
47 var data = eval('('+transport.responseText+')');
48 floors = data["floors"];
49 rooms = data["rooms"];
51 function GetRoomsByFloorNum(flnum) {
52 var roomsForFloor = new Array();
54 for(var i=0; i<rooms.length; i++) {
56 var floornum = room[RN_FLOOR_NUM];
57 var flag = room[RN_ROOM_FLAG];
58 if (flnum == floornum && ((flag & QR_MAILBOX) != QR_MAILBOX)) {
59 roomsForFloor[x] = room;
65 function getMailboxRooms() {
66 var roomsForFloor = new Array();
68 for(var i=0; i<rooms.length; i++) {
70 var floornum = room[RN_FLOOR_NUM];
71 var flag = room[RN_ROOM_FLAG];
73 roomsForFloor[x] = room;
81 * function to delete a comment from a blog post
83 function DeleteBlogComment(msgnum) {
84 cmd = encodeURI("g_cmd=DELE " + msgnum);
85 new Ajax.Request("ajax_servcmd", {
88 onSuccess: function(transport) {
89 Effect.BlindUp('blog_comment_' + msgnum);
94 function GenericTreeRoomList(roomlist) {
95 var currentExpanded = ctdlLocalPrefs.readPref("rooms_expanded");
97 if (document.getElementById("rmname")) {
98 curRoomName = getTextContent(document.getElementById("rmname"));
100 currentDropTargets = [];
101 var iconbar = document.getElementById("iconbar");
102 var ul = document.createElement("ul");
103 roomlist.appendChild(ul);
104 // Add mailbox, because they are special
105 var mailboxLI = document.createElement("li");
106 ul.appendChild(mailboxLI);
107 var mailboxSPAN = document.createElement("span");
108 var _mailbox = getTextContent(document.getElementById("mbox_template"));
109 mailboxSPAN.appendChild(document.createTextNode(_mailbox));
110 $(mailboxSPAN).observe('click', expandFloorEvent);
111 mailboxLI.appendChild(mailboxSPAN);
112 mailboxLI.className = "floor";
113 var mailboxUL = document.createElement("ul");
114 mailboxLI.appendChild(mailboxUL);
115 var mailboxRooms = getMailboxRooms();
116 for(var i=0; i<mailboxRooms.length; i++) {
117 var room = mailboxRooms[i];
118 currentDropTargets.push(addRoomToList(mailboxUL, room, curRoomName));
120 if (currentExpanded !== null && currentExpanded === _mailbox ) {
121 expandFloor(mailboxSPAN);
123 for(var a=0; a<floors.length; a++) {
124 var floor = floors[a];
125 var floornum = floor[0];
131 var floorLI = document.createElement("li");
132 ul.appendChild(floorLI);
133 var floorSPAN = document.createElement("span");
134 floorSPAN.appendChild(document.createTextNode(name));
135 $(floorSPAN).observe('click', expandFloorEvent);
136 floorLI.appendChild(floorSPAN);
137 floorLI.className = "floor";
138 var floorUL = document.createElement("ul");
139 floorLI.appendChild(floorUL);
140 var roomsForFloor = GetRoomsByFloorNum(floornum);
141 for(var b=0; b<roomsForFloor.length; b++) {
142 var oneRoom = roomsForFloor[b];
143 currentDropTargets.push(addRoomToList(floorUL, oneRoom, curRoomName));
145 if (currentExpanded !== null && currentExpanded === name) {
146 expandFloor(floorSPAN);
151 function iconBarRoomList() {
152 roomlist = document.getElementById("roomlist");
153 GenericTreeRoomList(roomlist);
155 function knRoomsRoomList() {
156 roomlist = document.getElementById("roomlist_knrooms");
157 GenericTreeRoomList(roomlist);
160 function addRoomToList(floorUL,room, roomToEmphasize) {
161 var roomName = room[RN_ROOM_NAME];
162 var flag = room[RN_ROOM_FLAG];
163 var curView = room[RN_CUR_VIEW];
164 var view = room[RN_DEF_VIEW];
165 var raflags = room[RN_RAFLAGS];
166 var isMailBox = ((flag & QR_MAILBOX) === QR_MAILBOX);
167 var hasNewMsgs = ((raflags & UA_HASNEWMSGS) === UA_HASNEWMSGS);
168 var roomLI = document.createElement("li");
169 var roomA = document.createElement("a");
170 roomA.setAttribute("href","dotgoto?room="+encodeURIComponent(roomName));
171 roomA.appendChild(document.createTextNode(roomName));
172 roomLI.appendChild(roomA);
173 floorUL.appendChild(roomLI);
174 var className = "room ";
175 if (view === VIEW_MAILBOX) {
176 className += "room-private";
177 } else if (view === VIEW_ADDRESSBOOK) {
178 className += "room-addr";
179 } else if (view === VIEW_CALENDAR || view === VIEW_CALBRIEF) {
180 className += "room-cal";
181 } else if (view === VIEW_TASKS) {
182 className += "room-tasks";
183 } else if (view === VIEW_NOTES) {
184 className += "room-notes";
186 className += "room-chat";
189 className += " room-newmsgs";
191 if (roomName === roomToEmphasize) {
192 className += " room-emphasized";
194 roomLI.setAttribute("class", className);
195 roomA.dropTarget = true;
196 roomA.dropHandler = roomListDropHandler;
200 function roomListDropHandler(target, dropped) {
202 if (dropped.getAttribute("citadel:msgid")) {
203 var room = getTextContent(target);
205 for(var msgId in currentlyMarkedRows) {
206 if (currentlyMarkedRows.hasOwnProperty(msgId)) { //defined in summaryview.js
208 if (msgIds.length > 800) {
209 mvCommand = "g_cmd=MOVE%20" + msgIds + "|"+encodeURIComponent(room)+"|0";
210 new Ajax.Request("ajax_servcmd", {
211 parameters: mvCommand,
219 mvCommand = "g_cmd=MOVE%20" + msgIds + "|"+encodeURIComponent(room)+"|0";
220 new Ajax.Request('ajax_servcmd', {
222 parameters: mvCommand,
223 onComplete: deleteAllMarkedRows()});
226 function expandFloorEvent(event) {
227 expandFloor(event.target);
229 function expandFloor(target) {
230 if (target.nodeName.toLowerCase() !== "span") {
231 return; // ignore clicks on child UL
233 ctdlLocalPrefs.setPref("rooms_expanded", target.firstChild.nodeValue);
234 var parentUL = target.parentNode;
235 if (currentlyExpandedFloor !== null) {
236 currentlyExpandedFloor.className = currentlyExpandedFloor.className.replace("floor-expanded","");
238 parentUL.className = parentUL.className + " floor-expanded";
239 currentlyExpandedFloor = parentUL;