diff --git a/UI/WebServerResources/UIxCalViewPrint.css b/UI/WebServerResources/UIxCalViewPrint.css
deleted file mode 100644
index c4062af94..000000000
--- a/UI/WebServerResources/UIxCalViewPrint.css
+++ /dev/null
@@ -1,635 +0,0 @@
-
-/********** Window & layouts **********/
-BODY {
- top: 1em;
- bottom: 1em;
- right: 1em;
- left: 1em;
- overflow:auto;
-}
-
-.toolbar {
- display:none;
-}
-
-DIV#leftSide {
- position: absolute;
- top:0;
- bottom:0;
- left:0;
- right:0;
- max-width:220px;
- overflow-y:auto;
-}
-
-DIV.colorBox {
- display: inline-block;
-}
-
-TD DIV.colorBox, TD DIV.colorBox:hover {
- border-color: #fff;
-}
-
-TABLE#eventsList .colorBox {
- margin-right: 4px;
-}
-
-/********** Print settings **********/
-
-INPUT#inputFieldTitle {
- width:120px;
-}
-
-DIV#rightFrameTitle {
- font-size:20px;
- text-decoration:underline;
-}
-
-/********** What to print **********/
-
-/********** Buttons **********/
-
-#printButtons {
- position:absolute;
- bottom:0;
- right:0;
-}
-
-#printButton {
- font-weight:bold;
-}
-
-/********** RightSide **********/
-
-.divEventsPreview, .divTasksPreview {
- border:solid black 2px;
- border-radius:5px;
- margin-top:3px;
- overflow:hidden;
-}
-
-.eventsTitle, .tasksTitle {
- text-align:center;
-}
-
-.overdueTasks {
- color:red;
-}
-.completedTasks {
- font-style:italic;
-}
-
-DIV#rightSide {
- position: absolute;
- left:230px;
- top:0;
- bottom:0;
- right:0;
-}
- DIV#rightFrame {
- position:absolute;
- right:0;
- left:0;
- top:12px;
- bottom:30px;
- background-color:#FFFFFF;
- border-radius:5px;
- border-top: 1px solid #909090;
- border-left: 1px solid #909090;
- border-bottom: 1px solid #FFFFFF;
- border-right: 1px solid #FFFFFF;
- padding-left:5px;
- padding-right:5px;
- overflow-y:auto;
- }
- #rightFrameEvents {
- width:49.5%;
- float:left;
- }
-
- #rightFrameTasks {
- width:49.5%;
- float:right;
- }
-
- DIV#rightFrame TH {
- text-align: left;
- }
-
- DIV#rightFrame TD.cellFormat {
- color: #666;
- text-align: right;
- min-width:52px;
- vertical-align:top;
- }
-
-/********** Overriding SchedulerUI.css **********/
-
-DIV#calendarHeader {
- position:relative;
- top:0;
- height:38px;
- right: 0px;
-}
-
-DIV#calendarHeader DIV.calendarLabels
-{ top: 1px;
- height: 20px;
- border-left: 1px solid #ccc;
- text-align: center;
- font-style:italic;
- font-size:150%;
-}
-
-DIV#calendarHeader DIV.calendarLabels,
-DIV#calendarHeader DIV.dayLabels,
-DIV#calendarHeader DIV.days {
- position:relative;
- left: 0;
- margin-left:50px;
-}
-
-DIV#calendarHeader DIV.dayLabels
-{ top: 1px; }
-
-DIV#calendarHeader DIV.days {
- top: 0;
- height: 1px;
- left: 0;
- right: 0;
- cursor:initial;
-}
-
-DIV#daysView {
- position: relative;
- top: 0;
- right: 8px;
- border-right: 1px solid #ccc;
-}
-
-DIV#daysView DIV.hours {
- height: auto;
-}
-
-DIV#daysView DIV.day DIV.clickableHourCell {
- height: 29px;
- cursor:initial;
-}
-
-DIV#daysView DIV.hour {
- height: 27px;
-}
-.minutes15, .minutes30, .minutes45 {
- height: 25%;
-}
-
-DIV.event {
- z-index:1;
- background-color: white;
- border-radius:5px;
- border:1px solid black;
-
-}
-DIV.event > DIV.eventInside {
- width:100%;
- cursor:initial;
-}
-
-DIV#daysView DIV.event.starts0
-{ top: 0px; }
-DIV#daysView DIV.event.lasts0
-{ height: 0px; }
-DIV#daysView DIV.event.starts1
-{ top: 7.5px; }
-DIV#daysView DIV.event.lasts1
-{ height: 7.25px; }
-DIV#daysView DIV.event.starts2
-{ top: 15.0px; }
-DIV#daysView DIV.event.lasts2
-{ height: 14.5px; }
-DIV#daysView DIV.event.starts3
-{ top: 22.5px; }
-DIV#daysView DIV.event.lasts3
-{ height: 21.75px; }
-DIV#daysView DIV.event.starts4
-{ top: 30.0px; }
-DIV#daysView DIV.event.lasts4
-{ height: 29.0px; }
-DIV#daysView DIV.event.starts5
-{ top: 37.5px; }
-DIV#daysView DIV.event.lasts5
-{ height: 36.25px; }
-DIV#daysView DIV.event.starts6
-{ top: 45.0px; }
-DIV#daysView DIV.event.lasts6
-{ height: 43.5px; }
-DIV#daysView DIV.event.starts7
-{ top: 52.5px; }
-DIV#daysView DIV.event.lasts7
-{ height: 50.75px; }
-DIV#daysView DIV.event.starts8
-{ top: 60.0px; }
-DIV#daysView DIV.event.lasts8
-{ height: 58.0px; }
-DIV#daysView DIV.event.starts9
-{ top: 67.5px; }
-DIV#daysView DIV.event.lasts9
-{ height: 65.25px; }
-DIV#daysView DIV.event.starts10
-{ top: 75.0px; }
-DIV#daysView DIV.event.lasts10
-{ height: 72.5px; }
-DIV#daysView DIV.event.starts11
-{ top: 82.5px; }
-DIV#daysView DIV.event.lasts11
-{ height: 79.75px; }
-DIV#daysView DIV.event.starts12
-{ top: 90.0px; }
-DIV#daysView DIV.event.lasts12
-{ height: 87.0px; }
-DIV#daysView DIV.event.starts13
-{ top: 97.5px; }
-DIV#daysView DIV.event.lasts13
-{ height: 94.25px; }
-DIV#daysView DIV.event.starts14
-{ top: 105.0px; }
-DIV#daysView DIV.event.lasts14
-{ height: 101.5px; }
-DIV#daysView DIV.event.starts15
-{ top: 112.5px; }
-DIV#daysView DIV.event.lasts15
-{ height: 108.75px; }
-DIV#daysView DIV.event.starts16
-{ top: 120.0px; }
-DIV#daysView DIV.event.lasts16
-{ height: 116.0px; }
-DIV#daysView DIV.event.starts17
-{ top: 127.5px; }
-DIV#daysView DIV.event.lasts17
-{ height: 123.25px; }
-DIV#daysView DIV.event.starts18
-{ top: 135.0px; }
-DIV#daysView DIV.event.lasts18
-{ height: 130.5px; }
-DIV#daysView DIV.event.starts19
-{ top: 142.5px; }
-DIV#daysView DIV.event.lasts19
-{ height: 137.75px; }
-DIV#daysView DIV.event.starts20
-{ top: 150.0px; }
-DIV#daysView DIV.event.lasts20
-{ height: 145.0px; }
-DIV#daysView DIV.event.starts21
-{ top: 157.5px; }
-DIV#daysView DIV.event.lasts21
-{ height: 152.25px; }
-DIV#daysView DIV.event.starts22
-{ top: 165.0px; }
-DIV#daysView DIV.event.lasts22
-{ height: 159.5px; }
-DIV#daysView DIV.event.starts23
-{ top: 172.5px; }
-DIV#daysView DIV.event.lasts23
-{ height: 166.75px; }
-DIV#daysView DIV.event.starts24
-{ top: 180.0px; }
-DIV#daysView DIV.event.lasts24
-{ height: 174.0px; }
-DIV#daysView DIV.event.starts25
-{ top: 187.5px; }
-DIV#daysView DIV.event.lasts25
-{ height: 181.25px; }
-DIV#daysView DIV.event.starts26
-{ top: 195.0px; }
-DIV#daysView DIV.event.lasts26
-{ height: 188.5px; }
-DIV#daysView DIV.event.starts27
-{ top: 202.5px; }
-DIV#daysView DIV.event.lasts27
-{ height: 195.75px; }
-DIV#daysView DIV.event.starts28
-{ top: 210.0px; }
-DIV#daysView DIV.event.lasts28
-{ height: 203.0px; }
-DIV#daysView DIV.event.starts29
-{ top: 217.5px; }
-DIV#daysView DIV.event.lasts29
-{ height: 210.25px; }
-DIV#daysView DIV.event.starts30
-{ top: 225.0px; }
-DIV#daysView DIV.event.lasts30
-{ height: 217.5px; }
-DIV#daysView DIV.event.starts31
-{ top: 232.5px; }
-DIV#daysView DIV.event.lasts31
-{ height: 224.75px; }
-DIV#daysView DIV.event.starts32
-{ top: 240.0px; }
-DIV#daysView DIV.event.lasts32
-{ height: 232.0px; }
-DIV#daysView DIV.event.starts33
-{ top: 247.5px; }
-DIV#daysView DIV.event.lasts33
-{ height: 239.25px; }
-DIV#daysView DIV.event.starts34
-{ top: 255.0px; }
-DIV#daysView DIV.event.lasts34
-{ height: 246.5px; }
-DIV#daysView DIV.event.starts35
-{ top: 262.5px; }
-DIV#daysView DIV.event.lasts35
-{ height: 253.75px; }
-DIV#daysView DIV.event.starts36
-{ top: 270.0px; }
-DIV#daysView DIV.event.lasts36
-{ height: 261.0px; }
-DIV#daysView DIV.event.starts37
-{ top: 277.5px; }
-DIV#daysView DIV.event.lasts37
-{ height: 268.25px; }
-DIV#daysView DIV.event.starts38
-{ top: 285.0px; }
-DIV#daysView DIV.event.lasts38
-{ height: 275.5px; }
-DIV#daysView DIV.event.starts39
-{ top: 292.5px; }
-DIV#daysView DIV.event.lasts39
-{ height: 282.75px; }
-DIV#daysView DIV.event.starts40
-{ top: 300.0px; }
-DIV#daysView DIV.event.lasts40
-{ height: 290.0px; }
-DIV#daysView DIV.event.starts41
-{ top: 307.5px; }
-DIV#daysView DIV.event.lasts41
-{ height: 297.25px; }
-DIV#daysView DIV.event.starts42
-{ top: 315.0px; }
-DIV#daysView DIV.event.lasts42
-{ height: 304.5px; }
-DIV#daysView DIV.event.starts43
-{ top: 322.5px; }
-DIV#daysView DIV.event.lasts43
-{ height: 311.75px; }
-DIV#daysView DIV.event.starts44
-{ top: 330.0px; }
-DIV#daysView DIV.event.lasts44
-{ height: 319.0px; }
-DIV#daysView DIV.event.starts45
-{ top: 337.5px; }
-DIV#daysView DIV.event.lasts45
-{ height: 326.25px; }
-DIV#daysView DIV.event.starts46
-{ top: 345.0px; }
-DIV#daysView DIV.event.lasts46
-{ height: 333.5px; }
-DIV#daysView DIV.event.starts47
-{ top: 352.5px; }
-DIV#daysView DIV.event.lasts47
-{ height: 340.75px; }
-DIV#daysView DIV.event.starts48
-{ top: 360.0px; }
-DIV#daysView DIV.event.lasts48
-{ height: 348.0px; }
-DIV#daysView DIV.event.starts49
-{ top: 367.5px; }
-DIV#daysView DIV.event.lasts49
-{ height: 355.25px; }
-DIV#daysView DIV.event.starts50
-{ top: 375.0px; }
-DIV#daysView DIV.event.lasts50
-{ height: 362.5px; }
-DIV#daysView DIV.event.starts51
-{ top: 382.5px; }
-DIV#daysView DIV.event.lasts51
-{ height: 369.75px; }
-DIV#daysView DIV.event.starts52
-{ top: 390.0px; }
-DIV#daysView DIV.event.lasts52
-{ height: 377.0px; }
-DIV#daysView DIV.event.starts53
-{ top: 397.5px; }
-DIV#daysView DIV.event.lasts53
-{ height: 384.25px; }
-DIV#daysView DIV.event.starts54
-{ top: 405.0px; }
-DIV#daysView DIV.event.lasts54
-{ height: 391.5px; }
-DIV#daysView DIV.event.starts55
-{ top: 412.5px; }
-DIV#daysView DIV.event.lasts55
-{ height: 398.75px; }
-DIV#daysView DIV.event.starts56
-{ top: 420.0px; }
-DIV#daysView DIV.event.lasts56
-{ height: 406.0px; }
-DIV#daysView DIV.event.starts57
-{ top: 427.5px; }
-DIV#daysView DIV.event.lasts57
-{ height: 413.25px; }
-DIV#daysView DIV.event.starts58
-{ top: 435.0px; }
-DIV#daysView DIV.event.lasts58
-{ height: 420.5px; }
-DIV#daysView DIV.event.starts59
-{ top: 442.5px; }
-DIV#daysView DIV.event.lasts59
-{ height: 427.75px; }
-DIV#daysView DIV.event.starts60
-{ top: 450.0px; }
-DIV#daysView DIV.event.lasts60
-{ height: 435.0px; }
-DIV#daysView DIV.event.starts61
-{ top: 457.5px; }
-DIV#daysView DIV.event.lasts61
-{ height: 442.25px; }
-DIV#daysView DIV.event.starts62
-{ top: 465.0px; }
-DIV#daysView DIV.event.lasts62
-{ height: 449.5px; }
-DIV#daysView DIV.event.starts63
-{ top: 472.5px; }
-DIV#daysView DIV.event.lasts63
-{ height: 456.75px; }
-DIV#daysView DIV.event.starts64
-{ top: 480.0px; }
-DIV#daysView DIV.event.lasts64
-{ height: 464.0px; }
-DIV#daysView DIV.event.starts65
-{ top: 487.5px; }
-DIV#daysView DIV.event.lasts65
-{ height: 471.25px; }
-DIV#daysView DIV.event.starts66
-{ top: 495.0px; }
-DIV#daysView DIV.event.lasts66
-{ height: 478.5px; }
-DIV#daysView DIV.event.starts67
-{ top: 502.5px; }
-DIV#daysView DIV.event.lasts67
-{ height: 485.75px; }
-DIV#daysView DIV.event.starts68
-{ top: 510.0px; }
-DIV#daysView DIV.event.lasts68
-{ height: 493.0px; }
-DIV#daysView DIV.event.starts69
-{ top: 517.5px; }
-DIV#daysView DIV.event.lasts69
-{ height: 500.25px; }
-DIV#daysView DIV.event.starts70
-{ top: 525.0px; }
-DIV#daysView DIV.event.lasts70
-{ height: 507.5px; }
-DIV#daysView DIV.event.starts71
-{ top: 532.5px; }
-DIV#daysView DIV.event.lasts71
-{ height: 514.75px; }
-DIV#daysView DIV.event.starts72
-{ top: 540.0px; }
-DIV#daysView DIV.event.lasts72
-{ height: 522.0px; }
-DIV#daysView DIV.event.starts73
-{ top: 547.5px; }
-DIV#daysView DIV.event.lasts73
-{ height: 529.25px; }
-DIV#daysView DIV.event.starts74
-{ top: 555.0px; }
-DIV#daysView DIV.event.lasts74
-{ height: 536.5px; }
-DIV#daysView DIV.event.starts75
-{ top: 562.5px; }
-DIV#daysView DIV.event.lasts75
-{ height: 543.75px; }
-DIV#daysView DIV.event.starts76
-{ top: 570.0px; }
-DIV#daysView DIV.event.lasts76
-{ height: 551.0px; }
-DIV#daysView DIV.event.starts77
-{ top: 577.5px; }
-DIV#daysView DIV.event.lasts77
-{ height: 558.25px; }
-DIV#daysView DIV.event.starts78
-{ top: 585.0px; }
-DIV#daysView DIV.event.lasts78
-{ height: 565.5px; }
-DIV#daysView DIV.event.starts79
-{ top: 592.5px; }
-DIV#daysView DIV.event.lasts79
-{ height: 572.75px; }
-DIV#daysView DIV.event.starts80
-{ top: 600.0px; }
-DIV#daysView DIV.event.lasts80
-{ height: 580.0px; }
-DIV#daysView DIV.event.starts81
-{ top: 607.5px; }
-DIV#daysView DIV.event.lasts81
-{ height: 587.25px; }
-DIV#daysView DIV.event.starts82
-{ top: 615.0px; }
-DIV#daysView DIV.event.lasts82
-{ height: 594.5px; }
-DIV#daysView DIV.event.starts83
-{ top: 622.5px; }
-DIV#daysView DIV.event.lasts83
-{ height: 601.75px; }
-DIV#daysView DIV.event.starts84
-{ top: 630.0px; }
-DIV#daysView DIV.event.lasts84
-{ height: 609.0px; }
-DIV#daysView DIV.event.starts85
-{ top: 637.5px; }
-DIV#daysView DIV.event.lasts85
-{ height: 616.25px; }
-DIV#daysView DIV.event.starts86
-{ top: 645.0px; }
-DIV#daysView DIV.event.lasts86
-{ height: 623.5px; }
-DIV#daysView DIV.event.starts87
-{ top: 652.5px; }
-DIV#daysView DIV.event.lasts87
-{ height: 630.75px; }
-DIV#daysView DIV.event.starts88
-{ top: 660.0px; }
-DIV#daysView DIV.event.lasts88
-{ height: 638.0px; }
-DIV#daysView DIV.event.starts89
-{ top: 667.5px; }
-DIV#daysView DIV.event.lasts89
-{ height: 645.25px; }
-DIV#daysView DIV.event.starts90
-{ top: 675.0px; }
-DIV#daysView DIV.event.lasts90
-{ height: 652.5px; }
-DIV#daysView DIV.event.starts91
-{ top: 682.5px; }
-DIV#daysView DIV.event.lasts91
-{ height: 659.75px; }
-DIV#daysView DIV.event.starts92
-{ top: 690.0px; }
-DIV#daysView DIV.event.lasts92
-{ height: 667.0px; }
-DIV#daysView DIV.event.starts93
-{ top: 697.5px; }
-DIV#daysView DIV.event.lasts93
-{ height: 674.25px; }
-DIV#daysView DIV.event.starts94
-{ top: 705.0px; }
-DIV#daysView DIV.event.lasts94
-{ height: 681.5px; }
-DIV#daysView DIV.event.starts95
-{ top: 712.5px; }
-DIV#daysView DIV.event.lasts95
-{ height: 688.75px; }
-DIV#daysView DIV.event.starts96
-{ top: 720.0px; }
-DIV#daysView DIV.event.lasts96
-{ height: 696.0px; }
-
-/********** Overriding generic.css **********/
-
-TABLE.frame {
- width:97%;
- text-align: left;
- background:#dddddd;
- border-radius:8px;
- display:table;
-}
-
-SPAN.caption {
- background: -webkit-linear-gradient(bottom, #E6E7E6, #dddddd); /* For Safari 5.1 to 6.0 */
- background: -o-linear-gradient(bottom, #E6E7E6, #dddddd); /* For Opera 11.1 to 12.0 */
- background: -moz-linear-gradient(bottom, #E6E7E6, #dddddd); /* For Firefox 3.6 to 15 */
- background: linear-gradient(to bottom, #E6E7E6, #dddddd); /* Standard syntax (must be last) */
-}
-
-LABEL {
- margin-left:0;
-}
-
-/********** Calling print(); from the browser **********/
-
-@media print{
- .no-print, SPAN.caption, SPAN.weeksHeader, SPAN.daysHeader {
- display:none;
- }
- BODY, DIV#calendarHeader DIV.dayLabels DIV.day, DIV#calendarHeader DIV.days DIV.weekEndDay, DIV#daysView DIV.day DIV.clickableHourCell.outOfDay,
- DIV#daysView DIV.weekEndDay DIV.clickableHourCell, DIV#daysView DIV.weekEndDay DIV.clickableHourCell.outOfDay,DIV#monthDaysView DIV.dayOfToday,
- DIV.daysViewFor7Days#calendarHeader DIV.days DIV.dayOfToday, DIV.daysViewFor7Days#daysView DIV.dayOfToday DIV.clickableHourCell {
- background-color:white;
- }
-
- DIV#rightSide {
- position:static;
- top:5px;
- left:5px;
-
- }
-
- DIV#rightFrame {
- border:none;
- overflow:visible;
- }
-
- DIV#calendarHeader DIV.calendarLabels {
- font-size:120%;
- }
-}
diff --git a/UI/WebServerResources/UIxCalViewPrint.js b/UI/WebServerResources/UIxCalViewPrint.js
deleted file mode 100644
index c39a11f7e..000000000
--- a/UI/WebServerResources/UIxCalViewPrint.js
+++ /dev/null
@@ -1,1128 +0,0 @@
-/* -*- Mode: js2-mode; tab-width: 4; c-label-minimum-indentation: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-
-/*
- Copyright (C) 2006-2014 Inverse
-
- This file is part of SOGo
-
- SOGo is free software; you can redistribute it and/or modify it under
- the terms of the GNU Lesser General Public License as published by the
- Free Software Foundation; either version 2, or (at your option) any
- later version.
-
- SOGo is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
- License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with SOGo; see the file COPYING. If not, write to the
- Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
- 02111-1307, USA.
- */
-
-/******************************** Global variables *******************************************/
-var firstDayOfWeek = window.opener.firstDayOfWeek;
-var printCompletedTasks=1;
-var printNoDueDateTasks=true;
-var printColors= { checked:true, style:"borders" };
-var eventsBlocks;
-var currentPreview;
-var currentDay = window.parentvar("currentDay");
-var sd, ed;
-
-/****************************************** Ajax Requests, callbacks & events/tasks drawings ***************************************************/
-
-function refreshContent() {
- refreshEvents(); // Get the eventBlocks and draw them
- refreshTasks(); // Get the taskLists and draw them
-}
-
-function updateDisplayView(data, newView) {
- newView = ((newView) ? newView : currentPreview);
- var url = ApplicationBaseURL + "/" + newView;
- var day = null;
-
- if (data)
- day = data['day'];
- if (!day)
- day = currentDay;
- if (day) {
- if (data) {
- var dayDiv = $("day"+day);
- if (dayDiv) {
- // Don't reload the view if the event is present in current view
-
- // Deselect day in date selector
- if (document.selectedDate)
- document.selectedDate.deselect();
-
- // Select day in date selector
- var selectedLink = $$('table#dateSelectorTable span[day='+day+']');
- if (selectedLink.length > 0) {
- selectedCell = selectedLink[0].getParentWithTagName("td");
- $(selectedCell).selectElement();
- document.selectedDate = selectedCell;
- }
- else
- document.selectedDate = null;
-
- setSelectedDayDate(day);
-
- return false;
- }
- else if (day.length == 6)
- day += "01";
- }
- url += "?day=" + day;
- }
- selectedCalendarCell = null;
-
- if (document.dayDisplayAjaxRequest) {
- document.dayDisplayAjaxRequest.aborted = true;
- document.dayDisplayAjaxRequest.abort();
- }
- document.dayDisplayAjaxRequest = triggerAjaxRequest(url, previewDisplayCallback,
- { "view": newView, "day": day});
-}
-
-function previewDisplayCallback(http) {
- if (http.readyState == 4
- && http.status == 200) {
- $("rightFrameEvents").innerHTML = http.responseText;
- $("currentViewMenu").remove();
- $("listCollapse").remove();
-
- if (currentPreview == "multicolumndayview")
- _drawCalendarAllDayEvents(null, null, eventsBlocks);
- else {
- allDayEventsList = eventsBlocks[1];
- if (currentPreview == "monthview") {
- //_drawMonthCalendarEvents(eventsList, eventsBlocks[0], null);
- }
- else
- _drawCalendarAllDayEvents(allDayEventsList, eventsBlocks[0], null);
- }
- // This ensure to diplay working hours checkbox when switching views
- var printHoursCheckBox = $("printHours");
- onPrintWorkingHoursCheck(printHoursCheckBox);
-
- // Add events color for each calendars
- //addCalendarsColor();
- }
- else
- log ("calendarDisplayCallback Ajax error ("+ http.readyState + "/" + http.status + ")");
-
- return false;
-}
-
-function addCalendarsColor () {
- var allCalendars = window.parent$("calendarList");
- var allColors = window.parentvar("UserSettings")['Calendar']['FolderColors'];
-
- for (var i = 0; i < allCalendars.children.length; i++) {
- if (allCalendars.children[i].down("input").checked){
- owner = allCalendars.children[i].getAttribute("owner");
- folderName = allCalendars.children[i].getAttribute("id").substr(1);
-
- color = allColors[owner + ":Calendar/" + folderName];
- if (!color) {
- if(folderName.split("_")[1])
- color = allColors[owner + ":Calendar/" + folderName.split("_")[1]];
- else
- color = "#AAAAAA";
- }
- appendStyleElement(folderName, color);
- }
- }
-}
-
-function addCalendarsColor () {
- var activeCalendarsId = [];
- var allCalendars = window.parent$("calendarList");
- var allColors = window.parentvar("UserSettings")['Calendar']['FolderColors'];
- for (var i = 0; i < allCalendars.children.length; i++) {
- if (allCalendars.children[i].down("input").checked){
- folderName = allCalendars.children[i].getAttribute("id").substr(1);
- color = allColors["sogo1:Calendar/" + folderName];
- appendStyleElement(folderName, color);
- }
- }
-}
-
-function refreshEvents() {
- var todayDate = new Date();
-
- if (!currentDay)
- currentDay = todayDate.getDayString();
-
- if (currentPreview == "dayview" || currentPreview == "multicolumndayview") {
- sd = currentDay;
- ed = sd;
- }
- else if (currentPreview == "weekview") {
- var startDate;
- startDate = currentDay.asDate();
- startDate = startDate.beginOfWeek();
- sd = startDate.getDayString();
- var endDate = new Date();
- endDate.setTime(startDate.getTime());
- endDate.addDays(6);
- ed = endDate.getDayString();
- }
- else {
- var monthDate;
- monthDate = currentDay.asDate();
- monthDate.setDate(1);
- sd = monthDate.beginOfWeek().getDayString();
-
- var lastMonthDate = new Date();
- lastMonthDate.setTime(monthDate.getTime());
- lastMonthDate.setMonth(monthDate.getMonth() + 1);
- lastMonthDate.addDays(-1);
- ed = lastMonthDate.endOfWeek().getDayString();
- }
- if (document.refreshEventsAjaxRequest) {
- document.refreshEventsAjaxRequest.aborted = true;
- document.refreshEventsAjaxRequest.abort();
- }
- var url = (ApplicationBaseURL + "/eventsblocks?sd=" + sd + "&ed=" + ed
- + "&view=" + currentPreview);
-
- document.refreshEventsAjaxRequest
- = triggerAjaxRequest(url, refreshEventsCallback,
- {"startDate": sd, "endDate": ed});
-}
-
-function refreshTasks(){
- if (document.tasksListAjaxRequest) {
- document.tasksListAjaxRequest.aborted = true;
- document.tasksListAjaxRequest.abort();
- }
-
- var taskListFilter = window.parentvar("taskListFilter");
- url = window.parentvar("ApplicationBaseURL") + "/" + "taskslist?show-completed=" + printCompletedTasks
- + "&asc=" + sorting["task-ascending"]
- + "&sort=" + sorting["task-attribute"]
- + "&filterpopup=" + taskListFilter;
-
- // TODO : Is that really necessary ?
- var tasksList = window.parent$("tasksList");
- var selectedIds;
- if (tasksList)
- selectedIds = tasksList.getSelectedNodesId();
- else
- selectedIds = null;
-
- document.tasksListAjaxRequest = triggerAjaxRequest(url, refreshTasksListCallback, selectedIds);
-}
-
-function refreshEventsCallback(http) {
- if (http.readyState == 4
- && http.status == 200) {
- if (http.responseText.length > 0) {
- eventsBlocks = http.responseText.evalJSON(true);
- $("rightFrameEvents").innerHTML = "";
- if ($("printLayoutList").value == "0" && eventsBlocks.length > 0) {
- _drawEventsCells(eventsBlocks);
- }
- else {
- updateDisplayView(null, currentPreview);
- }
- adjustFrames();
- }
- }
- else
- log("AJAX error when refreshing calendar events");
-}
-
-function refreshTasksListCallback(http) {
- if (http.readyState == 4
- && http.status == 200) {
- if (http.responseText.length > 0) {
- var tasksBlocks = http.responseText.evalJSON(true);
- $("rightFrameTasks").innerHTML = "";
- if (tasksBlocks.length > 0) {
- _drawTasksCells(tasksBlocks);
- adjustFrames();
- }
- }
- }
- else
- log("AJAX error when refreshing calendar events");
-}
-
-function _drawEventsCells(eventsBlocks) {
- var events = _("Events");
- $("rightFrameEvents").insert("
"+events+"
");
- if (currentPreview == "multicolumndayview") {
- for(var i=0; i < eventsBlocks.length; i++) { // calendars
- for (var j = 0; j < eventsBlocks[i][0].length; j++) {
- var event = _parseEvent(eventsBlocks[i][0][j]);
- $("rightFrameEvents").insert(event);
- }
- }
- }
- else {
- for(var i=0; i < eventsBlocks[0].length; i++) {
- var event = _parseEvent(eventsBlocks[0][i]);
- $("rightFrameEvents").insert(event);
- }
- }
-}
-
-function _drawTasksCells(tasksBlocks) {
- var task = _("Tasks");
- $("rightFrameTasks").insert(""+task+"
");
- for(var i=0; i < tasksBlocks.length; i++) {
- if (!(printNoDueDateTasks == false && tasksBlocks[i][5] == null)) {
- var task = _parseTask(tasksBlocks[i]);
- $("rightFrameTasks").insert(task);
- }
- }
-}
-
-function addColorsOnEvents(eventInside, eventCell) {
- if (printColors.checked == true) {
- if (printColors.style == "borders") {
- var string = "borderC" + eventInside.getAttribute("class").split(" ")[1].substr(1);
- Element.addClassName(eventCell, string);
- }
- else if(printColors.style == "backgrounds") {
- var string = "backgroundC" + eventInside.getAttribute("class").split(" ")[1].substr(1);
- Element.addClassName(eventInside, string);
- }
- }
-}
-
-function _drawCalendarEvents(events, eventsData, columnsData) {
- var daysView = $("daysView");
- var subdivs = daysView.childNodesWithTag("div");
- var printHoursCheckBox = $("printHours");
- for (var i = 0; i < subdivs.length; i++) {
- var subdiv = subdivs[i];
- if (subdiv.hasClassName("days")) {
- var days = subdiv.childNodesWithTag("div");
- if (currentPreview == "multicolumndayview") {
- for (var j = 0; j < days.length; j++) {
- var parentDiv = days[j].childNodesWithTag("div")[0];
- var calendar = columnsData[j];
- var calendarEvents = calendar[2][0];
- var calendarEventsData = calendar[0];
- if (parentDiv.getElementsByClassName("event").length > 0) {
- var oldEvents = parentDiv.getElementsByClassName("event");
- var length = oldEvents.length - 1;
- for (var x = length; x >= 0; x--)
- oldEvents[x].remove();
- }
- for (var k = 0; k < calendarEvents.length; k++) {
- var eventRep = calendarEvents[k];
- var nbr = eventRep.nbr;
-
- if (printHoursCheckBox.checked) {
- var offset = _computeOffset(parentDiv);
- if ((eventRep.start - offset[0]) > 0 && (eventRep.start - offset[0]) < offset[1]) {
- var eventCell = newEventDIV(eventRep, calendarEventsData[nbr], offset[0]);
- var eventInside = eventCell.down(".eventInside");
- addColorsOnEvents(eventInside, eventCell);
- parentDiv.appendChild(eventCell);
- }
- }
- else {
- var eventCell = newEventDIV(eventRep, calendarEventsData[nbr], null);
- var eventInside = eventCell.down(".eventInside");
- addColorsOnEvents(eventInside, eventCell);
- parentDiv.appendChild(eventCell);
- }
- }
- }
- }
- else {
- for (var j = 0; j < days.length; j++) {
- var parentDiv = days[j].childNodesWithTag("div")[0];
- if (parentDiv.getElementsByClassName("event").length > 0) {
- var oldEvents = parentDiv.getElementsByClassName("event");
- var length = oldEvents.length - 1;
- for (var x = length; x >= 0; x--)
- oldEvents[x].remove();
- }
- for (var k = 0; k < events[j].length; k++) {
- var eventRep = events[j][k];
- var nbr = eventRep.nbr;
- if (printHoursCheckBox.checked) {
- var offset = _computeOffset(parentDiv);
- if ((eventRep.start - offset[0]) > 0 && (eventRep.start - offset[0]) < offset[1]) {
- var eventCell = newEventDIV(eventRep, eventsData[nbr], offset[0]);
- var eventInside = eventCell.down(".eventInside");
- addColorsOnEvents(eventInside, eventCell);
- parentDiv.appendChild(eventCell);
- }
- }
- else {
- var eventCell = newEventDIV(eventRep, eventsData[nbr], null);
- var eventInside = eventCell.down(".eventInside");
- addColorsOnEvents(eventInside, eventCell);
- parentDiv.appendChild(eventCell);
- }
- }
- }
- }
- }
- }
-}
-
-function _drawCalendarAllDayEvents(events, eventsData, columnsData) {
- var headerView = $("calendarHeader");
- var subdivs = headerView.childNodesWithTag("div");
-
- if (currentPreview == "multicolumndayview") {
- var days = subdivs[2].childNodesWithTag("div");
- for (var i = 0; i < days.length; i++) {
- var parentDiv = days[i];
- var calendar = columnsData[i];
- var calendarAllDayEvents = calendar[1][0];
- var calendarAllDayEventsData = calendar[0];
- for (var j = 0; j < calendarAllDayEvents.length; j++) {
- var eventRep = calendarAllDayEvents[j];
- var nbr = eventRep.nbr;
- var eventCell = newAllDayEventDIV(eventRep, calendarAllDayEventsData[nbr]);
- parentDiv.appendChild(eventCell);
- }
- }
- }
- else {
- var days = subdivs[1].childNodesWithTag("div");
- for (var i = 0; i < days.length; i++) {
- var parentDiv = days[i];
- for (var j = 0; j < events[i].length; j++) {
- var eventRep = events[i][j];
- var nbr = eventRep.nbr;
- var eventCell = newAllDayEventDIV(eventRep, eventsData[nbr]);
- parentDiv.appendChild(eventCell);
- }
- }
- }
- adjustPreviewHeader();
-}
-
-// todo : month
-
-function newEventDIV(eventRep, event, offset) {
- var eventCell = newBaseEventDIV(eventRep, event, event[4]);
-
- var pc = 100 / eventRep.siblings;
- var left = Math.floor(eventRep.position * pc);
- eventCell.style.left = left + "%";
- var right = Math.floor(100 - (eventRep.position + 1) * pc);
- eventCell.style.right = right + "%";
- if (offset != null) {
- eventCell.addClassName("starts" + (eventRep.start - offset));
- }
- else {
- eventCell.addClassName("starts" + eventRep.start);
- }
- eventCell.addClassName("lasts" + eventRep.length);
-
- if (event[7]) {
- var inside = eventCell.childNodesWithTag("div")[0];
- var textDiv = inside.childNodesWithTag("div")[1];
- textDiv.appendChild(createElement("br"));
- var span = createElement("span", null, "location");
- var text = _("Location:") + " " + event[7];
- span.update(text);
- textDiv.appendChild(span);
- }
-
- return eventCell;
-}
-
-function newBaseEventDIV(eventRep, event, eventText) {
- // log ("0 cname = " + event[0]);
- // log ("1 calendar = " + event[1]);
- // log ("2 calendar name = " + event[2]);
- // log ("3 status = " + event[3]);
- // log ("4 title = " + event[4]);
- // log ("5 start = " + event[5]);
- // log ("6 end = " + event[6]);
- // log ("7 location = " + event[7]);
- // log ("8 isallday = " + event[8]);
- // log ("9 classification = " + event[9]); // 0 = public, 1 = private, 2 = confidential
- // log ("10 category = " + event[10]);
- // log ("11 participants emails = " + event[11]);
- // log ("12 participants states = " + event[12]);
- // log ("13 owner = " + event[13]);
- // log ("14 iscycle = " + event[14]);
- // log ("15 nextalarm = " + event[15]);
- // log ("16 recurrenceid = " + event[16]);
- // log ("17 isexception = " + event[17]);
- // log ("18 editable = " + event[18]);
- // log ("19 erasable = " + event[19]);
- // log ("20 ownerisorganizer = " + event[20]);
-
- var eventCell = createElement("div");
- eventCell.cname = event[0];
- eventCell.calendar = event[1];
- var startDate = new Date(event[5]*1000);
- if (startDate) {
- eventCell.startDate = event[5];
- eventCell.writeAttribute('day', startDate.getDayString());
- eventCell.writeAttribute('hour', event[8]? 'allday' : startDate.getHourString());
- }
- // if (event[8] == 1)
- // eventCell.addClassName("private");
- // else if (event[8] == 2)
- // eventCell.addClassName("confidential");
- if (eventRep.recurrenceTime)
- eventCell.recurrenceTime = eventRep.recurrenceTime;
- //eventCell.owner = event[12];
- eventCell.isException = event[17];
- eventCell.editable = event[18];
- eventCell.erasable = event[19] || IsSuperUser;
- eventCell.ownerIsOrganizer = event[20];
- eventCell.addClassName("event");
- // if (event[14] > 0)
- // eventCell.addClassName("alarm");
-
- var innerDiv = createElement("div");
- eventCell.appendChild(innerDiv);
- innerDiv.addClassName("eventInside");
- innerDiv.addClassName("calendarFolder" + event[1]);
- if (eventRep.userState >= 0 && userStates[eventRep.userState])
- innerDiv.addClassName(userStates[eventRep.userState]);
-
- var gradientDiv = createElement("div");
- innerDiv.appendChild(gradientDiv);
- gradientDiv.addClassName("gradient");
-
- var gradientImg = createElement("img");
- gradientDiv.appendChild(gradientImg);
- gradientImg.src = ResourcesURL + "/event-gradient.png";
-
- var textDiv = createElement("div");
- innerDiv.appendChild(textDiv);
- textDiv.addClassName("text");
- var iconSpan = createElement("span", null, "icons");
- textDiv.update(eventText.replace(/(\\r)?\\n/g, "
"));
- textDiv.appendChild(iconSpan);
-
- // Add alarm and classification icons
- if (event[9] == 1)
- createElement("img", null, null, {src: ResourcesURL + "/private.png"}, null, iconSpan);
- else if (event[9] == 2)
- createElement("img", null, null, {src: ResourcesURL + "/confidential.png"}, null, iconSpan);
- if (event[15] > 0)
- createElement("img", null, null, {src: ResourcesURL + "/alarm.png"}, null, iconSpan);
-
- if (event[10] != null) {
- var category = event[10].decodeEntities();
- var categoryStyle = categoriesStyles.get(category);
- if (!categoryStyle) {
- categoryStyle = 'category_' + categoriesStyles.keys().length;
- categoriesStyles.set([category], categoryStyle);
- }
- innerDiv.addClassName(categoryStyle);
- }
-
- return eventCell;
-}
-
-function appendStyleElement(folderPath, color) {
- if (document.styleSheets) {
- var fgColor = getContrastingTextColor(color);
- var styleElement = document.styleSheets[3];
-
- if (printColors.style == "backgrounds") {
- styleElement.insertRule(".calendarFolder" + folderPath +
- "{background-color: " + color + " !important;" +
- " color: " + fgColor + " !important;" +
- " border: none;}", styleElement.cssRules.length);
- }
- else if (printColors.style == "borders")
- styleElement.insertRule(".calendarFolder" + folderPath +
- "{background-color: none" +
- " color: none" +
- " border:1px solid " + color + " !important;}", styleElement.cssRules.length);
- }
-}
-
-function appendStyleElement(folderPath, color) {
- if (document.styleSheets) {
- var fgColor = getContrastingTextColor(color);
- var styleElement = document.styleSheets[3];
-
- styleElement.addRule(".calendarFolder" + folderPath, "background-color: " + color + " !important;" + " color: " + fgColor + " !important;", 1);
- }
-}
-
-function _parseEvent(event) {
- // Localized strings :
- var start = _("Start:");
- var end = _("End:");
- var location = _("Location:");
- var calendar = _("Calendar:");
- var description = _("Description:");
- var newEvent = document.createElement("div");
- var table = document.createElement("table");
- Element.addClassName(newEvent, "divEventsPreview");
-
- var row = table.insertRow(0);
- row.insertCell(0);
- var title = row.insertCell(1);
- row = table.insertRow(1);
- var startCell = row.insertCell(0);
- Element.addClassName(startCell, "cellFormat");
- var startCellValue = row.insertCell(1);
- row = table.insertRow(2);
- var endCell = row.insertCell(0);
- Element.addClassName(endCell, "cellFormat");
- var endCellValue = row.insertCell(1);
- row = table.insertRow(3);
- var locationCell = row.insertCell(0);
- Element.addClassName(locationCell, "cellFormat");
- var locationCellValue = row.insertCell(1);
- row = table.insertRow(4);
- var calendarCell = row.insertCell(0);
- Element.addClassName(calendarCell, "cellFormat");
- var calendarCellValue = row.insertCell(1);
- row = table.insertRow(5);
- var descriptionCell = row.insertCell(0);
- Element.addClassName(descriptionCell, "cellFormat");
- var descriptionCellValue = row.insertCell(1);
-
- title.innerHTML = event[4];
- startCell.innerHTML = start;
- var startDate = new Date(event[5] *1000);
- startCellValue.innerHTML = startDate.toLocaleString();
- endCell.innerHTML = end;
- var endDate = new Date(event[6] *1000);
- endCellValue.innerHTML = endDate.toLocaleString();
- locationCell.innerHTML = location;
- locationCellValue.innerHTML = event[7];
- calendarCell.innerHTML = calendar;
- calendarCellValue.innerHTML = event[2];
-
- if (event[21] && event[21].length) {
- descriptionCell.innerHTML = description;
- descriptionCellValue.innerHTML = event[21];
- }
-
- if (printColors.checked) {
- var allColors = window.parentvar("UserSettings")['Calendar']['FolderColors'];
- var owner = event[13];
- var folderName = event[1];
- var color = allColors[owner + ":Calendar/" + folderName];
- var fgColor = getContrastingTextColor(color);
-
- if (printColors.style == "backgrounds") {
- newEvent.writeAttribute("style", "background-color:" + color + "; color:" + fgColor + ";");
- startCell.writeAttribute("style", "color:" + fgColor + ";");
- endCell.writeAttribute("style", "color:" + fgColor + ";");
- locationCell.writeAttribute("style", "color:" + fgColor + ";");
- calendarCell.writeAttribute("style", "color:" + fgColor + ";");
-
- }
- else if (printColors.style == "borders")
- newEvent.writeAttribute("style", "border:2px solid " + color + ";");
- }
- if (event[7] == "") {
- locationCell.hide();
- locationCellValue.hide();
- }
- newEvent.appendChild(table);
-
- return newEvent;
-}
-
-function _parseTask(task) {
- // new code
- var end = _("Due Date:");
- var calendar = _("Calendar:");
- var location = _("Location:");
-
- var newTask = document.createElement("div");
- var table = document.createElement("table");
- Element.addClassName(newTask, "divTasksPreview");
-
- var row = table.insertRow(0);
- row.insertCell(0);
- var title = row.insertCell(1);
- row = table.insertRow(1);
- var endCell = row.insertCell(0);
- var endCellValue = row.insertCell(1);
- row = table.insertRow(2);
- var locationCell = row.insertCell(0);
- var locationCellValue = row.insertCell(1);
- row = table.insertRow(3);
- var calendarCell = row.insertCell(0);
- var calendarCellValue = row.insertCell(1);
-
- title.innerHTML = task[4];
- if (task[5] != null) {
- endCell.innerHTML = end;
- var endDate = new Date(task[5] *1000);
- endCellValue.innerHTML = endDate.toLocaleString();
- }
- else {
- endCell.hide();
- endCellValue.hide();
- }
- if (task[7] != "") {
- locationCell.innerHTML = location;
- locationCellValue.innerHTML = task[7];
- }
- else {
- locationCell.hide();
- locationCellValue.hide();
- }
- calendarCell.innerHTML = calendar;
- calendarCellValue.innerHTML = task[2];
-
- if (task[13] == "overdue")
- Element.addClassName(title, "overdueTasks");
- else if (task[13] == "completed")
- Element.addClassName(title, "completedTasks");
- else
- Element.addClassName(title, "tasksTitle");
-
- if (printColors.checked) {
- var allColors = window.parentvar("UserSettings")['Calendar']['FolderColors'];
- var owner = task[12];
- var folderName = task[1];
- var color = allColors[owner + ":Calendar/" + folderName];
- var fgColor = getContrastingTextColor(color);
-
- if (printColors.style == "backgrounds") {
- newTask.writeAttribute("style", "background-color:" + color + "; color:" + fgColor + ";");
- endCell.writeAttribute("style", "color:" + fgColor + ";");
- locationCell.writeAttribute("style", "color:" + fgColor + ";");
- calendarCell.writeAttribute("style", "color:" + fgColor + ";");
-
- }
- else if (printColors.style == "borders")
- newTask.writeAttribute("style", "border:2px solid " + color + ";");
- }
-
- newTask.appendChild(table);
-
- return newTask;
-}
-
-function _computeOffset(hoursCells) {
- var outOfDayCells = hoursCells.getElementsByClassName("outOfDay");
- var count = 1;
- var offset = [];
- var buffer;
- var j = 1;
- for (var i = 0; i < outOfDayCells.length; i++) {
- hourCell1 = parseInt(outOfDayCells[i].getAttribute("hour")) + 100;
- hourCell2 = parseInt(outOfDayCells[j].getAttribute("hour"));
- if (hourCell1 == hourCell2)
- count += 1;
- else
- break;
- j ++;
- }
- offset.push(count * 4);
- offset.push((hourCell2 / 100 * 4) - (count * 4));
-
- return offset;
-}
-
-function _computeOffset(hoursCells) {
- var outOfDayCells = hoursCells.getElementsByClassName("outOfDay");
- var count = 1;
- var offset = [];
- var buffer;
- var j = 1;
- for (var i = 0; i < outOfDayCells.length; i++) {
- hourCell1 = parseInt(outOfDayCells[i].getAttribute("hour")) + 100;
- hourCell2 = parseInt(outOfDayCells[j].getAttribute("hour"));
- if (hourCell1 == hourCell2) {
- count += 1;
- }
- else {
- break;
- }
- j ++;
- }
- offset.push(count * 4);
- offset.push((hourCell2 / 100 * 4) - (count * 4));
-
- return offset;
-}
-
-/************************************** Preview Navigation *****************************************/
-
-function onCalendarGotoDay(node) {
- var day = node.getAttribute("date");
-
- changeDateSelectorDisplay(day);
- updateDisplayView({ "day": day });
- refreshEvents();
-
- return false;
-}
-
-function changeDateSelectorDisplay(day, keepCurrentDay) {
- var url = ApplicationBaseURL + "/dateselector";
- if (day) {
- if (day.length < 8)
- day += "01";
- url += "?day=" + day;
- }
-
- if (!keepCurrentDay)
- currentDay = day;
-
- var month = day.substr(0, 6);
- if (cachedDateSelectors[month]) {
- // log ("restoring cached selector for month: " + month);
- setDateSelectorContent(cachedDateSelectors[month]);
- }
- else {
- // log ("loading selector for month: " + month);
- if (document.dateSelectorAjaxRequest) {
- document.dateSelectorAjaxRequest.aborted = true;
- document.dateSelectorAjaxRequest.abort();
- }
- document.dateSelectorAjaxRequest
- = triggerAjaxRequest(url,
- dateSelectorCallback,
- month);
- }
-}
-
-function dateSelectorCallback(http) {
- if (http.readyState == 4
- && http.status == 200) {
- document.dateSelectorAjaxRequest = null;
- var content = http.responseText;
- setDateSelectorContent(content);
- cachedDateSelectors[http.callbackData] = content;
- }
- else
- log ("dateSelectorCallback Ajax error");
-
- return false;
-}
-
-/*********************** Input Field, listMenu, Checkboxes and Radio *********************************/
-
-function onInputTitleChange(event){
- var inputFieldTitle = $("inputFieldTitle").value;
- if (inputFieldTitle)
- document.getElementById("rightFrameTitle").innerHTML = inputFieldTitle + "
";
- else
- document.getElementById("rightFrameTitle").remove();
-
- return false;
-}
-
-function onPrintLayoutListChange() {
- var parentView = window.parentvar("currentView");
- var selectedLayout = $("printLayoutList").value;
- document.getElementById("printHours").disabled = (selectedLayout == 0);
- switch(selectedLayout) {
- case "0": // List view
- window.resizeTo(700,500);
- currentPreview = parentView;
- break;
-
- case "1": // Day view
- window.resizeTo(1010,500);
- currentPreview = "dayview";
- break;
-
- case "2": // Multi-columns view
- window.resizeTo(1010,500);
- currentPreview = "multicolumndayview";
- break;
-
- case "3": // Week view
- window.resizeTo(1010,500);
- currentPreview = "weekview";
- break;
-
- /*case "4": // Month view
- window.resizeTo(1010,500);
- currentPreview = "monthview";
- break;*/
- }
- refreshContent();
- return false;
-}
-
-function adjustPreviewHeader() {
- // 1 - Check if there is any allDay Events. If not reduce the space taken
- var selectedLayout = $("printLayoutList").value;
- if (selectedLayout != 0) {
- var calendarHeader = $("calendarHeader");
- var allDayDisplay = $("calendarHeader").getElementsByClassName("days");
- var allDayEvents = $("calendarHeader").getElementsByClassName("eventInside");
- var eventHeight = 22;
- var headerHeight = 38;
- if (selectedLayout == 1) { // Since there is only one column in day view
- height = allDayEvents.length * eventHeight;
- }
- else { // Applies only on week view and multi-columns view
- var nbEventsMax = 0
- var eventClass = $("calendarHeader").getElementsByClassName("event");
- for (var i = 0; i < allDayDisplay[0].childNodes.length; i++) {
- if (allDayDisplay[0].childNodes[i].firstChild != null) {
- count = allDayDisplay[0].childNodes[i].getElementsByClassName("event").length;
- if (count > nbEventsMax) {
- nbEventsMax = count;
- }
- }
- }
- height = nbEventsMax * eventHeight;
- if (selectedLayout == 2) {
- headerHeight = 58;
- adjustMultiColumnCalendarHeaderDIV();
- }
- }
- calendarHeader.style.height = (height + headerHeight) + "px";
- allDayDisplay[0].style.height = height + "px";
- }
-}
-
-function adjustMultiColumnCalendarHeaderDIV() {
- var ch = $("calendarHeader");
- var calendarLabels = ch.getElementsByClassName("calendarLabels")[0];
- var calendarsToDisplay = calendarLabels.getElementsByClassName("calendarsToDisplay");
- var dayLabels = ch.getElementsByClassName("dayLabels")[0].getElementsByClassName("dayColumn")[0];
- var days = ch.getElementsByClassName("days")[0].getElementsByClassName("dayColumn");
- var daysView = $("daysView").getElementsByClassName("dayColumn");
- var nbCalendars = calendarsToDisplay.length;
-
- if (nbCalendars > 0) {
- var width = 100/nbCalendars;
- var left = 0;
- var position = "absolute";
- for(var i=0; i < nbCalendars; i++){
- calendarsToDisplay[i].setStyle({ width: width + '%', left: left + '%', position: position}).show();
- days[i].setStyle({ width: width + '%', left: left + '%'}).show();
- daysView[i].setStyle({ width: width + '%', left: left + '%'}).show();
- left += width;
- }
- dayLabels.setStyle({ width: '100%'}).show();
- }
- else {
- $("calendarHeader").remove();
- $("daysView").remove();
- var htmlText = "" + _("notice:") + ""+_("Please go ahead and select calendars")+"
";
- $("calendarContent").innerHTML = htmlText;
- }
-}
-
-function adjustFrames() {
- var view = $("printLayoutList").value;
- if (view == 0) {
- var eventsCheckBox = $("printEvents");
- var tasksCheckBox = $("printTasks");
- onEventsCheck(eventsCheckBox);
- onTasksCheck(tasksCheckBox);
- document.getElementById("rightFrameTasks").style.pageBreakBefore = 'auto';
- document.getElementById("rightFrameTasks").style.pageBreakInside = 'auto';
- }
- else {
- document.getElementById("rightFrameEvents").style.width = '100%';
- document.getElementById("rightFrameTasks").style.width = '100%';
- document.getElementById("rightFrameTasks").style.pageBreakBefore = 'always';
- document.getElementById("rightFrameTasks").style.pageBreakInside = 'avoid';
- }
- return false;
-}
-
-function onEventsCheck(checkBox) {
- var printOptions = document.getElementById("printHours");
- var selectedLayout = $("printLayoutList").value;
- if (!checkBox.checked || selectedLayout == 0)
- printOptions.disabled = true;
- else
- printOptions.disabled = false;
-
- var events = $("rightFrameEvents").childNodesWithTag("DIV");
- if(checkBox.checked && events.length > 0){
- $("rightFrameEvents").style.display = 'block';
- if ($("printLayoutList").value == 0){
- $("rightFrameTasks").style.width = '49.5%';
- }
- }
- else {
- $("rightFrameEvents").style.display = 'none';
- if ($("printLayoutList").value == 0){
- $("rightFrameTasks").style.width = '100%';
- }
- }
- return false;
-}
-
-function onTasksCheck(checkBox) {
- var printOptions = document.getElementsByName("printOptions");
- for (var i = 0; i < printOptions.length; i++)
- printOptions[i].disabled = !checkBox.checked;
-
- var tasks = $("rightFrameTasks").childNodesWithTag("DIV");
- if(checkBox.checked && tasks.length > 0) {
- $("rightFrameTasks").style.display = 'block';
- if ($("printLayoutList").value == 0){
- $("rightFrameEvents").style.width = '49.5%';
- }
- }
- else {
- $("rightFrameTasks").style.display = 'none';
- if ($("printLayoutList").value == 0){
- $("rightFrameEvents").style.width = '100%';
- }
- }
- return false;
-}
-
-function onPrintWorkingHoursCheck(checkBox) {
- var isCheked = checkBox.checked;
- var outOfDayCells = $$("DIV#daysView .outOfDay");
- var hours = $$("DIV#daysView .hour");
- var hoursOutOfDay = [];
- for (var i = 0; i < outOfDayCells.length; i++) {
- var buffer = outOfDayCells[i].getAttribute("hour").substr(0,1);
- if (buffer != "0") {
- buffer += outOfDayCells[i].getAttribute("hour").substr(1,1);
- }
- else {
- buffer = outOfDayCells[i].getAttribute("hour").substr(1,1);
- }
- if(isCheked) {
- outOfDayCells[i].hide();
- hours[buffer].hide();
- }
- else {
- outOfDayCells[i].show();
- hours[buffer].show();
- }
- }
-
- if (currentPreview == "multicolumndayview")
- _drawCalendarEvents(null, null, eventsBlocks);
- else {
- eventsList = eventsBlocks[2];
- if (currentPreview == "monthview") {
- //_drawMonthCalendarEvents(eventsList, eventsBlocks[0], null);
- }
- else
- _drawCalendarEvents(eventsList, eventsBlocks[0], null);
- }
- return false;
-}
-
-function onPrintColorsCheck(checkBox) {
- printColors.checked = (checkBox.checked ? true : false);
-
- if (printColors.checked) {
- $("printBackgroundColors").disabled = false;
- $("printBorderColors").disabled = false;
- }
- else {
- $("printBackgroundColors").disabled = true;
- $("printBorderColors").disabled = true;
- }
- refreshContent();
-}
-
-function onPrintColors(selectedRadioButton) {
- printColors.style = selectedRadioButton.value;
- refreshContent();
-}
-/*function onPrintDateCheck() {
- var dateRange = document.getElementsByName("dateRange");
- var customDate = document.getElementById("customDate");
- for (var i = 0; i < dateRange.length; i++)
- if (dateRange[i].children[1].children[0].disabled == customDate.checked)
- dateRange[i].children[1].children[0].disabled = !customDate.checked;
- }*/
-
-function onPrintCompletedTasksCheck(checkBox) {
- printCompletedTasks = (checkBox.checked ? 1 : 0);
- refreshContent();
-}
-
-function onPrintNoDueDateTasksCheck(checkBox) {
- printNoDueDateTasks = (checkBox.checked ? true : false);
- refreshContent();
-}
-
-/************** Date picker functions *************
- this.initTimeWidgets = function (widgets) {
- this.timeWidgets = widgets;
-
- jQuery(widgets['start']['date']).closest('.date').datepicker({autoclose: true, weekStart: 0});
- jQuery(widgets['end']['date']).closest('.date').datepicker({autoclose: true, weekStart: 0});
-
- //jQuery(widgets['start']['date']).change(onAdjustTime);
-
- jQuery(widgets['startingDate']['date']).closest('.date').datepicker({autoclose: true,
- weekStart: 0,
- endDate: lastDay,
- startDate: firstDay,
- setStartDate: lastDay,
- startView: 2,
- position: "below-shifted-left"});
- }
-
- this.onAdjustTime = function(event) {
- onAdjustDueTime(event);
- }
-
- this.onAdjustDueTime = function(event) {
- var dateDelta = (window.getStartDate().valueOf() - window.getShadowStartDate().valueOf());
- var newDueDate = new Date(window.getDueDate().valueOf() + dateDelta);
- window.setDueDate(newDueDate);
-
- window.timeWidgets['start']['date'].updateShadowValue();
- }
- /****************************************************/
-
-/******************************* Buttons ***********************************************/
-
-function onPrintCancelClick(event) {
- this.blur();
- onCloseButtonClick(event);
-}
-
-function onPrintClick(event) {
- this.blur();
- window.print();
-}
-/**************************** Initialization *******************************************/
-
-function init() {
- initializePrintSettings();
- //initializeWhatToPrint();
- //initializeOptions();
- $("cancelButton").observe("click", onPrintCancelClick);
- $("printButton").observe("click", onPrintClick);
-
- /* TODO : Selected and custom date must be implemented and finished.
- document.getElementById("eventsTasks").disabled=true;
- document.getElementById("customDate").disabled=true;*/
-
- onPrintLayoutListChange();
-}
-
-function initializePrintSettings() {
- $("inputFieldTitle").observe("change", onInputTitleChange);
- $("printLayoutList").observe("change", onPrintLayoutListChange);
-}
-
-/*function initializeWhatToPrint() {
- var widgets = {'start': {'date': $("startingDate")},
- 'end': {'date': $("endingDate")}};
- initTimeWidgets(widgets);
- onPrintDateCheck();
-
- }*/
-
-/*function initializeOptions() {
-}*/
-
-document.observe("dom:loaded", init);
diff --git a/UI/WebServerResources/UIxContactFolderProperties.css b/UI/WebServerResources/UIxContactFolderProperties.css
deleted file mode 100644
index 57ef6ab28..000000000
--- a/UI/WebServerResources/UIxContactFolderProperties.css
+++ /dev/null
@@ -1,40 +0,0 @@
-DIV
-{ clear: both; }
-
-FIELDSET
-{ margin-bottom: 5px;
- border: 1px solid #FFFFFF;
- border-top: 1px solid #909090;
- border-left: 1px solid #909090; }
-
-FIELDSET DIV
-{ margin-left: 20px;
- margin-right: 10px; }
-
-SPAN.label
-{ cursor: default;
- width: 55px;
- text-align: right;
- line-height: 2em;
- float: left;
- display: block; }
-
-SPAN.content
-{ line-height: 1.5em;
- vertical-align: middle;
- margin-left: 4px; }
-
-SPAN.content INPUT.textField
-{ width: 160px; }
-
-DIV#buttons
-{ position: absolute;
- bottom: 5px;
- right: 5px;
- padding: 10px;
- padding-top: 5px;
- text-align: right; }
-
-
-LABEL
-{ white-space: nowrap; }
diff --git a/UI/WebServerResources/UIxContactFolderProperties.js b/UI/WebServerResources/UIxContactFolderProperties.js
deleted file mode 100644
index b8c364366..000000000
--- a/UI/WebServerResources/UIxContactFolderProperties.js
+++ /dev/null
@@ -1,69 +0,0 @@
-/* -*- Mode: java; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-
-function onLoadContactFolderProperties() {
- var tabsContainer = $("propertiesTabs");
- var controller = new SOGoTabsController();
- controller.attachToTabsContainer(tabsContainer);
-
- var okButton = $("okButton");
- okButton.observe("click", onOKClick);
-
- var cancelButton = $("cancelButton");
- cancelButton.observe("click", onCancelClick);
-
- Event.observe(document, "keydown", onDocumentKeydown);
-}
-
-function onOKClick(event) {
- var AddressBookName = $("addressBookName");
- var folders = parent$("contactFolders");
- var selected = folders.getSelectedNodes()[0];
-
- if (!AddressBookName.value.blank()) {
- var newName = AddressBookName.value;
- var currentName = AddressBookName.defaultValue;
- if (newName && newName.length > 0 && newName != currentName) {
- if (selected.getAttribute("owner") != "nobody") {
- var url = (URLForFolderID(selected.getAttribute("id")) + "/renameFolder?name=" + escape(newName.utf8encode()));
- triggerAjaxRequest(url, folderRenameCallback, {node: selected, name: newName});
-
- }
- else {
- alert_("You do not own this address book");
- }
- }
- else
- window.close();
- }
- else
- alert(_("Please specify an address book name."));
- Event.stop(event);
-}
-
-function folderRenameCallback(http) {
- if (http.readyState == 4) {
- if (isHttpStatus204(http.status)) {
- var dict = http.callbackData;
- dict["node"].childNodesWithTag("span")[0].innerHTML = dict["name"];
- window.close();
- }
- }
-}
-
-function onCancelClick(event) {
- window.close();
-}
-
-function onDocumentKeydown(event) {
- var target = Event.element(event);
- if (target.tagName == "INPUT" || target.tagName == "SELECT") {
- if (event.keyCode == Event.KEY_RETURN) {
- onOKClick(event);
- }
- }
- if (event.keyCode == Event.KEY_ESC) {
- onCancelClick();
- }
-}
-
-document.observe("dom:loaded", onLoadContactFolderProperties);
diff --git a/UI/WebServerResources/UIxMailSearch.css b/UI/WebServerResources/UIxMailSearch.css
deleted file mode 100644
index 2e72304e9..000000000
--- a/UI/WebServerResources/UIxMailSearch.css
+++ /dev/null
@@ -1,221 +0,0 @@
-/*************** Dialog *****************/
-
-DIV.dialog.searchMail {
- position: relative;
- padding: 0px;
- opacity: 1;
- width: 85%;
- height: 75%;
- margin: 2em auto;
-}
-
-DIV.dialog.searchMail > DIV {
- min-height: 500px;
-}
-
-/*************** Table adjustment *****************/
-
-TABLE#searchMailHeader
-{ width: 100%;
- margin-bottom: 1em; }
-
-DIV#searchFiltersList
-{
- border: 1px solid #909090;
- padding-top:2px;
- border-radius: 3px;
- max-height:105px;
- height:105px;
- overflow-y:auto;
- overflow-x:hidden;
- width:100%;
-}
-
-DIV#resultsTable
-{
- border: 1px solid #909090;
- margin-top:5px;
- border-radius: 3px;
- overflow-y: auto;
- width:100%;
-}
-
-TD#mailAccountsCell {
- overflow:hidden;
- white-space: nowrap;
-}
-
-TR.filterRow, DIV#searchFiltersList > TABLE
-{
- width:100%;
-}
-
-TR.filterRow > TD
-{
- width: 20%;
- vertical-align:middle;
-}
-
-TR.filterRow > TD.buttonsCell
-{
- width: 40px;
-}
-
-TR.filterRow > TD.inputsCell
-{
- width:55%;
-}
-
-.td_table_1, .td_table_2, .td_table_3, .td_table_4 {
- cursor:default;
-}
-
-TD.sortasc {
- background:#bfc2bf;
- background-image: url(/SOGo.woa/WebServerResources/arrow-up.png);
- background-repeat: no-repeat;
- background-position:right center;
-}
-
-TD.sortdesc {
- background:#bfc2bf;
- background-image: url(/SOGo.woa/WebServerResources/arrow-down.png);
- background-repeat: no-repeat;
- background-position:right center;
-}
-
-.td_header {
- white-space:initial !important;
- border-bottom: solid #909090 1px;
- border-right: solid #909090 1px;
- height:18px;
- width:20%;
- cursor:pointer;
- background: -webkit-linear-gradient(left top, #f0f1f0 , #e6e7e6); /* For Safari 5.1 to 6.0 */
- background: -o-linear-gradient(bottom right, #f0f1f0, #e6e7e6); /* For Opera 11.1 to 12.0 */
- background: -moz-linear-gradient(bottom right, #f0f1f0, #e6e7e6); /* For Firefox 3.6 to 15 */
- background: linear-gradient(to bottom right, #f0f1f0 , #e6e7e6); /* Standard syntax */
-}
-
-.td_header:hover
-{text-decoration: underline; }
-
-#buttonExpandHeader {
- width: 20px;
-}
-
-/*************** Button adjustment *****************/
-
-#headerButtons
-{
- width:175px;
- white-space: nowrap;
-}
-
-#searchButton, #cancelButton
-{
- margin-top:0;
-}
-
-.searchByList, .searchArgumentsList, .searchInput
-{
- width:98%;
- paddin:0;
- margin:0;
-}
-
-DIV#optionsButtons
-{
- position:relative;
- height:22px;
-}
-
-A#deleteButton, A#openButton
-{
- float:left;
- margin-top:5px;
-}
-
-.button
-{
- font-style:normal;
-}
-
-#resizeFrame
-{
- text-align: -webkit-right;
- margin-top:1em;
-}
-
-#resizeButton
-{
- display:inline-block;
- text-align: -webkit-center;
-}
-
-#resultsFound {
- position:absolute;
- bottom:20px;
- right:10px;
-}
-
-#listCollapse
-{ position: relative;
- border: 1px solid transparent; }
-
-#listCollapse img
-{ position: absolute; }
-
-#listCollapse img.collapse
-{ clip: rect(0 18px 18px 0);
- top: 0;
- left: 0; }
-
-#listCollapse img.collapse:hover
-{ clip: rect(0 36px 18px 18px);
- top: 0;
- left: -18px; }
-
-#listCollapse img.rise
-{ clip: rect(18px 18px 36px 0);
- top: -18px;
- left: 0; }
-
-#listCollapse img.rise:hover
-{ clip: rect(18px 36px 36px 18px);
- top: -18px;
- left: -18px; }
-
-.filterButtons
-{
- width: 40px;
-}
-
-.filterButtons IMG
-{
- z-index: 1;
- cursor: pointer;
- vertical-align: middle;
-}
-
-/* Glow */
-.glow {
- display: inline-block;
- -webkit-transition-duration: 0.3s;
- transition-duration: 0.3s;
- -webkit-transition-property: box-shadow;
- transition-property: box-shadow;
- -webkit-transform: translateZ(0);
- transform: translateZ(0);
- box-shadow: 0 0 1px rgba(0, 0, 0, 0);
-}
-.glow:hover, .glow:focus, .glow:active {
- box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
-}
-
-/*************** Lists *****************/
-.hidden
-{ display:none; }
-
-
-
diff --git a/UI/WebServerResources/UIxMailSearch.js b/UI/WebServerResources/UIxMailSearch.js
deleted file mode 100644
index 46e966acd..000000000
--- a/UI/WebServerResources/UIxMailSearch.js
+++ /dev/null
@@ -1,473 +0,0 @@
-/* -*- Mode: js2; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-
-var searchParams = {
- searchLocation: "",
- subfolder: true,
- filterMatching: "AND",
- filters: []
-};
-
-// This variable allowed the user to stop the ongoing search
-var stopOngoingSearch = false;
-
-/************ Search mail header ************/
-
-function onSearchClick() {
-// This function updates the searchParams
- var filterRows = $$(".filterRow");
- var searchButton = $("searchButton").down().innerHTML;
- var mailAccountsList = $("mailAccountsList").options;
-
- if (searchButton == _("Search")) {
- searchParams.filters = [];
- stopOngoingSearch = false;
-
- // Get the mailboxe(s)
- for (i = 0; i < mailAccountsList.length ; i++) {
- if (mailAccountsList[i].selected) {
- searchParams.searchLocation = mailAccountsList[i].innerHTML;
- break;
- }
- }
-
- for (i = 0; i < filterRows.length; i++) {
- // Get the information from every filter row before triggering the AJAX call
- var filter = {};
- var searchByOptions = filterRows[i].down(".searchByList").options;
- var searchArgumentsOptions = filterRows[i].down(".searchArgumentsList").options;
- var searchInput = filterRows[i].down(".searchInput");
-
- // Get the searchBy
- // Options : 0-Subject, 1-From, 2-To, 3-Cc, 4-Body
- filter.searchBy = searchByOptions[searchByOptions.selectedIndex].getAttribute("value");
-
- // Get the searchArgument
- // Options : 0-contains, 1-doesn't contains; on the IMAP query add the prefix NOT to negate the statement
- filter.negative = ((searchArgumentsOptions == 1) ? true:false);
- filter.searchArgument = "doesContain";
-
- // Get the input text
- filter.searchInput = searchInput.getValue();
-
- // Add the filter inside the searchParams.filters if the input is not empty
- if (!filter.searchInput.empty())
- searchParams.filters.push(filter);
- }
- // Send the request only if there is at least one filter
- if (searchParams.filters.length > 0) {
- $("searchButton").down().innerHTML = _("Stop");
- searchMails();
- }
- else
- alert(_("Please specify at least one filter"));
- }
- else {
- stopOngoingSearch = true;
- onSearchEnd();
- }
-}
-
-function searchMails() {
- // Variables for the subfolders search
- var optionsList = $("mailAccountsList").options;
- var nbOptions = optionsList.length;
- var selectedIndex = optionsList.selectedIndex;
- var accountNumber, folderPath, folderName;
- var mailAccountIndex = mailAccounts.indexOf(searchParams.searchLocation);
- var root = false;
-
- if (mailAccountIndex != -1) {
- accountNumber = "/" + mailAccountIndex;
- folderName = "INBOX";
- folderPath = accountNumber + "/folderINBOX";
- root = true;
- }
- else {
- var searchLocation = searchParams.searchLocation.split("/");
- accountNumber = "/" + userNames.indexOf(searchLocation[0]);
- folderName = optionsList[optionsList.selectedIndex].text.split("/").pop();
-
- var paths = optionsList[optionsList.selectedIndex].value.split("/");
- folderPath = accountNumber;
- for (j = 1; j < paths.length; j++) {
- folderPath += "/folder" + paths[j];
- }
- }
-
- var subfolders = [];
- if (searchParams.subfolder === true) {
- for (i = 1; i < nbOptions; i++) {
- var paths = optionsList[i].value.split("/");
- var subfolder = accountNumber;
- for (j = 1; j < paths.length; j++) {
- subfolder += "/folder" + paths[j];
- }
-
- if (root || subfolder.indexOf(folderPath) == 0) {
- var keypair = {"folderPath" : subfolder,
- "folderName" : optionsList[i].text.split("/").pop() };
- subfolders.push(keypair);
- }
- }
- }
-
- var urlstr = (ApplicationBaseURL + folderPath + "/uids");
- var callbackData = {"folderName" : folderName, "folderPath" : folderPath, "subfolders" : subfolders, "newSearch" : true};
- var object = {"filters":searchParams.filters, "sortingAttributes":{"match":searchParams.filterMatching}};
- var content = Object.toJSON(object);
- document.searchMailsAjaxRequest = triggerAjaxRequest(urlstr, searchMailsCallback, callbackData, content, {"content-type": "application/json"});
-}
-
-function searchMailsCallback(http) {
- if (http.readyState == 4 && http.status == 200 && !stopOngoingSearch) {
- var response = http.responseText.evalJSON();
- var table = $("searchMailFooter").down("tbody");
-
- // Erase all previous entries before proceeding with the current request
- if (http.callbackData.newSearch) {
- var oldEntries = table.rows;
- var count = oldEntries.length - 1;
- for (var x = count; x >= 0; x--){
- $(oldEntries[x]).remove();
- }
- }
-
- // ["To", "Attachment", "Flagged", "Subject", "From", "Unread", "Priority", "Date", "Size", "rowClasses", "labels", "rowID", "uid"]
- if (response.headers.length > 1) {
- if ($("noSearchResults"))
- $("noSearchResults").remove();
-
- for (var i = 1; i < response.headers.length; i++) { // Starts at 1 because the position 0 in the array are the headers of the table
- var row = document.createElement("tr");
- Element.addClassName(row, "resultsRow");
- row.setAttribute("uid", response.headers[i][12]);
- row.setAttribute("folderPath", http.callbackData.folderPath);
-
- var cell1 = document.createElement("td");
- Element.addClassName(cell1, "td_table_1");
- cell1.innerHTML = response.headers[i][3];
- row.appendChild(cell1);
-
- var cell2 = document.createElement("td");
- Element.addClassName(cell2, "td_table_2");
- cell2.innerHTML = response.headers[i][4];
- row.appendChild(cell2);
-
- var cell3 = document.createElement("td");
- Element.addClassName(cell3, "td_table_3");
- cell3.innerHTML = response.headers[i][0];
- row.appendChild(cell3);
-
- var cell4 = document.createElement("td");
- Element.addClassName(cell4, "td_table_4");
- cell4.innerHTML = response.headers[i][7];
- row.appendChild(cell4);
-
- var cell5 = document.createElement("td");
- Element.addClassName(cell5, "td_table_5");
- cell5.setAttribute("colspan", "2");
- cell5.innerHTML = http.callbackData.folderName;
- row.appendChild(cell5);
-
- table.appendChild(row);
- }
-
- }
- else if (http.callbackData.newSearch) {
- if (!table.down("tr")) {
- var row = table.insertRow(0);
- var cell = row.insertCell(0);
- var element = document.createElement("span");
-
- cell.setAttribute("id", "noSearchResults");
- cell.setAttribute("colspan", "4");
- element.innerHTML = _("No matches found");
- cell.appendChild(element);
- }
- }
-
- if (http.callbackData.subfolders.length > 0) {
- var folderName = http.callbackData.subfolders[0].folderName;
- var folderPath = http.callbackData.subfolders[0].folderPath;
- var subfolders = http.callbackData.subfolders;
- subfolders.splice(0, 1);
-
- var urlstr = (ApplicationBaseURL + folderPath + "/uids");
- var callbackData = {"folderName" : folderName, "folderPath" : folderPath, "subfolders" : subfolders, "newSearch" : false};
-
- // TODO - need to add these following contents ; asc, no-headers, sort
- var object = {"filters":searchParams.filters, "sortingAttributes":{"match":searchParams.filterMatching}};
- var content = Object.toJSON(object);
- document.searchMailsAjaxRequest = triggerAjaxRequest(urlstr, searchMailsCallback, callbackData, content, {"content-type": "application/json"});
- }
- else {
- onSearchEnd();
- }
- }
-}
-
-function onSearchEnd() {
- $("searchButton").down().innerHTML = _("Search");
- var nbResults = $$(".resultsRow").length;
- if (nbResults == 1)
- $("resultsFound").innerHTML = nbResults + " " + _("result found");
- else if (nbResults > 0)
- $("resultsFound").innerHTML = nbResults + " " + _("results found");
- else
- $("resultsFound").innerHTML = "";
-
- TableKit.reloadSortableTable($("searchMailFooter"));
- $("buttonExpandHeader").addClassName("nosort");
-}
-
-function onCancelClick() {
- disposeDialog();
- $("searchMailView").remove();
- $("toolbarSearchButton").disabled = false;
-
-}
-
-function onSearchSubfoldersCheck(event) {
- searchParams.subfolder = (event.checked ? true : false);
-}
-
-function onMatchFilters(event) {
- searchParams.filterMatching = ((event.getAttribute("id") == "matchAllFilters") ? "AND" : "OR");
-}
-
-/**** Search mail body ****/
-
-function onAddFilter() {
- var table = $("searchFiltersList").down("TABLE");
- var searchByList = $("searchByList").getElementsByTagName("li");
- var stringArgumentsList = $("stringArgumentsList").getElementsByTagName("li");
-
- var rowCount = table.rows.length;
- var row = table.insertRow(rowCount);
- Element.addClassName(row, "filterRow");
-
- var cell1 = row.insertCell(0);
- var element1 = document.createElement("select");
- Element.addClassName(element1, "searchByList");
- element1.setAttribute("id", "searchByListRow" + rowCount);
- var options = {0:"subject", 1:"from", 2:"to", 3:"cc", 4:"body"};
- for (var i = 0; i < searchByList.length; i++) {
- var option = document.createElement("option");
- option.value = options[i];
- option.innerHTML = searchByList[i].innerHTML;
- element1.appendChild(option);
- }
- cell1.appendChild(element1);
-
- var cell2 = row.insertCell(1);
- var element2 = document.createElement("select");
- Element.addClassName(element2, "searchArgumentsList");
- element2.setAttribute("id", "searchArgumentsListRow" + rowCount);
- for (var i = 0; i < stringArgumentsList.length; i++) {
- var option = document.createElement("option");
- option.innerHTML = stringArgumentsList[i].innerHTML;
- element2.appendChild(option);
- }
- cell2.appendChild(element2);
-
- var cell3 = row.insertCell(2);
- Element.addClassName(cell3, "inputsCell");
- var element3 = document.createElement("input");
- Element.addClassName(element3, "searchInput");
- element3.setAttribute("type", "text");
- element3.setAttribute("name", "searchInput");
- element3.setAttribute("id", "searchInputRow" + rowCount);
- cell3.appendChild(element3);
-
- var cell4 = row.insertCell(3);
- Element.addClassName(cell4, "buttonsCell");
- cell4.setAttribute("align", "center");
-
- var buttonsDiv = document.createElement("div");
- var imageAddFilter = document.createElement("img");
- var imageRemoveFilter = document.createElement("img");
- imageAddFilter.setAttribute("src", "/SOGo.woa/WebServerResources/add-icon.png");
- imageRemoveFilter.setAttribute("src", "/SOGo.woa/WebServerResources/remove-icon.png");
- Element.addClassName(imageAddFilter, "glow");
- Element.addClassName(imageRemoveFilter, "glow");
- imageAddFilter.setAttribute("name", "addFilter");
- imageAddFilter.setAttribute("id", "addFilterButtonRow" + rowCount);
- $(imageAddFilter).on("click", onAddFilter);
- imageRemoveFilter.setAttribute("name", "removeFilter");
- imageRemoveFilter.setAttribute("id", "removeFilterButtonRow" + rowCount);
- $(imageRemoveFilter).on("click", onRemoveFilter);
- Element.addClassName(buttonsDiv, "filterButtons");
-
- buttonsDiv.appendChild(imageAddFilter);
- buttonsDiv.appendChild(imageRemoveFilter);
-
- cell4.appendChild(buttonsDiv);
-}
-
-function onRemoveFilter() {
- var rows = $("searchFiltersList").getElementsByTagName("tr");
- var currentRow = this.up(".filterRow");
-
- if(rows.length > 1)
- $(currentRow).remove();
-}
-
-/**** Search mail Footer ****/
-
-function onResultSelectionChange(event) {
- var table = $("searchMailFooter").down("tbody");
-
- if (event && (event.target.innerHTML != _("No matches found"))) {
- var node = getTarget(event);
-
- if (node.tagName == "SPAN")
- node = node.parentNode;
-
- // Update rows selection
- onRowClick(event, node);
- }
-}
-
-/**** Search mail optionsButtons ****/
-
-function onOpenClick(event) {
-// This function is linked with the openButton and the doubleClick on a message
- var selectedRow = $("searchMailFooter").down("._selected");
- var msguid = selectedRow.getAttribute("uid");
- var folderPath = selectedRow.getAttribute("folderPath");
- var accountUser = userNames[0];
-
- var url = "/SOGo/so/" + accountUser + "/Mail" + folderPath + "/" + msguid + "/popupview";
- if (selectedRow) {
- openMessageWindow(msguid, url);
- }
-}
-
-function onDeleteClick(event) {
- var messageList = $("resultsTable").down("TABLE");
- var row = $(messageList).getSelectedRows()[0];
- if (row) {
- var rowIds = row.getAttribute("uid");
- var uids = new Array(); // message IDs
- var paths = new Array(); // row IDs
- var unseenCount = 0;
- var refreshFolder = false;
- if (rowIds) {
- messageList.deselectAll();
- if (unseenCount < 1) {
- if (row.hasClassName("mailer_unreadmail"))
- unseenCount--;
- else
- unseenCount = 1;
-
- $(row).remove();
- }
- var uid = rowIds;
- var path = Mailer.currentMailbox + "/" + uid;
- uids.push(uid);
- paths.push(path);
- deleteMessageRequestCount++;
-
- deleteCachedMessage(path);
- if (Mailer.currentMessages[Mailer.currentMailbox] == uid) {
- if (messageContent) messageContent.innerHTML = '';
- Mailer.currentMessages[Mailer.currentMailbox] = null;
- }
- Mailer.dataTable.remove(uid);
- updateMessageListCounter(0 - rowIds.length, true);
- if (unseenCount < 0) {
- var node = mailboxTree.getMailboxNode(Mailer.currentMailbox);
- if (node) {
- updateUnseenCount(node, unseenCount, true);
- }
- }
- var url = ApplicationBaseURL + encodeURI(Mailer.currentMailbox) + "/batchDelete";
- var parameters = "uid=" + uids.join(",");
- var data = { "id": uids, "mailbox": Mailer.currentMailbox, "path": paths, "refreshUnseenCount": (unseenCount > 0), "refreshFolder": refreshFolder };
- triggerAjaxRequest(url, deleteMessageCallback, data, parameters,
- { "Content-type": "application/x-www-form-urlencoded" });
- }
- }
- return false;
-
-}
-
-function deleteMessageCallback (http){
- if (isHttpStatus204(http.status) || http.status == 200) {
- var data = http.callbackData;
- if (http.status == 200) {
- // The answer contains quota information
- var rdata = http.responseText.evalJSON(true);
- if (rdata.quotas && data["mailbox"].startsWith('/0/'))
- updateQuotas(rdata.quotas);
- }
- if (data["refreshUnseenCount"])
- // TODO : the unseen count should be returned when calling the batchDelete remote action,
- // in order to avoid this extra AJAX call.
- getUnseenCountForFolder(data["mailbox"]);
- if (data["refreshFolder"])
- Mailer.dataTable.refresh();
- }
- else if (!http.callbackData["withoutTrash"]) {
- showConfirmDialog(_("Warning"),
- _("The messages could not be moved to the trash folder. Would you like to delete them immediately?"),
- deleteMessagesWithoutTrash.bind(document, http.callbackData),
- function() { refreshCurrentFolder(); disposeDialog(); });
- }
- else {
- var html = new Element('div').update(http.responseText);
- log ("Messages deletion failed (" + http.status + ") : ");
- log (html.down('p').innerHTML);
- showAlertDialog(_("Operation failed"));
- refreshCurrentFolder();
- }
- onSearchEnd();
-}
-
-function onResizeClick() {
- var searchFiltersList = jQuery("#searchFiltersList");
- var img = $("listCollapse").select('img').first();
- var dialogWindowHeight = $("searchMailView").getHeight();
- var state = "collapse";
-
- if (searchFiltersList[0].visible()) {
- state = "rise";
- searchFiltersList.fadeOut(300, function() {
- adjustResultsTable(state);
- img.removeClassName('collapse').addClassName('rise');
- });
- }
- else {
- adjustResultsTable(state);
- searchFiltersList.fadeIn();
- img.removeClassName('rise').addClassName('collapse');
- }
-}
-
-function adjustResultsTable(state) {
- var resultsTable = $("resultsTable");
- var height = "innerHeight" in $("searchMailView") ? $("searchMailView").innerHeight : $("searchMailView").offsetHeight;
- if (state == "collapse") {
- height -= 266;
- }
- else
- height -= 152;
- $(resultsTable).style.height = height + "px";
-}
-
-/*************** Init ********************/
-
-function initSearchMailView () {
-
- // Add one filterRow
- onAddFilter();
- adjustResultsTable("collapse");
-
- // Observers : Event.on(element, eventName[, selector], callback)
- $("searchMailFooter").down("tbody").on("mousedown", "tr", onResultSelectionChange);
- $("searchMailFooter").down("tbody").on("dblclick", "tr", onOpenClick);
- Event.observe(window, "resize", function() {
- var state = ($("searchFiltersList").visible() ? "collapse": "rise");
- adjustResultsTable(state);
- });
-}
diff --git a/UI/WebServerResources/event7.png b/UI/WebServerResources/event7.png
deleted file mode 100644
index 3a9a8bd32..000000000
Binary files a/UI/WebServerResources/event7.png and /dev/null differ
diff --git a/UI/WebServerResources/task.png b/UI/WebServerResources/task.png
deleted file mode 100644
index 8314d58fa..000000000
Binary files a/UI/WebServerResources/task.png and /dev/null differ