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