Version Description
- Add feature (by Josef Fllman): Print & export view for search results.
- New filter: mcs_check_conflicts (impacts Pro only)
- Bug fix: Fix issue causing duplication in some views.
- Bug fix: Time format should be filtered in initial edit view.
- Bug fix: Category relationships not retained when Group editing applied.
- Bug fix: aria-describedby ID mismatch.
Download this release
Release Info
Developer | joedolson |
Plugin | My Calendar |
Version | 3.1.0 |
Comparing to | |
See all releases |
Code changes from version 3.0.18 to 3.1.0
- css/mc-print.css +12 -2
- js/mc-datepicker.js +4 -4
- my-calendar-api.php +8 -2
- my-calendar-categories.php +3 -0
- my-calendar-event-manager.php +3 -2
- my-calendar-events.php +2 -2
- my-calendar-group-manager.php +1 -0
- my-calendar-output.php +135 -46
- my-calendar-print.php +3 -1
- my-calendar.php +12 -2
- readme.txt +16 -2
- styles/twentyeighteen.css +24 -24
css/mc-print.css
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
size: landscape;
|
5 |
}
|
6 |
|
7 |
-
.my-calendar-header, .mc_bottomnav, h3 img, .mc-toggle, .mc_edit_links, #mc-export, .longdesc, .shortdesc, .mc-print, form, .screen-reader-text {
|
8 |
display: none;
|
9 |
}
|
10 |
|
@@ -40,10 +40,20 @@ td {
|
|
40 |
border-bottom: 1px solid #ddd;
|
41 |
}
|
42 |
|
43 |
-
.details * {
|
44 |
display: none;
|
45 |
}
|
46 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
h3 {
|
48 |
font-size: 14px;
|
49 |
margin: 2px 0 5px;
|
4 |
size: landscape;
|
5 |
}
|
6 |
|
7 |
+
.my-calendar-header, .mc_bottomnav, h3 img, .mc-toggle, .mc_edit_links, #mc-export, .longdesc, .shortdesc, .mc-print, form, .screen-reader-text, .sharing {
|
8 |
display: none;
|
9 |
}
|
10 |
|
40 |
border-bottom: 1px solid #ddd;
|
41 |
}
|
42 |
|
43 |
+
.calendar .details * {
|
44 |
display: none;
|
45 |
}
|
46 |
|
47 |
+
button.mc-text-button {
|
48 |
+
border: 0;
|
49 |
+
color: inherit;
|
50 |
+
background-color: transparent;
|
51 |
+
text-decoration: none;
|
52 |
+
font-size: 16px;
|
53 |
+
font-weight: 700;
|
54 |
+
padding: 0 0 .5em
|
55 |
+
}
|
56 |
+
|
57 |
h3 {
|
58 |
font-size: 14px;
|
59 |
margin: 2px 0 5px;
|
js/mc-datepicker.js
CHANGED
@@ -44,14 +44,14 @@ if ( typeof(mc_months) !== "undefined" ) {
|
|
44 |
/**
|
45 |
* In admin, date needs to be converted to UTC
|
46 |
*/
|
47 |
-
function convertDateToUTC(date) {
|
48 |
-
return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());
|
49 |
}
|
50 |
-
|
51 |
});
|
52 |
|
53 |
} else {
|
54 |
-
jQuery(document).ready(function ($) {
|
55 |
var datepicked = $( '.mc-datepicker' ).attr( 'data-value' );
|
56 |
$( '.mc-datepicker' ).val( datepicked );
|
57 |
});
|
44 |
/**
|
45 |
* In admin, date needs to be converted to UTC
|
46 |
*/
|
47 |
+
function convertDateToUTC(date) {
|
48 |
+
return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());
|
49 |
}
|
50 |
+
|
51 |
});
|
52 |
|
53 |
} else {
|
54 |
+
jQuery(document).ready(function ($) {
|
55 |
var datepicked = $( '.mc-datepicker' ).attr( 'data-value' );
|
56 |
$( '.mc-datepicker' ).val( datepicked );
|
57 |
});
|
my-calendar-api.php
CHANGED
@@ -98,6 +98,7 @@ function mc_api_format_csv( $data ) {
|
|
98 |
foreach ( $val as $v ) {
|
99 |
$values = get_object_vars( $v );
|
100 |
unset( $values['categories'] );
|
|
|
101 |
if ( ! $keyed ) {
|
102 |
$keys = array_keys( $values );
|
103 |
fputcsv( $stream, $keys );
|
@@ -446,8 +447,13 @@ function my_calendar_ical() {
|
|
446 |
'site' => $site,
|
447 |
);
|
448 |
|
449 |
-
$args
|
450 |
-
|
|
|
|
|
|
|
|
|
|
|
451 |
$events = mc_flatten_array( $data );
|
452 |
|
453 |
if ( is_array( $events ) && ! empty( $events ) ) {
|
98 |
foreach ( $val as $v ) {
|
99 |
$values = get_object_vars( $v );
|
100 |
unset( $values['categories'] );
|
101 |
+
unset( $values['location'] );
|
102 |
if ( ! $keyed ) {
|
103 |
$keys = array_keys( $values );
|
104 |
fputcsv( $stream, $keys );
|
447 |
'site' => $site,
|
448 |
);
|
449 |
|
450 |
+
$args = apply_filters( 'mc_ical_attributes', $args, $_GET );
|
451 |
+
// Load search result from $_SESSION array.
|
452 |
+
if ( isset( $_GET['searched'] ) && $_GET['searched'] && isset( $_SESSION['MC_SEARCH_RESULT'] ) ) {
|
453 |
+
$data = mc_get_searched_events();
|
454 |
+
} else {
|
455 |
+
$data = my_calendar_events( $args );
|
456 |
+
}
|
457 |
$events = mc_flatten_array( $data );
|
458 |
|
459 |
if ( is_array( $events ) && ! empty( $events ) ) {
|
my-calendar-categories.php
CHANGED
@@ -922,6 +922,9 @@ function mc_get_categories( $event, $ids = true ) {
|
|
922 |
function mc_categories_html( $results, $primary ) {
|
923 |
if ( $results ) {
|
924 |
foreach ( $results as $result ) {
|
|
|
|
|
|
|
925 |
$icon = mc_category_icon( $result );
|
926 |
$return[] = $icon . $result->category_name;
|
927 |
}
|
922 |
function mc_categories_html( $results, $primary ) {
|
923 |
if ( $results ) {
|
924 |
foreach ( $results as $result ) {
|
925 |
+
if ( ! is_object( $result ) ) {
|
926 |
+
$result = (object) $result;
|
927 |
+
}
|
928 |
$icon = mc_category_icon( $result );
|
929 |
$return[] = $icon . $result->category_name;
|
930 |
}
|
my-calendar-event-manager.php
CHANGED
@@ -2722,6 +2722,7 @@ function mc_check_data( $action, $post, $i ) {
|
|
2722 |
}
|
2723 |
if ( isset( $post['mcs_check_conflicts'] ) ) {
|
2724 |
$conflicts = mcs_check_conflicts( $begin, $time, $end, $endtime, $event_label );
|
|
|
2725 |
if ( $conflicts ) {
|
2726 |
$conflict_id = $conflicts[0]->occur_id;
|
2727 |
$conflict_ev = mc_get_event( $conflict_id );
|
@@ -3133,8 +3134,8 @@ function mc_standard_datetime_input( $form, $has_data, $data, $instance, $contex
|
|
3133 |
$event_end = '';
|
3134 |
}
|
3135 |
}
|
3136 |
-
$starttime = ( mc_is_all_day( $data ) ) ? '' : date( 'h:i A', mc_strtotime( $data->event_time ) );
|
3137 |
-
$endtime = ( mc_is_all_day( $data ) ) ? '' : date( 'h:i A', mc_strtotime( $data->event_endtime ) );
|
3138 |
} else {
|
3139 |
$event_begin = date( 'Y-m-d' );
|
3140 |
$event_end = '';
|
2722 |
}
|
2723 |
if ( isset( $post['mcs_check_conflicts'] ) ) {
|
2724 |
$conflicts = mcs_check_conflicts( $begin, $time, $end, $endtime, $event_label );
|
2725 |
+
$conflicts = apply_filters( 'mcs_check_conflicts', $conflicts, $post );
|
2726 |
if ( $conflicts ) {
|
2727 |
$conflict_id = $conflicts[0]->occur_id;
|
2728 |
$conflict_ev = mc_get_event( $conflict_id );
|
3134 |
$event_end = '';
|
3135 |
}
|
3136 |
}
|
3137 |
+
$starttime = ( mc_is_all_day( $data ) ) ? '' : date( apply_filters( 'mc_time_format', 'h:i A' ), mc_strtotime( $data->event_time ) );
|
3138 |
+
$endtime = ( mc_is_all_day( $data ) ) ? '' : date( apply_filters( 'mc_time_format', 'h:i A' ), mc_strtotime( $data->event_endtime ) );
|
3139 |
} else {
|
3140 |
$event_begin = date( 'Y-m-d' );
|
3141 |
$event_end = '';
|
my-calendar-events.php
CHANGED
@@ -274,7 +274,7 @@ function mc_get_all_events( $args ) {
|
|
274 |
} else {
|
275 |
$event->categories = $fetched[ $object_id ];
|
276 |
}
|
277 |
-
$arr_events[] = mc_event_object( $event );
|
278 |
}
|
279 |
|
280 |
return $arr_events;
|
@@ -421,7 +421,7 @@ function mc_get_search_results( $search ) {
|
|
421 |
}
|
422 |
}
|
423 |
|
424 |
-
return $event_array;
|
425 |
}
|
426 |
|
427 |
/**
|
274 |
} else {
|
275 |
$event->categories = $fetched[ $object_id ];
|
276 |
}
|
277 |
+
$arr_events[ $key ] = mc_event_object( $event );
|
278 |
}
|
279 |
|
280 |
return $arr_events;
|
421 |
}
|
422 |
}
|
423 |
|
424 |
+
return apply_filters( 'mc_searched_events', $event_array );
|
425 |
}
|
426 |
|
427 |
/**
|
my-calendar-group-manager.php
CHANGED
@@ -825,6 +825,7 @@ function mc_check_group_data( $action, $post ) {
|
|
825 |
}
|
826 |
} else {
|
827 |
$primary = $post['event_category'];
|
|
|
828 |
}
|
829 |
}
|
830 |
|
825 |
}
|
826 |
} else {
|
827 |
$primary = $post['event_category'];
|
828 |
+
$cats = array( $cats );
|
829 |
}
|
830 |
}
|
831 |
|
my-calendar-output.php
CHANGED
@@ -36,61 +36,66 @@ function mc_get_template( $template ) {
|
|
36 |
/**
|
37 |
* HTML output for event time
|
38 |
*
|
39 |
-
* @param object $
|
40 |
* @param string $type Type of view.
|
41 |
*
|
42 |
* @return string HTML output.
|
43 |
*/
|
44 |
-
function mc_time_html( $
|
45 |
$orig_format = get_option( 'mc_date_format' );
|
46 |
$date_format = ( '' != $orig_format ) ? $orig_format : get_option( 'date_format' );
|
47 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
$mult_format = get_option( 'mc_multidate_format' );
|
49 |
$mult_format = ( '' != $mult_format ) ? $mult_format : 'F j-%d, Y';
|
50 |
-
$date_format = str_replace( '%d', date( 'j', strtotime( $
|
51 |
}
|
52 |
// If this event crosses years or months, use original date format & show both dates.
|
53 |
-
if ( date( 'Y', strtotime( $
|
54 |
-
$current = date_i18n( $orig_format, strtotime( $
|
55 |
} else {
|
56 |
-
$current = date_i18n( $date_format, strtotime( $
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
$
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
$time .= "<p>$event_date ";
|
65 |
-
if ( '00:00:00' != $event->event_time && '' != $event->event_time ) {
|
66 |
-
$time .= "\n
|
67 |
<span class='event-time dtstart'>
|
68 |
-
<time class='value-title' datetime='" . $
|
69 |
-
date_i18n( $time_format, strtotime( $
|
70 |
</time>
|
71 |
</span>';
|
72 |
-
if ( 0 == $
|
73 |
-
if ( '' != $
|
74 |
-
$
|
75 |
-
<span class='time-separator'> – </span
|
76 |
<span class='end-time dtend'>
|
77 |
-
<time class='value-title' datetime='" . $
|
78 |
</time>
|
79 |
</span>';
|
80 |
}
|
81 |
}
|
82 |
} else {
|
83 |
-
$notime
|
84 |
-
$
|
85 |
-
$
|
86 |
-
$
|
87 |
}
|
88 |
-
$
|
89 |
-
|
90 |
-
$
|
91 |
-
$
|
92 |
|
93 |
-
|
|
|
|
|
94 |
}
|
95 |
|
96 |
/**
|
@@ -311,7 +316,7 @@ function my_calendar_draw_event( $event, $type = 'calendar', $process_date, $tim
|
|
311 |
$group_class = ( 1 == $event->event_span ) ? ' multidate group' . $event->event_group_id : '';
|
312 |
$hlevel = apply_filters( 'mc_heading_level_table', 'h3', $type, $time, $template );
|
313 |
$inner_heading = apply_filters( 'mc_heading_inner_title', $wrap . $image . trim( $event_title ) . $balance, $event_title, $event );
|
314 |
-
$header .= ( 'single' != $type && 'list' != $type ) ? "<$hlevel class='event-title summary$group_class' id='$
|
315 |
$event_title = ( 'single' == $type ) ? apply_filters( 'mc_single_event_title', $event_title, $event ) : $event_title;
|
316 |
$title = ( 'single' == $type && ! is_singular( 'mc-events' ) ) ? "<h2 class='event-title summary'>$image $event_title</h2>\n" : '<span class="summary screen-reader-text">' . $event_title . '</span>';
|
317 |
$title = apply_filters( 'mc_event_title', $title, $event, $event_title, $image );
|
@@ -330,7 +335,7 @@ function my_calendar_draw_event( $event, $type = 'calendar', $process_date, $tim
|
|
330 |
$time_html = mc_time_html( $event, $type );
|
331 |
if ( 'list' == $type ) {
|
332 |
$hlevel = apply_filters( 'mc_heading_level_list', 'h3', $type, $time, $template );
|
333 |
-
$list_title = "<$hlevel class='event-title summary' id='$
|
334 |
}
|
335 |
if ( 'true' == $display_author ) {
|
336 |
if ( 0 != $event->event_author ) {
|
@@ -411,7 +416,7 @@ function my_calendar_draw_event( $event, $type = 'calendar', $process_date, $tim
|
|
411 |
$link_text = mc_draw_template( $data, $link_template );
|
412 |
$link = "
|
413 |
<p>
|
414 |
-
<a href='" . esc_url( $event_link ) . "' class='$external_class' aria-describedby='$
|
415 |
</p>';
|
416 |
}
|
417 |
|
@@ -441,7 +446,7 @@ function my_calendar_draw_event( $event, $type = 'calendar', $process_date, $tim
|
|
441 |
}
|
442 |
|
443 |
$img_class = ( '' != $img ) ? ' has-image' : ' no-image';
|
444 |
-
$container = "<div id='$uid-$type-details' class='details$img_class' role='alert' aria-labelledby='$
|
445 |
$container .= "<meta itemprop='name' content='" . strip_tags( $event->event_title ) . "' />";
|
446 |
$container = apply_filters( 'mc_before_event', $container, $event, $type, $time );
|
447 |
$details = $header . $container . apply_filters( 'mc_inner_content', $details, $event, $type, $time );
|
@@ -581,6 +586,9 @@ function mc_event_classes( $event, $uid, $type ) {
|
|
581 |
$categories = mc_get_categories( $event, false );
|
582 |
}
|
583 |
foreach ( $categories as $category ) {
|
|
|
|
|
|
|
584 |
$classes[] = 'mc_rel_' . sanitize_html_class( $category->category_name );
|
585 |
}
|
586 |
|
@@ -1050,8 +1058,9 @@ function mc_list_titles( $events ) {
|
|
1050 |
* @return string HTML output
|
1051 |
*/
|
1052 |
function mc_search_results( $query ) {
|
1053 |
-
$before
|
1054 |
-
$after
|
|
|
1055 |
if ( is_string( $query ) ) {
|
1056 |
$search = mc_prepare_search_query( $query );
|
1057 |
$term = $query;
|
@@ -1068,7 +1077,8 @@ function mc_search_results( $query ) {
|
|
1068 |
$template = '<strong>{date}</strong> {title} {details}';
|
1069 |
$template = apply_filters( 'mc_search_template', $template );
|
1070 |
// No filters parameter prevents infinite looping on the_content filters.
|
1071 |
-
$output
|
|
|
1072 |
} else {
|
1073 |
$output = apply_filters( 'mc_search_no_results', "<li class='no-results'>" . __( 'Sorry, your search produced no results.', 'my-calendar' ) . '</li>' );
|
1074 |
}
|
@@ -1076,7 +1086,7 @@ function mc_search_results( $query ) {
|
|
1076 |
$header = apply_filters( 'mc_search_before', '<ol class="mc-search-results">', $term );
|
1077 |
$footer = apply_filters( 'mc_search_after', '</ol>', $term );
|
1078 |
|
1079 |
-
return $header . $output . $footer;
|
1080 |
}
|
1081 |
|
1082 |
add_filter( 'the_title', 'mc_search_results_title', 10, 2 );
|
@@ -1129,6 +1139,71 @@ function mc_show_search_results( $content ) {
|
|
1129 |
}
|
1130 |
}
|
1131 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1132 |
add_action( 'template_redirect', 'mc_hidden_event' );
|
1133 |
/**
|
1134 |
* If an event is hidden from the current user, redirect to 404.
|
@@ -1169,6 +1244,7 @@ function mc_hidden_event() {
|
|
1169 |
$uri = mc_get_uri();
|
1170 |
if ( ! $is_404 ) {
|
1171 |
wp_safe_redirect( $uri );
|
|
|
1172 |
} else {
|
1173 |
global $wp_query;
|
1174 |
$wp_query->set_404();
|
@@ -1543,7 +1619,7 @@ function my_calendar( $args ) {
|
|
1543 |
$from = apply_filters( 'mc_from_date', $dates['from'] );
|
1544 |
$to = apply_filters( 'mc_to_date', $dates['to'] );
|
1545 |
|
1546 |
-
$query
|
1547 |
'from' => $from,
|
1548 |
'to' => $to,
|
1549 |
'category' => $params['category'],
|
@@ -1555,9 +1631,19 @@ function my_calendar( $args ) {
|
|
1555 |
'source' => 'calendar',
|
1556 |
'site' => $site,
|
1557 |
);
|
1558 |
-
$query
|
1559 |
-
$
|
1560 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1561 |
|
1562 |
$nav = mc_generate_calendar_nav( $params, $args['category'], $start_of_week, $show_months, $main_class, $site, $date, $from );
|
1563 |
$top = $nav['top'];
|
@@ -1638,6 +1724,9 @@ function my_calendar( $args ) {
|
|
1638 |
$list_heading = ( $months <= 1 ) ? $current_header . $caption_text . "\n" : $current_month_header . '–' . $through_month_header . $caption_text;
|
1639 |
// Translators: time period displayed.
|
1640 |
$list_heading = sprintf( __( 'Events in %s', 'my-calendar' ), $list_heading );
|
|
|
|
|
|
|
1641 |
} else {
|
1642 |
$list_heading = mc_draw_template( $values, stripslashes( $week_template ) );
|
1643 |
}
|
@@ -2670,7 +2759,7 @@ function my_calendar_categories_list( $show = 'list', $context = 'public', $grou
|
|
2670 |
</div><p>';
|
2671 |
$public_form = ( 'public' == $context ) ? $form : '';
|
2672 |
if ( ! is_user_logged_in() ) {
|
2673 |
-
$categories = $mcdb->get_results( 'SELECT * FROM ' . my_calendar_categories_table() . ' WHERE category_private =
|
2674 |
} else {
|
2675 |
$categories = $mcdb->get_results( 'SELECT * FROM ' . my_calendar_categories_table() . ' ORDER BY category_name ASC' );
|
2676 |
}
|
36 |
/**
|
37 |
* HTML output for event time
|
38 |
*
|
39 |
+
* @param object $e Current event.
|
40 |
* @param string $type Type of view.
|
41 |
*
|
42 |
* @return string HTML output.
|
43 |
*/
|
44 |
+
function mc_time_html( $e, $type ) {
|
45 |
$orig_format = get_option( 'mc_date_format' );
|
46 |
$date_format = ( '' != $orig_format ) ? $orig_format : get_option( 'date_format' );
|
47 |
+
$time_format = get_option( 'mc_time_format' );
|
48 |
+
$start = date( 'Y-m-d', strtotime( $e->occur_begin ) );
|
49 |
+
$end = date( 'Y-m-d', strtotime( $e->occur_end ) );
|
50 |
+
$has_time = ( '00:00:00' != $e->event_time && '' != $e->event_time ) ? true : false;
|
51 |
+
$final = '';
|
52 |
+
// Manipulate date_format based on event data.
|
53 |
+
if ( $e->event_end != $e->event_begin && ! $has_time ) {
|
54 |
$mult_format = get_option( 'mc_multidate_format' );
|
55 |
$mult_format = ( '' != $mult_format ) ? $mult_format : 'F j-%d, Y';
|
56 |
+
$date_format = str_replace( '%d', date( 'j', strtotime( $e->occur_end ) ), $mult_format );
|
57 |
}
|
58 |
// If this event crosses years or months, use original date format & show both dates.
|
59 |
+
if ( date( 'Y', strtotime( $e->occur_end ) ) != date( 'Y', strtotime( $e->occur_begin ) ) || date( 'm', strtotime( $e->occur_end ) ) != date( 'm', strtotime( $e->occur_begin ) ) ) {
|
60 |
+
$current = date_i18n( $orig_format, strtotime( $e->occur_begin ) ) . ' – ' . date_i18n( $orig_format, strtotime( $e->occur_end ) );
|
61 |
} else {
|
62 |
+
$current = date_i18n( $date_format, strtotime( $e->occur_begin ) );
|
63 |
+
$final = ( $e->event_end != $e->event_begin ) ? date_i18n( $date_format, strtotime( $e->occur_end ) ) : $final;
|
64 |
+
}
|
65 |
+
// Do not show info in list view.
|
66 |
+
$time_content = ( 'list' == $type ) ? '' : "<span class='mc-event-date dtstart' itemprop='startDate' title='" . $start . 'T' . $e->event_time . "' content='" . $start . 'T' . $e->event_time . "'>$current</span>";
|
67 |
+
// Handle cases.
|
68 |
+
if ( $has_time ) {
|
69 |
+
$time_content .= "\n
|
|
|
|
|
|
|
70 |
<span class='event-time dtstart'>
|
71 |
+
<time class='value-title' datetime='" . $start . 'T' . $e->event_time . "' title='" . $start . 'T' . $e->event_time . "'>" .
|
72 |
+
date_i18n( $time_format, strtotime( $e->event_time ) ) . '
|
73 |
</time>
|
74 |
</span>';
|
75 |
+
if ( 0 == $e->event_hide_end ) {
|
76 |
+
if ( '' != $e->event_endtime && $e->event_endtime != $e->event_time ) {
|
77 |
+
$time_content .= "
|
78 |
+
<span class='time-separator'> – </span>$final
|
79 |
<span class='end-time dtend'>
|
80 |
+
<time class='value-title' datetime='" . $end . 'T' . $e->event_endtime . "' title='" . $end . 'T' . $e->event_endtime . "'>" . date_i18n( $time_format, strtotime( $e->event_endtime ) ) . '
|
81 |
</time>
|
82 |
</span>';
|
83 |
}
|
84 |
}
|
85 |
} else {
|
86 |
+
$notime = mc_notime_label( $e );
|
87 |
+
$time_content .= "<span class='event-time'>";
|
88 |
+
$time_content .= ( 'N/A' == $notime ) ? "<abbr title='" . __( 'Not Applicable', 'my-calendar' ) . "'>" . __( 'N/A', 'my-calendar' ) . "</abbr>\n" : esc_html( $notime );
|
89 |
+
$time_content .= '</span>';
|
90 |
}
|
91 |
+
$time_content .= apply_filters( 'mcs_end_time_block', '', $e );
|
92 |
+
// Generate date/time meta data.
|
93 |
+
$meta = ( 0 == $e->event_hide_end ) ? "<meta itemprop='endDate' content='" . $start . 'T' . $e->event_endtime . "'/>" : '';
|
94 |
+
$meta .= '<meta itemprop="duration" content="' . mc_duration( $e ) . '"/>';
|
95 |
|
96 |
+
$time = "<div class='time-block'><p>$time_content</p>$meta</div>";
|
97 |
+
|
98 |
+
return apply_filters( 'mcs_time_block', $time, $e );
|
99 |
}
|
100 |
|
101 |
/**
|
316 |
$group_class = ( 1 == $event->event_span ) ? ' multidate group' . $event->event_group_id : '';
|
317 |
$hlevel = apply_filters( 'mc_heading_level_table', 'h3', $type, $time, $template );
|
318 |
$inner_heading = apply_filters( 'mc_heading_inner_title', $wrap . $image . trim( $event_title ) . $balance, $event_title, $event );
|
319 |
+
$header .= ( 'single' != $type && 'list' != $type ) ? "<$hlevel class='event-title summary$group_class' id='mc_$event->occur_id-title'>$inner_heading</$hlevel>\n" : '';
|
320 |
$event_title = ( 'single' == $type ) ? apply_filters( 'mc_single_event_title', $event_title, $event ) : $event_title;
|
321 |
$title = ( 'single' == $type && ! is_singular( 'mc-events' ) ) ? "<h2 class='event-title summary'>$image $event_title</h2>\n" : '<span class="summary screen-reader-text">' . $event_title . '</span>';
|
322 |
$title = apply_filters( 'mc_event_title', $title, $event, $event_title, $image );
|
335 |
$time_html = mc_time_html( $event, $type );
|
336 |
if ( 'list' == $type ) {
|
337 |
$hlevel = apply_filters( 'mc_heading_level_list', 'h3', $type, $time, $template );
|
338 |
+
$list_title = "<$hlevel class='event-title summary' id='mc_$event->occur_id-title'>$image" . $event_title . "</$hlevel>\n";
|
339 |
}
|
340 |
if ( 'true' == $display_author ) {
|
341 |
if ( 0 != $event->event_author ) {
|
416 |
$link_text = mc_draw_template( $data, $link_template );
|
417 |
$link = "
|
418 |
<p>
|
419 |
+
<a href='" . esc_url( $event_link ) . "' class='$external_class' aria-describedby='mc_$event->occur_id-title'>" . $link_text . '</a>
|
420 |
</p>';
|
421 |
}
|
422 |
|
446 |
}
|
447 |
|
448 |
$img_class = ( '' != $img ) ? ' has-image' : ' no-image';
|
449 |
+
$container = "<div id='$uid-$type-details' class='details$img_class' role='alert' aria-labelledby='mc_$event->occur_id-title' itemscope itemtype='http://schema.org/Event'>\n";
|
450 |
$container .= "<meta itemprop='name' content='" . strip_tags( $event->event_title ) . "' />";
|
451 |
$container = apply_filters( 'mc_before_event', $container, $event, $type, $time );
|
452 |
$details = $header . $container . apply_filters( 'mc_inner_content', $details, $event, $type, $time );
|
586 |
$categories = mc_get_categories( $event, false );
|
587 |
}
|
588 |
foreach ( $categories as $category ) {
|
589 |
+
if ( ! is_object( $category ) ) {
|
590 |
+
$category = (object) $category;
|
591 |
+
}
|
592 |
$classes[] = 'mc_rel_' . sanitize_html_class( $category->category_name );
|
593 |
}
|
594 |
|
1058 |
* @return string HTML output
|
1059 |
*/
|
1060 |
function mc_search_results( $query ) {
|
1061 |
+
$before = apply_filters( 'mc_past_search_results', 0, 'basic' );
|
1062 |
+
$after = apply_filters( 'mc_future_search_results', 10, 'basic' ); // Return only future events, nearest 10.
|
1063 |
+
$exports = '';
|
1064 |
if ( is_string( $query ) ) {
|
1065 |
$search = mc_prepare_search_query( $query );
|
1066 |
$term = $query;
|
1077 |
$template = '<strong>{date}</strong> {title} {details}';
|
1078 |
$template = apply_filters( 'mc_search_template', $template );
|
1079 |
// No filters parameter prevents infinite looping on the_content filters.
|
1080 |
+
$output = mc_produce_upcoming_events( $event_array, $template, 'list', 'ASC', 0, $before, $after, 'yes', 'nofilters' );
|
1081 |
+
$exports = apply_filters( 'mc_search_exportlinks', '', $output );
|
1082 |
} else {
|
1083 |
$output = apply_filters( 'mc_search_no_results', "<li class='no-results'>" . __( 'Sorry, your search produced no results.', 'my-calendar' ) . '</li>' );
|
1084 |
}
|
1086 |
$header = apply_filters( 'mc_search_before', '<ol class="mc-search-results">', $term );
|
1087 |
$footer = apply_filters( 'mc_search_after', '</ol>', $term );
|
1088 |
|
1089 |
+
return $header . $output . $footer . $exports;
|
1090 |
}
|
1091 |
|
1092 |
add_filter( 'the_title', 'mc_search_results_title', 10, 2 );
|
1139 |
}
|
1140 |
}
|
1141 |
|
1142 |
+
add_filter( 'mc_search_exportlinks', 'mc_search_exportlinks', 10, 0 );
|
1143 |
+
/**
|
1144 |
+
* Creates the export links for search result
|
1145 |
+
*/
|
1146 |
+
function mc_search_exportlinks() {
|
1147 |
+
if ( ! session_id() ) {
|
1148 |
+
return;
|
1149 |
+
}
|
1150 |
+
|
1151 |
+
// Setup print link.
|
1152 |
+
$print_add = array(
|
1153 |
+
'format' => 'list',
|
1154 |
+
'searched' => true,
|
1155 |
+
'href' => urlencode( mc_get_current_url() ),
|
1156 |
+
'cid' => 'mc-print-view',
|
1157 |
+
);
|
1158 |
+
$subtract = array( 'time', 'ltype', 'lvalue', 'mcat', 'yr', 'month', 'dy' );
|
1159 |
+
$mc_print_url = mc_build_url( $print_add, '', home_url() );
|
1160 |
+
$print = "<div class='mc-print'><a href='$mc_print_url'>" . __( 'Print<span class="maybe-hide"> View</span>', 'my-calendar' ) . '</a></div>';
|
1161 |
+
|
1162 |
+
// Set up exports.
|
1163 |
+
$ics_add = array( 'searched' => true );
|
1164 |
+
$exports = mc_export_links( 1, 1, 1, $ics_add, $subtract );
|
1165 |
+
|
1166 |
+
$before = "<div class='mc_bottomnav my-calendar-footer'>";
|
1167 |
+
$after = '</div>';
|
1168 |
+
|
1169 |
+
return $before . $exports . $print . $after;
|
1170 |
+
}
|
1171 |
+
|
1172 |
+
add_filter( 'mc_searched_events', 'mc_searched_events', 10, 1 );
|
1173 |
+
/**
|
1174 |
+
* Saves all searched events in $_SESSION
|
1175 |
+
*
|
1176 |
+
* @param array $event_array The events to be saved.
|
1177 |
+
*
|
1178 |
+
* @return array Events.
|
1179 |
+
*/
|
1180 |
+
function mc_searched_events( $event_array ) {
|
1181 |
+
if ( session_id() ) {
|
1182 |
+
$_SESSION['MC_SEARCH_RESULT'] = json_encode( $event_array );
|
1183 |
+
}
|
1184 |
+
return $event_array;
|
1185 |
+
}
|
1186 |
+
|
1187 |
+
/**
|
1188 |
+
* Get searched events from $_SESSION array
|
1189 |
+
*
|
1190 |
+
* @return array event_array
|
1191 |
+
*/
|
1192 |
+
function mc_get_searched_events() {
|
1193 |
+
if ( ! session_id() || ! isset( $_SESSION['MC_SEARCH_RESULT'] ) ) {
|
1194 |
+
return;
|
1195 |
+
}
|
1196 |
+
$event_searched = json_decode( $_SESSION['MC_SEARCH_RESULT'], true );
|
1197 |
+
foreach ( $event_searched as $key => $value ) {
|
1198 |
+
$daily_events = array();
|
1199 |
+
foreach ( $value as $k => $v ) {
|
1200 |
+
$daily_events[] = (object) $v;
|
1201 |
+
}
|
1202 |
+
$event_array[ $key ] = $daily_events;
|
1203 |
+
}
|
1204 |
+
return $event_array;
|
1205 |
+
}
|
1206 |
+
|
1207 |
add_action( 'template_redirect', 'mc_hidden_event' );
|
1208 |
/**
|
1209 |
* If an event is hidden from the current user, redirect to 404.
|
1244 |
$uri = mc_get_uri();
|
1245 |
if ( ! $is_404 ) {
|
1246 |
wp_safe_redirect( $uri );
|
1247 |
+
exit;
|
1248 |
} else {
|
1249 |
global $wp_query;
|
1250 |
$wp_query->set_404();
|
1619 |
$from = apply_filters( 'mc_from_date', $dates['from'] );
|
1620 |
$to = apply_filters( 'mc_to_date', $dates['to'] );
|
1621 |
|
1622 |
+
$query = array(
|
1623 |
'from' => $from,
|
1624 |
'to' => $to,
|
1625 |
'category' => $params['category'],
|
1631 |
'source' => 'calendar',
|
1632 |
'site' => $site,
|
1633 |
);
|
1634 |
+
$query = apply_filters( 'mc_calendar_attributes', $query, $params );
|
1635 |
+
if ( 'mc-print-view' == $id && isset( $_GET['searched'] ) && $_GET['searched'] ) {
|
1636 |
+
$event_array = mc_get_searched_events();
|
1637 |
+
if ( ! empty( $event_array ) ) {
|
1638 |
+
reset( $event_array );
|
1639 |
+
$from = key( $event_array );
|
1640 |
+
end( $event_array );
|
1641 |
+
$to = key( $event_array );
|
1642 |
+
}
|
1643 |
+
} else {
|
1644 |
+
$event_array = my_calendar_events( $query );
|
1645 |
+
}
|
1646 |
+
$no_events = ( empty( $event_array ) ) ? true : false;
|
1647 |
|
1648 |
$nav = mc_generate_calendar_nav( $params, $args['category'], $start_of_week, $show_months, $main_class, $site, $date, $from );
|
1649 |
$top = $nav['top'];
|
1724 |
$list_heading = ( $months <= 1 ) ? $current_header . $caption_text . "\n" : $current_month_header . '–' . $through_month_header . $caption_text;
|
1725 |
// Translators: time period displayed.
|
1726 |
$list_heading = sprintf( __( 'Events in %s', 'my-calendar' ), $list_heading );
|
1727 |
+
if ( isset( $_GET['searched'] ) && 1 == $_GET['searched'] ) {
|
1728 |
+
$list_heading = __( 'Search Results', 'my-calendar' );
|
1729 |
+
}
|
1730 |
} else {
|
1731 |
$list_heading = mc_draw_template( $values, stripslashes( $week_template ) );
|
1732 |
}
|
2759 |
</div><p>';
|
2760 |
$public_form = ( 'public' == $context ) ? $form : '';
|
2761 |
if ( ! is_user_logged_in() ) {
|
2762 |
+
$categories = $mcdb->get_results( 'SELECT * FROM ' . my_calendar_categories_table() . ' WHERE category_private = 0 ORDER BY category_name ASC' );
|
2763 |
} else {
|
2764 |
$categories = $mcdb->get_results( 'SELECT * FROM ' . my_calendar_categories_table() . ' ORDER BY category_name ASC' );
|
2765 |
}
|
my-calendar-print.php
CHANGED
@@ -70,6 +70,8 @@ function my_calendar_print() {
|
|
70 |
'ltype' => $ltype,
|
71 |
'lvalue' => $lvalue,
|
72 |
'id' => 'mc-print-view',
|
|
|
|
|
73 |
);
|
74 |
|
75 |
echo my_calendar( $calendar );
|
@@ -87,7 +89,7 @@ function my_calendar_print() {
|
|
87 |
unset( $add['cid'] );
|
88 |
unset( $add['feed'] );
|
89 |
unset( $add['href'] );
|
90 |
-
$return_url = apply_filters( 'mc_return_to_calendar', mc_build_url( $add, array( 'feed', 'cid', 'href' ), $return_url ), $add );
|
91 |
if ( $return_url ) {
|
92 |
echo "<p class='return'>← <a href='$return_url'>" . __( 'Return to calendar', 'my-calendar' ) . '</a></p>';
|
93 |
}
|
70 |
'ltype' => $ltype,
|
71 |
'lvalue' => $lvalue,
|
72 |
'id' => 'mc-print-view',
|
73 |
+
'below' => 'none',
|
74 |
+
'above' => 'none',
|
75 |
);
|
76 |
|
77 |
echo my_calendar( $calendar );
|
89 |
unset( $add['cid'] );
|
90 |
unset( $add['feed'] );
|
91 |
unset( $add['href'] );
|
92 |
+
$return_url = apply_filters( 'mc_return_to_calendar', mc_build_url( $add, array( 'feed', 'cid', 'href', 'searched' ), $return_url ), $add );
|
93 |
if ( $return_url ) {
|
94 |
echo "<p class='return'>← <a href='$return_url'>" . __( 'Return to calendar', 'my-calendar' ) . '</a></p>';
|
95 |
}
|
my-calendar.php
CHANGED
@@ -17,7 +17,7 @@
|
|
17 |
* License: GPL-2.0+
|
18 |
* License URI: http://www.gnu.org/license/gpl-2.0.txt
|
19 |
* Domain Path: lang
|
20 |
-
* Version: 3.0
|
21 |
*/
|
22 |
|
23 |
/*
|
@@ -42,7 +42,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
42 |
}
|
43 |
|
44 |
global $mc_version, $wpdb;
|
45 |
-
$mc_version = '3.0
|
46 |
|
47 |
define( 'MC_DEBUG', false );
|
48 |
|
@@ -150,6 +150,16 @@ function mc_custom_canonical() {
|
|
150 |
}
|
151 |
}
|
152 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
153 |
/**
|
154 |
* Generate canonical link
|
155 |
*/
|
17 |
* License: GPL-2.0+
|
18 |
* License URI: http://www.gnu.org/license/gpl-2.0.txt
|
19 |
* Domain Path: lang
|
20 |
+
* Version: 3.1.0
|
21 |
*/
|
22 |
|
23 |
/*
|
42 |
}
|
43 |
|
44 |
global $mc_version, $wpdb;
|
45 |
+
$mc_version = '3.1.0';
|
46 |
|
47 |
define( 'MC_DEBUG', false );
|
48 |
|
150 |
}
|
151 |
}
|
152 |
|
153 |
+
add_action( 'init', 'mc_start_session', 10 );
|
154 |
+
/**
|
155 |
+
* Makes sure session is started to be able to save search results.
|
156 |
+
*/
|
157 |
+
function mc_start_session() {
|
158 |
+
if ( ! session_id() ) {
|
159 |
+
session_start();
|
160 |
+
}
|
161 |
+
}
|
162 |
+
|
163 |
/**
|
164 |
* Generate canonical link
|
165 |
*/
|
readme.txt
CHANGED
@@ -5,7 +5,7 @@ Tags: calendar, dates, times, event, events, scheduling, schedule, event manager
|
|
5 |
Requires at least: 4.4
|
6 |
Tested up to: 4.9
|
7 |
Requires PHP: 5.3
|
8 |
-
Stable tag: 3.0
|
9 |
Text domain: my-calendar
|
10 |
License: GPLv2 or later
|
11 |
|
@@ -85,6 +85,20 @@ Translating my plug-ins is always appreciated. Visit <a href="https://translate.
|
|
85 |
|
86 |
TODO: Support limiting views to multiple locations
|
87 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
= 3.0.18 =
|
89 |
|
90 |
* Bug fix: Invalid setting in bottom nav defaults.
|
@@ -308,4 +322,4 @@ The search feature in My Calendar is pretty basic; but [buying My Calendar Pro](
|
|
308 |
|
309 |
== Upgrade Notice ==
|
310 |
|
311 |
-
* 3.0
|
5 |
Requires at least: 4.4
|
6 |
Tested up to: 4.9
|
7 |
Requires PHP: 5.3
|
8 |
+
Stable tag: 3.1.0
|
9 |
Text domain: my-calendar
|
10 |
License: GPLv2 or later
|
11 |
|
85 |
|
86 |
TODO: Support limiting views to multiple locations
|
87 |
|
88 |
+
= 3.1.0 =
|
89 |
+
|
90 |
+
* Add feature (by Josef Fällman): Print & export view for search results.
|
91 |
+
* New filter: mcs_check_conflicts (impacts Pro only)
|
92 |
+
* Bug fix: Fix issue causing duplication in some views.
|
93 |
+
* Bug fix: Time format should be filtered in initial edit view.
|
94 |
+
* Bug fix: Category relationships not retained when Group editing applied.
|
95 |
+
* Bug fix: aria-describedby ID mismatch.
|
96 |
+
|
97 |
+
= 3.0.19 =
|
98 |
+
|
99 |
+
* Bug fix: Fatal error in export API when location object included.
|
100 |
+
* BUg fix: my calendar categories queried private categories instead of public.
|
101 |
+
|
102 |
= 3.0.18 =
|
103 |
|
104 |
* Bug fix: Invalid setting in bottom nav defaults.
|
322 |
|
323 |
== Upgrade Notice ==
|
324 |
|
325 |
+
* 3.1.0 Bug fixes; couple minor new features.
|
styles/twentyeighteen.css
CHANGED
@@ -16,7 +16,7 @@
|
|
16 |
}
|
17 |
|
18 |
.my-calendar-header > div, .mc_bottomnav > div {
|
19 |
-
display: inline-block;
|
20 |
margin-right: 4px;
|
21 |
}
|
22 |
|
@@ -25,19 +25,19 @@
|
|
25 |
position: absolute !important;
|
26 |
height: 1px;
|
27 |
width: 1px;
|
28 |
-
overflow: hidden;
|
29 |
}
|
30 |
|
31 |
.my-calendar-header > div:nth-of-type(1), .mc_bottomnav > div:nth-of-type(1) {
|
32 |
margin-left: 0;
|
33 |
}
|
34 |
-
|
35 |
.my-calendar-header > div:nth-of-type(last), .mc_bottomnav > div:nth-of-type(last) {
|
36 |
margin-right: 0;
|
37 |
}
|
38 |
|
39 |
.mc-main .my-calendar-header input,
|
40 |
-
.mc-main .my-calendar-header span, .mc-main .my-calendar-header a,
|
41 |
.mc-main .mc_bottomnav span, .mc-main .mc_bottomnav a {
|
42 |
text-decoration: none;
|
43 |
-webkit-box-shadow: inset 0 -1px 0 rgba(15, 15, 15, 1);
|
@@ -45,10 +45,10 @@
|
|
45 |
-webkit-transition: color 80ms ease-in, -webkit-box-shadow 130ms ease-in-out;
|
46 |
transition: color 80ms ease-in, -webkit-box-shadow 130ms ease-in-out;
|
47 |
transition: color 80ms ease-in, box-shadow 130ms ease-in-out;
|
48 |
-
transition: color 80ms ease-in, box-shadow 130ms ease-in-out, -webkit-box-shadow 130ms ease-in-out;
|
49 |
}
|
50 |
|
51 |
-
.mc-main .my-calendar-header span, .mc-main .my-calendar-header a,
|
52 |
.mc-main .mc_bottomnav span, .mc-main .mc_bottomnav a,
|
53 |
.mc-main .my-calendar-header select, .mc-main .my-calendar-header input {
|
54 |
color: #313233;
|
@@ -58,7 +58,7 @@
|
|
58 |
border-radius: 5px;
|
59 |
padding: 4px 6px;
|
60 |
font-size: 14px;
|
61 |
-
font-family: Arial;
|
62 |
background: #fff;
|
63 |
background: var(--secondary-light);
|
64 |
}
|
@@ -69,13 +69,13 @@
|
|
69 |
}
|
70 |
|
71 |
.mc-main .my-calendar-header input,
|
72 |
-
.mc-main .my-calendar-header a,
|
73 |
.mc-main .mc_bottomnav a {
|
74 |
background: linear-gradient(to top, rgba( 210, 210, 210, .95 ) 0%, rgba( 230, 230, 230, .95 ) 70%);
|
75 |
}
|
76 |
|
77 |
-
.mc-main .my-calendar-header input:hover, .mc-main .my-calendar-header input:focus,
|
78 |
-
.mc-main .my-calendar-header a:hover, .mc-main .mc_bottomnav a:hover,
|
79 |
.mc-main .my-calendar-header a:focus, .mc-main .mc_bottomnav a:focus {
|
80 |
color: #fff;
|
81 |
color: var(--primary-light);
|
@@ -124,7 +124,7 @@
|
|
124 |
.mc-main td {
|
125 |
width: 14.285714%;
|
126 |
border: 1px solid #efefef;
|
127 |
-
border: 1px solid var(--highlight-light);
|
128 |
padding: 0 !important;
|
129 |
height: 6em;
|
130 |
}
|
@@ -136,7 +136,7 @@
|
|
136 |
.mc-main td .event-title {
|
137 |
text-overflow: ellipsis;
|
138 |
overflow: hidden;
|
139 |
-
font-size: 13px;
|
140 |
}
|
141 |
|
142 |
.mc-main {
|
@@ -151,14 +151,14 @@
|
|
151 |
.mc-main .event-title a {
|
152 |
display: block;
|
153 |
line-height: 1.5;
|
154 |
-
padding: 6px;
|
155 |
position: relative;
|
156 |
border-bottom: none;
|
157 |
-
box-shadow: none;
|
158 |
}
|
159 |
|
160 |
.mc-main .event-title .has-image {
|
161 |
-
padding-left: 24px;
|
162 |
}
|
163 |
|
164 |
.mc-main.mini .event-title {
|
@@ -212,7 +212,7 @@
|
|
212 |
top: 0;
|
213 |
left: 0;
|
214 |
}
|
215 |
-
|
216 |
.mc-main .calendar-event .details, .mc-main .calendar-events {
|
217 |
position: absolute;
|
218 |
left: 5%;
|
@@ -372,7 +372,7 @@
|
|
372 |
.mc-main .current-day .mc-date {
|
373 |
background: #000 !important;
|
374 |
background: var(--secondary-dark) !important;
|
375 |
-
color: #fff !important;
|
376 |
color: var(--secondary-light) !important;
|
377 |
box-shadow: inset 0px 0px 0px 2px #666;
|
378 |
box-shadow: inset 0px 0px 0px 2px var(--highlight-dark);
|
@@ -387,7 +387,7 @@
|
|
387 |
background: var(--primary-dark);
|
388 |
}
|
389 |
|
390 |
-
.mc-main .has-events a.mc-date:hover,
|
391 |
.mc-main .has-events a.mc-date:focus {
|
392 |
color: #333;
|
393 |
color: var(--primary-dark);
|
@@ -414,22 +414,22 @@
|
|
414 |
|
415 |
.my-calendar-nav .my-calendar-prev a {
|
416 |
border-radius: 5px 0 0 5px;
|
417 |
-
border-right: 1px solid #bbb;
|
418 |
}
|
419 |
|
420 |
.my-calendar-nav .my-calendar-next a {
|
421 |
border-radius: 0 5px 5px 0;
|
422 |
-
border-left: 1px solid #fff;
|
423 |
}
|
424 |
|
425 |
.mc-main .mc-time .month {
|
426 |
border-radius: 5px 0 0 5px;
|
427 |
-
border-right: 1px solid #bbb;
|
428 |
}
|
429 |
|
430 |
.mc-main .mc-time .week {
|
431 |
border-radius: 0;
|
432 |
-
border-right: 1px solid #bbb;
|
433 |
}
|
434 |
|
435 |
.mc-main .mc-time .day {
|
@@ -438,7 +438,7 @@
|
|
438 |
|
439 |
.my-calendar-prev a:before, .my-calendar-next a:after {
|
440 |
font-family: 'dashicons';
|
441 |
-
vertical-align: middle;
|
442 |
}
|
443 |
|
444 |
.mc-export .rss a:before {
|
@@ -467,7 +467,7 @@
|
|
467 |
|
468 |
/* Category Key */
|
469 |
.mc-main .category-key h3 {
|
470 |
-
margin: 0 0 10px 0 !important;
|
471 |
}
|
472 |
|
473 |
.mc-main .category-key li.current a {
|
16 |
}
|
17 |
|
18 |
.my-calendar-header > div, .mc_bottomnav > div {
|
19 |
+
display: inline-block;
|
20 |
margin-right: 4px;
|
21 |
}
|
22 |
|
25 |
position: absolute !important;
|
26 |
height: 1px;
|
27 |
width: 1px;
|
28 |
+
overflow: hidden;
|
29 |
}
|
30 |
|
31 |
.my-calendar-header > div:nth-of-type(1), .mc_bottomnav > div:nth-of-type(1) {
|
32 |
margin-left: 0;
|
33 |
}
|
34 |
+
|
35 |
.my-calendar-header > div:nth-of-type(last), .mc_bottomnav > div:nth-of-type(last) {
|
36 |
margin-right: 0;
|
37 |
}
|
38 |
|
39 |
.mc-main .my-calendar-header input,
|
40 |
+
.mc-main .my-calendar-header span, .mc-main .my-calendar-header a,
|
41 |
.mc-main .mc_bottomnav span, .mc-main .mc_bottomnav a {
|
42 |
text-decoration: none;
|
43 |
-webkit-box-shadow: inset 0 -1px 0 rgba(15, 15, 15, 1);
|
45 |
-webkit-transition: color 80ms ease-in, -webkit-box-shadow 130ms ease-in-out;
|
46 |
transition: color 80ms ease-in, -webkit-box-shadow 130ms ease-in-out;
|
47 |
transition: color 80ms ease-in, box-shadow 130ms ease-in-out;
|
48 |
+
transition: color 80ms ease-in, box-shadow 130ms ease-in-out, -webkit-box-shadow 130ms ease-in-out;
|
49 |
}
|
50 |
|
51 |
+
.mc-main .my-calendar-header span, .mc-main .my-calendar-header a,
|
52 |
.mc-main .mc_bottomnav span, .mc-main .mc_bottomnav a,
|
53 |
.mc-main .my-calendar-header select, .mc-main .my-calendar-header input {
|
54 |
color: #313233;
|
58 |
border-radius: 5px;
|
59 |
padding: 4px 6px;
|
60 |
font-size: 14px;
|
61 |
+
font-family: Arial;
|
62 |
background: #fff;
|
63 |
background: var(--secondary-light);
|
64 |
}
|
69 |
}
|
70 |
|
71 |
.mc-main .my-calendar-header input,
|
72 |
+
.mc-main .my-calendar-header a,
|
73 |
.mc-main .mc_bottomnav a {
|
74 |
background: linear-gradient(to top, rgba( 210, 210, 210, .95 ) 0%, rgba( 230, 230, 230, .95 ) 70%);
|
75 |
}
|
76 |
|
77 |
+
.mc-main .my-calendar-header input:hover, .mc-main .my-calendar-header input:focus,
|
78 |
+
.mc-main .my-calendar-header a:hover, .mc-main .mc_bottomnav a:hover,
|
79 |
.mc-main .my-calendar-header a:focus, .mc-main .mc_bottomnav a:focus {
|
80 |
color: #fff;
|
81 |
color: var(--primary-light);
|
124 |
.mc-main td {
|
125 |
width: 14.285714%;
|
126 |
border: 1px solid #efefef;
|
127 |
+
border: 1px solid var(--highlight-light);
|
128 |
padding: 0 !important;
|
129 |
height: 6em;
|
130 |
}
|
136 |
.mc-main td .event-title {
|
137 |
text-overflow: ellipsis;
|
138 |
overflow: hidden;
|
139 |
+
font-size: 13px;
|
140 |
}
|
141 |
|
142 |
.mc-main {
|
151 |
.mc-main .event-title a {
|
152 |
display: block;
|
153 |
line-height: 1.5;
|
154 |
+
padding: 6px;
|
155 |
position: relative;
|
156 |
border-bottom: none;
|
157 |
+
box-shadow: none;
|
158 |
}
|
159 |
|
160 |
.mc-main .event-title .has-image {
|
161 |
+
padding-left: 24px;
|
162 |
}
|
163 |
|
164 |
.mc-main.mini .event-title {
|
212 |
top: 0;
|
213 |
left: 0;
|
214 |
}
|
215 |
+
|
216 |
.mc-main .calendar-event .details, .mc-main .calendar-events {
|
217 |
position: absolute;
|
218 |
left: 5%;
|
372 |
.mc-main .current-day .mc-date {
|
373 |
background: #000 !important;
|
374 |
background: var(--secondary-dark) !important;
|
375 |
+
color: #fff !important;
|
376 |
color: var(--secondary-light) !important;
|
377 |
box-shadow: inset 0px 0px 0px 2px #666;
|
378 |
box-shadow: inset 0px 0px 0px 2px var(--highlight-dark);
|
387 |
background: var(--primary-dark);
|
388 |
}
|
389 |
|
390 |
+
.mc-main .has-events a.mc-date:hover,
|
391 |
.mc-main .has-events a.mc-date:focus {
|
392 |
color: #333;
|
393 |
color: var(--primary-dark);
|
414 |
|
415 |
.my-calendar-nav .my-calendar-prev a {
|
416 |
border-radius: 5px 0 0 5px;
|
417 |
+
border-right: 1px solid #bbb;
|
418 |
}
|
419 |
|
420 |
.my-calendar-nav .my-calendar-next a {
|
421 |
border-radius: 0 5px 5px 0;
|
422 |
+
border-left: 1px solid #fff;
|
423 |
}
|
424 |
|
425 |
.mc-main .mc-time .month {
|
426 |
border-radius: 5px 0 0 5px;
|
427 |
+
border-right: 1px solid #bbb;
|
428 |
}
|
429 |
|
430 |
.mc-main .mc-time .week {
|
431 |
border-radius: 0;
|
432 |
+
border-right: 1px solid #bbb;
|
433 |
}
|
434 |
|
435 |
.mc-main .mc-time .day {
|
438 |
|
439 |
.my-calendar-prev a:before, .my-calendar-next a:after {
|
440 |
font-family: 'dashicons';
|
441 |
+
vertical-align: middle;
|
442 |
}
|
443 |
|
444 |
.mc-export .rss a:before {
|
467 |
|
468 |
/* Category Key */
|
469 |
.mc-main .category-key h3 {
|
470 |
+
margin: 0 0 10px 0 !important;
|
471 |
}
|
472 |
|
473 |
.mc-main .category-key li.current a {
|