* Calendar: Add clickable link to videoconference in event tooltip

This commit is contained in:
nathangray 2020-04-24 10:54:08 -06:00
parent 901f9f0b50
commit 878dc659b1
7 changed files with 172 additions and 70 deletions

View File

@ -962,7 +962,7 @@ class calendar_uilist extends calendar_ui
'join' => [
'caption' => 'Join',
'icon' => 'status/videoconference_join',
'onExecute' => 'javaScript:app.calendar.joinVideoConference',
'onExecute' => 'javaScript:app.calendar.joinVideoConferenceAction',
'allowOnMultiple' => false,
]
]

View File

@ -3367,9 +3367,25 @@ var CalendarApp = /** @class */ (function (_super) {
var data = egw.dataGetUIDdata(_selected[0].id);
return data && data.data ? data.data['##videoconference'] : false;
};
CalendarApp.prototype.joinVideoConference = function (_action, _sender) {
/**
* Action handler for join videoconference context menu
*
* @param _action
* @param _sender
*/
CalendarApp.prototype.joinVideoConferenceAction = function (_action, _sender) {
var data = egw.dataGetUIDdata(_sender[0].id)['data'];
egw.json("EGroupware\\Status\\Videoconference\\Call::ajax_genMeetingUrl", [data['##videoconference'],
return this.joinVideoConference(data['##videoconference']);
};
/**
* Join a videoconference
*
* Using the videoconference tag/ID, generate the URL and open it via JSON
*
* @param {string} videoconference
*/
CalendarApp.prototype.joinVideoConference = function (videoconference) {
return egw.json("EGroupware\\Status\\Videoconference\\Call::ajax_genMeetingUrl", [videoconference,
{
name: egw.user('account_fullname'),
account_id: egw.user('account_id'),

View File

@ -4172,12 +4172,31 @@ class CalendarApp extends EgwApp
return data && data.data ? data.data['##videoconference'] : false;
}
public joinVideoConference(_action, _sender)
/**
* Action handler for join videoconference context menu
*
* @param _action
* @param _sender
*/
public joinVideoConferenceAction(_action : egwAction, _sender : egwActionObject[])
{
let data = egw.dataGetUIDdata(_sender[0].id)['data'];
egw.json(
return this.joinVideoConference(data['##videoconference']);
}
/**
* Join a videoconference
*
* Using the videoconference tag/ID, generate the URL and open it via JSON
*
* @param {string} videoconference
*/
public joinVideoConference(videoconference)
{
return egw.json(
"EGroupware\\Status\\Videoconference\\Call::ajax_genMeetingUrl",
[data['##videoconference'],
[videoconference,
{
name:egw.user('account_fullname'),
account_id:egw.user('account_id'),

View File

@ -411,6 +411,21 @@ var et2_calendar_event = /** @class */ (function (_super) {
}
cat.destroy();
}
// Location + Videoconference
var location = '';
if (this.options.value.location || this.options.value['##videoconference']) {
location += '<p><span class="calendar_calEventLabel">' + this.egw().lang('Location') + '</span>:' +
egw.htmlspecialchars(this.options.value.location);
if (this.options.value['##videoconference']) {
// Click handler is set in _bind_videoconference()
location += (this.options.value.location.trim() ? '<br />' : '') +
'<span data-videoconference="' + this.options.value['##videoconference'] + '">' + this.egw().lang('Videoconference') +
'<img src="' + this.egw().image('videoconference', 'calendar') + '"/></span>';
this._bind_videoconference();
}
location += '</p>';
}
// Participants
var participants = '';
if (this.options.value.participant_types['']) {
participants += this.options.value.participant_types[''].join("<br />");
@ -432,8 +447,7 @@ var et2_calendar_event = /** @class */ (function (_super) {
'<span class="calendar_calEventTitle">' + egw.htmlspecialchars(this.options.value.title) + '</span><br>' +
egw.htmlspecialchars(this.options.value.description) + '</p>' +
'<p style="margin: 2px 0px;">' + times + '</p>' +
(this.options.value.location ? '<p><span class="calendar_calEventLabel">' + this.egw().lang('Location') + '</span>:' +
egw.htmlspecialchars(this.options.value.location) + '</p>' : '') +
location +
(cat_label ? '<p><span class="calendar_calEventLabel">' + this.egw().lang('Category') + '</span>:' + cat_label + '</p>' : '') +
'<p><span class="calendar_calEventLabel">' + this.egw().lang('Participants') + '</span>:<br />' +
participants + '</p>' + this._participant_summary(this.options.value.participants) +
@ -527,6 +541,18 @@ var et2_calendar_event = /** @class */ (function (_super) {
}
return icons;
};
/**
* Bind the click handler for opening the video conference
*
* Tooltips are placed in the DOM directly in the body, managed by egw.
*/
et2_calendar_event.prototype._bind_videoconference = function () {
var vc_event = 'click.calendar_videoconference';
jQuery('body').off(vc_event)
.on(vc_event, '[data-videoconference]', function (event) {
app.calendar.joinVideoConference(this.dataset.videoconference);
});
};
/**
* Get a text representation of the timespan of the event. Either start
* - end, or 'all day'

View File

@ -525,6 +525,25 @@ export class et2_calendar_event extends et2_valueWidget implements et2_IDetached
}
cat.destroy();
}
// Location + Videoconference
let location = '';
if(this.options.value.location || this.options.value['##videoconference'])
{
location += '<p><span class="calendar_calEventLabel">' + this.egw().lang('Location') + '</span>:' +
egw.htmlspecialchars(this.options.value.location);
if(this.options.value['##videoconference'])
{
// Click handler is set in _bind_videoconference()
location += (this.options.value.location.trim() ? '<br />' : '') +
'<span data-videoconference="'+this.options.value['##videoconference']+ '">' + this.egw().lang('Videoconference') +
'<img src="' + this.egw().image('videoconference', 'calendar') + '"/></span>';
this._bind_videoconference();
}
location += '</p>';
}
// Participants
let participants = '';
if(this.options.value.participant_types[''])
{
@ -550,8 +569,7 @@ export class et2_calendar_event extends et2_valueWidget implements et2_IDetached
'<span class="calendar_calEventTitle">'+egw.htmlspecialchars(this.options.value.title)+'</span><br>'+
egw.htmlspecialchars(this.options.value.description)+'</p>'+
'<p style="margin: 2px 0px;">'+times+'</p>'+
(this.options.value.location ? '<p><span class="calendar_calEventLabel">'+this.egw().lang('Location') + '</span>:' +
egw.htmlspecialchars(this.options.value.location)+'</p>' : '')+
location +
(cat_label ? '<p><span class="calendar_calEventLabel">'+this.egw().lang('Category') + '</span>:' + cat_label +'</p>' : '')+
'<p><span class="calendar_calEventLabel">'+this.egw().lang('Participants')+'</span>:<br />'+
participants + '</p>'+ this._participant_summary(this.options.value.participants) +
@ -672,6 +690,19 @@ export class et2_calendar_event extends et2_valueWidget implements et2_IDetached
return icons;
}
/**
* Bind the click handler for opening the video conference
*
* Tooltips are placed in the DOM directly in the body, managed by egw.
*/
_bind_videoconference()
{
let vc_event = 'click.calendar_videoconference';
jQuery('body').off(vc_event)
.on(vc_event, '[data-videoconference]',function(event) {
app.calendar.joinVideoConference(this.dataset.videoconference);
});
}
/**
* Get a text representation of the timespan of the event. Either start
* - end, or 'all day'

View File

@ -807,6 +807,11 @@ Hide subsequent headers in week view with non-consolidated owners
}
.calendar_calEventTooltip img {
max-width: 1.5em;
vertical-align: middle;
padding-left: 5px;
}
.calendar_calEventTooltip [data-videoconference] {
cursor: pointer;
}
.calendar_calAddEvent{

View File

@ -791,6 +791,11 @@ Hide subsequent headers in week view with non-consolidated owners
}
.calendar_calEventTooltip img {
max-width: 1.5em;
vertical-align: middle;
padding-left: 5px;
}
.calendar_calEventTooltip [data-videoconference] {
cursor: pointer;
}
.calendar_calAddEvent {
width: 100%;
@ -1597,13 +1602,13 @@ img.sideboxstar:active {
.calendar_calEventBodySmall img[src$="svg"],
.calendar_calDayColHeader img[src$="svg"] {
background-color: #0c5da5;
background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxIDEiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iZzc0MyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIwJSIgeTE9IjAlIiB4Mj0iMCUiIHkyPSIxMDAlIj48c3RvcCBzdG9wLWNvbG9yPSIjMEM1REE1IiBvZmZzZXQ9IjAiLz48c3RvcCBzdG9wLWNvbG9yPSIjMEM1REE1IiBvZmZzZXQ9IjEiLz48L2xpbmVhckdyYWRpZW50PjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9InVybCgjZzc0MykiLz48L3N2Zz4=);
background-image: -moz-linear-gradient(top, #0C5DA5, #0C5DA5);
background-image: -ms-linear-gradient(top, #0C5DA5, #0C5DA5);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0C5DA5), to(#0C5DA5));
background-image: -webkit-linear-gradient(top, #0C5DA5, #0C5DA5);
background-image: -o-linear-gradient(top, #0C5DA5, #0C5DA5);
background-image: linear-gradient(top, #0C5DA5, #0C5DA5);
background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxIDEiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iZzc0MyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIwJSIgeTE9IjAlIiB4Mj0iMCUiIHkyPSIxMDAlIj48c3RvcCBzdG9wLWNvbG9yPSIjMGM1ZGE1IiBvZmZzZXQ9IjAiLz48c3RvcCBzdG9wLWNvbG9yPSIjMGM1ZGE1IiBvZmZzZXQ9IjEiLz48L2xpbmVhckdyYWRpZW50PjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9InVybCgjZzc0MykiLz48L3N2Zz4=);
background-image: -moz-linear-gradient(top, #0c5da5, #0c5da5);
background-image: -ms-linear-gradient(top, #0c5da5, #0c5da5);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0c5da5), to(#0c5da5));
background-image: -webkit-linear-gradient(top, #0c5da5, #0c5da5);
background-image: -o-linear-gradient(top, #0c5da5, #0c5da5);
background-image: linear-gradient(top, #0c5da5, #0c5da5);
background-repeat: repeat-x;
}
/* calender view*/
@ -1627,26 +1632,26 @@ div.calendar {
/* They are the navigation buttons */
padding: 2px;
/* Make the buttons seem like they're pressing */
background-color: #FFDD73;
background-color: #ffdd73;
}
.calendar .nav {
/*background: url(../images/menuarrow.png) no-repeat 100% 100%;*/
background-image: none;
background-color: #FFDD73;
background-color: #ffdd73;
}
.calendar thead .title {
/* This holds the current "month, year" */
font-weight: bold;
/* Pressing it will take you to the current date */
/*text-align: center;*/
background-color: #679FD2;
background-color: #679fd2;
}
.calendar thead .title:hover {
background-color: #E6E6E6 !important;
background-color: #e6e6e6 !important;
}
.calendar thead .headrow {
/* Row <TR> containing navigation buttons */
background-color: #FFDD73;
background-color: #ffdd73;
color: #fff;
}
.calendar thead .daynames {
@ -1676,7 +1681,7 @@ div.calendar {
}
.calendar thead .active {
/* Active (pressed) buttons in header */
background_color: #408DD2;
background_color: #408dd2;
/*padding: 2px 0px 0px 2px;*/
}
.calendar tbody tr,
@ -1721,7 +1726,7 @@ div.calendar {
/*border: 0px solid @gray_50;*/
/*padding: 1px 3px 1px 1px;*/
/*padding: 0px;*/
background-color: #FFDD73;
background-color: #ffdd73;
color: #000;
-webkit-box-shadow: inset 1px 2px 1px #000000;
-moz-box-shadow: inset 1px 2px 1px #000000;
@ -1903,7 +1908,7 @@ div.calendar {
box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.6);
}
#calendar-edit #calendar-edit_calendar-edit-details #calendar-edit_details_alarms {
background-color: #CDCDCD;
background-color: #cdcdcd;
display: block !important;
}
#calendar-edit #calendar-edit_calendar-edit-description #calendar-edit_details_category {
@ -1921,7 +1926,7 @@ div.calendar {
}
#calendar-edit #calendar-edit_calendar-edit-description #calendar-edit_category {
border: 1px solid;
border-color: #B4B4B4;
border-color: #b4b4b4;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
@ -2025,10 +2030,10 @@ e.g. the div with class calendar_calTimeGrid is generated by the timeGridWidget
*/
.calendar_calToday,
.calendar_calTimeGrid .calendar_calDayColHeader .calendar_calToday.et2_link.et2_clickable {
background-color: #FFDD73;
background-color: #ffdd73;
}
.calendar_calWeek {
background-color: #FFFFFF;
background-color: #ffffff;
width: auto;
margin: 0 auto;
text-align: center;
@ -2036,7 +2041,7 @@ e.g. the div with class calendar_calTimeGrid is generated by the timeGridWidget
}
.calendar_calMonth {
/*.background_table_cal_head;*/
background-color: #FFFFFF;
background-color: #ffffff;
width: auto;
margin: 0 auto;
text-align: center;
@ -2144,12 +2149,12 @@ e.g. the div with class calendar_calTimeGrid is generated by the timeGridWidget
* border-color: depending on category
* background: depending on category (shade)
*/
background-color: #679FD2;
background-color: #679fd2;
border-top: 1px solid;
}
.calendar_calEvent:not([class*=" cat_"]) {
/* Defaults for no category, so we don't override it */
background-color: #679FD2;
background-color: #679fd2;
}
/**
* All participants accepted the invitation
@ -2165,7 +2170,7 @@ e.g. the div with class calendar_calTimeGrid is generated by the timeGridWidget
overflow: auto;
}
.calendar_calAddEvent:hover {
background-color: #FFDD73;
background-color: #ffdd73;
cursor: pointer;
color: #ffffff;
}
@ -2190,7 +2195,7 @@ e.g. the div with class calendar_calTimeGrid is generated by the timeGridWidget
position: absolute;
right: 0px;
top: 0px;
background-color: #E6E6E6;
background-color: #e6e6e6;
-webkit-border-radius: 2px;
-moz-border-radius: 2px;
border-radius: 2px;
@ -2212,13 +2217,13 @@ e.g. the div with class calendar_calTimeGrid is generated by the timeGridWidget
}
.calendar_calDayTodos .calendar_calDayTodosHeader a img[src$="svg"] {
background-color: #0c5da5;
background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxIDEiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iZzc0MyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIwJSIgeTE9IjAlIiB4Mj0iMCUiIHkyPSIxMDAlIj48c3RvcCBzdG9wLWNvbG9yPSIjMEM1REE1IiBvZmZzZXQ9IjAiLz48c3RvcCBzdG9wLWNvbG9yPSIjMEM1REE1IiBvZmZzZXQ9IjEiLz48L2xpbmVhckdyYWRpZW50PjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9InVybCgjZzc0MykiLz48L3N2Zz4=);
background-image: -moz-linear-gradient(top, #0C5DA5, #0C5DA5);
background-image: -ms-linear-gradient(top, #0C5DA5, #0C5DA5);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0C5DA5), to(#0C5DA5));
background-image: -webkit-linear-gradient(top, #0C5DA5, #0C5DA5);
background-image: -o-linear-gradient(top, #0C5DA5, #0C5DA5);
background-image: linear-gradient(top, #0C5DA5, #0C5DA5);
background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxIDEiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iZzc0MyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIwJSIgeTE9IjAlIiB4Mj0iMCUiIHkyPSIxMDAlIj48c3RvcCBzdG9wLWNvbG9yPSIjMGM1ZGE1IiBvZmZzZXQ9IjAiLz48c3RvcCBzdG9wLWNvbG9yPSIjMGM1ZGE1IiBvZmZzZXQ9IjEiLz48L2xpbmVhckdyYWRpZW50PjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9InVybCgjZzc0MykiLz48L3N2Zz4=);
background-image: -moz-linear-gradient(top, #0c5da5, #0c5da5);
background-image: -ms-linear-gradient(top, #0c5da5, #0c5da5);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0c5da5), to(#0c5da5));
background-image: -webkit-linear-gradient(top, #0c5da5, #0c5da5);
background-image: -o-linear-gradient(top, #0c5da5, #0c5da5);
background-image: linear-gradient(top, #0c5da5, #0c5da5);
background-repeat: repeat-x;
}
.calendar_calDayTodos .calendar_calDayTodosHeader a img {
@ -2239,7 +2244,7 @@ e.g. the div with class calendar_calTimeGrid is generated by the timeGridWidget
-moz-transition-timing-function: linear;
-o-transition-timing-function: linear;
transition-timing-function: linear;
background-color: #E6E6E6;
background-color: #e6e6e6;
width: 16px;
height: 16px;
}
@ -2250,7 +2255,7 @@ e.g. the div with class calendar_calTimeGrid is generated by the timeGridWidget
background-color: inherit;
}
.calendar_calDayTodos .calendar_calDayTodosTable table tr:nth-child(even) {
background: #FFFFFF;
background: #ffffff;
}
.calendar_calDayTodos .calendar_calDayTodosTable table tr:nth_child(odd) {
background: #f2f2f2;
@ -2260,13 +2265,13 @@ e.g. the div with class calendar_calTimeGrid is generated by the timeGridWidget
}
.calendar_calDayTodos .calendar_calDayTodosTable table td img[src$="svg"] {
background-color: #0c5da5;
background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxIDEiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iZzc0MyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIwJSIgeTE9IjAlIiB4Mj0iMCUiIHkyPSIxMDAlIj48c3RvcCBzdG9wLWNvbG9yPSIjMEM1REE1IiBvZmZzZXQ9IjAiLz48c3RvcCBzdG9wLWNvbG9yPSIjMEM1REE1IiBvZmZzZXQ9IjEiLz48L2xpbmVhckdyYWRpZW50PjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9InVybCgjZzc0MykiLz48L3N2Zz4=);
background-image: -moz-linear-gradient(top, #0C5DA5, #0C5DA5);
background-image: -ms-linear-gradient(top, #0C5DA5, #0C5DA5);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0C5DA5), to(#0C5DA5));
background-image: -webkit-linear-gradient(top, #0C5DA5, #0C5DA5);
background-image: -o-linear-gradient(top, #0C5DA5, #0C5DA5);
background-image: linear-gradient(top, #0C5DA5, #0C5DA5);
background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxIDEiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iZzc0MyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIwJSIgeTE9IjAlIiB4Mj0iMCUiIHkyPSIxMDAlIj48c3RvcCBzdG9wLWNvbG9yPSIjMGM1ZGE1IiBvZmZzZXQ9IjAiLz48c3RvcCBzdG9wLWNvbG9yPSIjMGM1ZGE1IiBvZmZzZXQ9IjEiLz48L2xpbmVhckdyYWRpZW50PjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9InVybCgjZzc0MykiLz48L3N2Zz4=);
background-image: -moz-linear-gradient(top, #0c5da5, #0c5da5);
background-image: -ms-linear-gradient(top, #0c5da5, #0c5da5);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0c5da5), to(#0c5da5));
background-image: -webkit-linear-gradient(top, #0c5da5, #0c5da5);
background-image: -o-linear-gradient(top, #0c5da5, #0c5da5);
background-image: linear-gradient(top, #0c5da5, #0c5da5);
background-repeat: repeat-x;
}
.calendar_calDayTodos .calendar_calDayTodosTable table td img {
@ -2435,7 +2440,7 @@ button#series {
-moz-transition-timing-function: linear;
-o-transition-timing-function: linear;
transition-timing-function: linear;
background-color: #E6E6E6;
background-color: #e6e6e6;
padding-left: 30px;
background-position: 6px center;
background-repeat: no-repeat;
@ -2445,13 +2450,13 @@ button#series {
}
button#series img[url*="svg"] {
background-color: #b4b4b4;
background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxIDEiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iZzc0MyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIwJSIgeTE9IjAlIiB4Mj0iMCUiIHkyPSIxMDAlIj48c3RvcCBzdG9wLWNvbG9yPSIjQjRCNEI0IiBvZmZzZXQ9IjAiLz48c3RvcCBzdG9wLWNvbG9yPSIjQjRCNEI0IiBvZmZzZXQ9IjEiLz48L2xpbmVhckdyYWRpZW50PjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9InVybCgjZzc0MykiLz48L3N2Zz4=);
background-image: -moz-linear-gradient(top, #B4B4B4, #B4B4B4);
background-image: -ms-linear-gradient(top, #B4B4B4, #B4B4B4);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#B4B4B4), to(#B4B4B4));
background-image: -webkit-linear-gradient(top, #B4B4B4, #B4B4B4);
background-image: -o-linear-gradient(top, #B4B4B4, #B4B4B4);
background-image: linear-gradient(top, #B4B4B4, #B4B4B4);
background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxIDEiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iZzc0MyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIwJSIgeTE9IjAlIiB4Mj0iMCUiIHkyPSIxMDAlIj48c3RvcCBzdG9wLWNvbG9yPSIjYjRiNGI0IiBvZmZzZXQ9IjAiLz48c3RvcCBzdG9wLWNvbG9yPSIjYjRiNGI0IiBvZmZzZXQ9IjEiLz48L2xpbmVhckdyYWRpZW50PjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9InVybCgjZzc0MykiLz48L3N2Zz4=);
background-image: -moz-linear-gradient(top, #b4b4b4, #b4b4b4);
background-image: -ms-linear-gradient(top, #b4b4b4, #b4b4b4);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b4b4b4), to(#b4b4b4));
background-image: -webkit-linear-gradient(top, #b4b4b4, #b4b4b4);
background-image: -o-linear-gradient(top, #b4b4b4, #b4b4b4);
background-image: linear-gradient(top, #b4b4b4, #b4b4b4);
background-repeat: repeat-x;
fill: red;
}
@ -2488,7 +2493,7 @@ button#exception {
-moz-transition-timing-function: linear;
-o-transition-timing-function: linear;
transition-timing-function: linear;
background-color: #E6E6E6;
background-color: #e6e6e6;
padding-left: 30px;
background-position: 6px center;
background-repeat: no-repeat;
@ -2498,13 +2503,13 @@ button#exception {
}
button#exception img[url*="svg"] {
background-color: #b4b4b4;
background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxIDEiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iZzc0MyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIwJSIgeTE9IjAlIiB4Mj0iMCUiIHkyPSIxMDAlIj48c3RvcCBzdG9wLWNvbG9yPSIjQjRCNEI0IiBvZmZzZXQ9IjAiLz48c3RvcCBzdG9wLWNvbG9yPSIjQjRCNEI0IiBvZmZzZXQ9IjEiLz48L2xpbmVhckdyYWRpZW50PjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9InVybCgjZzc0MykiLz48L3N2Zz4=);
background-image: -moz-linear-gradient(top, #B4B4B4, #B4B4B4);
background-image: -ms-linear-gradient(top, #B4B4B4, #B4B4B4);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#B4B4B4), to(#B4B4B4));
background-image: -webkit-linear-gradient(top, #B4B4B4, #B4B4B4);
background-image: -o-linear-gradient(top, #B4B4B4, #B4B4B4);
background-image: linear-gradient(top, #B4B4B4, #B4B4B4);
background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxIDEiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iZzc0MyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIwJSIgeTE9IjAlIiB4Mj0iMCUiIHkyPSIxMDAlIj48c3RvcCBzdG9wLWNvbG9yPSIjYjRiNGI0IiBvZmZzZXQ9IjAiLz48c3RvcCBzdG9wLWNvbG9yPSIjYjRiNGI0IiBvZmZzZXQ9IjEiLz48L2xpbmVhckdyYWRpZW50PjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9InVybCgjZzc0MykiLz48L3N2Zz4=);
background-image: -moz-linear-gradient(top, #b4b4b4, #b4b4b4);
background-image: -ms-linear-gradient(top, #b4b4b4, #b4b4b4);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b4b4b4), to(#b4b4b4));
background-image: -webkit-linear-gradient(top, #b4b4b4, #b4b4b4);
background-image: -o-linear-gradient(top, #b4b4b4, #b4b4b4);
background-image: linear-gradient(top, #b4b4b4, #b4b4b4);
background-repeat: repeat-x;
fill: red;
}
@ -2568,22 +2573,22 @@ div#calendar-container div.calendar table {
font-family: Verdana, "Lucida Grande", Helvetica, Sans-Serif;
}
div#calendar-container div.calendar table thead .button {
background-color: #FFDD73;
background-color: #ffdd73;
}
div#calendar-container div.calendar table thead .title {
border: none;
box-shadow: none;
-webkit-box-shadow: none;
background-color: #FFDD73;
background-color: #ffdd73;
}
div#calendar-container div.calendar table thead .headrow {
color: #1E1E1E;
color: #1e1e1e;
}
div#calendar-container div.calendar table thead .headrow td {
background-color: #ffc200;
}
div#calendar-container div.calendar table thead .daynames {
background-color: #679FD2;
background-color: #679fd2;
}
div#calendar-container div.calendar table tbody tr.daysrow:hover {
background-color: #ffc200;
@ -2612,7 +2617,7 @@ div#calendar-container div.calendar table tbody tr.rowhilite td {
box-shadow: none;
}
#calendar-sidebox_date .ui-datepicker-today {
background-color: #FFDD73;
background-color: #ffdd73;
}
#calendar-sidebox_date .ui-datepicker-calendar .ui-state-hover {
background-color: rgba(153, 204, 255, 0.4);