]> err.no Git - scalable-opengroupware.org/blob - UI/WebServerResources/UIxComponentEditor.js
git-svn-id: http://svn.opengroupware.org/SOGo/inverse/trunk@1071 d1b88da0-ebda-0310...
[scalable-opengroupware.org] / UI / WebServerResources / UIxComponentEditor.js
1 function onPopupAttendeesWindow(event) {
2    if (event)
3       event.preventDefault();
4    window.open(ApplicationBaseURL + "editAttendees", null, 
5                "width=803,height=573");
6
7    return false;
8 }
9
10 function onSelectPrivacy(event) {
11    popupToolbarMenu(event, "privacy-menu");
12
13    return false;
14 }
15
16 function onPopupUrlWindow(event) {
17    if (event)
18       event.preventDefault();
19
20    var urlInput = document.getElementById("url");
21    var newUrl = window.prompt(labels["Target:"].decodeEntities(), urlInput.value);
22    if (newUrl != null) {
23       var documentHref = $("documentHref");
24       var documentLabel = $("documentLabel");
25       if (documentHref.childNodes.length > 0) {
26          documentHref.childNodes[0].nodeValue = newUrl;
27          if (newUrl.length > 0)
28             documentLabel.setStyle({ display: "block" });
29          else
30             documentLabel.setStyle({ display: "none" });
31       }
32       else {
33          documentHref.appendChild(document.createTextNode(newUrl)); 
34          if (newUrl.length > 0)
35             documentLabel.setStyle({ display: "block" });
36       }
37       urlInput.value = newUrl;
38    }
39
40    return false;
41 }
42
43 function onPopupDocumentWindow(event) {
44    var documentUrl = $("url");
45
46    event.preventDefault();
47    window.open(documentUrl.value, "SOGo_Document");
48
49    return false;
50 }
51
52 function onMenuSetClassification(event) {
53    event.cancelBubble = true;
54
55    var classification = this.getAttribute("classification");
56    if (this.parentNode.chosenNode)
57       this.parentNode.chosenNode.removeClassName("_chosen");
58    this.addClassName("_chosen");
59    this.parentNode.chosenNode = this;
60
61 //    log("classification: " + classification);
62    var privacyInput = document.getElementById("privacy");
63    privacyInput.value = classification;
64 }
65
66 function onChangeCalendar(event) {
67    var calendars = $("calendarFoldersList").value.split(",");
68    var form = document.forms["editform"];
69    var urlElems = form.getAttribute("action").split("/");
70    var choice = calendars[this.value];
71    var ownerLogin;
72    if (choice.indexOf(":") > -1)
73       ownerLogin = choice.split(":")[0];
74    else
75       ownerLogin = UserLogin;
76    urlElems[urlElems.length-4] = ownerLogin;
77
78    form.setAttribute("action", urlElems.join("/"));
79 }
80
81 function refreshAttendees() {
82    var attendeesLabel = $("attendeesLabel");
83    var attendeesNames = $("attendeesNames");
84    var attendeesHref = $("attendeesHref");
85
86    for (var i = 0; i < attendeesHref.childNodes.length; i++)
87      attendeesHref.removeChild(attendeesHref.childNodes[i]);
88
89    if (attendeesNames.value.length > 0) {
90       attendeesHref.appendChild(document.createTextNode(attendeesNames.value));
91       attendeesLabel.setStyle({ display: "block" });
92    }
93    else
94       attendeesLabel.setStyle({ display: "none" });
95 }
96
97 function initializeAttendeesHref() {
98    var attendeesHref = $("attendeesHref");
99    var attendeesLabel = $("attendeesLabel");
100    var attendeesNames = $("attendeesNames");
101
102    attendeesHref.addEventListener("click", onPopupAttendeesWindow, false);
103    if (attendeesNames.value.length > 0) {
104       attendeesHref.setStyle({ textDecoration: "underline", color: "#00f" });
105       attendeesHref.appendChild(document.createTextNode(attendeesNames.value));
106       attendeesLabel.setStyle({ display: "block" });
107    }
108 }
109
110 function initializeDocumentHref() {
111    var documentHref = $("documentHref");
112    var documentLabel = $("documentLabel");
113    var documentUrl = $("url");
114
115    documentHref.addEventListener("click", onPopupDocumentWindow, false);
116    documentHref.setStyle({ textDecoration: "underline", color: "#00f" });
117    if (documentUrl.value.length > 0) {
118       documentHref.appendChild(document.createTextNode(documentUrl.value));
119       documentLabel.setStyle({ display: "block" });
120    }
121
122    var changeUrlButton = $("changeUrlButton");
123    changeUrlButton.addEventListener("click", onPopupUrlWindow, false);
124 }
125
126 function initializePrivacyMenu() {
127    var privacy = $("privacy").value.toUpperCase();
128    if (privacy.length > 0) {
129       var privacyMenu = $("privacy-menu").childNodesWithTag("ul")[0];
130       var menuEntries = privacyMenu.childNodesWithTag("li");
131       var chosenNode;
132       if (privacy == "CONFIDENTIAL")
133          chosenNode = menuEntries[1];
134       else if (privacy == "PRIVATE")
135          chosenNode = menuEntries[2];
136       else
137          chosenNode = menuEntries[0];
138       privacyMenu.chosenNode = chosenNode;
139       chosenNode.addClassName("_chosen");
140    }
141 }
142
143 function onComponentEditorLoad(event) {
144    if (!$("statusPercent"))
145       initializeAttendeesHref();
146    initializeDocumentHref();
147    initializePrivacyMenu();
148    var list = $("calendarList");
149    list.addEventListener("change", onChangeCalendar, false);
150    var onSelectionChangeEvent = document.createEvent("Event");
151    onSelectionChangeEvent.initEvent("change", false, false);
152    list.dispatchEvent(onSelectionChangeEvent);
153
154    var menuItems = $("itemPrivacyList").childNodesWithTag("li");
155    for (var i = 0; i < menuItems.length; i++)
156       menuItems[i].addEventListener("mouseup", onMenuSetClassification, false);
157 }
158
159 window.addEventListener("load", onComponentEditorLoad, false);