]> err.no Git - scalable-opengroupware.org/blob - UI/WebServerResources/UIxComponentEditor.js
fb8725e03e855a5970010ee117128811a042910b
[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.style.display = "block;";
29          else
30             documentLabel.style.display = "none;";
31       }
32       else {
33          documentHref.appendChild(document.createTextNode(newUrl)); 
34          if (newUrl.length > 0)
35             documentLabel.style.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.style.display = "block;";
92    }
93    else
94       attendeesLabel.style.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.style.textDecoration = "underline;";
105       attendeesHref.style.color = "#00f;";
106       attendeesHref.appendChild(document.createTextNode(attendeesNames.value));
107       attendeesLabel.style.display = "block;";
108    }
109 }
110
111 function initializeDocumentHref() {
112    var documentHref = $("documentHref");
113    var documentLabel = $("documentLabel");
114    var documentUrl = $("url");
115
116    documentHref.addEventListener("click", onPopupDocumentWindow, false);
117    documentHref.style.textDecoration = "underline;";
118    documentHref.style.color = "#00f;";
119    if (documentUrl.value.length > 0) {
120       documentHref.appendChild(document.createTextNode(documentUrl.value));
121       documentLabel.style.display = "block;";
122    }
123
124    var changeUrlButton = $("changeUrlButton");
125    changeUrlButton.addEventListener("click", onPopupUrlWindow, false);
126 }
127
128 function initializePrivacyMenu() {
129    var privacy = $("privacy").value.toUpperCase();
130    if (privacy.length > 0) {
131       var privacyMenu = $("privacy-menu").childNodesWithTag("ul")[0];
132       var menuEntries = privacyMenu.childNodesWithTag("li");
133       var chosenNode;
134       if (privacy == "CONFIDENTIAL")
135          chosenNode = menuEntries[1];
136       else if (privacy == "PRIVATE")
137          chosenNode = menuEntries[2];
138       else
139          chosenNode = menuEntries[0];
140       privacyMenu.chosenNode = chosenNode;
141       chosenNode.addClassName("_chosen");
142    }
143 }
144
145 function onComponentEditorLoad(event) {
146    if (!$("statusPercent"))
147       initializeAttendeesHref();
148    initializeDocumentHref();
149    initializePrivacyMenu();
150    var list = $("calendarList");
151    list.addEventListener("change", onChangeCalendar, false);
152    var onSelectionChangeEvent = document.createEvent("Event");
153    onSelectionChangeEvent.initEvent("change", false, false);
154    list.dispatchEvent(onSelectionChangeEvent);
155
156    var menuItems = $("itemPrivacyList").childNodesWithTag("li");
157    for (var i = 0; i < menuItems.length; i++)
158       menuItems[i].addEventListener("mouseup", onMenuSetClassification, false);
159 }
160
161 window.addEventListener("load", onComponentEditorLoad, false);