Simple Calendar – Google Calendar Plugin - Version 2.2.0

Version Description

  • February 25, 2015 =

  • Added custom date range options.

  • Added option to hide tooltips on grid display.

  • Added additional save button at the bottom of the feed settings.

  • Performance updates to script enqueues.

  • Updated Catalan translation files.

  • Updated list output logic.

  • Fixed bug with multi-day events sometimes not showing up in list view.

  • Fixed bug with calendar ID field not getting encoded.

  • Fixed bug with tooltips scrolling on mobile.

  • Fixed bug with Google Hangout event links.

  • Fixed bug with widget settings not being unique.

  • Widget UI enhancements.

  • Feed settings UI enhancements.

  • Error messaging updates.

  • Security improvements.

Download this release

Release Info

Developer pderksen
Plugin Icon 128x128 Simple Calendar – Google Calendar Plugin
Version 2.2.0
Comparing to
See all releases

Code changes from version 2.1.7 to 2.2.0

README.txt CHANGED
@@ -89,9 +89,27 @@ There are three ways to install this plugin.
89
 
90
  == Changelog ==
91
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92
  = 2.1.7 =
93
 
94
- * Restructured pagination JavaScript.
95
  * Updated Italian translation files.
96
 
97
  = 2.1.6.1 =
89
 
90
  == Changelog ==
91
 
92
+ = 2.2.0 - February 25, 2015 =
93
+
94
+ * Added custom date range options.
95
+ * Added option to hide tooltips on grid display.
96
+ * Added additional save button at the bottom of the feed settings.
97
+ * Performance updates to script enqueues.
98
+ * Updated Catalan translation files.
99
+ * Updated list output logic.
100
+ * Fixed bug with multi-day events sometimes not showing up in list view.
101
+ * Fixed bug with calendar ID field not getting encoded.
102
+ * Fixed bug with tooltips scrolling on mobile.
103
+ * Fixed bug with Google Hangout event links.
104
+ * Fixed bug with widget settings not being unique.
105
+ * Widget UI enhancements.
106
+ * Feed settings UI enhancements.
107
+ * Error messaging updates.
108
+ * Security improvements.
109
+
110
  = 2.1.7 =
111
 
112
+ * Restructured next and back paging navigation script.
113
  * Updated Italian translation files.
114
 
115
  = 2.1.6.1 =
class-google-calendar-events-admin.php CHANGED
@@ -53,16 +53,14 @@ class Google_Calendar_Events_Admin {
53
  // Add admin styles
54
  add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_styles' ) );
55
 
 
 
 
56
  // Add the options page and menu item.
57
  add_action( 'admin_menu', array( $this, 'add_plugin_admin_menu' ), 2 );
58
-
59
- // Add admin notice for users upgrading from before 2.1.0.
60
- if( version_compare( $this->version, '2.1.0', '<' ) ) {
61
- add_action( 'admin_notices', array( $this, 'show_admin_notice' ) );
62
- }
63
 
64
  // Add admin notice after plugin activation. Also check if should be hidden.
65
- add_action( 'admin_notices', array( $this, 'admin_api_settings_notice' ) );
66
  }
67
 
68
  /**
@@ -71,7 +69,7 @@ class Google_Calendar_Events_Admin {
71
  *
72
  * @since 2.1.0
73
  */
74
- public function admin_api_settings_notice() {
75
  // Exit all of this is stored value is false/0 or not set.
76
  if ( false == get_option( 'gce_show_admin_install_notice' ) ) {
77
  return;
@@ -80,14 +78,14 @@ class Google_Calendar_Events_Admin {
80
  $screen = get_current_screen();
81
 
82
  // Delete stored value if "hide" button click detected (custom querystring value set to 1).
83
- if ( ! empty( $_REQUEST['gce-dismiss-install-nag'] ) || in_array( $screen->id, $this->plugin_screen_hook_suffix ) ) {
84
  delete_option( 'gce_show_admin_install_notice' );
85
  return;
86
  }
87
 
88
  // At this point show install notice. Show it only on the plugin screen.
89
- if( get_current_screen()->id == 'plugins' || $this->viewing_this_plugin() ) {
90
- include_once( 'views/admin/api-settings-notice.php' );
91
  }
92
  }
93
 
@@ -95,7 +93,7 @@ class Google_Calendar_Events_Admin {
95
  * Check if viewing one of this plugin's admin pages.
96
  *
97
  * @since 2.1.0
98
- *
99
  * @return bool
100
  */
101
  private function viewing_this_plugin() {
@@ -105,7 +103,7 @@ class Google_Calendar_Events_Admin {
105
 
106
  $screen = get_current_screen();
107
 
108
- if ( $screen->id == 'edit-gce_feed' || $screen->id == 'gce_feed' || in_array( $screen->id, $this->plugin_screen_hook_suffix ) ) {
109
  return true;
110
  } else {
111
  return false;
@@ -137,6 +135,19 @@ class Google_Calendar_Events_Admin {
137
  include_once( 'views/admin/admin.php' );
138
  }
139
 
 
 
 
 
 
 
 
 
 
 
 
 
 
140
  /**
141
  * Enqueue styles for the admin area
142
  *
@@ -147,8 +158,15 @@ class Google_Calendar_Events_Admin {
147
  //wp_enqueue_style( 'jquery-ui-datepicker-css', plugins_url( 'css/jquery-ui-1.10.4.custom.min.css', __FILE__ ), array(), $this->version );
148
 
149
  if( $this->viewing_this_plugin() ) {
150
- wp_enqueue_style( 'gce-admin', plugins_url( 'css/admin.css', __FILE__ ), array(), $this->version, 'all' );
151
- }
 
 
 
 
 
 
 
152
  }
153
 
154
  /**
@@ -203,21 +221,4 @@ class Google_Calendar_Events_Admin {
203
  $links
204
  );
205
  }
206
-
207
- /**
208
- * Use to show an important admin notice.
209
- *
210
- * @since 2.0.7.1
211
- */
212
-
213
- /**
214
- * Example use in constructor:
215
-
216
- if( version_compare( $this->version, '2.1.0', '<' ) ) {
217
- add_action( 'admin_notices', array( $this, 'show_admin_notice' ) );
218
- }
219
- */
220
- function show_admin_notice() {
221
- include_once( 'includes/admin/admin-notice.php' );
222
- }
223
  }
53
  // Add admin styles
54
  add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_styles' ) );
55
 
56
+ // Add admin JS
57
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_scripts' ) );
58
+
59
  // Add the options page and menu item.
60
  add_action( 'admin_menu', array( $this, 'add_plugin_admin_menu' ), 2 );
 
 
 
 
 
61
 
62
  // Add admin notice after plugin activation. Also check if should be hidden.
63
+ add_action( 'admin_notices', array( $this, 'show_admin_notice' ) );
64
  }
65
 
66
  /**
69
  *
70
  * @since 2.1.0
71
  */
72
+ public function show_admin_notice() {
73
  // Exit all of this is stored value is false/0 or not set.
74
  if ( false == get_option( 'gce_show_admin_install_notice' ) ) {
75
  return;
78
  $screen = get_current_screen();
79
 
80
  // Delete stored value if "hide" button click detected (custom querystring value set to 1).
81
+ if ( ! empty( $_REQUEST['gce-dismiss-install-nag'] ) || in_array( $screen->id, $this->plugin_screen_hook_suffix ) || $this->viewing_this_plugin() ) {
82
  delete_option( 'gce_show_admin_install_notice' );
83
  return;
84
  }
85
 
86
  // At this point show install notice. Show it only on the plugin screen.
87
+ if( get_current_screen()->id == 'plugins' ) {
88
+ include_once( 'includes/admin/admin-notice.php' );
89
  }
90
  }
91
 
93
  * Check if viewing one of this plugin's admin pages.
94
  *
95
  * @since 2.1.0
96
+ *$this->viewing_this_plugin()
97
  * @return bool
98
  */
99
  private function viewing_this_plugin() {
103
 
104
  $screen = get_current_screen();
105
 
106
+ if ( $screen->id == 'edit-gce_feed' || $screen->id == 'gce_feed' || in_array( $screen->id, $this->plugin_screen_hook_suffix ) || $screen->id == 'widgets' ) {
107
  return true;
108
  } else {
109
  return false;
135
  include_once( 'views/admin/admin.php' );
136
  }
137
 
138
+ /**
139
+ * Enqueue JS for the admin area
140
+ *
141
+ * @since 2.0.0
142
+ */
143
+ public function enqueue_admin_scripts() {
144
+
145
+ if( $this->viewing_this_plugin() ) {
146
+ wp_enqueue_script( 'jquery-ui-datepicker' );
147
+ wp_enqueue_script( 'gce-admin', plugins_url( 'js/gce-admin.js', __FILE__ ), array( 'jquery' ), $this->version, true );
148
+ }
149
+ }
150
+
151
  /**
152
  * Enqueue styles for the admin area
153
  *
158
  //wp_enqueue_style( 'jquery-ui-datepicker-css', plugins_url( 'css/jquery-ui-1.10.4.custom.min.css', __FILE__ ), array(), $this->version );
159
 
160
  if( $this->viewing_this_plugin() ) {
161
+ global $wp_scripts;
162
+
163
+ // get the jquery ui object
164
+ $queryui = $wp_scripts->query( 'jquery-ui-datepicker' );
165
+
166
+ wp_enqueue_style( 'jquery-ui-smoothness', '//ajax.googleapis.com/ajax/libs/jqueryui/' . $queryui->ver . '/themes/smoothness/jquery-ui.css', array(), $this->version );
167
+
168
+ wp_enqueue_style( 'gce-admin', plugins_url( 'css/admin.css', __FILE__ ), array(), $this->version, 'all' );
169
+ }
170
  }
171
 
172
  /**
221
  $links
222
  );
223
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
224
  }
class-google-calendar-events.php CHANGED
@@ -18,7 +18,7 @@ class Google_Calendar_Events {
18
  *
19
  * @var string
20
  */
21
- protected $version = '2.1.7';
22
 
23
  /**
24
  * Unique identifier for the plugin.
@@ -37,6 +37,8 @@ class Google_Calendar_Events {
37
  * @var object
38
  */
39
  protected static $instance = null;
 
 
40
 
41
  /**
42
  * Initialize the plugin by setting localization and loading public scripts
@@ -58,15 +60,59 @@ class Google_Calendar_Events {
58
  $this->upgrade();
59
  }
60
 
61
-
62
  $this->setup_constants();
63
 
64
- add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_public_scripts' ) );
65
- add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_public_styles' ) );
 
66
 
 
 
67
 
68
  // Load plugin text domain
69
  $this->plugin_textdomain();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  }
71
 
72
  /**
@@ -74,7 +120,7 @@ class Google_Calendar_Events {
74
  *
75
  * @since 2.0.0
76
  */
77
- private function upgrade() {
78
  include_once( 'includes/admin/upgrade.php' );
79
  }
80
 
@@ -143,8 +189,8 @@ class Google_Calendar_Events {
143
  * @since 2.0.0
144
  */
145
  public function enqueue_public_styles() {
146
- wp_enqueue_style( $this->plugin_slug . '-qtip', plugins_url( 'css/jquery.qtip.min.css', __FILE__ ), array(), $this->version );
147
- wp_enqueue_style( $this->plugin_slug . '-public', plugins_url( 'css/gce-style.css', __FILE__ ), array( $this->plugin_slug . '-qtip' ), $this->version );
148
  }
149
 
150
  /**
18
  *
19
  * @var string
20
  */
21
+ protected $version = '2.2.0';
22
 
23
  /**
24
  * Unique identifier for the plugin.
37
  * @var object
38
  */
39
  protected static $instance = null;
40
+
41
+ protected $show_scripts = false;
42
 
43
  /**
44
  * Initialize the plugin by setting localization and loading public scripts
60
  $this->upgrade();
61
  }
62
 
 
63
  $this->setup_constants();
64
 
65
+ add_action( 'init', array( $this, 'enqueue_public_scripts' ) );
66
+ add_action( 'init', array( $this, 'enqueue_public_styles' ) );
67
+
68
 
69
+ // Load scripts when posts load so we know if we need to include them or not
70
+ add_filter( 'the_posts', array( $this, 'load_scripts' ) );
71
 
72
  // Load plugin text domain
73
  $this->plugin_textdomain();
74
+
75
+ add_action( 'wp_footer', array( $this, 'localize_main_script' ) );
76
+ }
77
+
78
+ public function localize_main_script() {
79
+
80
+ if( $this->show_scripts ) {
81
+ global $localize;
82
+
83
+ wp_localize_script( GCE_PLUGIN_SLUG . '-public', 'gce_grid', $localize );
84
+
85
+ wp_localize_script( GCE_PLUGIN_SLUG . '-public', 'gce',
86
+ array(
87
+ 'script_debug' => ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ),
88
+ 'ajaxurl' => admin_url( 'admin-ajax.php' ),
89
+ 'ajaxnonce' => wp_create_nonce( 'gce_ajax_nonce' ),
90
+ 'loadingText' => __( 'Loading...', 'gce' )
91
+ ) );
92
+ }
93
+ }
94
+
95
+ public function load_scripts( $posts ) {
96
+
97
+ if ( empty( $posts ) ) {
98
+ return $posts;
99
+ }
100
+
101
+ foreach ( $posts as $post ){
102
+ if ( ( strpos( $post->post_content, '[gcal' ) !== false ) || ( $post->post_type == 'gce_feed' ) ) {
103
+ // Load CSS
104
+ wp_enqueue_style( $this->plugin_slug . '-public' );
105
+
106
+ // Load JS
107
+ wp_enqueue_script( $this->plugin_slug . '-public' );
108
+
109
+ $this->show_scripts = true;
110
+
111
+ break;
112
+ }
113
+ }
114
+
115
+ return $posts;
116
  }
117
 
118
  /**
120
  *
121
  * @since 2.0.0
122
  */
123
+ public function upgrade() {
124
  include_once( 'includes/admin/upgrade.php' );
125
  }
126
 
189
  * @since 2.0.0
190
  */
191
  public function enqueue_public_styles() {
192
+ wp_register_style( $this->plugin_slug . '-qtip', plugins_url( 'css/jquery.qtip.min.css', __FILE__ ), array(), $this->version );
193
+ wp_register_style( $this->plugin_slug . '-public', plugins_url( 'css/gce-style.css', __FILE__ ), array( $this->plugin_slug . '-qtip' ), $this->version );
194
  }
195
 
196
  /**
css/admin.css CHANGED
@@ -54,3 +54,7 @@
54
  #gce_feed_meta .inside code {
55
  word-break: break-all;
56
  }
 
 
 
 
54
  #gce_feed_meta .inside code {
55
  word-break: break-all;
56
  }
57
+
58
+ .gce-custom-range input {
59
+ width: 120px;
60
+ }
css/jquery-ui-1.10.4.custom.min.css DELETED
@@ -1,7 +0,0 @@
1
- /*! jQuery UI - v1.10.4 - 2014-05-14
2
- * http://jqueryui.com
3
- * Includes: jquery.ui.core.css, jquery.ui.datepicker.css, jquery.ui.theme.css
4
- * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
5
- * Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
6
-
7
- .ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url("images/ui-bg_flat_75_ffffff_40x100.png") 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url("images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_888888_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_2e83ff_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cd0a0a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}
 
 
 
 
 
 
 
google-calendar-events.php CHANGED
@@ -12,7 +12,7 @@
12
  * Plugin Name: Google Calendar Events
13
  * Plugin URI: https://github.com/pderksen/WP-Google-Calendar-Events
14
  * Description: Parses Google Calendar feeds and displays the events as a calendar grid or list on a page, post or widget.
15
- * Version: 2.1.7
16
  * Author: Phil Derksen
17
  * Author URI: http://philderksen.com
18
  * License: GPL-2.0+
12
  * Plugin Name: Google Calendar Events
13
  * Plugin URI: https://github.com/pderksen/WP-Google-Calendar-Events
14
  * Description: Parses Google Calendar feeds and displays the events as a calendar grid or list on a page, post or widget.
15
+ * Version: 2.2.0
16
  * Author: Phil Derksen
17
  * Author URI: http://philderksen.com
18
  * License: GPL-2.0+
includes/admin/admin-functions.php CHANGED
@@ -44,13 +44,11 @@ function gce_default_editor_content( $content, $post ) {
44
  add_post_meta( $post->ID, 'gce_retrieve_until', 'end_time' );
45
  add_post_meta( $post->ID, 'gce_cache', 43200 );
46
  add_post_meta( $post->ID, 'gce_paging', 1 );
47
- add_post_meta( $post->ID, 'gce_list_max_num', 7 );
48
- add_post_meta( $post->ID, 'gce_list_max_length', 'days' );
49
  add_post_meta( $post->ID, 'gce_list_start_offset_num', '0' );
50
- add_post_meta( $post->ID, 'gce_feed_start', '1' );
51
- add_post_meta( $post->ID, 'gce_feed_start_interval', 'months' );
52
- add_post_meta( $post->ID, 'gce_feed_end', '2' );
53
  add_post_meta( $post->ID, 'gce_feed_end_interval', 'years' );
 
54
 
55
  // Default Simple Display Options
56
  add_post_meta( $post->ID, 'gce_display_start', 'time' );
44
  add_post_meta( $post->ID, 'gce_retrieve_until', 'end_time' );
45
  add_post_meta( $post->ID, 'gce_cache', 43200 );
46
  add_post_meta( $post->ID, 'gce_paging', 1 );
 
 
47
  add_post_meta( $post->ID, 'gce_list_start_offset_num', '0' );
48
+ add_post_meta( $post->ID, 'gce_feed_end_num', 2 );
49
+ add_post_meta( $post->ID, 'gce_feed_start_num', 1 );
 
50
  add_post_meta( $post->ID, 'gce_feed_end_interval', 'years' );
51
+ add_post_meta( $post->ID, 'gce_show_tooltips', 1 );
52
 
53
  // Default Simple Display Options
54
  add_post_meta( $post->ID, 'gce_display_start', 'time' );
includes/admin/admin-notice.php CHANGED
@@ -1,11 +1,11 @@
1
  <?php
 
2
  /**
3
- * Show important upgrade notice.
4
  *
5
- * @package GCE
6
- * @author Phil Derksen <pderksen@gmail.com>, Nick Young <mycorpweb@gmail.com>
7
- * @license GPL-2.0+
8
- * @copyright 2014 Phil Derksen
9
  */
10
 
11
  // Exit if accessed directly.
@@ -15,12 +15,23 @@ if ( ! defined( 'ABSPATH' ) ) {
15
 
16
  ?>
17
 
18
- <!-- class="updated" or class="error" -->
19
- <div id="gce-admin-notice" class="error">
 
 
 
 
 
 
 
 
 
 
 
 
20
  <p>
21
- <strong>GCal Events Important Update Nov. 17, 2014:</strong><br/>
22
- Google took version 2 of the GCal API offline, which breaks all calendar feed displays.<br/>
23
- <strong><a href="https://wordpress.org/support/topic/nov-17-temporary-easy-embed-display-fix" target="_blank">Here's a temporary fix for your calendar display</a></strong>
24
- while we move the plugin to using the new GCal API this week. Thanks for your patience.
25
  </p>
26
- </div>
1
  <?php
2
+
3
  /**
4
+ * Show notice for API Settings
5
  *
6
+ * @package GCE
7
+ * @subpackage admin/views
8
+ * @author Phil Derksen <pderksen@gmail.com>, Nick Young <mycorpweb@gmail.com>
 
9
  */
10
 
11
  // Exit if accessed directly.
15
 
16
  ?>
17
 
18
+ <style>
19
+ #gce-install-notice .button-secondary {
20
+ margin-left: 15px;
21
+ }
22
+ </style>
23
+
24
+ <div id="gce-install-notice" class="updated">
25
+ <p>
26
+ <h3><?php _e( 'GCal API Key Notice', 'gce' ); ?></h3>
27
+
28
+ <?php _e( 'GCal Events uses the Google Calendar API version 3. By default this plugin uses a public shared key across all plugin users.', 'gce' ); ?>
29
+ <br/><br/>
30
+ <?php _e( 'This key is limited to 500,000 requests per day and 5 requests per second. To avoid running into any potential limits you can use your own Google API key.', 'gce' ); ?>
31
+ </p>
32
  <p>
33
+ <a href="<?php echo admin_url( 'edit.php?post_type=gce_feed&page=google-calendar-events_general_settings' ); ?>" class="button-primary"><?php _e( 'Enter your GCal API key', 'gce' ); ?></a>
34
+ <a href="<?php echo admin_url( 'edit.php?post_type=gce_feed' ); ?>" class="button-secondary"><?php _e( 'Configure GCal feeds', 'gce' ); ?></a>
35
+ <a href="<?php echo add_query_arg( 'gce-dismiss-install-nag', 1 ); ?>" class="button-secondary"><?php _e( 'Hide this', 'gce' ); ?></a>
 
36
  </p>
37
+ </div>
includes/admin/upgrade.php CHANGED
@@ -44,6 +44,10 @@ function gce_upgrade() {
44
  if( version_compare( $version, '2.1.0', '<' ) ) {
45
  gce_v210_upgrade();
46
  }
 
 
 
 
47
  }
48
 
49
  $new_version = Google_Calendar_Events::get_instance()->get_plugin_version();
@@ -52,6 +56,57 @@ function gce_upgrade() {
52
  add_option( 'gce_upgrade_has_run', 1 );
53
  }
54
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  /*
56
  * Run the upgrade to version 2.1.0
57
  */
44
  if( version_compare( $version, '2.1.0', '<' ) ) {
45
  gce_v210_upgrade();
46
  }
47
+
48
+ if( version_compare( $version, '2.2.0', '<' ) ) {
49
+ gce_v220_upgrade();
50
+ }
51
  }
52
 
53
  $new_version = Google_Calendar_Events::get_instance()->get_plugin_version();
56
  add_option( 'gce_upgrade_has_run', 1 );
57
  }
58
 
59
+ function gce_v220_upgrade() {
60
+ // Update feeds
61
+ $q = new WP_Query( 'post_type=gce_feed' );
62
+
63
+ if( $q->have_posts() ) {
64
+ while( $q->have_posts() ) {
65
+
66
+ $q->the_post();
67
+
68
+ $gce_list_max_num = get_post_meta( get_the_ID(), 'gce_list_max_num', true );
69
+ $gce_list_max_length = get_post_meta( get_the_ID(), 'gce_list_max_length', true );
70
+ $gce_feed_start_interval = get_post_meta( get_the_ID(), 'gce_feed_start_interval', true );
71
+ $gce_feed_start = get_post_meta( get_the_ID(), 'gce_feed_start', true );
72
+ $gce_feed_end_interval = get_post_meta( get_the_ID(), 'gce_feed_end_interval', true );
73
+ $gce_feed_end = get_post_meta( get_the_ID(), 'gce_feed_end', true );
74
+
75
+ update_post_meta( get_the_ID(), 'gce_per_page_num', $gce_list_max_num );
76
+ update_post_meta( get_the_ID(), 'gce_events_per_page', $gce_list_max_length );
77
+ update_post_meta( get_the_ID(), 'gce_feed_start', $gce_feed_start_interval );
78
+ update_post_meta( get_the_ID(), 'gce_feed_start_num', $gce_feed_start );
79
+ update_post_meta( get_the_ID(), 'gce_feed_end', $gce_feed_end_interval );
80
+ update_post_meta( get_the_ID(), 'gce_feed_end_num', $gce_feed_end );
81
+
82
+ // Add new show tooltips option checked as default
83
+ update_post_meta( get_the_ID(), 'gce_show_tooltips', 1 );
84
+
85
+ }
86
+ }
87
+
88
+ wp_reset_postdata();
89
+
90
+
91
+ // Update widgets for new UI
92
+ $widget = get_option( 'widget_gce_widget' );
93
+
94
+ if( is_array( $widget ) && ! empty( $widget ) ) {
95
+ foreach( $widget as $a => $b ) {
96
+ if( ! is_array( $b ) ) {
97
+ continue;
98
+ }
99
+
100
+ foreach( $b as $k => $v ) {
101
+ $widget[$a]['per_page_num'] = $widget[$a]['list_max_num'];
102
+ $widget[$a]['events_per_page'] = $widget[$a]['list_max_length'];
103
+ }
104
+ }
105
+
106
+ update_option( 'widget_gce_widget', $widget );
107
+ }
108
+ }
109
+
110
  /*
111
  * Run the upgrade to version 2.1.0
112
  */
includes/class-gce-display.php CHANGED
@@ -11,7 +11,7 @@
11
 
12
  class GCE_Display {
13
 
14
- private $feeds, $merged_feeds;
15
 
16
  public function __construct( $ids, $title_text = null, $sort_order = 'asc' ) {
17
 
@@ -131,7 +131,7 @@ class GCE_Display {
131
 
132
  foreach ( $event_day as $num_in_day => $event ) {
133
  $feed_id = absint( $event->feed->id );
134
- $markup .= '<li class="gce-tooltip-feed-' . $feed_id . '">' . $event->get_event_markup( 'tooltip', $num_in_day, $i ) . '</li>';
135
 
136
  //Add CSS class for the feed from which this event comes. If there are multiple events from the same feed on the same day, the CSS class will only be added once.
137
  $css_classes['feed-' . $feed_id] = 'gce-feed-' . $feed_id;
@@ -198,7 +198,7 @@ class GCE_Display {
198
  *
199
  * @since 2.0.0
200
  */
201
- public function get_list( $grouped = false, $start = null, $paging = null, $paging_interval = null, $start_offset = null, $max_events = null, $paging_type = null ) {
202
  $paging_type = $paging_type;
203
 
204
  $max_length = null;
@@ -216,15 +216,21 @@ class GCE_Display {
216
 
217
  $an_event_feed_id = current( $event_days );
218
  $an_event_feed_id = $an_event_feed_id[0]->feed->id;
219
-
220
  if( $paging_interval == null ) {
221
- $max_num = get_post_meta( $an_event_feed_id, 'gce_list_max_num', true );
222
 
223
  if( $paging_type == null ) {
224
- $max_length = get_post_meta( $an_event_feed_id, 'gce_list_max_length', true );
225
  $paging_type = $max_length;
226
  }
227
  }
 
 
 
 
 
 
228
 
229
  if( $paging === null ) {
230
  $paging = get_post_meta( $an_event_feed_id, 'gce_paging', true );
@@ -238,9 +244,22 @@ class GCE_Display {
238
  if( empty( $max_num ) || $max_num == 0 ) {
239
  $max_num = 7;
240
  }
 
 
241
 
242
  if( $max_length == 'days' ) {
243
  $paging_interval = $max_num * 86400;
 
 
 
 
 
 
 
 
 
 
 
244
  }
245
 
246
  if( $start_offset === null ) {
@@ -263,7 +282,7 @@ class GCE_Display {
263
 
264
  $feeds = implode( $this->id, '-' );
265
 
266
- $markup = '<div class="gce-list" data-gce-start-offset="' . $start_offset . '" data-gce-start="' . ( $start + $paging_interval ) . '" data-gce-paging-interval="' . $paging_interval . '" data-gce-paging="' . $paging . '" data-gce-feeds="' . $feeds . '" data-gce-title="' . stripslashes( $this->title ) . '" data-gce-grouped="' . $grouped . '" data-gce-sort="' . $this->sort . '">' . "\n";
267
 
268
  if( ( $paging != 0 ) && $max_length != 'events' ) {
269
 
@@ -273,16 +292,14 @@ class GCE_Display {
273
  $prev_text = apply_filters( 'gce_prev_text', $prev_text );
274
  $next_text = apply_filters( 'gce_next_text', $next_text );
275
 
276
- $p = '<div class="gce-prev"><a href="#" class="gce-change-month-list" title="' . esc_attr__( 'Previous month', 'gce' ) . '" data-gce-paging-direction="back" data-gce-paging-type="' . $paging_type . '">'. $prev_text . '</a></div>';
277
- $n = '<div class="gce-next"><a href="#" class="gce-change-month-list" title="' . esc_attr__( 'Next month', 'gce' ) . '" data-gce-paging-direction="forward" data-gce-paging-type="' . $paging_type . '">' . $next_text . '</a></div>';
278
 
279
- $markup .= '<caption class="gce-caption">' .
280
- '<div class="gce-navbar">' .
281
  $p .
282
  $n .
283
  '<div class="gce-month-title"></div>' .
284
- '</div>' .
285
- '</caption>' . "\n";
286
  }
287
  $max_count = 1;
288
  $has_events = false;
@@ -328,25 +345,25 @@ class GCE_Display {
328
  if( ( $max_length != 'events' && (( $event->start_time >= $start && // Condition for limited by days
329
  $event->end_time <= $end_time ) ||
330
  ( $event->day_type == 'MWD' &&
331
- $event->start_time > $start &&
332
- $event->start_time < $end_time )
333
  )
334
  ) ||
335
  ( $max_length == 'events' && ( $event->end_time >= $time_now && // Condition for limited by events
336
  $event_counter < $max_events )
337
- )
 
338
  ) {
339
-
340
  if( $show_title && $grouped ) {
341
- $day_markup .= '<div class="gce-list-title">' . stripslashes( $this->title ) . ' ' . date_i18n( $event->feed->date_format, $key ) . '</div>';
342
  $show_title = false;
343
  }
344
 
345
  $day_markup .=
346
- '<div class="gce-feed gce-feed-' . $event->feed->id . '">' .
347
  //If this isn't a grouped list, generate a per-event title with date.
348
  ( ( ! $grouped ) ? ( ( isset( $this->title ) && $this->title !== '' ) )
349
- ? '<div class="gce-list-title">' . stripslashes( $this->title ) . ' ' . date_i18n( $event->feed->date_format, $event->start_time ) . '</div>'
350
  : '' : '' ) .
351
  //Add the event markup
352
  $event->get_event_markup( 'list', $num_in_day, $i ) .
@@ -355,7 +372,7 @@ class GCE_Display {
355
  $has_events = true;
356
  $i++;
357
  $event_counter++;
358
- }
359
  }
360
 
361
  if ( $day_markup != '' ) {
11
 
12
  class GCE_Display {
13
 
14
+ public $feeds, $merged_feeds;
15
 
16
  public function __construct( $ids, $title_text = null, $sort_order = 'asc' ) {
17
 
131
 
132
  foreach ( $event_day as $num_in_day => $event ) {
133
  $feed_id = absint( $event->feed->id );
134
+ $markup .= '<li class="gce-tooltip-feed-' . esc_attr( $feed_id ) . '">' . $event->get_event_markup( 'tooltip', $num_in_day, $i ) . '</li>';
135
 
136
  //Add CSS class for the feed from which this event comes. If there are multiple events from the same feed on the same day, the CSS class will only be added once.
137
  $css_classes['feed-' . $feed_id] = 'gce-feed-' . $feed_id;
198
  *
199
  * @since 2.0.0
200
  */
201
+ public function get_list( $grouped = false, $start = null, $paging = null, $paging_interval = null, $start_offset = null, $max_events = null, $paging_type = null, $max_num = null ) {
202
  $paging_type = $paging_type;
203
 
204
  $max_length = null;
216
 
217
  $an_event_feed_id = current( $event_days );
218
  $an_event_feed_id = $an_event_feed_id[0]->feed->id;
219
+
220
  if( $paging_interval == null ) {
221
+ $max_num = get_post_meta( $an_event_feed_id, 'gce_per_page_num', true );
222
 
223
  if( $paging_type == null ) {
224
+ $max_length = get_post_meta( $an_event_feed_id, 'gce_events_per_page', true );
225
  $paging_type = $max_length;
226
  }
227
  }
228
+
229
+ $use_range = ( get_post_meta( $an_event_feed_id, 'gce_display_mode', true ) == 'date-range' ? true : false );
230
+
231
+ if( $use_range ) {
232
+ $max_length = 'date-range';
233
+ }
234
 
235
  if( $paging === null ) {
236
  $paging = get_post_meta( $an_event_feed_id, 'gce_paging', true );
244
  if( empty( $max_num ) || $max_num == 0 ) {
245
  $max_num = 7;
246
  }
247
+
248
+ $max_length = get_post_meta( $an_event_feed_id, 'gce_events_per_page', true );
249
 
250
  if( $max_length == 'days' ) {
251
  $paging_interval = $max_num * 86400;
252
+ } else if( $max_length == 'week' ) {
253
+ $paging_interval = 604800;
254
+
255
+ // Set week start here too
256
+ $start_of_week = get_option( 'start_of_week' );
257
+ $start = mktime( 0, 0, 0, date( 'm' ), ( date( 'j' ) - date( 'w' ) + $start_of_week ), date( 'Y' ) );
258
+ } else if( $max_length == 'month' ) {
259
+ $paging_interval = 2629743;
260
+
261
+ // Set month start here too
262
+ $start = mktime( 0, 0, 0, date( 'm', current_time( 'timestamp' ) ), 1, date( 'Y', current_time( 'timestamp' ) ) );
263
  }
264
 
265
  if( $start_offset === null ) {
282
 
283
  $feeds = implode( $this->id, '-' );
284
 
285
+ $markup = '<div class="gce-list" data-gce-start-offset="' . esc_attr( $start_offset ) . '" data-gce-start="' . esc_attr( ( $start + $paging_interval ) ) . '" data-gce-paging-interval="' . esc_attr( $paging_interval ) . '" data-gce-paging="' . esc_attr( $paging ) . '" data-gce-feeds="' . esc_attr( $feeds ) . '" data-gce-title="' . esc_attr( stripslashes( $this->title ) ) . '" data-gce-grouped="' . esc_attr( $grouped ) . '" data-gce-sort="' . esc_attr( $this->sort ) . '">' . "\n";
286
 
287
  if( ( $paging != 0 ) && $max_length != 'events' ) {
288
 
292
  $prev_text = apply_filters( 'gce_prev_text', $prev_text );
293
  $next_text = apply_filters( 'gce_next_text', $next_text );
294
 
295
+ $p = '<div class="gce-prev"><a href="#" class="gce-change-month-list" title="' . esc_attr__( 'Previous month', 'gce' ) . '" data-gce-paging-direction="back" data-gce-paging-type="' . esc_attr( $paging_type ) . '">'. esc_html( $prev_text ) . '</a></div>';
296
+ $n = '<div class="gce-next"><a href="#" class="gce-change-month-list" title="' . esc_attr__( 'Next month', 'gce' ) . '" data-gce-paging-direction="forward" data-gce-paging-type="' . esc_attr( $paging_type ) . '">' . esc_html( $next_text ) . '</a></div>';
297
 
298
+ $markup .= '<div class="gce-navbar">' .
 
299
  $p .
300
  $n .
301
  '<div class="gce-month-title"></div>' .
302
+ '</div>' . "\n";
 
303
  }
304
  $max_count = 1;
305
  $has_events = false;
345
  if( ( $max_length != 'events' && (( $event->start_time >= $start && // Condition for limited by days
346
  $event->end_time <= $end_time ) ||
347
  ( $event->day_type == 'MWD' &&
348
+ $event->start_time >= $start &&
349
+ $event->start_time <= $end_time )
350
  )
351
  ) ||
352
  ( $max_length == 'events' && ( $event->end_time >= $time_now && // Condition for limited by events
353
  $event_counter < $max_events )
354
+ ) ||
355
+ ( $max_length == 'date-range' )
356
  ) {
 
357
  if( $show_title && $grouped ) {
358
+ $day_markup .= '<div class="gce-list-title">' . esc_html( stripslashes( $this->title ) ) . ' ' . date_i18n( $event->feed->date_format, $key ) . '</div>';
359
  $show_title = false;
360
  }
361
 
362
  $day_markup .=
363
+ '<div class="gce-feed gce-feed-' . esc_attr( $event->feed->id ) . '">' .
364
  //If this isn't a grouped list, generate a per-event title with date.
365
  ( ( ! $grouped ) ? ( ( isset( $this->title ) && $this->title !== '' ) )
366
+ ? '<div class="gce-list-title">' . esc_html( stripslashes( $this->title ) ) . ' ' . date_i18n( $event->feed->date_format, $event->start_time ) . '</div>'
367
  : '' : '' ) .
368
  //Add the event markup
369
  $event->get_event_markup( 'list', $num_in_day, $i ) .
372
  $has_events = true;
373
  $i++;
374
  $event_counter++;
375
+ }
376
  }
377
 
378
  if ( $day_markup != '' ) {
includes/class-gce-event.php CHANGED
@@ -41,7 +41,11 @@ class GCE_Event {
41
  }
42
  }
43
  } else {
44
- $this->day_type = 'SPD';
 
 
 
 
45
  }
46
  }
47
 
@@ -107,9 +111,7 @@ class GCE_Event {
107
  return $this->use_builder();
108
  }
109
 
110
- // Setup the markup to return
111
- //$display_options = get_option( 'gce_settings_general' );
112
-
113
  $display_options['display_start'] = get_post_meta( $this->feed->id, 'gce_display_start', true );
114
  $display_options['display_start_text'] = get_post_meta( $this->feed->id, 'gce_display_start_text', true );
115
  $display_options['display_end'] = get_post_meta( $this->feed->id, 'gce_display_end', true );
@@ -124,7 +126,7 @@ class GCE_Event {
124
  $display_options['display_separator'] = get_post_meta( $this->feed->id, 'gce_display_separator', true );
125
  $display_options['display_link_target'] = get_post_meta( $this->feed->id, 'gce_display_link_tab', true );
126
 
127
- $markup = '<p class="gce-' . $this->type . '-event">' . esc_html( $this->title ) . '</p>';
128
 
129
  $start_end = array();
130
 
@@ -148,7 +150,7 @@ class GCE_Event {
148
 
149
  //Add the correct start / end, date / time information to $markup
150
  foreach ( $start_end as $start_or_end => $info ) {
151
- $markup .= '<p class="gce-' . $this->type . '-' . $start_or_end . '"><span>' . esc_html( $display_options['display_' . $start_or_end . '_text'] ) . '</span> ';
152
 
153
  if( ! empty( $display_options['display_' . $start_or_end] ) ) {
154
  switch ( $display_options['display_' . $start_or_end] ) {
@@ -169,7 +171,7 @@ class GCE_Event {
169
  if ( ! empty( $display_options['display_location'] ) ) {
170
  $event_location = $this->location;
171
  if ( '' != $event_location )
172
- $markup .= '<p class="gce-' . $this->type . '-loc"><span>' . esc_html( $display_options['display_location_text'] ) . '</span> ' . esc_html( $event_location ) . '</p>';
173
  }
174
 
175
  //If description should be displayed (and is not empty) add to $markup
@@ -183,7 +185,7 @@ class GCE_Event {
183
  $event_desc = trim( $event_desc[0] );
184
  }
185
 
186
- $markup .= '<p class="gce-' . $this->type . '-desc"><span>' . $display_options['display_desc_text'] . '</span> ' . make_clickable( nl2br( esc_html( $event_desc ) ) ) . '</p>';
187
  }
188
  }
189
 
@@ -193,9 +195,14 @@ class GCE_Event {
193
 
194
  $ctz = get_option( 'timezone_string' );
195
 
196
- $link = $this->link . ( ! empty( $ctz ) ? '&ctz=' . $ctz : '' );
 
 
 
 
 
197
 
198
- $markup .= '<p class="gce-' . $this->type . '-link"><a href="' . esc_url( $link ) . '" ' . $target . '>' . esc_html( $display_options['display_link_text'] ) . '</a></p>';
199
  }
200
 
201
  return $markup;
@@ -365,8 +372,15 @@ class GCE_Event {
365
  case 'link':
366
  $new_window = ( $newwindow ) ? ' target="_blank"' : '';
367
  $ctz = get_option( 'timezone_string' );
368
- $link = $this->link . ( ! empty( $ctz ) ? '&ctz=' . $ctz : '' );
369
- return $m[1] . '<a href="' . esc_url( $link ) . '"' . $new_window . '>' . $this->look_for_shortcodes( $m[5] ) . '</a>' . $m[6];
 
 
 
 
 
 
 
370
 
371
  case 'url':
372
  return $m[1] . esc_url( $this->link ) . $m[6];
@@ -379,7 +393,7 @@ class GCE_Event {
379
 
380
  case 'maps-link':
381
  $new_window = ( $newwindow ) ? ' target="_blank"' : '';
382
- return $m[1] . '<a href="' . esc_url( '//maps.google.com?q=' . urlencode( $this->location ) ) . '"' . $new_window . '>' . $this->look_for_shortcodes( $m[5] ) . '</a>' . $m[6];
383
 
384
  case 'length':
385
  return $m[1] . $this->gce_human_time_diff( $this->start_time, $this->end_time, $precision ) . $m[6];
41
  }
42
  }
43
  } else {
44
+ if( date( 'D', $start_time ) == date( 'D', $end_time ) ) {
45
+ $this->day_type = 'SPD';
46
+ } else {
47
+ $this->day_type = 'MPD';
48
+ }
49
  }
50
  }
51
 
111
  return $this->use_builder();
112
  }
113
 
114
+ // Setup the markup to return
 
 
115
  $display_options['display_start'] = get_post_meta( $this->feed->id, 'gce_display_start', true );
116
  $display_options['display_start_text'] = get_post_meta( $this->feed->id, 'gce_display_start_text', true );
117
  $display_options['display_end'] = get_post_meta( $this->feed->id, 'gce_display_end', true );
126
  $display_options['display_separator'] = get_post_meta( $this->feed->id, 'gce_display_separator', true );
127
  $display_options['display_link_target'] = get_post_meta( $this->feed->id, 'gce_display_link_tab', true );
128
 
129
+ $markup = '<p class="gce-' . esc_attr( $this->type ) . '-event">' . esc_html( $this->title ) . '</p>';
130
 
131
  $start_end = array();
132
 
150
 
151
  //Add the correct start / end, date / time information to $markup
152
  foreach ( $start_end as $start_or_end => $info ) {
153
+ $markup .= '<p class="gce-' . esc_attr( $this->type ) . '-' . $start_or_end . '"><span>' . esc_html( $display_options['display_' . $start_or_end . '_text'] ) . '</span> ';
154
 
155
  if( ! empty( $display_options['display_' . $start_or_end] ) ) {
156
  switch ( $display_options['display_' . $start_or_end] ) {
171
  if ( ! empty( $display_options['display_location'] ) ) {
172
  $event_location = $this->location;
173
  if ( '' != $event_location )
174
+ $markup .= '<p class="gce-' . esc_attr( $this->type ) . '-loc"><span>' . esc_html( $display_options['display_location_text'] ) . '</span> ' . esc_html( $event_location ) . '</p>';
175
  }
176
 
177
  //If description should be displayed (and is not empty) add to $markup
185
  $event_desc = trim( $event_desc[0] );
186
  }
187
 
188
+ $markup .= '<p class="gce-' . esc_attr( $this->type ) . '-desc"><span>' . esc_html( $display_options['display_desc_text'] ) . '</span> ' . make_clickable( nl2br( esc_html( $event_desc ) ) ) . '</p>';
189
  }
190
  }
191
 
195
 
196
  $ctz = get_option( 'timezone_string' );
197
 
198
+ // Check if it is a hangouts link first
199
+ if( strpos( $this->link, 'plus.google.com/events/' ) !== false ) {
200
+ $link = $this->link;
201
+ } else {
202
+ $link = $this->link . ( ! empty( $ctz ) ? '&ctz=' . $ctz : '' );
203
+ }
204
 
205
+ $markup .= '<p class="gce-' . esc_attr( $this->type ) . '-link"><a href="' . esc_url( $link ) . '" ' . esc_attr( $target ) . '>' . esc_html( $display_options['display_link_text'] ) . '</a></p>';
206
  }
207
 
208
  return $markup;
372
  case 'link':
373
  $new_window = ( $newwindow ) ? ' target="_blank"' : '';
374
  $ctz = get_option( 'timezone_string' );
375
+
376
+ // Check if it is a hangouts link first
377
+ if( strpos( $this->link, 'plus.google.com/events/' ) !== false ) {
378
+ $link = $this->link;
379
+ } else {
380
+ $link = $this->link . ( ! empty( $ctz ) ? '&ctz=' . $ctz : '' );
381
+ }
382
+
383
+ return $m[1] . '<a href="' . esc_url( $link ) . '"' . esc_attr( $new_window ) . '>' . $this->look_for_shortcodes( $m[5] ) . '</a>' . $m[6];
384
 
385
  case 'url':
386
  return $m[1] . esc_url( $this->link ) . $m[6];
393
 
394
  case 'maps-link':
395
  $new_window = ( $newwindow ) ? ' target="_blank"' : '';
396
+ return $m[1] . '<a href="' . esc_url( '//maps.google.com?q=' . urlencode( $this->location ) ) . '"' . esc_attr( $new_window ) . '>' . $this->look_for_shortcodes( $m[5] ) . '</a>' . $m[6];
397
 
398
  case 'length':
399
  return $m[1] . $this->gce_human_time_diff( $this->start_time, $this->end_time, $precision ) . $m[6];
includes/class-gce-feed.php CHANGED
@@ -21,7 +21,9 @@ class GCE_Feed {
21
  $display_url,
22
  $search_query,
23
  $expand_recurring,
24
- $title;
 
 
25
 
26
  public $events = array();
27
 
@@ -72,6 +74,8 @@ class GCE_Feed {
72
  $this->search_query = get_post_meta( $this->id, 'gce_search_query', true );
73
  $this->expand_recurring = get_post_meta( $this->id, 'gce_expand_recurring', true );
74
  $this->title = get_the_title( $this->id );
 
 
75
  }
76
 
77
  /**
@@ -86,7 +90,7 @@ class GCE_Feed {
86
 
87
  if( empty( $this->feed_url ) ) {
88
  if( current_user_can( 'manage_options' ) ) {
89
- echo '<p>' . __( 'The feed URL has not been set. Please make sure to set it correctly in the Feed settings.', 'gce' ) . '</p>';
90
  }
91
 
92
  return;
@@ -106,9 +110,9 @@ class GCE_Feed {
106
  $query .= '?key=' . $api_key;
107
 
108
 
109
- $args['timeMin'] = urlencode( $this->get_feed_start() );
110
 
111
- $args['timeMax'] = urlencode( $this->get_feed_end() );
112
 
113
  $args['maxResults'] = 10000;
114
 
@@ -161,7 +165,6 @@ class GCE_Feed {
161
  //If decoding was successful
162
  if ( ! empty( $raw_data ) ) {
163
  //If there are some entries (events) to process
164
- //if ( isset( $raw_data['feed']['entry'] ) ) {
165
  //Loop through each event, extracting the relevant information
166
  foreach ( $raw_data['items'] as $event ) {
167
  $id = ( isset( $event['id'] ) ? esc_html( $event['id'] ) : '' );
@@ -227,38 +230,72 @@ class GCE_Feed {
227
 
228
  private function get_feed_start() {
229
 
230
- $start = get_post_meta( $this->id, 'gce_feed_start', true );
231
- $interval = get_post_meta( $this->id, 'gce_feed_start_interval', true );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
232
 
233
  switch( $interval ) {
234
  case 'days':
235
- return date( 'c', time() - ( $start * 86400 ) );
236
  case 'months':
237
- return date( 'c', time() - ( $start * 2629743 ) );
238
  case 'years':
239
- return date( 'c', time() - ( $start * 31556926 ) );
 
 
240
  }
241
 
242
  // fall back just in case. Falls back to 1 year ago
243
- return date( 'c', time() - 31556926 );
244
  }
245
 
246
  private function get_feed_end() {
247
 
248
- $end = get_post_meta( $this->id, 'gce_feed_end', true );
249
- $interval = get_post_meta( $this->id, 'gce_feed_end_interval', true );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
250
 
251
  switch( $interval ) {
252
  case 'days':
253
- return date( 'c', time() + ( $end * 86400 ) );
254
  case 'months':
255
- return date( 'c', time() + ( $end * 2629743 ) );
256
  case 'years':
257
- return date( 'c', time() + ( $end * 31556926 ) );
 
 
258
  }
259
 
260
  // Falls back to 1 year ahead just in case
261
- return date( 'c', time() + 31556926 );
262
  }
263
 
264
  function get_builder() {
21
  $display_url,
22
  $search_query,
23
  $expand_recurring,
24
+ $title,
25
+ $feed_start,
26
+ $feed_end;
27
 
28
  public $events = array();
29
 
74
  $this->search_query = get_post_meta( $this->id, 'gce_search_query', true );
75
  $this->expand_recurring = get_post_meta( $this->id, 'gce_expand_recurring', true );
76
  $this->title = get_the_title( $this->id );
77
+ $this->feed_start = $this->get_feed_start();
78
+ $this->feed_end = $this->get_feed_end();
79
  }
80
 
81
  /**
90
 
91
  if( empty( $this->feed_url ) ) {
92
  if( current_user_can( 'manage_options' ) ) {
93
+ echo '<p>' . __( 'The Google Calendar ID has not been set. Please make sure to set it correctly in the Feed settings.', 'gce' ) . '</p>';
94
  }
95
 
96
  return;
110
  $query .= '?key=' . $api_key;
111
 
112
 
113
+ $args['timeMin'] = urlencode( date( 'c', $this->feed_start ) );
114
 
115
+ $args['timeMax'] = urlencode( date( 'c', $this->feed_end ) );
116
 
117
  $args['maxResults'] = 10000;
118
 
165
  //If decoding was successful
166
  if ( ! empty( $raw_data ) ) {
167
  //If there are some entries (events) to process
 
168
  //Loop through each event, extracting the relevant information
169
  foreach ( $raw_data['items'] as $event ) {
170
  $id = ( isset( $event['id'] ) ? esc_html( $event['id'] ) : '' );
230
 
231
  private function get_feed_start() {
232
 
233
+ $use_range = ( get_post_meta( $this->id, 'gce_display_mode', true ) == 'date-range' ? true : false );
234
+
235
+ if( $use_range ) {
236
+ $start = get_post_meta( $this->id, 'gce_feed_range_start', true );
237
+
238
+ $start = gce_date_unix( $start );
239
+
240
+ $interval = 'date-range';
241
+
242
+ } else {
243
+ $start = get_post_meta( $this->id, 'gce_feed_start_num', true );
244
+ $interval = get_post_meta( $this->id, 'gce_feed_start', true );
245
+
246
+ if( empty( $start ) ) {
247
+ $start = 1;
248
+ }
249
+ }
250
 
251
  switch( $interval ) {
252
  case 'days':
253
+ return time() - ( $start * 86400 );
254
  case 'months':
255
+ return time() - ( $start * 2629743 );
256
  case 'years':
257
+ return time() - ( $start * 31556926 );
258
+ case 'date-range':
259
+ return $start;
260
  }
261
 
262
  // fall back just in case. Falls back to 1 year ago
263
+ return time() - 31556926;
264
  }
265
 
266
  private function get_feed_end() {
267
 
268
+ $use_range = ( get_post_meta( $this->id, 'gce_display_mode', true ) == 'date-range' ? true : false );
269
+
270
+ if( $use_range ) {
271
+ $end = get_post_meta( $this->id, 'gce_feed_range_end', true );
272
+
273
+ $end = gce_date_unix( $end );
274
+
275
+ $interval = 'date-range';
276
+
277
+ } else {
278
+ $end = get_post_meta( $this->id, 'gce_feed_end_num', true );
279
+ $interval = get_post_meta( $this->id, 'gce_feed_end', true );
280
+
281
+ if( empty( $end ) ) {
282
+ $end = 1;
283
+ }
284
+ }
285
 
286
  switch( $interval ) {
287
  case 'days':
288
+ return time() + ( $end * 86400 );
289
  case 'months':
290
+ return time() + ( $end * 2629743 );
291
  case 'years':
292
+ return time() + ( $end * 31556926 );
293
+ case 'date-range':
294
+ return mktime( 23, 59, 59, date( 'n', $end ), date( 'j', $end ), date( 'Y', $end ) );
295
  }
296
 
297
  // Falls back to 1 year ahead just in case
298
+ return time() + 31556926;
299
  }
300
 
301
  function get_builder() {
includes/gce-feed-cpt.php CHANGED
@@ -66,7 +66,7 @@ add_action( 'init', 'gce_setup_cpt' );
66
  function gce_feed_messages( $messages ) {
67
  global $post, $post_ID;
68
 
69
- $url1 = '<a href="' . get_permalink( $post_ID ) . '">';
70
  $url2 = __( 'feed', 'gce' );
71
  $url3 = '</a>';
72
  $s1 = __( 'Feed', 'gce' );
@@ -153,15 +153,23 @@ function gce_save_meta( $post_id ) {
153
  'gce_custom_until',
154
  'gce_search_query',
155
  'gce_expand_recurring',
 
156
  'gce_paging',
157
- 'gce_list_max_num',
158
- 'gce_list_max_length',
 
 
159
  'gce_list_start_offset_num',
160
  'gce_list_start_offset_direction',
161
  'gce_feed_start',
162
- 'gce_feed_start_interval',
 
163
  'gce_feed_end',
164
- 'gce_feed_end_interval',
 
 
 
 
165
  // Display options
166
  'gce_display_start',
167
  'gce_display_start_text',
@@ -194,7 +202,10 @@ function gce_save_meta( $post_id ) {
194
  $id = str_replace( '/public/basic', '', $id );
195
  $id = str_replace( '%40', '@', $id );
196
 
197
- update_post_meta( $post_id, $pmf, trim( $id ) );
 
 
 
198
  } else {
199
  update_post_meta( $post_id, $pmf, stripslashes( $_POST[$pmf] ) );
200
  }
@@ -241,7 +252,7 @@ function gce_column_content( $column_name, $post_ID ) {
241
  echo $post_ID;
242
  break;
243
  case 'feed-sc':
244
- echo '<code>[gcal id="' . $post_ID . '"]</code>';
245
  break;
246
  case 'display-type':
247
  $display = get_post_meta( $post_ID, 'gce_display_mode', true );
66
  function gce_feed_messages( $messages ) {
67
  global $post, $post_ID;
68
 
69
+ $url1 = '<a href="' . esc_url( get_permalink( $post_ID ) ) . '">';
70
  $url2 = __( 'feed', 'gce' );
71
  $url3 = '</a>';
72
  $s1 = __( 'Feed', 'gce' );
153
  'gce_custom_until',
154
  'gce_search_query',
155
  'gce_expand_recurring',
156
+ 'gce_show_tooltips',
157
  'gce_paging',
158
+ 'gce_events_per_page',
159
+ 'gce_per_page_num',
160
+ 'gce_per_page_from',
161
+ 'gce_per_page_to',
162
  'gce_list_start_offset_num',
163
  'gce_list_start_offset_direction',
164
  'gce_feed_start',
165
+ 'gce_feed_start_num',
166
+ 'gce_feed_start_custom',
167
  'gce_feed_end',
168
+ 'gce_feed_end_num',
169
+ 'gce_feed_end_custom',
170
+ 'gce_feed_use_range',
171
+ 'gce_feed_range_start',
172
+ 'gce_feed_range_end',
173
  // Display options
174
  'gce_display_start',
175
  'gce_display_start_text',
202
  $id = str_replace( '/public/basic', '', $id );
203
  $id = str_replace( '%40', '@', $id );
204
 
205
+ // decode first before re-encoding it
206
+ $id = urldecode( $id );
207
+
208
+ update_post_meta( $post_id, $pmf, urlencode( trim( $id ) ) );
209
  } else {
210
  update_post_meta( $post_id, $pmf, stripslashes( $_POST[$pmf] ) );
211
  }
252
  echo $post_ID;
253
  break;
254
  case 'feed-sc':
255
+ echo '<code>[gcal id="' . esc_attr( $post_ID ) . '"]</code>';
256
  break;
257
  case 'display-type':
258
  $display = get_post_meta( $post_ID, 'gce_display_mode', true );
includes/misc-functions.php CHANGED
@@ -5,20 +5,19 @@
5
  *
6
  * @since 2.0.0
7
  */
8
- function gce_print_calendar( $feed_ids, $display = 'grid', $args = array(), $widget = false ) {
 
 
 
 
 
 
9
 
10
  // Load scripts
11
  wp_enqueue_script( GCE_PLUGIN_SLUG . '-images-loaded' );
12
  wp_enqueue_script( GCE_PLUGIN_SLUG . '-qtip' );
13
  wp_enqueue_script( GCE_PLUGIN_SLUG . '-public' );
14
 
15
- wp_localize_script( GCE_PLUGIN_SLUG . '-public', 'gce',
16
- array(
17
- 'ajaxurl' => admin_url( 'admin-ajax.php' ),
18
- 'ajaxnonce' => wp_create_nonce( 'gce_ajax_nonce' ),
19
- 'loadingText' => __( 'Loading...', 'gce' )
20
- ) );
21
-
22
  $defaults = array(
23
  'title_text' => '',
24
  'sort' => 'asc',
@@ -30,7 +29,10 @@ function gce_print_calendar( $feed_ids, $display = 'grid', $args = array(), $wid
30
  'max_events' => null,
31
  'start_offset' => null,
32
  'paging_type' => null,
33
- 'paging' => null
 
 
 
34
  );
35
 
36
  $args = array_merge( $defaults, $args );
@@ -44,6 +46,10 @@ function gce_print_calendar( $feed_ids, $display = 'grid', $args = array(), $wid
44
  $markup = '';
45
  $start = current_time( 'timestamp' );
46
 
 
 
 
 
47
  if( $widget ) {
48
  foreach( $ids as $f ) {
49
  $paging = get_post_meta( $f, 'gce_paging_widget', true );
@@ -62,38 +68,59 @@ function gce_print_calendar( $feed_ids, $display = 'grid', $args = array(), $wid
62
  if( $paging === null ) {
63
  $paging = get_post_meta( $id, 'gce_paging', true );
64
  }
 
 
 
 
 
 
 
 
 
 
 
 
65
  }
66
 
67
  if( 'grid' == $display ) {
68
-
69
  global $localize;
70
 
71
- $target = ( $widget == 1 ? 'gce-widget-' : 'gce-page-grid-' ) . $feed_ids;
72
 
73
  $localize[$target] = array(
74
  'target_element' => $target,
75
- 'feed_ids' => $feed_ids,
76
- 'title_text' => $title_text,
77
- 'type' => ( $widget == 1 ? 'widget' : 'page' )
 
78
  );
79
 
80
- wp_localize_script( GCE_PLUGIN_SLUG . '-public', 'gce_grid', $localize );
81
-
82
  if( $widget == 1 ) {
83
- $markup .= '<div class="gce-widget-grid" id="gce-widget-' . $feed_ids . '">';
84
  } else {
85
- $markup .= '<div class="gce-page-grid" id="gce-page-grid-' . $feed_ids . '">';
86
  }
87
 
88
  $markup .= $d->get_grid( $year, $month, $widget, $paging );
89
  $markup .= '</div>';
 
90
 
91
  } else if( 'list' == $display || 'list-grouped' == $display ) {
92
 
93
  if( $widget ) {
94
- $markup = '<div class="gce-widget-list" id="gce-widget-list-' . $feed_ids . '">' . $d->get_list( $grouped, ( $start + $start_offset ), $paging, $paging_interval, $start_offset, $max_events, $paging_type ) . '</div>';
95
  } else {
96
- $markup = '<div class="gce-page-list" id="gce-page-list-' . $feed_ids . '">' . $d->get_list( $grouped, ( $start + $start_offset ), $paging, $paging_interval, $start_offset, $max_events, $paging_type ) . '</div>';
 
 
 
 
 
 
 
 
 
97
  }
98
  }
99
 
@@ -106,7 +133,9 @@ function gce_print_calendar( $feed_ids, $display = 'grid', $args = array(), $wid
106
  $i++;
107
  }
108
  }
109
-
 
 
110
  return $markup;
111
  }
112
 
@@ -123,16 +152,20 @@ function gce_ajax() {
123
  die( 'Request has failed.' );
124
  }
125
 
126
- $ids = esc_html( $_POST['gce_feed_ids'] );
127
- $title = esc_html( $_POST['gce_title_text'] );
128
- $month = esc_html( $_POST['gce_month'] );
129
- $year = esc_html( $_POST['gce_year'] );
130
- $paging = esc_html( $_POST['gce_paging'] );
131
- $type = esc_html( $_POST['gce_type'] );
 
 
 
 
132
 
133
- $title = ( 'null' == $title ) ? null : $title;
134
 
135
- $args = array(
136
  'title_text' => $title,
137
  'month' => $month,
138
  'year' => $year,
@@ -140,10 +173,10 @@ function gce_ajax() {
140
  );
141
 
142
  if ( 'page' == $type ) {
143
- echo gce_print_calendar( $ids, 'grid', $args );
144
  } elseif ( 'widget' == $type ) {
145
  $args['widget'] = 1;
146
- echo gce_print_calendar( $ids, 'grid', $args );
147
  }
148
 
149
  die();
@@ -164,7 +197,7 @@ function gce_ajax_list() {
164
  if( ! check_ajax_referer( 'gce_ajax_nonce', 'gce_nonce' ) ) {
165
  die( 'Request has failed.' );
166
  }
167
-
168
  $grouped = esc_html( $_POST['gce_grouped'] );
169
  $start = esc_html( $_POST['gce_start'] );
170
  $ids = esc_html( $_POST['gce_feed_ids'] );
@@ -216,7 +249,7 @@ function gce_feed_content( $content ) {
216
  global $post;
217
 
218
  if( $post->post_type == 'gce_feed' ) {
219
- $content = '[gcal id="' . $post->ID . '"]';
220
  }
221
 
222
  return $content;
@@ -243,6 +276,20 @@ function gce_ga_campaign_url( $base_url, $source, $medium, $campaign ) {
243
  'utm_campaign' => $campaign
244
  ), $base_url );
245
 
246
- return $url;
247
  }
248
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  *
6
  * @since 2.0.0
7
  */
8
+ function gce_print_calendar( $feed_ids, $display = 'grid', $args = array(), $widget = false, $uid = null ) {
9
+
10
+ // Set static unique ID for setting id attributes
11
+ if( $uid == null ) {
12
+ STATIC $uid = 1;
13
+ }
14
+
15
 
16
  // Load scripts
17
  wp_enqueue_script( GCE_PLUGIN_SLUG . '-images-loaded' );
18
  wp_enqueue_script( GCE_PLUGIN_SLUG . '-qtip' );
19
  wp_enqueue_script( GCE_PLUGIN_SLUG . '-public' );
20
 
 
 
 
 
 
 
 
21
  $defaults = array(
22
  'title_text' => '',
23
  'sort' => 'asc',
29
  'max_events' => null,
30
  'start_offset' => null,
31
  'paging_type' => null,
32
+ 'paging' => null,
33
+ 'max_num' => null,
34
+ 'range_start' => null,
35
+ 'show_tooltips' => null
36
  );
37
 
38
  $args = array_merge( $defaults, $args );
46
  $markup = '';
47
  $start = current_time( 'timestamp' );
48
 
49
+ if( $range_start === null ) {
50
+ $range_start = $d->feeds[$feed_ids]->feed_start;
51
+ }
52
+
53
  if( $widget ) {
54
  foreach( $ids as $f ) {
55
  $paging = get_post_meta( $f, 'gce_paging_widget', true );
68
  if( $paging === null ) {
69
  $paging = get_post_meta( $id, 'gce_paging', true );
70
  }
71
+
72
+ if( empty( $show_tooltips ) && $show_tooltips != 0 ) {
73
+ $tooltips = get_post_meta( $id, 'gce_show_tooltips', true );
74
+ } else {
75
+ $tooltips = $show_tooltips;
76
+ }
77
+
78
+ if( ! empty( $tooltips ) && ( $tooltips === true || $tooltips == 'true' || $tooltips == '1' || $tooltips == 1 ) ) {
79
+ $show_tooltips = 'true';
80
+ } else {
81
+ $show_tooltips = 'false';
82
+ }
83
  }
84
 
85
  if( 'grid' == $display ) {
86
+
87
  global $localize;
88
 
89
+ $target = 'gce-' . $uid;
90
 
91
  $localize[$target] = array(
92
  'target_element' => $target,
93
+ 'feed_ids' => $feed_ids,
94
+ 'title_text' => $title_text,
95
+ 'type' => ( $widget == 1 ? 'widget' : 'page' ),
96
+ 'show_tooltips' => ( $show_tooltips == 'true' || $show_tooltips == '1' ? 'true' : 'false' )
97
  );
98
 
 
 
99
  if( $widget == 1 ) {
100
+ $markup .= '<div class="gce-widget-grid gce-widget-' . esc_attr( $feed_ids ) . '" id="gce-' . $uid . '">';
101
  } else {
102
+ $markup .= '<div class="gce-page-grid gce-page-grid-' . esc_attr( $feed_ids ) . '" id="gce-' . $uid . '">';
103
  }
104
 
105
  $markup .= $d->get_grid( $year, $month, $widget, $paging );
106
  $markup .= '</div>';
107
+
108
 
109
  } else if( 'list' == $display || 'list-grouped' == $display ) {
110
 
111
  if( $widget ) {
112
+ $markup = '<div class="gce-widget-list gce-widget-list-' . esc_attr( $feed_ids ) . '" id="gce-' . $uid . '">' . $d->get_list( $grouped, ( $start + $start_offset ), $paging, $paging_interval, $start_offset, $max_events, $paging_type, $max_num ) . '</div>';
113
  } else {
114
+ $markup = '<div class="gce-page-list gce-page-list-' . esc_attr( $feed_ids ) . '" id="gce-' . $uid . '">' . $d->get_list( $grouped, ( $start + $start_offset ), $paging, $paging_interval, $start_offset, $max_events, $paging_type ) . '</div>';
115
+ }
116
+ } else if( 'date-range' == $display ) {
117
+
118
+ $paging_interval = 'date-range';
119
+
120
+ if( $widget ) {
121
+ $markup = '<div class="gce-widget-list gce-widget-list-' . esc_attr( $feed_ids ) . '" id="gce-' . $uid . '">' . $d->get_list( $grouped, $range_start, false, $paging_interval, $start_offset, INF, $paging_type, $max_num ) . '</div>';
122
+ } else {
123
+ $markup = '<div class="gce-page-list gce-page-list-' . esc_attr( $feed_ids ) . '" id="gce-' . $uid . '">' . $d->get_list( $grouped, $range_start, false, $paging_interval, $start_offset, INF, $paging_type, INF ) . '</div>';
124
  }
125
  }
126
 
133
  $i++;
134
  }
135
  }
136
+
137
+ $uid++;
138
+
139
  return $markup;
140
  }
141
 
152
  die( 'Request has failed.' );
153
  }
154
 
155
+ $uid = esc_html( $_POST['gce_uid'] );
156
+ $ids = esc_html( $_POST['gce_feed_ids'] );
157
+ $title = esc_html( $_POST['gce_title_text'] );
158
+ $month = esc_html( $_POST['gce_month'] );
159
+ $year = esc_html( $_POST['gce_year'] );
160
+ $paging = esc_html( $_POST['gce_paging'] );
161
+ $type = esc_html( $_POST['gce_type'] );
162
+
163
+ // Split ID and pass as UID to function
164
+ $uid = explode( '-', $uid );
165
 
166
+ $title = ( 'null' == $title ) ? null : $title;
167
 
168
+ $args = array(
169
  'title_text' => $title,
170
  'month' => $month,
171
  'year' => $year,
173
  );
174
 
175
  if ( 'page' == $type ) {
176
+ echo gce_print_calendar( $ids, 'grid', $args, 0, $uid[1] );
177
  } elseif ( 'widget' == $type ) {
178
  $args['widget'] = 1;
179
+ echo gce_print_calendar( $ids, 'grid', $args, 1, $uid[1] );
180
  }
181
 
182
  die();
197
  if( ! check_ajax_referer( 'gce_ajax_nonce', 'gce_nonce' ) ) {
198
  die( 'Request has failed.' );
199
  }
200
+
201
  $grouped = esc_html( $_POST['gce_grouped'] );
202
  $start = esc_html( $_POST['gce_start'] );
203
  $ids = esc_html( $_POST['gce_feed_ids'] );
249
  global $post;
250
 
251
  if( $post->post_type == 'gce_feed' ) {
252
+ $content = '[gcal id="' . esc_attr( $post->ID ) . '"]';
253
  }
254
 
255
  return $content;
276
  'utm_campaign' => $campaign
277
  ), $base_url );
278
 
279
+ return esc_url( $url );
280
  }
281
 
282
+ /**
283
+ * Function to convert date format mm/dd/YYYY to unix timestamp
284
+ */
285
+ function gce_date_unix( $date ) {
286
+ $date = explode( '/', $date );
287
+
288
+ $month = $date[0];
289
+ $day = $date[1];
290
+ $year = $date[2];
291
+
292
+ $timestamp = mktime( 0, 0, 0, $month, $day, $year );
293
+
294
+ return $timestamp;
295
+ }
includes/php-calendar.php CHANGED
@@ -52,15 +52,15 @@ function gce_generate_calendar( $year, $month, $days = array(), $day_name_length
52
  $n = apply_filters( 'gce_next_text', $n );
53
 
54
  if( $widget ) {
55
- $p = '<div class="gce-prev">' . ( ( $pl ) ? ( '<a href="#" class="gce-change-month" title="' . esc_attr__( 'Previous month', 'gce' ) . '" name="' . $pl . '" data-gce-grid-paging="' . $paging . '">' . $p . '</a>' ) : $p ) . '</div>';
56
  } else {
57
- $p = '<div class="gce-prev">' . ( ( $pl ) ? ( '<a href="#" class="gce-change-month" title="' . esc_attr__( 'Previous month', 'gce' ) . '" name="' . $pl . '" data-gce-grid-paging="' . $paging . '">' . $p . '</a>' ) : $p ) . '</div>';
58
  }
59
 
60
  if( $widget ) {
61
- $n = '<div class="gce-next">' . ( ( $nl ) ? ( '<a href="#" class="gce-change-month" title="' . esc_attr__( 'Next month', 'gce' ) . '" name="' . $nl . '" data-gce-grid-paging="' . $paging . '">' . $n . '</a>' ) : $n ) . '</div>';
62
  } else {
63
- $n = '<div class="gce-next">' . ( ( $nl ) ? ( '<a href="#" class="gce-change-month" title="' . esc_attr__( 'Next month', 'gce' ) . '" name="' . $nl . '" data-gce-grid-paging="' . $paging . '">' . $n . '</a>' ) : $n ) . '</div>';
64
  }
65
 
66
  $calendar = '<table class="gce-calendar">' . "\n" .
@@ -68,7 +68,7 @@ function gce_generate_calendar( $year, $month, $days = array(), $day_name_length
68
  '<div class="gce-navbar">' .
69
  $p .
70
  $n .
71
- '<div class="gce-month-title">' . ( ( $month_href ) ? ( '<a href="' . esc_attr( $month_href ) . '">' . $title . '</a>' ) : $title ) . '</div>' .
72
  '</div>' .
73
  '</caption>' . "\n" .
74
  '<tr>' . "\n";
@@ -85,7 +85,7 @@ function gce_generate_calendar( $year, $month, $days = array(), $day_name_length
85
  $time_now = current_time( 'timestamp' );
86
  $today = mktime( 0, 0, 0, date( 'm', $time_now ), date( 'd', $time_now ), date( 'Y', $time_now ) );
87
 
88
- if ( $weekday > 0 ) $calendar .= '<td colspan="' . $weekday . '">&nbsp;</td>'; #initial 'empty' days
89
  for ( $day = 1, $days_in_month = date( 't', $first_of_month ); $day <= $days_in_month; $day++, $weekday++ ) {
90
  if ( 7 == $weekday ) {
91
  $weekday = 0; #start a new week
@@ -96,14 +96,14 @@ function gce_generate_calendar( $year, $month, $days = array(), $day_name_length
96
 
97
  if ( isset( $days[$timestamp] ) && is_array( $days[$timestamp] ) ) {
98
  list( $link, $classes, $content ) = $days[$timestamp];
99
- $calendar .= '<td' . ( ( $classes ) ? ( ' class="' . $classes . '">' ) : '>' ) . ( ( $link ) ? ( '<a href="' . $link . '"><span class="gce-day-number">' . $day . '</span></a>' . $content ) : '<span class="gce-day-number">' . $day . '</span>' . $content ) . '</td>';
100
  }else{
101
  $css_class = ( $timestamp < $time_now ) ? 'gce-day-past' : 'gce-day-future';
102
- $calendar .= '<td class="' . $css_class . '"><span class="gce-day-number">' . $day . '</span></td>';
103
  }
104
  }
105
 
106
- if ( 7 != $weekday ) $calendar .= '<td colspan="' . ( 7 - $weekday ) . '">&nbsp;</td>'; #remaining "empty" days
107
 
108
  return $calendar . "</tr>\n</table>\n";
109
  }
52
  $n = apply_filters( 'gce_next_text', $n );
53
 
54
  if( $widget ) {
55
+ $p = '<div class="gce-prev">' . ( ( $pl ) ? ( '<a href="#" class="gce-change-month" title="' . esc_attr__( 'Previous month', 'gce' ) . '" name="' . esc_attr( $pl ) . '" data-gce-grid-paging="' . esc_attr( $paging ) . '">' . $p . '</a>' ) : $p ) . '</div>';
56
  } else {
57
+ $p = '<div class="gce-prev">' . ( ( $pl ) ? ( '<a href="#" class="gce-change-month" title="' . esc_attr__( 'Previous month', 'gce' ) . '" name="' . esc_attr( $pl ) . '" data-gce-grid-paging="' . esc_attr( $paging ) . '">' . $p . '</a>' ) : $p ) . '</div>';
58
  }
59
 
60
  if( $widget ) {
61
+ $n = '<div class="gce-next">' . ( ( $nl ) ? ( '<a href="#" class="gce-change-month" title="' . esc_attr__( 'Next month', 'gce' ) . '" name="' . esc_attr( $nl ) . '" data-gce-grid-paging="' . esc_attr( $paging ) . '">' . $n . '</a>' ) : $n ) . '</div>';
62
  } else {
63
+ $n = '<div class="gce-next">' . ( ( $nl ) ? ( '<a href="#" class="gce-change-month" title="' . esc_attr__( 'Next month', 'gce' ) . '" name="' . esc_attr( $nl ) . '" data-gce-grid-paging="' . esc_attr( $paging ) . '">' . $n . '</a>' ) : $n ) . '</div>';
64
  }
65
 
66
  $calendar = '<table class="gce-calendar">' . "\n" .
68
  '<div class="gce-navbar">' .
69
  $p .
70
  $n .
71
+ '<div class="gce-month-title">' . ( ( $month_href ) ? ( '<a href="' . esc_attr( $month_href ) . '">' . esc_html( $title ) . '</a>' ) : esc_html( $title ) ) . '</div>' .
72
  '</div>' .
73
  '</caption>' . "\n" .
74
  '<tr>' . "\n";
85
  $time_now = current_time( 'timestamp' );
86
  $today = mktime( 0, 0, 0, date( 'm', $time_now ), date( 'd', $time_now ), date( 'Y', $time_now ) );
87
 
88
+ if ( $weekday > 0 ) $calendar .= '<td colspan="' . esc_attr( $weekday ) . '">&nbsp;</td>'; #initial 'empty' days
89
  for ( $day = 1, $days_in_month = date( 't', $first_of_month ); $day <= $days_in_month; $day++, $weekday++ ) {
90
  if ( 7 == $weekday ) {
91
  $weekday = 0; #start a new week
96
 
97
  if ( isset( $days[$timestamp] ) && is_array( $days[$timestamp] ) ) {
98
  list( $link, $classes, $content ) = $days[$timestamp];
99
+ $calendar .= '<td' . ( ( $classes ) ? ( ' class="' . esc_attr( $classes ) . '">' ) : '>' ) . ( ( $link ) ? ( '<a href="' . esc_url( $link ) . '"><span class="gce-day-number">' . esc_html( $day ) . '</span></a>' . $content ) : '<span class="gce-day-number">' . esc_html( $day ) . '</span>' . $content ) . '</td>';
100
  }else{
101
  $css_class = ( $timestamp < $time_now ) ? 'gce-day-past' : 'gce-day-future';
102
+ $calendar .= '<td class="' . esc_attr( $css_class ) . '"><span class="gce-day-number">' . esc_html( $day ) . '</span></td>';
103
  }
104
  }
105
 
106
+ if ( 7 != $weekday ) $calendar .= '<td colspan="' . esc_attr( ( 7 - $weekday ) ) . '">&nbsp;</td>'; #remaining "empty" days
107
 
108
  return $calendar . "</tr>\n</table>\n";
109
  }
includes/register-settings.php CHANGED
@@ -112,11 +112,11 @@ function gce_checkbox_callback( $args ) {
112
  global $gce_options;
113
 
114
  $checked = isset( $gce_options[$args['id']] ) ? checked( 1, $gce_options[$args['id']], false ) : '';
115
- $html = "\n" . '<input type="checkbox" id="gce_settings_' . $args['section'] . '[' . $args['id'] . ']" name="gce_settings_' . $args['section'] . '[' . $args['id'] . ']" value="1" ' . $checked . '/>' . "\n";
116
 
117
  // Render description text directly to the right in a label if it exists.
118
  if ( ! empty( $args['desc'] ) )
119
- $html .= '<label for="gce_settings_' . $args['section'] . '[' . $args['id'] . ']"> ' . $args['desc'] . '</label>' . "\n";
120
 
121
  echo $html;
122
  }
@@ -138,7 +138,7 @@ function gce_text_callback( $args ) {
138
  $value = isset( $args['std'] ) ? $args['std'] : '';
139
 
140
  $size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : '';
141
- $html = "\n" . '<input type="text" class="' . $size . '" id="gce_settings_' . $args['section'] . '[' . $args['id'] . ']" name="gce_settings_' . $args['section'] . '[' . $args['id'] . ']" value="' . esc_attr( $value ) . '"/>' . "\n";
142
 
143
  // Render and style description text underneath if it exists.
144
  if ( ! empty( $args['desc'] ) ) {
112
  global $gce_options;
113
 
114
  $checked = isset( $gce_options[$args['id']] ) ? checked( 1, $gce_options[$args['id']], false ) : '';
115
+ $html = "\n" . '<input type="checkbox" id="gce_settings_' . esc_attr( $args['section'] ) . '[' . esc_attr( $args['id'] ) . ']" name="gce_settings_' . esc_attr( $args['section'] ) . '[' . esc_attr( $args['id'] ) . ']" value="1" ' . $checked . '/>' . "\n";
116
 
117
  // Render description text directly to the right in a label if it exists.
118
  if ( ! empty( $args['desc'] ) )
119
+ $html .= '<label for="gce_settings_' . esc_attr( $args['section'] ) . '[' . esc_attr( $args['id'] ) . ']"> ' . $args['desc'] . '</label>' . "\n";
120
 
121
  echo $html;
122
  }
138
  $value = isset( $args['std'] ) ? $args['std'] : '';
139
 
140
  $size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : '';
141
+ $html = "\n" . '<input type="text" class="' . esc_attr( $size ) . '" id="gce_settings_' . esc_attr( $args['section'] ) . '[' . esc_attr( $args['id'] ) . ']" name="gce_settings_' . esc_attr( $args['section'] ) . '[' . esc_attr( $args['id'] ) . ']" value="' . esc_attr( $value ) . '"/>' . "\n";
142
 
143
  // Render and style description text underneath if it exists.
144
  if ( ! empty( $args['desc'] ) ) {
includes/shortcodes.php CHANGED
@@ -28,7 +28,8 @@ function gce_gcal_shortcode( $attr ) {
28
  'interval' => null,
29
  'interval_count' => null,
30
  'offset_interval_count' => null,
31
- 'offset_direction' => null
 
32
  ), $attr, 'gce_feed' ) );
33
 
34
  // If no ID is specified then return
@@ -36,6 +37,8 @@ function gce_gcal_shortcode( $attr ) {
36
  return;
37
  }
38
 
 
 
39
  $paging_interval = null;
40
  $max_events = null;
41
 
@@ -59,11 +62,11 @@ function gce_gcal_shortcode( $attr ) {
59
  }
60
 
61
  if( $interval == null ) {
62
- $interval = get_post_meta( $v, 'gce_list_max_length', true );
63
  }
64
 
65
  if( $interval_count == null ) {
66
- $interval_count = get_post_meta( $v, 'gce_list_max_num', true );
67
  }
68
 
69
  if( $offset_interval_count == null ) {
@@ -77,6 +80,20 @@ function gce_gcal_shortcode( $attr ) {
77
  if( $paging == null ) {
78
  $paging = get_post_meta( $v, 'gce_paging', true );
79
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
  }
81
 
82
  if( $paging == 'false' ) {
@@ -95,11 +112,15 @@ function gce_gcal_shortcode( $attr ) {
95
  $start_offset = $offset_interval_count * 86400 * $offset_direction;
96
 
97
  if( $interval == 'days' ) {
98
- $paging_interval = $interval_count * 86400;
99
  $paging_type = 'days';
100
  } else if( $interval == 'events' ) {
101
  $max_events = $interval_count;
102
  $paging_type = 'events';
 
 
 
 
103
  }
104
 
105
  // Port over old options
@@ -116,15 +137,16 @@ function gce_gcal_shortcode( $attr ) {
116
  }
117
 
118
  $args = array(
119
- 'title_text' => $title,
120
- 'sort' => $order,
121
- 'grouped' => ( $display == 'list-grouped' ? 1 : 0 ),
122
- 'month' => null,
123
- 'year' => null,
124
- 'widget' => 0,
125
  'paging_interval' => $paging_interval,
126
- 'max_events' => $max_events,
127
- 'paging' => $paging
 
128
  );
129
 
130
  $args['start_offset'] = $start_offset;
28
  'interval' => null,
29
  'interval_count' => null,
30
  'offset_interval_count' => null,
31
+ 'offset_direction' => null,
32
+ 'show_tooltips' => null
33
  ), $attr, 'gce_feed' ) );
34
 
35
  // If no ID is specified then return
37
  return;
38
  }
39
 
40
+ $invalid_id = false;
41
+
42
  $paging_interval = null;
43
  $max_events = null;
44
 
62
  }
63
 
64
  if( $interval == null ) {
65
+ $interval = get_post_meta( $v, 'gce_events_per_page', true );
66
  }
67
 
68
  if( $interval_count == null ) {
69
+ $interval_count = get_post_meta( $v, 'gce_per_page_num', true );
70
  }
71
 
72
  if( $offset_interval_count == null ) {
80
  if( $paging == null ) {
81
  $paging = get_post_meta( $v, 'gce_paging', true );
82
  }
83
+
84
+ if( $show_tooltips == null ) {
85
+ $show_tooltips = get_post_meta( $v, 'gce_show_tooltips', true );
86
+ }
87
+
88
+ if( ! ( 'publish' == get_post_status( $v ) ) ) {
89
+ $invalid_id = true;
90
+ }
91
+ }
92
+
93
+ if( $invalid_id ) {
94
+ if( current_user_can( 'manage_options' ) ) {
95
+ return '<p>' . __( 'There was a problem with one or more of your feed IDs. Please check your shortcode settings and make sure they are correct.', 'gce' ) . '</p>';
96
+ }
97
  }
98
 
99
  if( $paging == 'false' ) {
112
  $start_offset = $offset_interval_count * 86400 * $offset_direction;
113
 
114
  if( $interval == 'days' ) {
115
+ $paging_interval = null;
116
  $paging_type = 'days';
117
  } else if( $interval == 'events' ) {
118
  $max_events = $interval_count;
119
  $paging_type = 'events';
120
+ } else if( $interval == 'week' ) {
121
+ $paging_interval = 604800;
122
+ } else if( $interval == 'month' ) {
123
+ $paging_interval = 2629743;
124
  }
125
 
126
  // Port over old options
137
  }
138
 
139
  $args = array(
140
+ 'title_text' => $title,
141
+ 'sort' => $order,
142
+ 'grouped' => ( $display == 'list-grouped' ? 1 : 0 ),
143
+ 'month' => null,
144
+ 'year' => null,
145
+ 'widget' => 0,
146
  'paging_interval' => $paging_interval,
147
+ 'max_events' => $max_events,
148
+ 'paging' => $paging,
149
+ 'show_tooltips' => $show_tooltips
150
  );
151
 
152
  $args['start_offset'] = $start_offset;
js/gce-admin.js ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* global jQuery */
2
+
3
+ /**
4
+ * Admin JavaScript functions
5
+ *
6
+ * @package GCE
7
+ * @author Phil Derksen <pderksen@gmail.com>, Nick Young <mycorpweb@gmail.com>
8
+ * @license GPL-2.0+
9
+ * @copyright 2014 Phil Derksen
10
+ */
11
+
12
+ (function ($) {
13
+ "use strict";
14
+
15
+ $(function () {
16
+
17
+ // Show the hidden text box if custom date is selected (Events per Page)
18
+ $('body').on('change', 'select[id*=events_per_page]', function() {
19
+
20
+ // Hide everything before showing what we want
21
+ $(this).parent().children('.gce_per_page_num_wrap').hide();
22
+
23
+ if( $(this).val() == 'days' || $(this).val() == 'events' ) {
24
+ $(this).parent().children('.gce_per_page_num_wrap').show();
25
+ }
26
+ });
27
+
28
+ $('body').on('change', 'select[id*=display_type]', function() {
29
+
30
+ if( $(this).val() == 'date-range' ) {
31
+ $(this).parent().parent().children('.gce-display-option').hide();
32
+ $(this).parent().parent().children('.gce-custom-range').show();
33
+ } else {
34
+ $(this).parent().parent().children('.gce-display-option').show();
35
+ $(this).parent().parent().children('.gce-custom-range').hide();
36
+ }
37
+ });
38
+
39
+ // For main settings page
40
+ $('body').on('change', 'select[id*=gce_display_mode]', function() {
41
+ if( $(this).val() == 'date-range' ) {
42
+ $('.gce-display-option').hide();
43
+ $('.gce-custom-range').show();
44
+ } else {
45
+ $('.gce-display-option').show();
46
+ $('.gce-custom-range').hide();
47
+ }
48
+ });
49
+
50
+ // Add jQuery date picker to our custom date fields
51
+ // We have to do it this way because the widget will break after clicking "Save" and this method fixes this problem
52
+ // REF: http://stackoverflow.com/a/10433307/3578774
53
+ $('body').on('focus', 'input[id*=feed_range_start]', function(){
54
+ $(this).datepicker();
55
+ });
56
+
57
+ $('body').on('focus', 'input[id*=feed_range_end]', function(){
58
+ $(this).datepicker();
59
+ });
60
+
61
+ // Trigger CPT Publish/Update click from another button.
62
+ // Form post trigger still pops up JS warning on new CPT.
63
+ $('.gce-feed-update-button').click(function(e) {
64
+ e.preventDefault();
65
+
66
+ $('#publish').click();
67
+ });
68
+
69
+ });
70
+ }(jQuery));
js/gce-script.js CHANGED
@@ -11,12 +11,32 @@
11
  (function($) {
12
  'use strict';
13
 
 
 
 
14
  $(function() {
15
 
16
- gce_tooltips($('.gce-has-events'));
17
-
18
  if( typeof gce_grid != 'undefined' ) {
19
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  $('body').on( 'click', '.gce-change-month', function(e) {
21
 
22
  e.preventDefault();
@@ -28,16 +48,18 @@
28
  if( typeof id == 'undefined' ) {
29
  id = navLink.closest('.gce-widget-grid').attr('id');
30
  }
31
-
32
  //Extract month and year
33
  var month_year = navLink.attr('name').split('-', 2);
34
  var paging = navLink.attr('data-gce-grid-paging');
35
 
36
  //Add loading text to table caption
37
  $('#' + gce_grid[id].target_element + ' caption').html(gce.loadingText);
 
38
  //Send AJAX request
39
  $.post(gce.ajaxurl,{
40
  action:'gce_ajax',
 
41
  gce_type: gce_grid[id].type,
42
  gce_feed_ids: gce_grid[id].feed_ids,
43
  gce_title_text: gce_grid[id].title_text,
@@ -53,13 +75,18 @@
53
  }else{
54
  $('#' + gce_grid[id].target_element).replaceWith(data);
55
  }
56
- gce_tooltips($('#' + gce_grid[id].target_element + ' .gce-has-events'));
 
 
 
 
57
  });
58
 
59
  e.stopPropagation();
60
  });
61
  }
62
 
 
63
  $('body').on( 'click', '.gce-change-month-list', function(e) {
64
 
65
  e.preventDefault();
@@ -98,14 +125,18 @@
98
  gce_nonce: gce.ajaxnonce
99
  }, function(data){
100
  navLink.parents('.gce-list').replaceWith(data);
 
 
101
  });
102
 
103
  e.stopPropagation();
104
  });
105
 
 
106
  function gce_tooltips(target_items) {
107
 
108
- target_items.each(function(){
 
109
  //Add qtip to all target items
110
  $(this).qtip({
111
  content: $(this).children('.gce-event-info'),
@@ -114,7 +145,8 @@
114
  at: 'center',
115
  viewport: true,
116
  adjust: {
117
- method: 'shift'
 
118
  }
119
  },
120
  show: {
@@ -129,13 +161,6 @@
129
  style: {
130
  classes: 'qtip-light qtip-shadow qtip-rounded'
131
  }
132
-
133
- /* Old qTip 1 settings */
134
-
135
- //position: { corner: { target: 'center', tooltip: 'bottomLeft' }, adjust: { screen: true } },
136
- //show: { solo: true, delay: 0, effect: { length: 0 } },
137
- //hide: { fixed: true, delay: 100, effect: { length: 0 } },
138
- //style: { padding: "0", classes: { tooltip: 'gce-qtip', tip: 'gce-qtip-tip', title: 'gce-qtip-title', content: 'gce-qtip-content', active: 'gce-qtip-active' }, border: { width: 0 } }
139
  });
140
  });
141
  }
11
  (function($) {
12
  'use strict';
13
 
14
+ // Set debug flag.
15
+ var script_debug = ( (typeof gce != 'undefined') && gce.script_debug == true);
16
+
17
  $(function() {
18
 
 
 
19
  if( typeof gce_grid != 'undefined' ) {
20
 
21
+ if (script_debug) {
22
+ console.log('gce_grid', gce_grid);
23
+ }
24
+
25
+ var tooltip_elements = '';
26
+
27
+ $('.gce-page-grid, .gce-widget-grid').each( function() {
28
+ var id = $(this).attr('id');
29
+
30
+ if( gce_grid[id].show_tooltips == 'true' || gce_grid[id].show_tooltips == true ) {
31
+ tooltip_elements += '#' + gce_grid[id].target_element + ' .gce-has-events,';
32
+ }
33
+ });
34
+
35
+ tooltip_elements = tooltip_elements.substring( 0, tooltip_elements.length - 1 );
36
+
37
+ gce_tooltips(tooltip_elements);
38
+
39
+ // Month nav link click for Grid view.
40
  $('body').on( 'click', '.gce-change-month', function(e) {
41
 
42
  e.preventDefault();
48
  if( typeof id == 'undefined' ) {
49
  id = navLink.closest('.gce-widget-grid').attr('id');
50
  }
51
+
52
  //Extract month and year
53
  var month_year = navLink.attr('name').split('-', 2);
54
  var paging = navLink.attr('data-gce-grid-paging');
55
 
56
  //Add loading text to table caption
57
  $('#' + gce_grid[id].target_element + ' caption').html(gce.loadingText);
58
+
59
  //Send AJAX request
60
  $.post(gce.ajaxurl,{
61
  action:'gce_ajax',
62
+ gce_uid: id,
63
  gce_type: gce_grid[id].type,
64
  gce_feed_ids: gce_grid[id].feed_ids,
65
  gce_title_text: gce_grid[id].title_text,
75
  }else{
76
  $('#' + gce_grid[id].target_element).replaceWith(data);
77
  }
78
+
79
+ gce_tooltips(tooltip_elements);
80
+
81
+ }).fail(function(data) {
82
+ console.log( data );
83
  });
84
 
85
  e.stopPropagation();
86
  });
87
  }
88
 
89
+ // Month nav link click for List view.
90
  $('body').on( 'click', '.gce-change-month-list', function(e) {
91
 
92
  e.preventDefault();
125
  gce_nonce: gce.ajaxnonce
126
  }, function(data){
127
  navLink.parents('.gce-list').replaceWith(data);
128
+ }).fail(function(data) {
129
+ console.log( data );
130
  });
131
 
132
  e.stopPropagation();
133
  });
134
 
135
+ // Tooltip config using qTip2 jQuery plugin.
136
  function gce_tooltips(target_items) {
137
 
138
+ $(target_items).each(function() {
139
+
140
  //Add qtip to all target items
141
  $(this).qtip({
142
  content: $(this).children('.gce-event-info'),
145
  at: 'center',
146
  viewport: true,
147
  adjust: {
148
+ method: 'shift',
149
+ scroll: false
150
  }
151
  },
152
  show: {
161
  style: {
162
  classes: 'qtip-light qtip-shadow qtip-rounded'
163
  }
 
 
 
 
 
 
 
164
  });
165
  });
166
  }
languages/gce-ca.mo ADDED
Binary file
languages/gce-ca.po ADDED
@@ -0,0 +1,1541 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2010 Google Calendar Events
2
+ # This file is distributed under the same license as the Google Calendar Events package.
3
+ msgid ""
4
+ msgstr ""
5
+ "Project-Id-Version: Google Calendar Events 0.7.1\n"
6
+ "Report-Msgid-Bugs-To: http://wordpress.org/tag/google-calendar-events\n"
7
+ "POT-Creation-Date: 2014-11-22 16:21-0700\n"
8
+ "PO-Revision-Date: 2015-01-07 16:49+0100\n"
9
+ "Last-Translator: Toni Ginard <toni.ginard@gmail.com>\n"
10
+ "Language-Team: LANGUAGE <LL@li.org>\n"
11
+ "Language: ca\n"
12
+ "MIME-Version: 1.0\n"
13
+ "Content-Type: text/plain; charset=UTF-8\n"
14
+ "Content-Transfer-Encoding: 8bit\n"
15
+ "X-Generator: Poedit 1.5.4\n"
16
+ "X-Poedit-Language: Catalan\n"
17
+
18
+ #: google-calendar-events/class-google-calendar-events-admin.php:128
19
+ #: google-calendar-events/class-google-calendar-events-admin.php:129
20
+ #: google-calendar-events/class-google-calendar-events-admin.php:200
21
+ #: google-calendar-events/includes/register-settings.php:54
22
+ msgid "General Settings"
23
+ msgstr "Opcions"
24
+
25
+ #: google-calendar-events/class-google-calendar-events-admin.php:188
26
+ #: google-calendar-events/views/widgets.php:27
27
+ msgid "Google Calendar Events"
28
+ msgstr "Calendaris del Google"
29
+
30
+ #: google-calendar-events/class-google-calendar-events-admin.php:201
31
+ msgid "Feeds"
32
+ msgstr "Calendaris"
33
+
34
+ #: google-calendar-events/includes/admin/admin-functions.php:20
35
+ msgid "Cache has been cleared for this feed."
36
+ msgstr "S'ha buidat la memòria cau d'aquest calendari"
37
+
38
+ #: google-calendar-events/includes/admin/admin-functions.php:35
39
+ #: google-calendar-events/includes/admin/admin-functions.php:57
40
+ msgid "Starts:"
41
+ msgstr "Comença:"
42
+
43
+ #: google-calendar-events/includes/admin/admin-functions.php:36
44
+ #: google-calendar-events/includes/admin/admin-functions.php:59
45
+ msgid "Ends:"
46
+ msgstr "Acaba:"
47
+
48
+ #: google-calendar-events/includes/admin/admin-functions.php:37
49
+ #: google-calendar-events/includes/admin/admin-functions.php:61
50
+ msgid "Location:"
51
+ msgstr "Ubicació:"
52
+
53
+ #: google-calendar-events/includes/admin/admin-functions.php:38
54
+ #: google-calendar-events/includes/admin/admin-functions.php:62
55
+ msgid "Description:"
56
+ msgstr "Descripció:"
57
+
58
+ #: google-calendar-events/includes/admin/admin-functions.php:39
59
+ msgid "More details..."
60
+ msgstr "Més detalls..."
61
+
62
+ #: google-calendar-events/includes/admin/admin-functions.php:64
63
+ msgid "More Details"
64
+ msgstr "Més detalls"
65
+
66
+ #: google-calendar-events/includes/admin/admin-functions.php:78
67
+ #: google-calendar-events/includes/gce-feed-cpt.php:264
68
+ msgid "Clear Cache"
69
+ msgstr "Buida la memòria cau"
70
+
71
+ #: google-calendar-events/includes/class-gce-display.php:179
72
+ #: google-calendar-events/includes/class-gce-display.php:270
73
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:185
74
+ #: google-calendar-events/views/widgets.php:252
75
+ msgid "Back"
76
+ msgstr "<div class='dashicons dashicons-arrow-left-alt2'></div>"
77
+
78
+ #: google-calendar-events/includes/class-gce-display.php:183
79
+ #: google-calendar-events/includes/class-gce-display.php:271
80
+ msgid "Next"
81
+ msgstr "<div class='dashicons dashicons-arrow-right-alt2'></div>"
82
+
83
+ #: google-calendar-events/includes/class-gce-display.php:371
84
+ msgid "No events to display."
85
+ msgstr "No hi ha cap esdeveniment per mostrar."
86
+
87
+ #: google-calendar-events/includes/class-gce-event.php:504
88
+ #, php-format
89
+ msgid "%s year"
90
+ msgstr "%s any"
91
+
92
+ #: google-calendar-events/includes/class-gce-event.php:504
93
+ #, php-format
94
+ msgid "%s years"
95
+ msgstr "%s anys"
96
+
97
+ #: google-calendar-events/includes/class-gce-event.php:505
98
+ #, php-format
99
+ msgid "%s month"
100
+ msgstr "%s mes"
101
+
102
+ #: google-calendar-events/includes/class-gce-event.php:505
103
+ #, php-format
104
+ msgid "%s months"
105
+ msgstr "%s mesos"
106
+
107
+ #: google-calendar-events/includes/class-gce-event.php:506
108
+ #, php-format
109
+ msgid "%s week"
110
+ msgstr "%s setmana"
111
+
112
+ #: google-calendar-events/includes/class-gce-event.php:506
113
+ #, php-format
114
+ msgid "%s weeks"
115
+ msgstr "%s setmanes"
116
+
117
+ #: google-calendar-events/includes/class-gce-event.php:507
118
+ #, php-format
119
+ msgid "%s day"
120
+ msgstr "%s dia"
121
+
122
+ #: google-calendar-events/includes/class-gce-event.php:507
123
+ #, php-format
124
+ msgid "%s days"
125
+ msgstr "%s dies"
126
+
127
+ #: google-calendar-events/includes/class-gce-event.php:508
128
+ #, php-format
129
+ msgid "%s hour"
130
+ msgstr "%s hora"
131
+
132
+ #: google-calendar-events/includes/class-gce-event.php:508
133
+ #, php-format
134
+ msgid "%s hours"
135
+ msgstr "%s hores"
136
+
137
+ #: google-calendar-events/includes/class-gce-event.php:509
138
+ #, php-format
139
+ msgid "%s min"
140
+ msgstr "%s minut"
141
+
142
+ #: google-calendar-events/includes/class-gce-event.php:509
143
+ #, php-format
144
+ msgid "%s mins"
145
+ msgstr "%s minuts"
146
+
147
+ #: google-calendar-events/includes/class-gce-feed.php:89
148
+ msgid "The feed URL has not been set. Please make sure to set it correctly in the Feed settings."
149
+ msgstr "No s'ha indicat l'URL del calendari. Si us plau, assegureu-vos d'introduir-lo correctament als paràmetres del calendari"
150
+
151
+ #: google-calendar-events/includes/class-gce-feed.php:194
152
+ msgid "Some data was retrieved, but could not be parsed successfully. Please ensure your feed settings are correct."
153
+ msgstr "S'han recuperat algunes dades, però no s'han pogut processar correctament. Assegureu-vos de què els paràmetres del calendari són correctes."
154
+
155
+ #: google-calendar-events/includes/class-gce-feed.php:197
156
+ msgid "An error has occured."
157
+ msgstr "S'ha produït un error"
158
+
159
+ #: google-calendar-events/includes/class-gce-feed.php:202
160
+ msgid " Please ensure your calendar ID is correct."
161
+ msgstr "Assegureu-vos que l'ID del calendari és correcte."
162
+
163
+ #: google-calendar-events/includes/gce-feed-cpt.php:21
164
+ msgid "Google Calendar Feeds"
165
+ msgstr "Calendaris del Google"
166
+
167
+ #: google-calendar-events/includes/gce-feed-cpt.php:22
168
+ #: google-calendar-events/includes/gce-feed-cpt.php:24
169
+ #: google-calendar-events/includes/gce-feed-cpt.php:72
170
+ msgid "Feed"
171
+ msgstr "Calendari"
172
+
173
+ #: google-calendar-events/includes/gce-feed-cpt.php:23
174
+ msgid "GCal Events"
175
+ msgstr "Google Calendar"
176
+
177
+ #: google-calendar-events/includes/gce-feed-cpt.php:25
178
+ msgid "Add New"
179
+ msgstr "Afegeix"
180
+
181
+ #: google-calendar-events/includes/gce-feed-cpt.php:26
182
+ msgid "Add New Feed"
183
+ msgstr "Afegeix un calendari nou"
184
+
185
+ #: google-calendar-events/includes/gce-feed-cpt.php:27
186
+ msgid "New Feed"
187
+ msgstr "Afegeix un calendari nou"
188
+
189
+ #: google-calendar-events/includes/gce-feed-cpt.php:28
190
+ msgid "Edit Feed"
191
+ msgstr "Edita el calendari"
192
+
193
+ #: google-calendar-events/includes/gce-feed-cpt.php:29
194
+ msgid "View Feed"
195
+ msgstr "Mostra el calendari"
196
+
197
+ #: google-calendar-events/includes/gce-feed-cpt.php:30
198
+ msgid "All GCal Feeds"
199
+ msgstr "Tots els calendaris"
200
+
201
+ #: google-calendar-events/includes/gce-feed-cpt.php:31
202
+ msgid "Search GCal Feeds"
203
+ msgstr "Cerca als calendaris"
204
+
205
+ #: google-calendar-events/includes/gce-feed-cpt.php:32
206
+ msgid "No feeds found."
207
+ msgstr "No s'ha trobat cap calendari."
208
+
209
+ #: google-calendar-events/includes/gce-feed-cpt.php:33
210
+ msgid "No feeds found in Trash."
211
+ msgstr "No s'ha trobat cap calendari a la paperera"
212
+
213
+ #: google-calendar-events/includes/gce-feed-cpt.php:70
214
+ msgid "feed"
215
+ msgstr "calendari"
216
+
217
+ #: google-calendar-events/includes/gce-feed-cpt.php:75
218
+ #: google-calendar-events/includes/gce-feed-cpt.php:76
219
+ #, php-format
220
+ msgid "%4$s updated. %1$sView %2$s%3$s"
221
+ msgstr "%4$s actualitzat. %1$sMostra %2$s%3$s"
222
+
223
+ #: google-calendar-events/includes/gce-feed-cpt.php:77
224
+ #, php-format
225
+ msgid "%4$s published. %1$sView %2$s%3$s"
226
+ msgstr "%4$s publicat. %1$sMostra %2$s%3$s"
227
+
228
+ #: google-calendar-events/includes/gce-feed-cpt.php:78
229
+ #, php-format
230
+ msgid "%4$s saved. %1$sView %2$s%3$s"
231
+ msgstr "%4$s desat. %1$sMostra %2$s%3$s"
232
+
233
+ #: google-calendar-events/includes/gce-feed-cpt.php:79
234
+ #, php-format
235
+ msgid "%4$s submitted. %1$sView %2$s%3$s"
236
+ msgstr "%4$s tramès. %1$sMostra %2$s%3$s"
237
+
238
+ #: google-calendar-events/includes/gce-feed-cpt.php:80
239
+ #, php-format
240
+ msgid "%4$s draft updated. %1$sView %2$s%3$s"
241
+ msgstr "%4$s esborrany actualitzat. %1$sMostra %2$s%3$s"
242
+
243
+ #: google-calendar-events/includes/gce-feed-cpt.php:94
244
+ msgid "Feed Settings"
245
+ msgstr "Paràmetres del calendari"
246
+
247
+ #: google-calendar-events/includes/gce-feed-cpt.php:97
248
+ msgid "Helpful Links"
249
+ msgstr "Enllaços d'interès"
250
+
251
+ #: google-calendar-events/includes/gce-feed-cpt.php:99
252
+ msgid "Display Options"
253
+ msgstr "Opcions de visualització"
254
+
255
+ #: google-calendar-events/includes/gce-feed-cpt.php:217
256
+ msgid "Feed ID"
257
+ msgstr "ID del calendari"
258
+
259
+ #: google-calendar-events/includes/gce-feed-cpt.php:218
260
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:73
261
+ msgid "Feed Shortcode"
262
+ msgstr "Codi curt"
263
+
264
+ #: google-calendar-events/includes/gce-feed-cpt.php:219
265
+ msgid "Display Type"
266
+ msgstr "Tipus de visualització"
267
+
268
+ #: google-calendar-events/includes/gce-feed-cpt.php:246
269
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:152
270
+ #: google-calendar-events/views/widgets.php:218
271
+ msgid "Grid"
272
+ msgstr "Graella"
273
+
274
+ #: google-calendar-events/includes/gce-feed-cpt.php:248
275
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:153
276
+ #: google-calendar-events/views/widgets.php:219
277
+ msgid "List"
278
+ msgstr "Llista"
279
+
280
+ #: google-calendar-events/includes/gce-feed-cpt.php:250
281
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:154
282
+ #: google-calendar-events/views/widgets.php:220
283
+ msgid "Grouped List"
284
+ msgstr "Llista agrupada"
285
+
286
+ #: google-calendar-events/includes/misc-functions.php:21
287
+ msgid "Loading..."
288
+ msgstr "S'està carregant..."
289
+
290
+ #: google-calendar-events/includes/register-settings.php:29
291
+ msgid "Google API Key"
292
+ msgstr "Clau de l'API de Google"
293
+
294
+ #: google-calendar-events/includes/register-settings.php:30
295
+ msgid "If left blank all displayed Google calendars will use a public Google API key shared across all plugin users."
296
+ msgstr "Si es deixa buit, els calendaris utilitzaran una clau pública compartida amb tots els usuaris d'aquesta extensió."
297
+
298
+ #: google-calendar-events/includes/register-settings.php:31
299
+ msgid "Currently the shared key is limited to 500,000 requests per day and 5 requests per second."
300
+ msgstr "La clau compartida està limitada a 500.000 peticions diàries i a 5 peticions per segon."
301
+
302
+ #: google-calendar-events/includes/register-settings.php:32
303
+ #, php-format
304
+ msgid "To avoid these limits <a href=\"%s\" target=\"_blank\">click here for instructions on how to generate and use your own Google API key.</a>"
305
+ msgstr "Per evitar aquests límits podeu generar una clau pròpia. Trobareu instruccions sobre com fer-ho <a href=\"%s\" target=\"_blank\">en aquesta pàgina</a>."
306
+
307
+ #: google-calendar-events/includes/register-settings.php:39
308
+ msgid "Save Settings"
309
+ msgstr "Paràmetres de desament"
310
+
311
+ #: google-calendar-events/includes/register-settings.php:40
312
+ msgid "Save your settings when uninstalling this plugin. Useful when upgrading or re-installing."
313
+ msgstr "Manté els paràmetres a la base de dades quan es desinstal·li aquesta extensió. Això és útil en actualitzar i en tornar a instal·lar."
314
+
315
+ #: google-calendar-events/includes/register-settings.php:169
316
+ #, php-format
317
+ msgid "The callback function used for the <strong>%s</strong> setting is missing."
318
+ msgstr "No es pot trobar la funció de retorn utilitzada pel paràmetre <strong>%s</strong>."
319
+
320
+ #: google-calendar-events/views/admin/api-settings-notice.php:27
321
+ msgid "GCal Events Important Update (Nov. 19, 2014):"
322
+ msgstr "Actualització important dels calendaris del Google (19-11-2014)"
323
+
324
+ #: google-calendar-events/views/admin/api-settings-notice.php:28
325
+ msgid "GCal Events now uses the Google API version 3, which requires use of a public key."
326
+ msgstr "Aquesta extensió utilitza la versió 3 de l'API de Google, la qual requereix una clau pública."
327
+
328
+ #: google-calendar-events/views/admin/api-settings-notice.php:29
329
+ msgid "By default a shared key is used across all plugin users, which is limited to 500,000 requests per day and 5 requests per second."
330
+ msgstr "Per defecte s'utilitza una clau compartida entre tots els usuaris de l'extensió. Aquesta clau està limitada a 500.000 peticions per dia i a 5 peticions per segon."
331
+
332
+ #: google-calendar-events/views/admin/api-settings-notice.php:30
333
+ msgid "To avoid these limits you can use your own Google API key."
334
+ msgstr "Per evitar aquests límits podeu generar una clau pròpia de l'API de Google"
335
+
336
+ #: google-calendar-events/views/admin/api-settings-notice.php:33
337
+ msgid "Update your API settings now"
338
+ msgstr "Actualitza els paràmetres de l'API ara"
339
+
340
+ #: google-calendar-events/views/admin/api-settings-notice.php:34
341
+ msgid "Hide this"
342
+ msgstr "Amaga això"
343
+
344
+ #: google-calendar-events/views/admin/display-options-meta.php:39
345
+ msgid "Check this box to use the simple display options below instead of the Event Builder code on the left."
346
+ msgstr "Marqueu aquesta casella per utilitzar les opcions de visualització simple en lloc del codi del \"constructor d'esdeveniments\" que apareix a l'esquerra."
347
+
348
+ #: google-calendar-events/views/admin/display-options-meta.php:44
349
+ msgid "Start date / time display"
350
+ msgstr "Data i hora d'inici"
351
+
352
+ #: google-calendar-events/views/admin/display-options-meta.php:45
353
+ msgid "Select how to display the start date / time."
354
+ msgstr "Indiqueu com s'han de mostrar la data i l'hora d'inici."
355
+
356
+ #: google-calendar-events/views/admin/display-options-meta.php:47
357
+ #: google-calendar-events/views/admin/display-options-meta.php:61
358
+ msgid "None"
359
+ msgstr "Cap"
360
+
361
+ #: google-calendar-events/views/admin/display-options-meta.php:48
362
+ msgid "Start time"
363
+ msgstr "Hora d'inici"
364
+
365
+ #: google-calendar-events/views/admin/display-options-meta.php:49
366
+ msgid "Start date"
367
+ msgstr "Data d'inici"
368
+
369
+ #: google-calendar-events/views/admin/display-options-meta.php:50
370
+ msgid "Start time and date"
371
+ msgstr "Hora i data d'inici"
372
+
373
+ #: google-calendar-events/views/admin/display-options-meta.php:51
374
+ msgid "Start date and time"
375
+ msgstr "Data i hora d'inici"
376
+
377
+ #: google-calendar-events/views/admin/display-options-meta.php:53
378
+ msgid "Text to display before the start time."
379
+ msgstr "Text a mostrar abans de l'hora d'inici."
380
+
381
+ #: google-calendar-events/views/admin/display-options-meta.php:58
382
+ msgid "End time/date display"
383
+ msgstr "Data i hora de finalització"
384
+
385
+ #: google-calendar-events/views/admin/display-options-meta.php:59
386
+ msgid "Select how to display the end date / time."
387
+ msgstr "Seleccioneu com s'ha de mostrar la data / hora de finalització."
388
+
389
+ #: google-calendar-events/views/admin/display-options-meta.php:62
390
+ msgid "End time"
391
+ msgstr "Hora de finalització"
392
+
393
+ #: google-calendar-events/views/admin/display-options-meta.php:63
394
+ msgid "End date"
395
+ msgstr "Data de finalització"
396
+
397
+ #: google-calendar-events/views/admin/display-options-meta.php:64
398
+ msgid "End time and date"
399
+ msgstr "Hora i data de finalització"
400
+
401
+ #: google-calendar-events/views/admin/display-options-meta.php:65
402
+ msgid "End date and time"
403
+ msgstr "Data i hora de finalització"
404
+
405
+ #: google-calendar-events/views/admin/display-options-meta.php:67
406
+ msgid "Text to display before the end time."
407
+ msgstr "Text a mostrar abans de la data de finalització"
408
+
409
+ #: google-calendar-events/views/admin/display-options-meta.php:72
410
+ msgid "Separator"
411
+ msgstr "Separador"
412
+
413
+ #: google-calendar-events/views/admin/display-options-meta.php:74
414
+ msgid "If you have chosen to display both the time and date above, enter the text / characters to display between the time and date here (including any spaces)."
415
+ msgstr "Si heu triat mostrar tant l'hora com la data, introduïu aquí el text o els caràcters que han d'aparèixer entre l'hora i la data (incloent espais)."
416
+
417
+ #: google-calendar-events/views/admin/display-options-meta.php:80
418
+ msgid "Location"
419
+ msgstr "Ubicació"
420
+
421
+ #: google-calendar-events/views/admin/display-options-meta.php:82
422
+ msgid "Show the location of events?"
423
+ msgstr "Mostra la ubicació dels esdeveniments?"
424
+
425
+ #: google-calendar-events/views/admin/display-options-meta.php:83
426
+ msgid "Text to display before the location."
427
+ msgstr "Text a mostrar abans de la ubicació."
428
+
429
+ #: google-calendar-events/views/admin/display-options-meta.php:88
430
+ msgid "Description"
431
+ msgstr "Descripció"
432
+
433
+ #: google-calendar-events/views/admin/display-options-meta.php:91
434
+ msgid "Show the description of events? (URLs in the description will be made into links)."
435
+ msgstr "Mostra la descripció dels esdeveniments (Els URL de la descripció es convertiran en enllaços)."
436
+
437
+ #: google-calendar-events/views/admin/display-options-meta.php:93
438
+ msgid "Text to display before the description."
439
+ msgstr "Text a mostrar abans de la descripció"
440
+
441
+ #: google-calendar-events/views/admin/display-options-meta.php:95
442
+ msgid "Maximum number of words to show from description. Leave blank for no limit."
443
+ msgstr "Nombre màxim de paraules a mostrar de la descripció. Deixeu l'espai en blanc si no voleu posar cap límit."
444
+
445
+ #: google-calendar-events/views/admin/display-options-meta.php:100
446
+ msgid "Event Link"
447
+ msgstr "Enllaç de l'esdeveniment"
448
+
449
+ #: google-calendar-events/views/admin/display-options-meta.php:103
450
+ msgid "Show a link to the Google Calendar page for an event?"
451
+ msgstr "Mostra un enllaç a la pàgina del Google Calendar per a un esdeveniment"
452
+
453
+ #: google-calendar-events/views/admin/display-options-meta.php:107
454
+ msgid "Links open in a new window / tab?"
455
+ msgstr "Obre els enllaços en una finestra o pestanya noves"
456
+
457
+ #: google-calendar-events/views/admin/display-options-meta.php:109
458
+ msgid "The link text to be displayed."
459
+ msgstr "El text de l'enllaç que voleu mostrar."
460
+
461
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:54
462
+ msgid "We're <strong>smack dab</strong> in the middle of building additional features for this plugin. Have ideas?"
463
+ msgstr "Estem preparant noves funcionalitats per a aquesta extensió. Voleu fer-hi alguna aportació?"
464
+
465
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:57
466
+ msgid "Visit our roadmap and tell us what you're looking for"
467
+ msgstr "Visiteu el nostre full de ruta i dieu-nos què esteu buscant"
468
+
469
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:63
470
+ msgid "Want to be in the know?"
471
+ msgstr "Voleu estar-ne informat/da?"
472
+
473
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:66
474
+ msgid "Get notified when new features are released"
475
+ msgstr "Avisa'm quan es publiquin funcionalitats noves"
476
+
477
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:77
478
+ msgid "Copy and paste this shortcode to display this Google Calendar feed on any post or page."
479
+ msgstr "Copieu i enganxeu aquest codi curt per mostrar aquest calendari del Google Calendar a qualsevol entrada o pàgina del WordPress"
480
+
481
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:78
482
+ msgid "To avoid display issues, make sure to paste the shortcode in the Text tab of the post editor."
483
+ msgstr "Per evitar problemes de visualització, assegureu-vos de copiar correctament el codi curt a la pestanya de text de l'editor visual."
484
+
485
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:83
486
+ msgid "Google Calendar ID"
487
+ msgstr "ID del calendari"
488
+
489
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:87
490
+ msgid "The Google Calendar ID."
491
+ msgstr "L'ID del calendari del Google Calendar"
492
+
493
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:87
494
+ msgid "Example"
495
+ msgstr "Exemple"
496
+
497
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:89
498
+ msgid "How to find your GCal calendar ID"
499
+ msgstr "Com trobar l'ID d'un calendari del Google Calendar"
500
+
501
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:95
502
+ msgid "Search Query"
503
+ msgstr "Consulta de cerca"
504
+
505
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:98
506
+ msgid "Find and show events based on a search query."
507
+ msgstr "Troba i mostra esdeveniments basats en una consulta de cerca"
508
+
509
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:103
510
+ msgid "Expand Recurring Events?"
511
+ msgstr "Estendre el esdeveniments recurrents?"
512
+
513
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:105
514
+ msgid "Yes"
515
+ msgstr "Sí"
516
+
517
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:106
518
+ msgid "This will show recurring events each time they occur, otherwise it will only show the event the first time it occurs."
519
+ msgstr "Això mostrarà els esdeveniments recurrents cada vegada que ocorrin, altrament només es mostrarà un esdeveniment la primera vegada que ocorri."
520
+
521
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:111
522
+ msgid "Date Format"
523
+ msgstr "Format de la data"
524
+
525
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:115
526
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:126
527
+ #, php-format
528
+ msgid "Use %sPHP date formatting%s."
529
+ msgstr "Utilitza el %sformat de data del PHP%s."
530
+
531
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:116
532
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:127
533
+ msgid "Leave blank to use the default."
534
+ msgstr "Deixeu-ho en blanc per utilitzar el valor per defecte."
535
+
536
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:122
537
+ msgid "Time Format"
538
+ msgstr "Format de l'hora"
539
+
540
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:133
541
+ msgid "Cache Duration"
542
+ msgstr "Durada de la memòria cau"
543
+
544
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:136
545
+ msgid "The length of time, in seconds, to cache the feed (43200 = 12 hours). If this feed changes regularly, you may want to reduce the cache duration."
546
+ msgstr "La durada, en segons, de l'emmagatzemament del calendari a la memòria cau (43200 = 12 hores). Si aquest flux canvia amb regularitat, és possible que vulgueu reduir la durada de la memòria cau."
547
+
548
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:141
549
+ msgid "Multiple Day Events"
550
+ msgstr "Esdeveniments de varis dies"
551
+
552
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:143
553
+ msgid "Show on each day"
554
+ msgstr "Mostra els esdeveniments d'un període cadascun dels dies?"
555
+
556
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:144
557
+ msgid "Show events that span multiple days on each day that they span, rather than just the first day."
558
+ msgstr "Mostra els esdeveniments que es repeteixin durant un període de temps en cadascun dels dies, en lloc de només el primer dia."
559
+
560
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:149
561
+ msgid "Display Mode"
562
+ msgstr "Mode de visualització"
563
+
564
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:156
565
+ msgid "Choose how you want your calendar to be displayed."
566
+ msgstr "Trieu com voleu que es mostri el vostre calendari"
567
+
568
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:161
569
+ msgid "Show Paging Links"
570
+ msgstr "Mostra el paginador"
571
+
572
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:163
573
+ #: google-calendar-events/views/widgets.php:227
574
+ msgid "Check this option to display Next and Back navigation links."
575
+ msgstr "Marqueu aquesta opció per mostrar els enllaços de navegació endavant i endarrere."
576
+
577
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:168
578
+ msgid "Number of Events per Page"
579
+ msgstr "Nombre d'esdeveniments per pàgina"
580
+
581
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:172
582
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:183
583
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:197
584
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:211
585
+ #: google-calendar-events/views/widgets.php:242
586
+ #: google-calendar-events/views/widgets.php:250
587
+ msgid "Days"
588
+ msgstr "Dies"
589
+
590
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:173
591
+ #: google-calendar-events/views/widgets.php:243
592
+ msgid "Events"
593
+ msgstr "Esdeveniments"
594
+
595
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:175
596
+ msgid "How many events to display per page (List View only)."
597
+ msgstr "Quans d'esdeveniments es mostraran a cada pàgina (només a la vista de llista)"
598
+
599
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:180
600
+ msgid "Display Start Date Offset"
601
+ msgstr "Mostra la desviació de la data d'inici"
602
+
603
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:186
604
+ #: google-calendar-events/views/widgets.php:253
605
+ msgid "Ahead"
606
+ msgstr "Endavant"
607
+
608
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:188
609
+ msgid "Change if you need to initially display events on a date other than today (List View only)."
610
+ msgstr "Canvieu-ho si necessiteu mostrar esdeveniments inicialment en una data que no és avui (només a la vista de llista)."
611
+
612
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:193
613
+ msgid "Minimum Feed Start Date"
614
+ msgstr "Data mínima d'inici dels esdeveniments"
615
+
616
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:198
617
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:212
618
+ msgid "Months"
619
+ msgstr "Mesos"
620
+
621
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:199
622
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:213
623
+ msgid "Years"
624
+ msgstr "Anys"
625
+
626
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:201
627
+ msgid "back"
628
+ msgstr "enrere"
629
+
630
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:202
631
+ msgid "Set how far back to retrieve events regardless of month or page being displayed."
632
+ msgstr "Indica com d'enrere en el temps s'han de recuperar esdeveniments, independentment del mes o pàgina que es visualitzi."
633
+
634
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:207
635
+ msgid "Maximum Feed End Date"
636
+ msgstr "Data màxima de finalització dels esdeveniments"
637
+
638
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:215
639
+ msgid "forward"
640
+ msgstr "endavant"
641
+
642
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:216
643
+ msgid "Set how far in the future to retrieve events regardless of month or page being displayed."
644
+ msgstr "Indica com d'endavant en el temps s'han de recuperar esdeveniments, independentment del mes o pàgina que es visualitzi."
645
+
646
+ #: google-calendar-events/views/admin/gce-feed-sidebar-help.php:6
647
+ msgid "Documentation & getting started"
648
+ msgstr "Documentació i guia d'inici"
649
+
650
+ #: google-calendar-events/views/admin/gce-feed-sidebar-help.php:12
651
+ msgid "Community support forums"
652
+ msgstr "Fòrums de suport de la comunitat"
653
+
654
+ #: google-calendar-events/views/admin/gce-feed-sidebar-help.php:18
655
+ msgid "Get notified of new features"
656
+ msgstr "Notificació de noves funcionalitats"
657
+
658
+ #: google-calendar-events/views/admin/gce-feed-sidebar-help.php:24
659
+ msgid "Rate this plugin"
660
+ msgstr "Valora aquesta extensió"
661
+
662
+ #: google-calendar-events/views/widgets.php:28
663
+ msgid "Display a list or calendar grid of events from one or more Google Calendar feeds you have added"
664
+ msgstr "Mostra una llista o graella amb els esdeveniments d'un o més calendaris del Google Calendar."
665
+
666
+ #: google-calendar-events/views/widgets.php:111
667
+ msgid "No valid Feed IDs have been entered for this widget. Please check that you have entered the IDs correctly in the widget settings (Appearance > Widgets), and that the Feeds have not been deleted."
668
+ msgstr "No hi ha cap ID de calendari vàlid en aquest giny. Comproveu que s'han introduït els codis correctament en la configuració del giny (Aparença | Ginys), i que els calendaris no s'han eliminat."
669
+
670
+ #: google-calendar-events/views/widgets.php:144
671
+ msgid "You have not added any feeds yet."
672
+ msgstr "Encara no heu afegit cap calendari."
673
+
674
+ #: google-calendar-events/views/widgets.php:186
675
+ msgid "There are no feeds created yet."
676
+ msgstr "Encara no hi ha cap calendari creat."
677
+
678
+ #: google-calendar-events/views/widgets.php:187
679
+ msgid "Add your first feed!"
680
+ msgstr "Afegiu el primer calendari!"
681
+
682
+ #: google-calendar-events/views/widgets.php:197
683
+ msgid "Events on"
684
+ msgstr "Esdeveniments del"
685
+
686
+ #: google-calendar-events/views/widgets.php:206
687
+ msgid "Title:"
688
+ msgstr "Títol:"
689
+
690
+ #: google-calendar-events/views/widgets.php:211
691
+ msgid "Feeds to Display (comma separated list - i.e. 101,102,103):"
692
+ msgstr "Calendaris a mostrar, en forma de llista separada per comes (per exemple: 101,102,103)."
693
+
694
+ #: google-calendar-events/views/widgets.php:216
695
+ msgid "Display Events as:"
696
+ msgstr "Mostra els esdeveniments com a:"
697
+
698
+ #: google-calendar-events/views/widgets.php:225
699
+ msgid "Show Paging Links:"
700
+ msgstr "Mostra el paginador:"
701
+
702
+ #: google-calendar-events/views/widgets.php:231
703
+ msgid "Sort Order (List View only):"
704
+ msgstr "Ordre (només a la vista de llista):"
705
+
706
+ #: google-calendar-events/views/widgets.php:233
707
+ msgid "Ascending"
708
+ msgstr "Ascendent"
709
+
710
+ #: google-calendar-events/views/widgets.php:234
711
+ msgid "Descending"
712
+ msgstr "Descendent"
713
+
714
+ #: google-calendar-events/views/widgets.php:239
715
+ msgid "Number of Events per Page (List View only):"
716
+ msgstr "Nombre d'esdeveniments per pàgina (només a la vista de llista)"
717
+
718
+ #: google-calendar-events/views/widgets.php:248
719
+ msgid "Display Start Date Offset (List View only):"
720
+ msgstr "Mostra la desviació de la data d'inici (només a la vista de llista):"
721
+
722
+ #: google-calendar-events/views/widgets.php:258
723
+ msgid "Display Title on Tooltip/List Item (e.g. 'Events on 7th March'). Grouped lists always have a title displayed."
724
+ msgstr "Voleu que es mostri un títol personalitzat? (per exemple: 'Esdeveniments del 7 de març'). A les llistes agrupades sempre es mostra el títol."
725
+
726
+ #~ msgid ""
727
+ #~ "The feed could not be found (404). Please ensure your feed URL is correct."
728
+ #~ msgstr ""
729
+ #~ "No s'ha pogut trobar el calendari (404). Assegureu-vos que l'URL del "
730
+ #~ "calendari és correcte."
731
+
732
+ #~ msgid ""
733
+ #~ "Access to this feed was denied (403). Please ensure you have public "
734
+ #~ "sharing enabled for your calendar."
735
+ #~ msgstr ""
736
+ #~ "S'ha denegat l'accés a aquest calendari (403). Assegureu-vos que el "
737
+ #~ "vostre calendari és públic."
738
+
739
+ #~ msgid ""
740
+ #~ "The feed data could not be retrieved. Error code: %s. Please ensure your "
741
+ #~ "feed URL is correct."
742
+ #~ msgstr ""
743
+ #~ "No s'ha pogut recuperar la informació del calendari. Codi d'error: %s. "
744
+ #~ "Assegureu-vos que l'URL del calendari és correcte."
745
+
746
+ #~ msgid "GCal Feed URL"
747
+ #~ msgstr "URL del calendari"
748
+
749
+ #~ msgid ", "
750
+ #~ msgstr ","
751
+
752
+ #~ msgid "Want to know when we release something new?"
753
+ #~ msgstr "Voleu assabentar-vos de quan publiquem versions noves?"
754
+
755
+ #~ msgid "Get notified of major plugin updates"
756
+ #~ msgstr "Avisa'm quan es publiqui una versió major d'aquesta extensió"
757
+
758
+ #~ msgid "Retrieve Events From"
759
+ #~ msgstr "Recupera els esdeveniments des de"
760
+
761
+ #~ msgid "Today"
762
+ #~ msgstr "Avui"
763
+
764
+ #~ msgid "Start of current week"
765
+ #~ msgstr "Inici de la setmana actual"
766
+
767
+ #~ msgid "Start of current month"
768
+ #~ msgstr "Inici del mes actual"
769
+
770
+ #~ msgid "End of current month"
771
+ #~ msgstr "Final del mes actual"
772
+
773
+ #~ msgid "The beginning of time"
774
+ #~ msgstr "El principi dels temps"
775
+
776
+ #~ msgid "Specific date"
777
+ #~ msgstr "Data concreta"
778
+
779
+ #~ msgid "The point in time at which to start retrieving events."
780
+ #~ msgstr ""
781
+ #~ "El punt en el temps en què començarà la recuperació d'esdeveniments."
782
+
783
+ #~ msgid "Retrieve Events Until"
784
+ #~ msgstr "Recupera els esdeveniments fins a"
785
+
786
+ #~ msgid "The end of time"
787
+ #~ msgstr "El final dels temps"
788
+
789
+ #~ msgid "The point in time at which to stop retrieving events."
790
+ #~ msgstr ""
791
+ #~ "El punt en el temps en què s'aturarà la recuperació d'esdeveniments."
792
+
793
+ #~ msgid "Maximum number of events to show."
794
+ #~ msgstr "Nombre màxim d'esdeveniments a mostrar"
795
+
796
+ #~ msgid "Timezone Adjustment"
797
+ #~ msgstr "Configuració de la zona horària"
798
+
799
+ #~ msgid ""
800
+ #~ "If you are having problems with dates and times displaying in the wrong "
801
+ #~ "timezone, select a city in your required timezone here."
802
+ #~ msgstr ""
803
+ #~ "Si les dates i hores que es mostren no es corresponen amb la zona horària "
804
+ #~ "correcta, seleccioneu una ciutat de la vostra zona horària."
805
+
806
+ #~ msgid ""
807
+ #~ "This will clear your feed cache. This also automatically happens when you "
808
+ #~ "save your changes. %sIf you make changes you %sMUST%s save first or your "
809
+ #~ "changes will be lost."
810
+ #~ msgstr ""
811
+ #~ "Això buidarà la memòria cau d'aquest calendari. Això passa automàticament "
812
+ #~ "cada vegada que deseu els canvis. %sSi feu canvis %sHEU%s de desar-los en "
813
+ #~ "primer lloc o es perdran."
814
+
815
+ #~ msgid "Now Accepting 5-Star Reviews!"
816
+ #~ msgstr "S'accepten revisions de 5 estrelles!"
817
+
818
+ #~ msgid "Calendar Grid - with AJAX"
819
+ #~ msgstr "Graella de calendari - amb AJAX"
820
+
821
+ #~ msgid "Maximum no. events to display. Enter 0 to show all retrieved."
822
+ #~ msgstr ""
823
+ #~ "Nombre màxim d'esdeveniments a mostrar. Poseu 0 per a mostrar-los tots."
824
+
825
+ #~ msgid "Feed Title"
826
+ #~ msgstr "Títol de l'entrada"
827
+
828
+ #~ msgid "Select display customization method"
829
+ #~ msgstr "Tria un mètode de visualització"
830
+
831
+ #~ msgid "Event Display Builder"
832
+ #~ msgstr "Creador d'esdeveniments personalitzat"
833
+
834
+ #~ msgid "Event display builder HTML and shortcodes"
835
+ #~ msgstr "Configura la visualització d'esdeveniments personalitzada"
836
+
837
+ #~ msgid "Separator text / characters"
838
+ #~ msgstr "Separador de text / caràcters"
839
+
840
+ #~ msgid "Display location?"
841
+ #~ msgstr "Voleu mostrar la ubicació?"
842
+
843
+ #~ msgid "Display link to event?"
844
+ #~ msgstr "Voleu mostrar l'enllaç a l'esdeveniment?"
845
+
846
+ #~ msgid ""
847
+ #~ "Make any changes you require to the feed details below, then click the "
848
+ #~ "Save Changes button."
849
+ #~ msgstr ""
850
+ #~ "Feu els canvis necessaris als detalls de l'entrada i després feu clic al "
851
+ #~ "botó Desa els canvis."
852
+
853
+ #~ msgid "Anything you like. 'Upcoming Club Events', for example."
854
+ #~ msgstr "El que vulgueu. Per exemple: 'Esdeveniments propers del centre'."
855
+
856
+ #~ msgid ""
857
+ #~ "This will probably be something like: <code>http://www.google.com/"
858
+ #~ "calendar/feeds/your-email@gmail.com/public/full</code>."
859
+ #~ msgstr ""
860
+ #~ "Això probablement serà semblant a: <code>http://www.google.com/calendar/"
861
+ #~ "feeds/your-email@gmail.com/public/full</code>."
862
+
863
+ #~ msgid ""
864
+ #~ "or: <code>http://www.google.com/calendar/feeds/your-email@gmail.com/"
865
+ #~ "private-d65741b037h695ff274247f90746b2ty/basic</code>."
866
+ #~ msgstr ""
867
+ #~ "o: <code>http://www.google.com/calendar/feeds/your-email@gmail.com/"
868
+ #~ "private-d65741b037h695ff274247f90746b2ty/basic</code>."
869
+
870
+ #~ msgid ""
871
+ #~ "The point in time at which to start retrieving events. Use the text-box "
872
+ #~ "to specify an additional offset from you chosen start point. The offset "
873
+ #~ "should be provided in seconds (3600 = 1 hour, 86400 = 1 day) and can be "
874
+ #~ "negative. If you have selected the 'Specific date / time' option, enter a "
875
+ #~ "<a href=\"http://www.timestampgenerator.com\" target=\"_blank\">UNIX "
876
+ #~ "timestamp</a> in the text-box."
877
+ #~ msgstr ""
878
+ #~ "El punt en el temps en què es començaran a recuperar els esdeveniments. "
879
+ #~ "Feu servir la caixa de text per especificar un desplaçament addicional al "
880
+ #~ "punt triat inicialment. Aquest desplaçament s'ha de proporcionar en "
881
+ #~ "segons (3600 = 1 hora, 86400 = 1 dia) i pot ser negatiu. Si heu "
882
+ #~ "seleccionat l'opció 'Data / hora específics' poseu una <a href=\"http://"
883
+ #~ "www.timestampgenerator.com\" target=\"_blank\">marca de temps de UNIX</a> "
884
+ #~ "a la caixa de text."
885
+
886
+ #~ msgid ""
887
+ #~ "Set this to a few more than you actually want to display (due to caching "
888
+ #~ "and timezone issues). The exact number to display can be configured per "
889
+ #~ "shortcode / widget."
890
+ #~ msgstr ""
891
+ #~ "Definiu aquí una mica més del que realment voleu mostrar (per evitar "
892
+ #~ "problemes d'emmagatzematge en la memòria cau i la zona horària). El "
893
+ #~ "nombre exacte a mostrar es pot configurar per codi curt / ginys."
894
+
895
+ #~ msgid ""
896
+ #~ "In <a href=\"http://php.net/manual/en/function.date.php\" target=\"_blank"
897
+ #~ "\">PHP date format</a>. Leave this blank if you'd rather stick with the "
898
+ #~ "default format for your blog."
899
+ #~ msgstr ""
900
+ #~ "En <a href=\"http://php.net/manual/en/function.date.php\" target=\"_blank"
901
+ #~ "\">format de data en PHP</a>. Deixeu l'espai en blanc si voleu fer servir "
902
+ #~ "el format predeterminat."
903
+
904
+ #~ msgid ""
905
+ #~ "In <a href=\"http://php.net/manual/en/function.date.php\" target=\"_blank"
906
+ #~ "\">PHP date format</a>. Again, leave this blank to stick with the default."
907
+ #~ msgstr ""
908
+ #~ "En <a href=\"http://php.net/manual/en/function.date.php\" target=\"_blank"
909
+ #~ "\">format de data en PHP</a>. De nou, deixeu l'espai en blanc per fer "
910
+ #~ "servir el format predeterminat."
911
+
912
+ #~ msgid ""
913
+ #~ "These settings control what information will be displayed for this feed "
914
+ #~ "in the tooltip (for grids), or in a list."
915
+ #~ msgstr ""
916
+ #~ "Aquests ajustaments controlen quina informació es mostra per a aquesta "
917
+ #~ "entrada en el títol (per graelles), o en una llista."
918
+
919
+ #~ msgid ""
920
+ #~ "It is recommended that you use the event display builder option, as it "
921
+ #~ "provides much more flexibility than the simple display options. The event "
922
+ #~ "display builder can do everything the simple display options can, plus "
923
+ #~ "lots more!"
924
+ #~ msgstr ""
925
+ #~ "Es recomana que utilitzeu el creador d'esdeveniments personalitzat, ja "
926
+ #~ "que proporciona molta més flexibilitat que les opcions de visualització "
927
+ #~ "per defecte. La visualiitzacó personalitzada pot fer tot el que les "
928
+ #~ "opcions de visualització per defecte, a més de moltes més!"
929
+
930
+ #~ msgid "Event display builder"
931
+ #~ msgstr "Creador d'esdeveniments personalitzat"
932
+
933
+ #~ msgid "Simple display options"
934
+ #~ msgstr "Visualització d'esdeveniments per defecte"
935
+
936
+ #~ msgid ""
937
+ #~ "Use the event display builder to customize how event information will be "
938
+ #~ "displayed in the grid tooltips and in lists. Use HTML and the shortcodes "
939
+ #~ "(explained below) to display the information you require. A basic example "
940
+ #~ "display format is provided as a starting point. For more information, "
941
+ #~ "take a look at the <a href=\"http://www.rhanney.co.uk/plugins/google-"
942
+ #~ "calendar-events/event-display-builder\" target=\"_blank\">event display "
943
+ #~ "builder guide</a>."
944
+ #~ msgstr ""
945
+ #~ "Utilitzeu el creador d'esdeveniments personalitzat per definir quina "
946
+ #~ "informació es mostrarà als títols de la graella i a les llistes. "
947
+ #~ "Utilitzeu HTML i codis curts (que s'explica més endavant) per mostrar la "
948
+ #~ "informació necessària. Com a punt de partida, es proporciona un format "
949
+ #~ "bàsic a mode d'exemple. Per obtenir més informació, feu un cop d'ull a la "
950
+ #~ "<a href=\"http://www.rhanney.co.uk/plugins/google-calendar-events/event-"
951
+ #~ "display-builder\" target=\"_blank\">guia d'ús de creació d'esdeveniments "
952
+ #~ "personalitzats</a>."
953
+
954
+ #~ msgid ""
955
+ #~ "(More information on all of the below shortcodes and attributes, and "
956
+ #~ "working examples, can be found in the <a href=\"http://www.rhanney.co.uk/"
957
+ #~ "plugins/google-calendar-events/event-display-builder\" target=\"_blank"
958
+ #~ "\">event display builder guide</a>)"
959
+ #~ msgstr ""
960
+ #~ "(Podeu trobar més informació sobre tots els codis curts i atributs de "
961
+ #~ "baix, així com exemples de treball a la <a href=\"http://www.rhanney.co."
962
+ #~ "uk/plugins/google-calendar-events/event-display-builder\" target=\"_blank"
963
+ #~ "\">guia d'ús de creació d'esdeveniments personalitzats</a>)"
964
+
965
+ #~ msgid "Event information shortcodes:"
966
+ #~ msgstr "Informació sobre els esdeveniments i codis curts:"
967
+
968
+ #~ msgid ""
969
+ #~ "The event title (possible attributes: <code>html</code>, <code>markdown</"
970
+ #~ "code>)"
971
+ #~ msgstr ""
972
+ #~ "El títol de l'esdeveniment (atributs possibles: <code>html</code>, "
973
+ #~ "<code>markdown</code>)"
974
+
975
+ #~ msgid ""
976
+ #~ "The event start time. Will use the time format specified in the above "
977
+ #~ "settings"
978
+ #~ msgstr ""
979
+ #~ "L'hora en què comença l'esdeveniment. S'utilitzarà el format especificat "
980
+ #~ "en els paràmetres anteriors"
981
+
982
+ #~ msgid ""
983
+ #~ "The event start date. Will use the date format specified in the above "
984
+ #~ "settings"
985
+ #~ msgstr ""
986
+ #~ "La data en què comença l'esdeveniment. S'utilitzarà el format especificat "
987
+ #~ "en els paràmetres anteriors"
988
+
989
+ #~ msgid ""
990
+ #~ "The event start date / time. Will use the format specified in the "
991
+ #~ "<code>format</code> attribute (possible attributes: <code>format</code>)"
992
+ #~ msgstr ""
993
+ #~ "L'hora i la data en què comença l'esdeveniment. S'utilitzarà el format "
994
+ #~ "especificat a l'atribut <code>format</code> (atributs possibles: "
995
+ #~ "<code>format</code>)"
996
+
997
+ #~ msgid ""
998
+ #~ "The difference between the start time of the event and the time now, in "
999
+ #~ "human-readable format, such as '1 hour', '4 days', '15 mins' (possible "
1000
+ #~ "attributes: <code>precision</code>)"
1001
+ #~ msgstr ""
1002
+ #~ "La diferència entre l'hora d'inici de l'esdeveniment i l'hora actual, en "
1003
+ #~ "un format llegible per les persones, com ara '1 hora', '4 dies', '15 "
1004
+ #~ "minuts' (atributs possibles: <code>precision</code>)"
1005
+
1006
+ #~ msgid ""
1007
+ #~ "The event end time. Will use the time format specified in the above "
1008
+ #~ "settings"
1009
+ #~ msgstr ""
1010
+ #~ "L'hora en què finalitza l'esdeveniment. S'utilitzarà el format "
1011
+ #~ "especificat en els paràmetres anteriors"
1012
+
1013
+ #~ msgid ""
1014
+ #~ "The event end date. Will use the date format specified in the above "
1015
+ #~ "settings"
1016
+ #~ msgstr ""
1017
+ #~ "La data en què acaba l'esdeveniment. S'utilitzarà el format especificat "
1018
+ #~ "en els paràmetres anteriors"
1019
+
1020
+ #~ msgid ""
1021
+ #~ "The event end date / time. Will use the format specified in the "
1022
+ #~ "<code>format</code> attribute (possible attributes: <code>format</code>)"
1023
+ #~ msgstr ""
1024
+ #~ "L'hora i la data en què acaba l'esdeveniment. S'utilitzarà el format "
1025
+ #~ "especificat a l'atribut <code>format</code> (atributs possibles: "
1026
+ #~ "<code>format</code>)"
1027
+
1028
+ #~ msgid ""
1029
+ #~ "The difference between the end time of the event and the time now, in "
1030
+ #~ "human-readable format (possible attributes: <code>precision</code>)"
1031
+ #~ msgstr ""
1032
+ #~ "La diferència entre l'hora de finalització de l'esdeveniment i l'hora "
1033
+ #~ "actual, en un format llegible per les persones, com ara '1 hora', '4 "
1034
+ #~ "dies', '15 minuts' (atributs possibles: <code>precision</code>)"
1035
+
1036
+ #~ msgid ""
1037
+ #~ "The event location (possible attributes: <code>html</code>, "
1038
+ #~ "<code>markdown</code>)"
1039
+ #~ msgstr ""
1040
+ #~ "La ubicació de l'esdeveniment (atributs possibles: <code>html</code>, "
1041
+ #~ "<code>markdown</code>)"
1042
+
1043
+ #~ msgid ""
1044
+ #~ "Anything between the opening and closing shortcode tags (inlcuding "
1045
+ #~ "further shortcodes) will be linked to Google Maps, using the event "
1046
+ #~ "location as a search parameter (possible attributes: <code>newwindow</"
1047
+ #~ "code>)"
1048
+ #~ msgstr ""
1049
+ #~ "Qualsevol cosa entre les etiquetes d'obertura i tancament (incloses les "
1050
+ #~ "etiquetes futures) s'enllaçaran al Google Maps mitjançant la ubicació de "
1051
+ #~ "l'esdeveniment, que s'utilitzarà com a paràmetre de cerca (atributs "
1052
+ #~ "possibles: <code>newwindow</code>)"
1053
+
1054
+ #~ msgid ""
1055
+ #~ "The event description (possible attributes: <code>html</code>, "
1056
+ #~ "<code>markdown</code>, <code>limit</code>)"
1057
+ #~ msgstr ""
1058
+ #~ "La descripció de l'esdeveniment (atributs possibles: <code>html</code>, "
1059
+ #~ "<code>markdown</code>, <code>limit</code>)"
1060
+
1061
+ #~ msgid ""
1062
+ #~ "Anything between the opening and closing shortcode tags (inlcuding "
1063
+ #~ "further shortcodes) will be linked to the Google Calendar page for the "
1064
+ #~ "event (possible attributes: <code>newwindow</code>)"
1065
+ #~ msgstr ""
1066
+ #~ "Qualsevol cosa entre les etiquetes d'obertura i tancament (incloses les "
1067
+ #~ "etiquetes futures) s'enllaçaran a la pàgina de l'esdeveniment al Google "
1068
+ #~ "Calendar (atributs possibles: <code>newwindow</code>)"
1069
+
1070
+ #~ msgid "The raw URL to the Google Calendar page for the event"
1071
+ #~ msgstr ""
1072
+ #~ "L'URL sense formatar a la pàgina de l'esdeveniment al Google Calendar"
1073
+
1074
+ #~ msgid ""
1075
+ #~ "The length of the event, in human-readable format (possible attributes: "
1076
+ #~ "<code>precision</code>)"
1077
+ #~ msgstr ""
1078
+ #~ "La durada de l'esdeveniment en un format llegible per les persones "
1079
+ #~ "(atributs possibles: <code>precision</code>)"
1080
+
1081
+ #~ msgid ""
1082
+ #~ "The position of the event in the current list, or the position of the "
1083
+ #~ "event in the current month (for grids)"
1084
+ #~ msgstr ""
1085
+ #~ "La posició de l'esdeveniment a la llista actual o la posició de "
1086
+ #~ "l'esdeveniment en el mes actual (per a les graelles)"
1087
+
1088
+ #~ msgid "The event UID (a unique identifier assigned to the event by Google)"
1089
+ #~ msgstr ""
1090
+ #~ "L'UID de l'esdeveniment (un identificador únic assignat a l'esdeveniment "
1091
+ #~ "pel Google)"
1092
+
1093
+ #~ msgid "The title of the feed from which the event comes"
1094
+ #~ msgstr "El títol de l'entrada d'on prové l'esdeveniment"
1095
+
1096
+ #~ msgid "The ID of the feed from which the event comes"
1097
+ #~ msgstr "L'ID de l'entrada d'on prové l'esdeveniment"
1098
+
1099
+ #~ msgid ""
1100
+ #~ "The calendar ID (a unique identifier assigned to the calendar by Google)"
1101
+ #~ msgstr ""
1102
+ #~ "L'ID del calendari (un identificador únic assignat al calendari pel "
1103
+ #~ "Google)"
1104
+
1105
+ #~ msgid "Conditional shortcodes:"
1106
+ #~ msgstr "Codis curts condicionals:"
1107
+
1108
+ #~ msgid ""
1109
+ #~ "Anything entered between the opening and closing tags of each of the "
1110
+ #~ "following shortcodes will only be displayed if its condition (below) is "
1111
+ #~ "met."
1112
+ #~ msgstr ""
1113
+ #~ "Qualsevol cosa introduïda entre l'obertura i el tancament d'etiquetes de "
1114
+ #~ "cadascun dels codis curts següents, només es mostrarà si es compleix la "
1115
+ #~ "condició de sota."
1116
+
1117
+ #~ msgid "The event is an all-day event"
1118
+ #~ msgstr "L'esdeveniment dura tot el dia"
1119
+
1120
+ #~ msgid "The event is not an all-day event"
1121
+ #~ msgstr "L'esdeveniment no dura tot el dia"
1122
+
1123
+ #~ msgid "The event has a title"
1124
+ #~ msgstr "L'esdeveniment té títol"
1125
+
1126
+ #~ msgid "The event has a description"
1127
+ #~ msgstr "L'esdeveniment té descripció"
1128
+
1129
+ #~ msgid "The event has a location"
1130
+ #~ msgstr "L'esdeveniment té ubicació"
1131
+
1132
+ #~ msgid "The event is to be displayed in a tooltip (not a list)"
1133
+ #~ msgstr ""
1134
+ #~ "L'esdeveniment s'ha de mostrar en un text emergent (no en una llista)"
1135
+
1136
+ #~ msgid "The event is to be displayed in a list (not a tooltip)"
1137
+ #~ msgstr ""
1138
+ #~ "L'esdeveniment s'ha de mostrar en una llista (no en un text emergent)"
1139
+
1140
+ #~ msgid ""
1141
+ #~ "The event is taking place now (after the start time, but before the end "
1142
+ #~ "time)"
1143
+ #~ msgstr ""
1144
+ #~ "L'esdeveniment està tenint lloc en aquests moments (després de l'hora "
1145
+ #~ "d'inici, però abans de l'hora de finalització)"
1146
+
1147
+ #~ msgid ""
1148
+ #~ "The event is not taking place now (may have ended or not yet started)"
1149
+ #~ msgstr ""
1150
+ #~ "L'esdeveniment no està tenint lloc en aquests moments (pot haver acabat o "
1151
+ #~ "no haver començat)"
1152
+
1153
+ #~ msgid "The event has started (even if it has also ended)"
1154
+ #~ msgstr "L'esdeveniment ha començat (pot haver acabat)"
1155
+
1156
+ #~ msgid "The event has not started"
1157
+ #~ msgstr "L'esdeveniment no ha començat"
1158
+
1159
+ #~ msgid "The event has ended"
1160
+ #~ msgstr "L'esdeveniment ha acabat"
1161
+
1162
+ #~ msgid "The event has not ended (even if it hasn't started)"
1163
+ #~ msgstr "L'esdeveniment no ha acabat (pot no haver començat)"
1164
+
1165
+ #~ msgid "The event is the first of the day"
1166
+ #~ msgstr "L'esdeveniment és el primer del dia"
1167
+
1168
+ #~ msgid "The event is not the first of the day"
1169
+ #~ msgstr "L'esdeveniment no és el primer del dia"
1170
+
1171
+ #~ msgid "The event spans multiple days"
1172
+ #~ msgstr "L'esdeveniment dura més d'un dia"
1173
+
1174
+ #~ msgid "The event does not span multiple days"
1175
+ #~ msgstr "L'esdeveniment comença i acaba el mateix dia"
1176
+
1177
+ #~ msgid "Attributes:"
1178
+ #~ msgstr "Atributs:"
1179
+
1180
+ #~ msgid "The possible attributes mentioned above are explained here:"
1181
+ #~ msgstr "Els possibles atributs abans esmentats s'expliquen aquí:"
1182
+
1183
+ #~ msgid ""
1184
+ #~ "Whether or not to parse HTML that has been entered in the relevant field. "
1185
+ #~ "Can be <code>true</code> or <code>false</code>"
1186
+ #~ msgstr ""
1187
+ #~ "Si s'ha de parsejar o no el codi HTML que s'ha introduït en el camp. Pot "
1188
+ #~ "ser <code>true</code> o <code>false</code>"
1189
+
1190
+ #~ msgid ""
1191
+ #~ "Whether or not to parse <a href=\"http://daringfireball.net/projects/"
1192
+ #~ "markdown\" target=\"_blank\">Markdown</a> that has been entered in the "
1193
+ #~ "relevant field. <a href=\"http://michelf.com/projects/php-markdown\" "
1194
+ #~ "target=\"_blank\">PHP Markdown</a> must be installed for this to work. "
1195
+ #~ "Can be <code>true</code> or <code>false</code>"
1196
+ #~ msgstr ""
1197
+ #~ "Si s'ha de parsejar o no el text del camp amb el <a href=\"http://"
1198
+ #~ "daringfireball.net/projects/markdown\" target=\"_blank\">Markdown</a>. "
1199
+ #~ "Cal haver instal·lat el <a href=\"http://michelf.com/projects/php-markdown"
1200
+ #~ "\" target=\"_blank\">PHP Markdown</a> per a que això funcioni. Pot ser "
1201
+ #~ "<code>true</code> o <code>false</code>"
1202
+
1203
+ #~ msgid ""
1204
+ #~ "The word limit for the field. Should be specified as a positive integer"
1205
+ #~ msgstr "El nombre de paraules màxim pel camp. Ha de ser un número natural"
1206
+
1207
+ #~ msgid ""
1208
+ #~ "The date / time format to use. Should specified as a <a href=\"http://php."
1209
+ #~ "net/manual/en/function.date.php\" target=\"_blank\">PHP date format</a> "
1210
+ #~ "string"
1211
+ #~ msgstr ""
1212
+ #~ "El format de data i hora que s'ha d'utilitzar. S'ha d'especificar amb una "
1213
+ #~ "cadena de <a href=\"http://php.net/manual/en/function.date.php\" target="
1214
+ #~ "\"_blank\">format de data PHP</a>"
1215
+
1216
+ #~ msgid ""
1217
+ #~ "Whether or not the link should open in a new window / tab. Can be "
1218
+ #~ "<code>true</code> or <code>false</code>"
1219
+ #~ msgstr ""
1220
+ #~ "Si l'enllaç s'ha d'obrir en una finestra o pestanya noves. Pot ser "
1221
+ #~ "<code>true</code> o <code>false</code>"
1222
+
1223
+ #~ msgid ""
1224
+ #~ "How precise to be when displaying a time difference in human-readable "
1225
+ #~ "format. Should be specified as a positive integer"
1226
+ #~ msgstr ""
1227
+ #~ "Com de precís s'ha de ser en mostrar la diferència de temps en un format "
1228
+ #~ "llegible per les persones. S'ha d'especificar un número natural"
1229
+
1230
+ #~ msgid ""
1231
+ #~ "An offset (in seconds) to apply to start / end times before display. "
1232
+ #~ "Should be specified as a (positive or negative) integer"
1233
+ #~ msgstr ""
1234
+ #~ "Un desplaçament (en segons) per aplicar a les hores d'inici / final abans "
1235
+ #~ "de la visualització. S'ha d'especificar com un nombre sencer (positiu o "
1236
+ #~ "negatiu)"
1237
+
1238
+ #~ msgid ""
1239
+ #~ "Whether or not to automatically convert URLs in the description to links. "
1240
+ #~ "Can be <code>true</code> or <code>false</code>"
1241
+ #~ msgstr ""
1242
+ #~ "Si s'han de convertir automàticament en enllaços els URL que apareguin a "
1243
+ #~ "les descripcions. Pot ser <code>true</code> o <code>false</code>"
1244
+
1245
+ #~ msgid ""
1246
+ #~ "You can use some HTML in the text fields, but ensure it is valid or "
1247
+ #~ "things might go wonky. Text fields can be empty too."
1248
+ #~ msgstr ""
1249
+ #~ "Podeu fer servir HTML als camps de text, però assegureu-vos que és un "
1250
+ #~ "HMTL vàlid on algunes coses poden funcionar malament. Els camps de text "
1251
+ #~ "també poden estar buits."
1252
+
1253
+ #~ msgid "Don't display start time or date"
1254
+ #~ msgstr "No mostris la data o hora d'inici"
1255
+
1256
+ #~ msgid "Display start time and date (in that order)"
1257
+ #~ msgstr "Mostra l'hora i data d'inici (en aquest ordre)"
1258
+
1259
+ #~ msgid "Display start date and time (in that order)"
1260
+ #~ msgstr "Mostra la data i hora d'inici (en aquest ordre)"
1261
+
1262
+ #~ msgid "Don't display end time or date"
1263
+ #~ msgstr "No mostris l'hora o data de finalització"
1264
+
1265
+ #~ msgid "Display end date"
1266
+ #~ msgstr "Mostra la data de finalització"
1267
+
1268
+ #~ msgid "Display end time and date (in that order)"
1269
+ #~ msgstr "Mostra l'hora i data de finalització (en aquest ordre)"
1270
+
1271
+ #~ msgid "Display end date and time (in that order)"
1272
+ #~ msgstr "Mostra la data i hora de finalització (en aquest ordre)"
1273
+
1274
+ #~ msgid ""
1275
+ #~ "Show the description of events? (URLs in the description will be made "
1276
+ #~ "into links)."
1277
+ #~ msgstr ""
1278
+ #~ "Voleu mostrar la descripció dels esdeveniments? (l'URL de la descripció "
1279
+ #~ "es convertirà en un enllaç)."
1280
+
1281
+ #~ msgid "Enter the feed details below, then click the Add Feed button."
1282
+ #~ msgstr ""
1283
+ #~ "Afegiu els detalls de l'entrada a sota, després feu clic al botó Afegeix "
1284
+ #~ "entrada."
1285
+
1286
+ #~ msgid "This will probably be something like:"
1287
+ #~ msgstr "Això probablement serà similar a:"
1288
+
1289
+ #~ msgid "or:"
1290
+ #~ msgstr "o:"
1291
+
1292
+ #~ msgid ""
1293
+ #~ "The point in time at which to start retrieving events. Use the text-box "
1294
+ #~ "to specify an additional offset from you chosen start point. The offset "
1295
+ #~ "should be provided in seconds (3600 = 1 hour, 86400 = 1 day) and can be "
1296
+ #~ "negative. If you have selected the 'Specific date / time' option, enter a"
1297
+ #~ msgstr ""
1298
+ #~ "El punt en el temps en què es començaran a recuperar els esdeveniments. "
1299
+ #~ "Feu servir la caixa de text per especificar un desplaçament addicional al "
1300
+ #~ "punt triat inicialment. Aquest desplaçament s'ha de proporcionar en "
1301
+ #~ "segons (3600 = 1 hora, 86400 = 1 dia) i pot ser negatiu. Si heu "
1302
+ #~ "seleccionat l'opció 'Data / hora específics' poseu una"
1303
+
1304
+ #~ msgid "UNIX timestamp"
1305
+ #~ msgstr "marca de temps de UNIX"
1306
+
1307
+ #~ msgid "in the text-box."
1308
+ #~ msgstr "a la caixa de text."
1309
+
1310
+ #~ msgid "Now"
1311
+ #~ msgstr "Ara"
1312
+
1313
+ #~ msgid "00:00 today"
1314
+ #~ msgstr "00:00 avui"
1315
+
1316
+ #~ msgid ""
1317
+ #~ "Use the event display builder to customize how event information will be "
1318
+ #~ "displayed in the grid tooltips and in lists. Use HTML and the shortcodes "
1319
+ #~ "(explained below) to display the information you require. A basic example "
1320
+ #~ "display format is provided as a starting point. For more information, "
1321
+ #~ "take a look at the"
1322
+ #~ msgstr ""
1323
+ #~ "Utilitzeu el creador d'esdeveniments personalitzat per definir quina "
1324
+ #~ "informació es mostrarà als títols de la graella i a les llistes. "
1325
+ #~ "Utilitzeu HTML i codis curts (que s'explica més endavant) per mostrar la "
1326
+ #~ "informació necessària. Com a punt de partida, es proporciona un format "
1327
+ #~ "bàsic a mode d'exemple. Per obtenir més informació, feu un cop d'ull a la"
1328
+
1329
+ #~ msgid "event display builder guide"
1330
+ #~ msgstr "guia d'ús de creació d'esdeveniments personalitzats"
1331
+
1332
+ #~ msgid ""
1333
+ #~ "(More information on all of the below shortcodes and attributes, and "
1334
+ #~ "working examples, can be found in the"
1335
+ #~ msgstr ""
1336
+ #~ "(Podeu trobar més informació sobre tots els codis curts i atributs de "
1337
+ #~ "baix, així com exemples de treball a la"
1338
+
1339
+ #~ msgid "Refresh Feed Cache"
1340
+ #~ msgstr "Refresca la memòria cau de les entrades"
1341
+
1342
+ #~ msgid ""
1343
+ #~ "The plugin will automatically refresh the cache when it expires, but you "
1344
+ #~ "can manually clear the cache now by clicking the button below."
1345
+ #~ msgstr ""
1346
+ #~ "El connector actualitzarà automàticament la memòria cau quan expiri, però "
1347
+ #~ "es pot esborrar manualment ara fent clic al botó de sota."
1348
+
1349
+ #~ msgid "Are you want you want to clear the cache data for this feed?"
1350
+ #~ msgstr ""
1351
+ #~ "Esteu segurs que voleu esborrar les dades de la memòria cau d'aquesta "
1352
+ #~ "entrada?"
1353
+
1354
+ #~ msgid "Delete Feed"
1355
+ #~ msgstr "Esborra l'entrada"
1356
+
1357
+ #~ msgid ""
1358
+ #~ "Are you want you want to delete this feed? (Remember to remove / adjust "
1359
+ #~ "any widgets or shortcodes associated with this feed)."
1360
+ #~ msgstr ""
1361
+ #~ "Esteu segurs que voleu esborrar aquesta entrada? (Recordeu esborrar / "
1362
+ #~ "ajustar els ginys o codis curts associats a aquesta entrada)."
1363
+
1364
+ #~ msgid "Click here to add a new feed"
1365
+ #~ msgstr "Feu clic aquí per afegir una entrada nova"
1366
+
1367
+ #~ msgid "Add Feed"
1368
+ #~ msgstr "Afegeix entrada"
1369
+
1370
+ #~ msgid "Current Feeds"
1371
+ #~ msgstr "Entrades actuals"
1372
+
1373
+ #~ msgid "ID"
1374
+ #~ msgstr "ID"
1375
+
1376
+ #~ msgid "URL"
1377
+ #~ msgstr "URL"
1378
+
1379
+ #~ msgid "Refresh"
1380
+ #~ msgstr "Refresca"
1381
+
1382
+ #~ msgid "Edit"
1383
+ #~ msgstr "Edita"
1384
+
1385
+ #~ msgid "Delete"
1386
+ #~ msgstr "Esborra"
1387
+
1388
+ #~ msgid "Custom stylesheet URL"
1389
+ #~ msgstr "URL del full d'estils personalitzat"
1390
+
1391
+ #~ msgid ""
1392
+ #~ "If you want to alter the default plugin styling, create a new stylesheet "
1393
+ #~ "on your server (not in the <code>google-calendar-events</code> directory) "
1394
+ #~ "and then enter its URL below."
1395
+ #~ msgstr ""
1396
+ #~ "Si voleu canviar l'estil per defecte del giny, creeu un full d'estil nou "
1397
+ #~ "al vostre servidor (no al directori <code>google-calendar-events</code>) "
1398
+ #~ "i poseu aquí l'URL."
1399
+
1400
+ #~ msgid "Add JavaScript to footer?"
1401
+ #~ msgstr "Voleu afegir JavaScript al peu de pàgina?"
1402
+
1403
+ #~ msgid ""
1404
+ #~ "If you are having issues with tooltips not appearing or the AJAX "
1405
+ #~ "functionality not working, try ticking the checkbox below."
1406
+ #~ msgstr ""
1407
+ #~ "Si teniu problemes amb títols que no apareixen o l'AJAX no funciona, "
1408
+ #~ "proveu a marcar la casella de sota."
1409
+
1410
+ #~ msgid "Text to display while calendar data is loading (on AJAX requests)."
1411
+ #~ msgstr ""
1412
+ #~ "Text que es mostra mentre el calendari s'està carregant (en peticions "
1413
+ #~ "AJAX)."
1414
+
1415
+ #~ msgid "Error message"
1416
+ #~ msgstr "Missatge d'error"
1417
+
1418
+ #~ msgid ""
1419
+ #~ "An error message to display to non-admin users if events cannot be "
1420
+ #~ "displayed for any reason (admins will see a message indicating the cause "
1421
+ #~ "of the problem)."
1422
+ #~ msgstr ""
1423
+ #~ "Missatge d'error que es mostrarà als usuaris que no siguin administradors "
1424
+ #~ "si els esdeveniments no es poden mostrar per qualsevol motiu (els "
1425
+ #~ "administradors veuran un missatge indicant la causa del problema)."
1426
+
1427
+ #~ msgid "Optimise event retrieval?"
1428
+ #~ msgstr "Voleu optimitzar la recuperació de l'esdeveniment?"
1429
+
1430
+ #~ msgid ""
1431
+ #~ "If this option is enabled, the plugin will use an experimental feature of "
1432
+ #~ "the Google Data API, which can improve performance significantly, "
1433
+ #~ "especially with large numbers of events. Google could potentially "
1434
+ #~ "remove / change this feature at any time."
1435
+ #~ msgstr ""
1436
+ #~ "Si s'activa aquesta opció, el giny farà servir una característica "
1437
+ #~ "experimental de l'API de dades de Google que pot millorar "
1438
+ #~ "significativament el rendiment, sobretot si el nombre d'esdeveniments és "
1439
+ #~ "elevat. Google pot eliminar / canviar aquesta funció en qualsevol moment."
1440
+
1441
+ #~ msgid "Use old styles?"
1442
+ #~ msgstr "Voleu fer servir estils antics?"
1443
+
1444
+ #~ msgid ""
1445
+ #~ "Some CSS changes were made in version 0.7. If this option is enabled, the "
1446
+ #~ "old CSS will still be added along with the main stylesheet. You should "
1447
+ #~ "consider updating your stylesheet so that you don't need this enabled."
1448
+ #~ msgstr ""
1449
+ #~ "Es van fer alguns canvis d'estil CSS en la versió 0.7. Si aquesta opció "
1450
+ #~ "està activada, s'afegirà el CSS antic, juntament amb el full d'estils "
1451
+ #~ "principal. Hauríeu de considerar actualitzar el vostre full d'estils per "
1452
+ #~ "no tenir la necessitat d'activar aquesta opció."
1453
+
1454
+ #~ msgid "Save"
1455
+ #~ msgstr "Desa"
1456
+
1457
+ #~ msgid ""
1458
+ #~ "No feeds have been added yet. You can add a feed in the Google Calendar "
1459
+ #~ "Events settings."
1460
+ #~ msgstr ""
1461
+ #~ "Encara no s'ha afegit cap entrada. Podeu afegir una entrada a la "
1462
+ #~ "configuració d'esdeveniments del Google Calendar."
1463
+
1464
+ #~ msgid ""
1465
+ #~ "No feeds have been added yet. You can add feeds in the Google Calendar "
1466
+ #~ "Events settings."
1467
+ #~ msgstr ""
1468
+ #~ "Encara no s'ha afegit cap entrada. Podeu afegir entrades a la "
1469
+ #~ "configuració d'esdeveniments del Google Calendar."
1470
+
1471
+ #~ msgid "Calendar Grid"
1472
+ #~ msgstr "Graella de calendari"
1473
+
1474
+ #~ msgid "List - grouped by date"
1475
+ #~ msgstr "Llista - agrupada per data"
1476
+
1477
+ #~ msgid ""
1478
+ #~ "1 or more of your feeds could not be displayed. The following errors "
1479
+ #~ "occurred:"
1480
+ #~ msgstr ""
1481
+ #~ "Una o més de les vostres entrades no es poden mostrar. S'han trobat els "
1482
+ #~ "errors següents:"
1483
+
1484
+ #~ msgid "Notice:"
1485
+ #~ msgstr "Avís:"
1486
+
1487
+ #~ msgid ""
1488
+ #~ "The way in which Google Calendar Events stores cached data has been much "
1489
+ #~ "improved in version 0.6. As you have upgraded from a previous version of "
1490
+ #~ "the plugin, there is likely to be some data from the old caching system "
1491
+ #~ "hanging around in your database that is now useless. Click below to clear "
1492
+ #~ "expired cached data from your database."
1493
+ #~ msgstr ""
1494
+ #~ "La forma en què Esdeveniments de Google Calendar desa les dades a la "
1495
+ #~ "memòria cau ha estat millorada a la versió 0.6. Com que heu actualitzat "
1496
+ #~ "des d'una versió anterior del connector, pot ser que hi hagi dades dels "
1497
+ #~ "sistema antic, que ja no són útils, a la vostra base de dades. Feu clic a "
1498
+ #~ "continuació per esborrar aquestes dades antigues emmagatzemades a la "
1499
+ #~ "memòria cau de la base de dades."
1500
+
1501
+ #~ msgid "Clear expired cached data"
1502
+ #~ msgstr "Esborra dades antigues de la memòria cau"
1503
+
1504
+ #~ msgid "or"
1505
+ #~ msgstr "o"
1506
+
1507
+ #~ msgid "Ignore this notice"
1508
+ #~ msgstr "Ignora aquest avís"
1509
+
1510
+ #~ msgid "Cancel"
1511
+ #~ msgstr "Cancel·la"
1512
+
1513
+ #~ msgid "Refresh Feed"
1514
+ #~ msgstr "Refresca l'entrada"
1515
+
1516
+ #~ msgid "Save Changes"
1517
+ #~ msgstr "Desa els canvis"
1518
+
1519
+ #~ msgid "Old cached data cleared."
1520
+ #~ msgstr "S'han esborrat les dades antigues de la memòria cau"
1521
+
1522
+ #~ msgid "General options updated."
1523
+ #~ msgstr "S'han desat les opcions generals"
1524
+
1525
+ #~ msgid ""
1526
+ #~ "No valid Feed IDs have been entered for this shortcode. Please check that "
1527
+ #~ "you have entered the IDs correctly and that the Feeds have not been "
1528
+ #~ "deleted."
1529
+ #~ msgstr ""
1530
+ #~ "No hi ha cap ID d'entrada vàlid en aquest codi curt. Comproveu que heu "
1531
+ #~ "introduït els codis correctament i que les entrades no s'han eliminat."
1532
+
1533
+ #~ msgid "http://www.rhanney.co.uk/plugins/google-calendar-events"
1534
+ #~ msgstr "http://www.rhanney.co.uk/plugins/google-calendar-events"
1535
+
1536
+ #~ msgid ""
1537
+ #~ "Parses Google Calendar feeds and displays the events as a calendar grid "
1538
+ #~ "or list on a page, post or widget."
1539
+ #~ msgstr ""
1540
+ #~ "Analitza les entrades de Google Calendar i mostra els esdeveniments com "
1541
+ #~ "una graella de calendari, una llista en una pàgina, un article o un giny."
languages/gce.pot CHANGED
@@ -1,8 +1,8 @@
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Google Calendar Events\n"
4
- "POT-Creation-Date: 2014-11-22 16:21-0700\n"
5
- "PO-Revision-Date: 2014-11-22 16:21-0700\n"
6
  "Last-Translator: \n"
7
  "Language-Team: \n"
8
  "Language: en\n"
@@ -15,43 +15,47 @@ msgstr ""
15
  "X-Poedit-KeywordsList: __;_e\n"
16
  "X-Poedit-SearchPath-0: google-calendar-events\n"
17
 
18
- #: google-calendar-events/class-google-calendar-events-admin.php:128
19
- #: google-calendar-events/class-google-calendar-events-admin.php:129
20
- #: google-calendar-events/class-google-calendar-events-admin.php:200
21
  #: google-calendar-events/includes/register-settings.php:54
22
  msgid "General Settings"
23
  msgstr ""
24
 
25
- #: google-calendar-events/class-google-calendar-events-admin.php:188
26
  #: google-calendar-events/views/widgets.php:27
27
  msgid "Google Calendar Events"
28
  msgstr ""
29
 
30
- #: google-calendar-events/class-google-calendar-events-admin.php:201
31
  msgid "Feeds"
32
  msgstr ""
33
 
 
 
 
 
34
  #: google-calendar-events/includes/admin/admin-functions.php:20
35
  msgid "Cache has been cleared for this feed."
36
  msgstr ""
37
 
38
  #: google-calendar-events/includes/admin/admin-functions.php:35
39
- #: google-calendar-events/includes/admin/admin-functions.php:57
40
  msgid "Starts:"
41
  msgstr ""
42
 
43
  #: google-calendar-events/includes/admin/admin-functions.php:36
44
- #: google-calendar-events/includes/admin/admin-functions.php:59
45
  msgid "Ends:"
46
  msgstr ""
47
 
48
  #: google-calendar-events/includes/admin/admin-functions.php:37
49
- #: google-calendar-events/includes/admin/admin-functions.php:61
50
  msgid "Location:"
51
  msgstr ""
52
 
53
  #: google-calendar-events/includes/admin/admin-functions.php:38
54
- #: google-calendar-events/includes/admin/admin-functions.php:62
55
  msgid "Description:"
56
  msgstr ""
57
 
@@ -59,108 +63,135 @@ msgstr ""
59
  msgid "More details..."
60
  msgstr ""
61
 
62
- #: google-calendar-events/includes/admin/admin-functions.php:64
63
  msgid "More Details"
64
  msgstr ""
65
 
66
- #: google-calendar-events/includes/admin/admin-functions.php:78
67
- #: google-calendar-events/includes/gce-feed-cpt.php:264
68
  msgid "Clear Cache"
69
  msgstr ""
70
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71
  #: google-calendar-events/includes/class-gce-display.php:179
72
- #: google-calendar-events/includes/class-gce-display.php:270
73
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:185
74
- #: google-calendar-events/views/widgets.php:252
75
  msgid "Back"
76
  msgstr ""
77
 
78
  #: google-calendar-events/includes/class-gce-display.php:183
79
- #: google-calendar-events/includes/class-gce-display.php:271
80
  msgid "Next"
81
  msgstr ""
82
 
83
- #: google-calendar-events/includes/class-gce-display.php:371
84
  msgid "No events to display."
85
  msgstr ""
86
 
87
- #: google-calendar-events/includes/class-gce-event.php:504
88
  #, php-format
89
  msgid "%s year"
90
  msgstr ""
91
 
92
- #: google-calendar-events/includes/class-gce-event.php:504
93
  #, php-format
94
  msgid "%s years"
95
  msgstr ""
96
 
97
- #: google-calendar-events/includes/class-gce-event.php:505
98
  #, php-format
99
  msgid "%s month"
100
  msgstr ""
101
 
102
- #: google-calendar-events/includes/class-gce-event.php:505
103
  #, php-format
104
  msgid "%s months"
105
  msgstr ""
106
 
107
- #: google-calendar-events/includes/class-gce-event.php:506
108
  #, php-format
109
  msgid "%s week"
110
  msgstr ""
111
 
112
- #: google-calendar-events/includes/class-gce-event.php:506
113
  #, php-format
114
  msgid "%s weeks"
115
  msgstr ""
116
 
117
- #: google-calendar-events/includes/class-gce-event.php:507
118
  #, php-format
119
  msgid "%s day"
120
  msgstr ""
121
 
122
- #: google-calendar-events/includes/class-gce-event.php:507
123
  #, php-format
124
  msgid "%s days"
125
  msgstr ""
126
 
127
- #: google-calendar-events/includes/class-gce-event.php:508
128
  #, php-format
129
  msgid "%s hour"
130
  msgstr ""
131
 
132
- #: google-calendar-events/includes/class-gce-event.php:508
133
  #, php-format
134
  msgid "%s hours"
135
  msgstr ""
136
 
137
- #: google-calendar-events/includes/class-gce-event.php:509
138
  #, php-format
139
  msgid "%s min"
140
  msgstr ""
141
 
142
- #: google-calendar-events/includes/class-gce-event.php:509
143
  #, php-format
144
  msgid "%s mins"
145
  msgstr ""
146
 
147
- #: google-calendar-events/includes/class-gce-feed.php:89
148
  msgid ""
149
- "The feed URL has not been set. Please make sure to set it correctly in the "
150
- "Feed settings."
151
  msgstr ""
152
 
153
- #: google-calendar-events/includes/class-gce-feed.php:194
154
  msgid ""
155
  "Some data was retrieved, but could not be parsed successfully. Please ensure "
156
  "your feed settings are correct."
157
  msgstr ""
158
 
159
- #: google-calendar-events/includes/class-gce-feed.php:197
160
  msgid "An error has occured."
161
  msgstr ""
162
 
163
- #: google-calendar-events/includes/class-gce-feed.php:202
164
  msgid " Please ensure your calendar ID is correct."
165
  msgstr ""
166
 
@@ -256,41 +287,35 @@ msgstr ""
256
  msgid "Display Options"
257
  msgstr ""
258
 
259
- #: google-calendar-events/includes/gce-feed-cpt.php:217
260
  msgid "Feed ID"
261
  msgstr ""
262
 
263
- #: google-calendar-events/includes/gce-feed-cpt.php:218
264
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:73
265
  msgid "Feed Shortcode"
266
  msgstr ""
267
 
268
- #: google-calendar-events/includes/gce-feed-cpt.php:219
269
  msgid "Display Type"
270
  msgstr ""
271
 
272
- #: google-calendar-events/includes/gce-feed-cpt.php:246
273
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:152
274
- #: google-calendar-events/views/widgets.php:218
275
  msgid "Grid"
276
  msgstr ""
277
 
278
- #: google-calendar-events/includes/gce-feed-cpt.php:248
279
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:153
280
- #: google-calendar-events/views/widgets.php:219
281
  msgid "List"
282
  msgstr ""
283
 
284
- #: google-calendar-events/includes/gce-feed-cpt.php:250
285
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:154
286
- #: google-calendar-events/views/widgets.php:220
287
  msgid "Grouped List"
288
  msgstr ""
289
 
290
- #: google-calendar-events/includes/misc-functions.php:21
291
- msgid "Loading..."
292
- msgstr ""
293
-
294
  #: google-calendar-events/includes/register-settings.php:29
295
  msgid "Google API Key"
296
  msgstr ""
@@ -330,32 +355,10 @@ msgid ""
330
  "The callback function used for the <strong>%s</strong> setting is missing."
331
  msgstr ""
332
 
333
- #: google-calendar-events/views/admin/api-settings-notice.php:27
334
- msgid "GCal Events Important Update (Nov. 19, 2014):"
335
- msgstr ""
336
-
337
- #: google-calendar-events/views/admin/api-settings-notice.php:28
338
  msgid ""
339
- "GCal Events now uses the Google API version 3, which requires use of a "
340
- "public key."
341
- msgstr ""
342
-
343
- #: google-calendar-events/views/admin/api-settings-notice.php:29
344
- msgid ""
345
- "By default a shared key is used across all plugin users, which is limited to "
346
- "500,000 requests per day and 5 requests per second."
347
- msgstr ""
348
-
349
- #: google-calendar-events/views/admin/api-settings-notice.php:30
350
- msgid "To avoid these limits you can use your own Google API key."
351
- msgstr ""
352
-
353
- #: google-calendar-events/views/admin/api-settings-notice.php:33
354
- msgid "Update your API settings now"
355
- msgstr ""
356
-
357
- #: google-calendar-events/views/admin/api-settings-notice.php:34
358
- msgid "Hide this"
359
  msgstr ""
360
 
361
  #: google-calendar-events/views/admin/display-options-meta.php:39
@@ -482,223 +485,253 @@ msgstr ""
482
  msgid "The link text to be displayed."
483
  msgstr ""
484
 
485
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:54
486
- msgid ""
487
- "We're <strong>smack dab</strong> in the middle of building additional "
488
- "features for this plugin. Have ideas?"
489
- msgstr ""
490
-
491
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:57
492
- msgid "Visit our roadmap and tell us what you're looking for"
493
- msgstr ""
494
-
495
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:63
496
  msgid "Want to be in the know?"
497
  msgstr ""
498
 
499
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:66
500
  msgid "Get notified when new features are released"
501
  msgstr ""
502
 
503
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:77
504
  msgid ""
505
  "Copy and paste this shortcode to display this Google Calendar feed on any "
506
  "post or page."
507
  msgstr ""
508
 
509
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:78
510
  msgid ""
511
  "To avoid display issues, make sure to paste the shortcode in the Text tab of "
512
  "the post editor."
513
  msgstr ""
514
 
515
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:83
516
  msgid "Google Calendar ID"
517
  msgstr ""
518
 
519
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:87
520
  msgid "The Google Calendar ID."
521
  msgstr ""
522
 
523
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:87
524
  msgid "Example"
525
  msgstr ""
526
 
527
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:89
528
- msgid "How to find your GCal calendar ID"
529
  msgstr ""
530
 
531
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:95
532
  msgid "Search Query"
533
  msgstr ""
534
 
535
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:98
536
  msgid "Find and show events based on a search query."
537
  msgstr ""
538
 
539
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:103
540
  msgid "Expand Recurring Events?"
541
  msgstr ""
542
 
543
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:105
544
  msgid "Yes"
545
  msgstr ""
546
 
547
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:106
548
  msgid ""
549
- "This will show recurring events each time they occur, otherwise it will only "
550
- "show the event the first time it occurs."
551
  msgstr ""
552
 
553
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:111
554
- msgid "Date Format"
555
- msgstr ""
556
-
557
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:115
558
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:126
559
- #, php-format
560
- msgid "Use %sPHP date formatting%s."
561
  msgstr ""
562
 
563
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:116
564
  #: google-calendar-events/views/admin/gce-feed-meta-display.php:127
565
- msgid "Leave blank to use the default."
566
  msgstr ""
567
 
568
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:122
569
- msgid "Time Format"
 
 
570
  msgstr ""
571
 
572
  #: google-calendar-events/views/admin/gce-feed-meta-display.php:133
573
- msgid "Cache Duration"
574
  msgstr ""
575
 
576
  #: google-calendar-events/views/admin/gce-feed-meta-display.php:136
577
- msgid ""
578
- "The length of time, in seconds, to cache the feed (43200 = 12 hours). If "
579
- "this feed changes regularly, you may want to reduce the cache duration."
580
  msgstr ""
581
 
582
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:141
583
- msgid "Multiple Day Events"
 
584
  msgstr ""
585
 
586
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:143
587
- msgid "Show on each day"
588
  msgstr ""
589
 
590
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:144
591
- msgid ""
592
- "Show events that span multiple days on each day that they span, rather than "
593
- "just the first day."
594
  msgstr ""
595
 
596
  #: google-calendar-events/views/admin/gce-feed-meta-display.php:149
597
- msgid "Display Mode"
 
598
  msgstr ""
599
 
600
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:156
601
- msgid "Choose how you want your calendar to be displayed."
 
602
  msgstr ""
603
 
604
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:161
605
- msgid "Show Paging Links"
 
606
  msgstr ""
607
 
608
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:163
609
- #: google-calendar-events/views/widgets.php:227
610
- msgid "Check this option to display Next and Back navigation links."
611
  msgstr ""
612
 
613
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:168
614
- msgid "Number of Events per Page"
615
  msgstr ""
616
 
617
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:172
618
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:183
619
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:197
620
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:211
621
- #: google-calendar-events/views/widgets.php:242
622
- #: google-calendar-events/views/widgets.php:250
623
- msgid "Days"
624
  msgstr ""
625
 
626
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:173
627
- #: google-calendar-events/views/widgets.php:243
628
- msgid "Events"
 
629
  msgstr ""
630
 
631
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:175
632
- msgid "How many events to display per page (List View only)."
 
 
633
  msgstr ""
634
 
635
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:180
636
- msgid "Display Start Date Offset"
 
 
 
637
  msgstr ""
638
 
639
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:186
640
- #: google-calendar-events/views/widgets.php:253
641
- msgid "Ahead"
642
  msgstr ""
643
 
644
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:188
645
- msgid ""
646
- "Change if you need to initially display events on a date other than today "
647
- "(List View only)."
648
  msgstr ""
649
 
650
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:193
651
- msgid "Minimum Feed Start Date"
652
  msgstr ""
653
 
654
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:198
655
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:212
656
- msgid "Months"
657
  msgstr ""
658
 
659
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:199
660
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:213
661
- msgid "Years"
 
 
 
662
  msgstr ""
663
 
664
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:201
665
- msgid "back"
666
  msgstr ""
667
 
668
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:202
669
  msgid ""
670
- "Set how far back to retrieve events regardless of month or page being "
671
- "displayed."
672
  msgstr ""
673
 
674
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:207
675
- msgid "Maximum Feed End Date"
676
  msgstr ""
677
 
678
- #: google-calendar-events/views/admin/gce-feed-meta-display.php:215
679
- msgid "forward"
680
  msgstr ""
681
 
682
  #: google-calendar-events/views/admin/gce-feed-meta-display.php:216
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
683
  msgid ""
684
- "Set how far in the future to retrieve events regardless of month or page "
685
- "being displayed."
686
  msgstr ""
687
 
688
  #: google-calendar-events/views/admin/gce-feed-sidebar-help.php:6
689
  msgid "Documentation & getting started"
690
  msgstr ""
691
 
692
- #: google-calendar-events/views/admin/gce-feed-sidebar-help.php:12
693
  msgid "Community support forums"
694
  msgstr ""
695
 
696
- #: google-calendar-events/views/admin/gce-feed-sidebar-help.php:18
697
- msgid "Get notified of new features"
698
  msgstr ""
699
 
700
- #: google-calendar-events/views/admin/gce-feed-sidebar-help.php:24
701
- msgid "Rate this plugin"
 
 
 
 
702
  msgstr ""
703
 
704
  #: google-calendar-events/views/widgets.php:28
@@ -707,66 +740,74 @@ msgid ""
707
  "feeds you have added"
708
  msgstr ""
709
 
710
- #: google-calendar-events/views/widgets.php:111
711
  msgid ""
712
  "No valid Feed IDs have been entered for this widget. Please check that you "
713
  "have entered the IDs correctly in the widget settings (Appearance > "
714
  "Widgets), and that the Feeds have not been deleted."
715
  msgstr ""
716
 
717
- #: google-calendar-events/views/widgets.php:144
 
 
 
 
 
 
718
  msgid "You have not added any feeds yet."
719
  msgstr ""
720
 
721
- #: google-calendar-events/views/widgets.php:186
722
  msgid "There are no feeds created yet."
723
  msgstr ""
724
 
725
- #: google-calendar-events/views/widgets.php:187
726
  msgid "Add your first feed!"
727
  msgstr ""
728
 
729
- #: google-calendar-events/views/widgets.php:197
730
  msgid "Events on"
731
  msgstr ""
732
 
733
- #: google-calendar-events/views/widgets.php:206
734
  msgid "Title:"
735
  msgstr ""
736
 
737
- #: google-calendar-events/views/widgets.php:211
738
  msgid "Feeds to Display (comma separated list - i.e. 101,102,103):"
739
  msgstr ""
740
 
741
- #: google-calendar-events/views/widgets.php:216
742
  msgid "Display Events as:"
743
  msgstr ""
744
 
745
- #: google-calendar-events/views/widgets.php:225
746
- msgid "Show Paging Links:"
747
- msgstr ""
748
-
749
- #: google-calendar-events/views/widgets.php:231
750
  msgid "Sort Order (List View only):"
751
  msgstr ""
752
 
753
- #: google-calendar-events/views/widgets.php:233
754
  msgid "Ascending"
755
  msgstr ""
756
 
757
- #: google-calendar-events/views/widgets.php:234
758
  msgid "Descending"
759
  msgstr ""
760
 
761
- #: google-calendar-events/views/widgets.php:239
762
- msgid "Number of Events per Page (List View only):"
763
  msgstr ""
764
 
765
- #: google-calendar-events/views/widgets.php:248
 
 
 
 
 
 
766
  msgid "Display Start Date Offset (List View only):"
767
  msgstr ""
768
 
769
- #: google-calendar-events/views/widgets.php:258
770
  msgid ""
771
  "Display Title on Tooltip/List Item (e.g. 'Events on 7th March'). Grouped "
772
  "lists always have a title displayed."
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Google Calendar Events\n"
4
+ "POT-Creation-Date: 2015-02-25 15:34-0700\n"
5
+ "PO-Revision-Date: 2015-02-25 15:34-0700\n"
6
  "Last-Translator: \n"
7
  "Language-Team: \n"
8
  "Language: en\n"
15
  "X-Poedit-KeywordsList: __;_e\n"
16
  "X-Poedit-SearchPath-0: google-calendar-events\n"
17
 
18
+ #: google-calendar-events/class-google-calendar-events-admin.php:126
19
+ #: google-calendar-events/class-google-calendar-events-admin.php:127
20
+ #: google-calendar-events/class-google-calendar-events-admin.php:218
21
  #: google-calendar-events/includes/register-settings.php:54
22
  msgid "General Settings"
23
  msgstr ""
24
 
25
+ #: google-calendar-events/class-google-calendar-events-admin.php:206
26
  #: google-calendar-events/views/widgets.php:27
27
  msgid "Google Calendar Events"
28
  msgstr ""
29
 
30
+ #: google-calendar-events/class-google-calendar-events-admin.php:219
31
  msgid "Feeds"
32
  msgstr ""
33
 
34
+ #: google-calendar-events/class-google-calendar-events.php:90
35
+ msgid "Loading..."
36
+ msgstr ""
37
+
38
  #: google-calendar-events/includes/admin/admin-functions.php:20
39
  msgid "Cache has been cleared for this feed."
40
  msgstr ""
41
 
42
  #: google-calendar-events/includes/admin/admin-functions.php:35
43
+ #: google-calendar-events/includes/admin/admin-functions.php:55
44
  msgid "Starts:"
45
  msgstr ""
46
 
47
  #: google-calendar-events/includes/admin/admin-functions.php:36
48
+ #: google-calendar-events/includes/admin/admin-functions.php:57
49
  msgid "Ends:"
50
  msgstr ""
51
 
52
  #: google-calendar-events/includes/admin/admin-functions.php:37
53
+ #: google-calendar-events/includes/admin/admin-functions.php:59
54
  msgid "Location:"
55
  msgstr ""
56
 
57
  #: google-calendar-events/includes/admin/admin-functions.php:38
58
+ #: google-calendar-events/includes/admin/admin-functions.php:60
59
  msgid "Description:"
60
  msgstr ""
61
 
63
  msgid "More details..."
64
  msgstr ""
65
 
66
+ #: google-calendar-events/includes/admin/admin-functions.php:62
67
  msgid "More Details"
68
  msgstr ""
69
 
70
+ #: google-calendar-events/includes/admin/admin-functions.php:76
71
+ #: google-calendar-events/includes/gce-feed-cpt.php:279
72
  msgid "Clear Cache"
73
  msgstr ""
74
 
75
+ #: google-calendar-events/includes/admin/admin-notice.php:26
76
+ msgid "GCal API Key Notice"
77
+ msgstr ""
78
+
79
+ #: google-calendar-events/includes/admin/admin-notice.php:28
80
+ msgid ""
81
+ "GCal Events uses the Google Calendar API version 3. By default this plugin "
82
+ "uses a public shared key across all plugin users."
83
+ msgstr ""
84
+
85
+ #: google-calendar-events/includes/admin/admin-notice.php:30
86
+ msgid ""
87
+ "This key is limited to 500,000 requests per day and 5 requests per second. "
88
+ "To avoid running into any potential limits you can use your own Google API "
89
+ "key."
90
+ msgstr ""
91
+
92
+ #: google-calendar-events/includes/admin/admin-notice.php:33
93
+ msgid "Enter your GCal API key"
94
+ msgstr ""
95
+
96
+ #: google-calendar-events/includes/admin/admin-notice.php:34
97
+ msgid "Configure GCal feeds"
98
+ msgstr ""
99
+
100
+ #: google-calendar-events/includes/admin/admin-notice.php:35
101
+ msgid "Hide this"
102
+ msgstr ""
103
+
104
  #: google-calendar-events/includes/class-gce-display.php:179
105
+ #: google-calendar-events/includes/class-gce-display.php:289
 
 
106
  msgid "Back"
107
  msgstr ""
108
 
109
  #: google-calendar-events/includes/class-gce-display.php:183
110
+ #: google-calendar-events/includes/class-gce-display.php:290
111
  msgid "Next"
112
  msgstr ""
113
 
114
+ #: google-calendar-events/includes/class-gce-display.php:392
115
  msgid "No events to display."
116
  msgstr ""
117
 
118
+ #: google-calendar-events/includes/class-gce-event.php:518
119
  #, php-format
120
  msgid "%s year"
121
  msgstr ""
122
 
123
+ #: google-calendar-events/includes/class-gce-event.php:518
124
  #, php-format
125
  msgid "%s years"
126
  msgstr ""
127
 
128
+ #: google-calendar-events/includes/class-gce-event.php:519
129
  #, php-format
130
  msgid "%s month"
131
  msgstr ""
132
 
133
+ #: google-calendar-events/includes/class-gce-event.php:519
134
  #, php-format
135
  msgid "%s months"
136
  msgstr ""
137
 
138
+ #: google-calendar-events/includes/class-gce-event.php:520
139
  #, php-format
140
  msgid "%s week"
141
  msgstr ""
142
 
143
+ #: google-calendar-events/includes/class-gce-event.php:520
144
  #, php-format
145
  msgid "%s weeks"
146
  msgstr ""
147
 
148
+ #: google-calendar-events/includes/class-gce-event.php:521
149
  #, php-format
150
  msgid "%s day"
151
  msgstr ""
152
 
153
+ #: google-calendar-events/includes/class-gce-event.php:521
154
  #, php-format
155
  msgid "%s days"
156
  msgstr ""
157
 
158
+ #: google-calendar-events/includes/class-gce-event.php:522
159
  #, php-format
160
  msgid "%s hour"
161
  msgstr ""
162
 
163
+ #: google-calendar-events/includes/class-gce-event.php:522
164
  #, php-format
165
  msgid "%s hours"
166
  msgstr ""
167
 
168
+ #: google-calendar-events/includes/class-gce-event.php:523
169
  #, php-format
170
  msgid "%s min"
171
  msgstr ""
172
 
173
+ #: google-calendar-events/includes/class-gce-event.php:523
174
  #, php-format
175
  msgid "%s mins"
176
  msgstr ""
177
 
178
+ #: google-calendar-events/includes/class-gce-feed.php:93
179
  msgid ""
180
+ "The Google Calendar ID has not been set. Please make sure to set it "
181
+ "correctly in the Feed settings."
182
  msgstr ""
183
 
184
+ #: google-calendar-events/includes/class-gce-feed.php:197
185
  msgid ""
186
  "Some data was retrieved, but could not be parsed successfully. Please ensure "
187
  "your feed settings are correct."
188
  msgstr ""
189
 
190
+ #: google-calendar-events/includes/class-gce-feed.php:200
191
  msgid "An error has occured."
192
  msgstr ""
193
 
194
+ #: google-calendar-events/includes/class-gce-feed.php:205
195
  msgid " Please ensure your calendar ID is correct."
196
  msgstr ""
197
 
287
  msgid "Display Options"
288
  msgstr ""
289
 
290
+ #: google-calendar-events/includes/gce-feed-cpt.php:232
291
  msgid "Feed ID"
292
  msgstr ""
293
 
294
+ #: google-calendar-events/includes/gce-feed-cpt.php:233
295
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:87
296
  msgid "Feed Shortcode"
297
  msgstr ""
298
 
299
+ #: google-calendar-events/includes/gce-feed-cpt.php:234
300
  msgid "Display Type"
301
  msgstr ""
302
 
303
+ #: google-calendar-events/includes/gce-feed-cpt.php:261
 
 
304
  msgid "Grid"
305
  msgstr ""
306
 
307
+ #: google-calendar-events/includes/gce-feed-cpt.php:263
308
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:137
309
+ #: google-calendar-events/views/widgets.php:287
310
  msgid "List"
311
  msgstr ""
312
 
313
+ #: google-calendar-events/includes/gce-feed-cpt.php:265
314
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:138
315
+ #: google-calendar-events/views/widgets.php:288
316
  msgid "Grouped List"
317
  msgstr ""
318
 
 
 
 
 
319
  #: google-calendar-events/includes/register-settings.php:29
320
  msgid "Google API Key"
321
  msgstr ""
355
  "The callback function used for the <strong>%s</strong> setting is missing."
356
  msgstr ""
357
 
358
+ #: google-calendar-events/includes/shortcodes.php:95
 
 
 
 
359
  msgid ""
360
+ "There was a problem with one or more of your feed IDs. Please check your "
361
+ "shortcode settings and make sure they are correct."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
362
  msgstr ""
363
 
364
  #: google-calendar-events/views/admin/display-options-meta.php:39
485
  msgid "The link text to be displayed."
486
  msgstr ""
487
 
488
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:77
 
 
 
 
 
 
 
 
 
 
489
  msgid "Want to be in the know?"
490
  msgstr ""
491
 
492
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:80
493
  msgid "Get notified when new features are released"
494
  msgstr ""
495
 
496
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:91
497
  msgid ""
498
  "Copy and paste this shortcode to display this Google Calendar feed on any "
499
  "post or page."
500
  msgstr ""
501
 
502
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:92
503
  msgid ""
504
  "To avoid display issues, make sure to paste the shortcode in the Text tab of "
505
  "the post editor."
506
  msgstr ""
507
 
508
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:97
509
  msgid "Google Calendar ID"
510
  msgstr ""
511
 
512
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:101
513
  msgid "The Google Calendar ID."
514
  msgstr ""
515
 
516
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:101
517
  msgid "Example"
518
  msgstr ""
519
 
520
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:103
521
+ msgid "How to find your Google Calendar ID"
522
  msgstr ""
523
 
524
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:109
525
  msgid "Search Query"
526
  msgstr ""
527
 
528
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:112
529
  msgid "Find and show events based on a search query."
530
  msgstr ""
531
 
532
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:117
533
  msgid "Expand Recurring Events?"
534
  msgstr ""
535
 
536
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:119
537
  msgid "Yes"
538
  msgstr ""
539
 
540
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:120
541
  msgid ""
542
+ "Display recurring events each time they occur. If disabled, events will be "
543
+ "displayed only the first time they occur."
544
  msgstr ""
545
 
546
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:125
547
+ msgid "Multiple Day Events"
 
 
 
 
 
 
548
  msgstr ""
549
 
 
550
  #: google-calendar-events/views/admin/gce-feed-meta-display.php:127
551
+ msgid "Show on each day"
552
  msgstr ""
553
 
554
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:128
555
+ msgid ""
556
+ "Display multiple day events on each day that they span. If disabled, "
557
+ "multiple day events will be displayed only on the first day they occur."
558
  msgstr ""
559
 
560
  #: google-calendar-events/views/admin/gce-feed-meta-display.php:133
561
+ msgid "Display Mode"
562
  msgstr ""
563
 
564
  #: google-calendar-events/views/admin/gce-feed-meta-display.php:136
565
+ #: google-calendar-events/views/widgets.php:286
566
+ msgid "Grid (Month view)"
 
567
  msgstr ""
568
 
569
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:139
570
+ #: google-calendar-events/views/widgets.php:289
571
+ msgid "Custom Date Range (List)"
572
  msgstr ""
573
 
574
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:141
575
+ msgid "Select how to display this feed."
576
  msgstr ""
577
 
578
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:146
579
+ msgid "Events per Page"
 
 
580
  msgstr ""
581
 
582
  #: google-calendar-events/views/admin/gce-feed-meta-display.php:149
583
+ #: google-calendar-events/views/widgets.php:304
584
+ msgid "Number of Days"
585
  msgstr ""
586
 
587
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:150
588
+ #: google-calendar-events/views/widgets.php:305
589
+ msgid "Number of Events"
590
  msgstr ""
591
 
592
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:151
593
+ #: google-calendar-events/views/widgets.php:306
594
+ msgid "One Week"
595
  msgstr ""
596
 
597
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:152
598
+ #: google-calendar-events/views/widgets.php:307
599
+ msgid "One Month"
600
  msgstr ""
601
 
602
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:157
603
+ msgid "How many events to display per page (List View only)."
604
  msgstr ""
605
 
606
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:162
607
+ msgid "Display Start Date Offset"
 
 
 
 
 
608
  msgstr ""
609
 
610
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:165
611
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:177
612
+ #: google-calendar-events/views/widgets.php:321
613
+ msgid "Number of Days Back"
614
  msgstr ""
615
 
616
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:166
617
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:192
618
+ #: google-calendar-events/views/widgets.php:322
619
+ msgid "Number of Days Forward"
620
  msgstr ""
621
 
622
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:169
623
+ #: google-calendar-events/views/widgets.php:326
624
+ msgid ""
625
+ "Change to initially display events on a date other than today (List View "
626
+ "only)."
627
  msgstr ""
628
 
629
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:174
630
+ msgid "Earliest Feed Event Date"
 
631
  msgstr ""
632
 
633
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:178
634
+ msgid "Number of Months Back"
 
 
635
  msgstr ""
636
 
637
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:179
638
+ msgid "Number of Years Back"
639
  msgstr ""
640
 
641
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:184
642
+ msgid "Set how far back to retrieve events regardless of initial display."
 
643
  msgstr ""
644
 
645
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:189
646
+ msgid "Latest Feed Event Date"
647
+ msgstr ""
648
+
649
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:193
650
+ msgid "Number of Months Forward"
651
  msgstr ""
652
 
653
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:194
654
+ msgid "Number of Years Forward"
655
  msgstr ""
656
 
657
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:199
658
  msgid ""
659
+ "Set how far in the future to retrieve events regardless of initial display."
 
660
  msgstr ""
661
 
662
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:204
663
+ msgid "Use Custom Date Range"
664
  msgstr ""
665
 
666
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:210
667
+ msgid "Set a specific range of events to retrieve."
668
  msgstr ""
669
 
670
  #: google-calendar-events/views/admin/gce-feed-meta-display.php:216
671
+ #: google-calendar-events/views/widgets.php:336
672
+ msgid "Show Paging Links"
673
+ msgstr ""
674
+
675
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:219
676
+ msgid "Display Next and Back navigation links."
677
+ msgstr ""
678
+
679
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:224
680
+ #: google-calendar-events/views/widgets.php:339
681
+ msgid "Show Tooltips"
682
+ msgstr ""
683
+
684
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:227
685
+ msgid "Display tooltips when hovering over events (Grid View only)."
686
+ msgstr ""
687
+
688
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:232
689
+ msgid "Date Format"
690
+ msgstr ""
691
+
692
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:236
693
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:247
694
+ #, php-format
695
+ msgid "Use %sPHP date formatting%s."
696
+ msgstr ""
697
+
698
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:237
699
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:248
700
+ msgid "Leave blank to use the default."
701
+ msgstr ""
702
+
703
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:243
704
+ msgid "Time Format"
705
+ msgstr ""
706
+
707
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:254
708
+ msgid "Cache Duration"
709
+ msgstr ""
710
+
711
+ #: google-calendar-events/views/admin/gce-feed-meta-display.php:257
712
  msgid ""
713
+ "The length of time, in seconds, to cache the feed (43200 = 12 hours). If "
714
+ "this feed changes regularly, you may want to reduce the cache duration."
715
  msgstr ""
716
 
717
  #: google-calendar-events/views/admin/gce-feed-sidebar-help.php:6
718
  msgid "Documentation & getting started"
719
  msgstr ""
720
 
721
+ #: google-calendar-events/views/admin/gce-feed-sidebar-help.php:11
722
  msgid "Community support forums"
723
  msgstr ""
724
 
725
+ #: google-calendar-events/views/admin/gce-feed-sidebar-help.php:16
726
+ msgid "Rate this plugin"
727
  msgstr ""
728
 
729
+ #: google-calendar-events/views/admin/gce-feed-sidebar-help.php:21
730
+ msgid "View our roadmap & vote"
731
+ msgstr ""
732
+
733
+ #: google-calendar-events/views/admin/gce-feed-sidebar-help.php:26
734
+ msgid "Get notified of new features"
735
  msgstr ""
736
 
737
  #: google-calendar-events/views/widgets.php:28
740
  "feeds you have added"
741
  msgstr ""
742
 
743
+ #: google-calendar-events/views/widgets.php:159
744
  msgid ""
745
  "No valid Feed IDs have been entered for this widget. Please check that you "
746
  "have entered the IDs correctly in the widget settings (Appearance > "
747
  "Widgets), and that the Feeds have not been deleted."
748
  msgstr ""
749
 
750
+ #: google-calendar-events/views/widgets.php:199
751
+ msgid ""
752
+ "There was a problem with one or more of your feed IDs. Please check your "
753
+ "widget settings and make sure they are correct."
754
+ msgstr ""
755
+
756
+ #: google-calendar-events/views/widgets.php:205
757
  msgid "You have not added any feeds yet."
758
  msgstr ""
759
 
760
+ #: google-calendar-events/views/widgets.php:248
761
  msgid "There are no feeds created yet."
762
  msgstr ""
763
 
764
+ #: google-calendar-events/views/widgets.php:249
765
  msgid "Add your first feed!"
766
  msgstr ""
767
 
768
+ #: google-calendar-events/views/widgets.php:259
769
  msgid "Events on"
770
  msgstr ""
771
 
772
+ #: google-calendar-events/views/widgets.php:273
773
  msgid "Title:"
774
  msgstr ""
775
 
776
+ #: google-calendar-events/views/widgets.php:278
777
  msgid "Feeds to Display (comma separated list - i.e. 101,102,103):"
778
  msgstr ""
779
 
780
+ #: google-calendar-events/views/widgets.php:284
781
  msgid "Display Events as:"
782
  msgstr ""
783
 
784
+ #: google-calendar-events/views/widgets.php:294
 
 
 
 
785
  msgid "Sort Order (List View only):"
786
  msgstr ""
787
 
788
+ #: google-calendar-events/views/widgets.php:296
789
  msgid "Ascending"
790
  msgstr ""
791
 
792
+ #: google-calendar-events/views/widgets.php:297
793
  msgid "Descending"
794
  msgstr ""
795
 
796
+ #: google-calendar-events/views/widgets.php:302
797
+ msgid "Events per Page (List View only):"
798
  msgstr ""
799
 
800
+ #: google-calendar-events/views/widgets.php:315
801
+ msgid ""
802
+ "This setting will pull from the custom date range set in the main feed "
803
+ "settings and cannot be changed here."
804
+ msgstr ""
805
+
806
+ #: google-calendar-events/views/widgets.php:319
807
  msgid "Display Start Date Offset (List View only):"
808
  msgstr ""
809
 
810
+ #: google-calendar-events/views/widgets.php:330
811
  msgid ""
812
  "Display Title on Tooltip/List Item (e.g. 'Events on 7th March'). Grouped "
813
  "lists always have a title displayed."
screenshot-1.png CHANGED
Binary file
screenshot-2.png CHANGED
Binary file
screenshot-3.png CHANGED
Binary file
screenshot-4.png CHANGED
Binary file
screenshot-5.png CHANGED
Binary file
screenshot-6.png CHANGED
Binary file
screenshot-7.png CHANGED
Binary file
uninstall.php CHANGED
@@ -26,7 +26,13 @@ if ( empty( $general['save_settings'] ) ) {
26
  'post_status' => array(
27
  'any',
28
  'trash',
29
- 'auto-draft'
 
 
 
 
 
 
30
  )
31
  ));
32
 
@@ -55,6 +61,32 @@ if ( empty( $general['save_settings'] ) ) {
55
  delete_post_meta_by_key( 'gce_list_max_length' );
56
  delete_post_meta_by_key( 'gce_list_start_offset_num' );
57
  delete_post_meta_by_key( 'gce_list_start_offset_direction' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
 
59
  // Remove options
60
  delete_option( 'gce_upgrade_has_run' );
26
  'post_status' => array(
27
  'any',
28
  'trash',
29
+ 'auto-draft',
30
+ 'trash',
31
+ 'draft',
32
+ 'pending',
33
+ 'future',
34
+ 'private',
35
+ 'inherit'
36
  )
37
  ));
38
 
61
  delete_post_meta_by_key( 'gce_list_max_length' );
62
  delete_post_meta_by_key( 'gce_list_start_offset_num' );
63
  delete_post_meta_by_key( 'gce_list_start_offset_direction' );
64
+ delete_post_meta_by_key( 'old_gce_id' );
65
+ delete_post_meta_by_key( 'gce_display_link' );
66
+ delete_post_meta_by_key( 'gce_display_link_text' );
67
+ delete_post_meta_by_key( 'gce_display_end' );
68
+ delete_post_meta_by_key( 'gce_display_end_text' );
69
+ delete_post_meta_by_key( 'gce_display_separator' );
70
+ delete_post_meta_by_key( 'gce_display_location_text' );
71
+ delete_post_meta_by_key( 'gce_display_description_text' );
72
+ delete_post_meta_by_key( 'gce_expand_recurring' );
73
+ delete_post_meta_by_key( 'gce_feed_end' );
74
+ delete_post_meta_by_key( 'gce_feed_end_interval' );
75
+ delete_post_meta_by_key( 'gce_display_start' );
76
+ delete_post_meta_by_key( 'gce_display_start_text' );
77
+ delete_post_meta_by_key( 'gce_paging_widget' );
78
+ delete_post_meta_by_key( 'gce_widget_paging_interval' );
79
+ delete_post_meta_by_key( 'gce_feed_end_custom' );
80
+ delete_post_meta_by_key( 'gce_feed_end_num' );
81
+ delete_post_meta_by_key( 'gce_feed_start_custom' );
82
+ delete_post_meta_by_key( 'gce_feed_start_num' );
83
+ delete_post_meta_by_key( 'gce_per_page_to' );
84
+ delete_post_meta_by_key( 'gce_per_page_from' );
85
+ delete_post_meta_by_key( 'gce_per_page_num' );
86
+ delete_post_meta_by_key( 'gce_events_per_page' );
87
+ delete_post_meta_by_key( 'gce_end_date' );
88
+ delete_post_meta_by_key( 'gce_date_range' );
89
+ delete_post_meta_by_key( 'gce_start_date' );
90
 
91
  // Remove options
92
  delete_option( 'gce_upgrade_has_run' );
views/admin/api-settings-notice.php DELETED
@@ -1,36 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * Show notice for API Settings
5
- *
6
- * @package GCE
7
- * @subpackage admin/views
8
- * @author Phil Derksen <pderksen@gmail.com>, Nick Young <mycorpweb@gmail.com>
9
- */
10
-
11
- // Exit if accessed directly.
12
- if ( ! defined( 'ABSPATH' ) ) {
13
- exit;
14
- }
15
-
16
- ?>
17
-
18
- <style>
19
- /* #gce-install-notice .button-primary, */
20
- #gce-install-notice .button-secondary {
21
- margin-left: 15px;
22
- }
23
- </style>
24
-
25
- <div id="gce-install-notice" class="updated">
26
- <p>
27
- <strong><?php echo __( 'GCal Events Important Update (Nov. 19, 2014):', 'gce' ); ?></strong><br/>
28
- <?php echo __( 'GCal Events now uses the Google API version 3, which requires use of a public key.', 'gce' ); ?>
29
- <?php echo __( 'By default a shared key is used across all plugin users, which is limited to 500,000 requests per day and 5 requests per second.', 'gce' ); ?>
30
- <?php echo __( 'To avoid these limits you can use your own Google API key.', 'gce' ); ?>
31
- </p>
32
- <p>
33
- <a href="<?php echo admin_url( 'edit.php?post_type=gce_feed&page=google-calendar-events_general_settings' ); ?>" class="button-primary"><?php _e( 'Update your API settings now', 'gce' ); ?></a>
34
- <a href="<?php echo add_query_arg( 'gce-dismiss-install-nag', 1 ); ?>" class="button-secondary"><?php _e( 'Hide this', 'gce' ); ?></a>
35
- </p>
36
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
views/admin/display-options-meta.php CHANGED
@@ -51,7 +51,7 @@
51
  <option value="date-time" <?php selected( $gce_display_start, 'date-time', true ); ?>><?php _e( 'Start date and time', 'gce' ); ?></option>
52
  </select>
53
  <label class="description" for="gce_display_start_text"><?php _e( 'Text to display before the start time.', 'gce' ); ?></label>
54
- <input type="text" name="gce_display_start_text" id="gce_display_start_text" value="<?php echo $gce_display_start_text; ?>" />
55
  </div>
56
 
57
  <div class="gce-meta-control">
@@ -65,7 +65,7 @@
65
  <option value="date-time" <?php selected( $gce_display_end, 'date-time', true ); ?>><?php _e( 'End date and time', 'gce' ); ?></option>
66
  </select>
67
  <label class="description" for="gce_display_end_text"><?php _e( 'Text to display before the end time.', 'gce' ); ?></label>
68
- <input type="text" name="gce_display_end_text" id="gce_display_end_text" value="<?php echo $gce_display_end_text; ?>" />
69
  </div>
70
 
71
  <div class="gce-meta-control">
@@ -73,7 +73,7 @@
73
  <label class="description" for="gce_display_separator">
74
  <?php _e( 'If you have chosen to display both the time and date above, enter the text / characters to display between the time and date here (including any spaces).' , 'gce' ); ?>
75
  </label>
76
- <input type="text" name="gce_display_separator" id="gce_display_separator" value="<?php echo $gce_display_separator; ?>" />
77
  </div>
78
 
79
  <div class="gce-meta-control">
@@ -81,7 +81,7 @@
81
  <p><input type="checkbox" name="gce_display_location" id="gce_display_location" value="1" <?php checked( $gce_display_location, '1' ); ?> />
82
  <label for="gce_display_location"><?php _e( 'Show the location of events?', 'gce' ); ?></label></p>
83
  <label class="description" for="gce_display_location_text"><?php _e( 'Text to display before the location.', 'gce' ); ?></label>
84
- <input type="text" name="gce_display_location_text" id="gce_display_location_text" value="<?php echo $gce_display_location_text; ?>" />
85
  </div>
86
 
87
  <div class="gce-meta-control">
@@ -91,9 +91,9 @@
91
  <label for="gce_display_description"><?php _e( 'Show the description of events? (URLs in the description will be made into links).', 'gce' ); ?></label>
92
  </p>
93
  <label class="description" for="gce_display_description_text"><?php _e( 'Text to display before the description.', 'gce' ); ?></label>
94
- <input type="text" name="gce_display_description_text" id="gce_display_description_text" value="<?php echo $gce_display_description_text; ?>" />
95
  <label class="description" for="gce_display_description_max"><?php _e( 'Maximum number of words to show from description. Leave blank for no limit.', 'gce' ); ?></label>
96
- <input type="text" name="gce_display_description_max" id="gce_display_description_max" value="<?php echo $gce_display_description_max; ?>" />
97
  </div>
98
 
99
  <div class="gce-meta-control">
@@ -107,6 +107,6 @@
107
  <label for="gce_display_link_tab"><?php _e( 'Links open in a new window / tab?', 'gce' ); ?></label>
108
  </p>
109
  <label class="description" for="gce_display_link_text"><?php _e( 'The link text to be displayed.', 'gce' ); ?></label>
110
- <input type="text" name="gce_display_link_text" id="gce_display_link_text" value="<?php echo $gce_display_link_text; ?>" />
111
  </div>
112
  </div>
51
  <option value="date-time" <?php selected( $gce_display_start, 'date-time', true ); ?>><?php _e( 'Start date and time', 'gce' ); ?></option>
52
  </select>
53
  <label class="description" for="gce_display_start_text"><?php _e( 'Text to display before the start time.', 'gce' ); ?></label>
54
+ <input type="text" name="gce_display_start_text" id="gce_display_start_text" value="<?php echo esc_attr( $gce_display_start_text ); ?>" />
55
  </div>
56
 
57
  <div class="gce-meta-control">
65
  <option value="date-time" <?php selected( $gce_display_end, 'date-time', true ); ?>><?php _e( 'End date and time', 'gce' ); ?></option>
66
  </select>
67
  <label class="description" for="gce_display_end_text"><?php _e( 'Text to display before the end time.', 'gce' ); ?></label>
68
+ <input type="text" name="gce_display_end_text" id="gce_display_end_text" value="<?php echo esc_attr( $gce_display_end_text ); ?>" />
69
  </div>
70
 
71
  <div class="gce-meta-control">
73
  <label class="description" for="gce_display_separator">
74
  <?php _e( 'If you have chosen to display both the time and date above, enter the text / characters to display between the time and date here (including any spaces).' , 'gce' ); ?>
75
  </label>
76
+ <input type="text" name="gce_display_separator" id="gce_display_separator" value="<?php echo esc_attr( $gce_display_separator ); ?>" />
77
  </div>
78
 
79
  <div class="gce-meta-control">
81
  <p><input type="checkbox" name="gce_display_location" id="gce_display_location" value="1" <?php checked( $gce_display_location, '1' ); ?> />
82
  <label for="gce_display_location"><?php _e( 'Show the location of events?', 'gce' ); ?></label></p>
83
  <label class="description" for="gce_display_location_text"><?php _e( 'Text to display before the location.', 'gce' ); ?></label>
84
+ <input type="text" name="gce_display_location_text" id="gce_display_location_text" value="<?php echo esc_attr( $gce_display_location_text ); ?>" />
85
  </div>
86
 
87
  <div class="gce-meta-control">
91
  <label for="gce_display_description"><?php _e( 'Show the description of events? (URLs in the description will be made into links).', 'gce' ); ?></label>
92
  </p>
93
  <label class="description" for="gce_display_description_text"><?php _e( 'Text to display before the description.', 'gce' ); ?></label>
94
+ <input type="text" name="gce_display_description_text" id="gce_display_description_text" value="<?php echo esc_attr( $gce_display_description_text ); ?>" />
95
  <label class="description" for="gce_display_description_max"><?php _e( 'Maximum number of words to show from description. Leave blank for no limit.', 'gce' ); ?></label>
96
+ <input type="text" name="gce_display_description_max" id="gce_display_description_max" value="<?php echo esc_attr( $gce_display_description_max ); ?>" />
97
  </div>
98
 
99
  <div class="gce-meta-control">
107
  <label for="gce_display_link_tab"><?php _e( 'Links open in a new window / tab?', 'gce' ); ?></label>
108
  </p>
109
  <label class="description" for="gce_display_link_text"><?php _e( 'The link text to be displayed.', 'gce' ); ?></label>
110
+ <input type="text" name="gce_display_link_text" id="gce_display_link_text" value="<?php echo esc_attr( $gce_display_link_text ); ?>" />
111
  </div>
112
  </div>
views/admin/gce-feed-meta-display.php CHANGED
@@ -28,38 +28,52 @@
28
  $gce_search_query = get_post_meta( $post->ID, 'gce_search_query', true );
29
  $gce_expand_recurring = get_post_meta( $post->ID, 'gce_expand_recurring', true );
30
  $gce_paging = get_post_meta( $post->ID, 'gce_paging', true );
31
- $gce_list_max_num = get_post_meta( $post->ID, 'gce_list_max_num', true );
32
- $gce_list_max_length = get_post_meta( $post->ID, 'gce_list_max_length', true );
33
  $gce_list_start_offset_num = get_post_meta( $post->ID, 'gce_list_start_offset_num', true );
34
  $gce_list_start_offset_direction = get_post_meta( $post->ID, 'gce_list_start_offset_direction', true );
35
  $gce_feed_start = get_post_meta( $post->ID, 'gce_feed_start', true );
36
- $gce_feed_start_interval = get_post_meta( $post->ID, 'gce_feed_start_interval', true );
37
  $gce_feed_end = get_post_meta( $post->ID, 'gce_feed_end', true );
38
- $gce_feed_end_interval = get_post_meta( $post->ID, 'gce_feed_end_interval', true );
 
 
39
 
 
 
 
 
 
 
 
 
 
40
  if( empty( $gce_list_start_offset_num ) ) {
41
  $gce_list_start_offset_num = 0;
42
  }
43
 
44
  if( empty( $gce_feed_start ) ) {
45
- $gce_feed_start = 0;
46
  }
47
 
48
  if( empty( $gce_feed_end ) ) {
49
- $gce_feed_end = 0;
 
 
 
 
 
 
 
 
 
 
 
 
50
  }
51
  ?>
52
 
53
  <div id="gce-admin-promo">
54
- <?php echo __( 'We\'re <strong>smack dab</strong> in the middle of building additional features for this plugin. Have ideas?', 'gce' ); ?>
55
- <strong>
56
- <a href="https://trello.com/b/ZQSzsarY" target="_blank">
57
- <?php echo __( 'Visit our roadmap and tell us what you\'re looking for', 'gce' ); ?>
58
- </a>
59
- </strong>
60
- <br/>
61
- <br/>
62
-
63
  <?php echo __( 'Want to be in the know?', 'gce' ); ?>
64
  <strong>
65
  <a href="http://eepurl.com/0_VsT" target="_blank">
@@ -82,11 +96,11 @@
82
  <tr>
83
  <th scope="row"><label for="gce_feed_url"><?php _e( 'Google Calendar ID', 'gce' ); ?></label></th>
84
  <td>
85
- <input type="text" class="regular-text" style="width: 30em;" name="gce_feed_url" id="gce_feed_url" value="<?php echo $gce_feed_url; ?>" />
86
  <p class="description">
87
  <?php _e( 'The Google Calendar ID.', 'gce' ); ?> <?php _e( 'Example', 'gce' ); ?>:<br/>
88
  <code>umsb0ekhivs1a2ubtq6vlqvcjk@group.calendar.google.com</code><br/>
89
- <a href="<?php echo gce_ga_campaign_url( 'http://wpdocs.philderksen.com/google-calendar-events/getting-started/find-calendar-id/', 'gce_lite', 'settings_link', 'docs' ); ?>" target="_blank"><?php _e( 'How to find your GCal calendar ID', 'gce' ); ?></a>
90
  </p>
91
  </td>
92
  </tr>
@@ -94,7 +108,7 @@
94
  <tr>
95
  <th scope="row"><label for="gce_search_query"><?php _e( 'Search Query', 'gce' ); ?></label></th>
96
  <td>
97
- <input type="text" class="" name="gce_search_query" id="gce_search_query" value="<?php echo $gce_search_query; ?>" />
98
  <p class="description"><?php _e( 'Find and show events based on a search query.', 'gce' ); ?></p>
99
  </td>
100
  </tr>
@@ -103,117 +117,150 @@
103
  <th scope="row"><label for="gce_expand_recurring"><?php _e( 'Expand Recurring Events?', 'gce' ); ?></label></th>
104
  <td>
105
  <input type="checkbox" name="gce_expand_recurring" id="gce_expand_recurring" value="1" <?php checked( $gce_expand_recurring, '1' ); ?> /> <?php _e( 'Yes', 'gce' ); ?>
106
- <p class="description"><?php _e( 'This will show recurring events each time they occur, otherwise it will only show the event the first time it occurs.', 'gce' ); ?></p>
107
  </td>
108
  </tr>
109
 
110
  <tr>
111
- <th scope="row"><label for="gce_date_format"><?php _e( 'Date Format', 'gce' ); ?></label></th>
112
  <td>
113
- <input type="text" class="" name="gce_date_format" id="gce_date_format" value="<?php echo $gce_date_format; ?>" />
114
- <p class="description">
115
- <?php printf( __( 'Use %sPHP date formatting%s.', 'gce' ), '<a href="http://php.net/manual/en/function.date.php" target="_blank">', '</a>' ); ?>
116
- <?php _e( 'Leave blank to use the default.', 'gce' ); ?>
117
- </p>
118
  </td>
119
  </tr>
120
 
121
  <tr>
122
- <th scope="row"><label for="gce_time_format"><?php _e( 'Time Format', 'gce' ); ?></label></th>
123
  <td>
124
- <input type="text" class="" name="gce_time_format" id="gce_time_format" value="<?php echo $gce_time_format; ?>" />
125
- <p class="description">
126
- <?php printf( __( 'Use %sPHP date formatting%s.', 'gce' ), '<a href="http://php.net/manual/en/function.date.php" target="_blank">', '</a>' ); ?>
127
- <?php _e( 'Leave blank to use the default.', 'gce' ); ?>
128
- </p>
 
 
129
  </td>
130
  </tr>
131
-
132
- <tr>
133
- <th scope="row"><label for="gce_cache"><?php _e( 'Cache Duration', 'gce' ); ?></label></th>
134
- <td>
135
- <input type="text" class="" name="gce_cache" id="gce_cache" value="<?php echo $gce_cache; ?>" />
136
- <p class="description"><?php _e( 'The length of time, in seconds, to cache the feed (43200 = 12 hours). If this feed changes regularly, you may want to reduce the cache duration.', 'gce' ); ?></p>
137
  <td>
 
 
 
 
 
 
 
 
 
 
 
138
  </tr>
139
-
140
- <tr>
141
- <th scope="row"><label for="gce_multi_day_events"><?php _e( 'Multiple Day Events', 'gce' ); ?></label></th>
142
  <td>
143
- <input type="checkbox" name="gce_multi_day_events" id="gce_multi_day_events" value="1" <?php checked( $gce_multi_day_events, '1' ); ?> /> <?php _e( 'Show on each day', 'gce' ); ?>
144
- <p class="description"><?php _e( 'Show events that span multiple days on each day that they span, rather than just the first day.', 'gce' ); ?></p>
 
 
 
 
145
  </td>
146
  </tr>
147
-
148
- <tr>
149
- <th scope="row"><label for="gce_display_mode"><?php _e( 'Display Mode', 'gce' ); ?></label></th>
150
  <td>
151
- <select name="gce_display_mode" id="gce_display_mode">
152
- <option value="grid" <?php selected( $gce_display_mode, 'grid', true ); ?>><?php _e( 'Grid', 'gce' ); ?></option>
153
- <option value="list" <?php selected( $gce_display_mode, 'list', true ); ?>><?php _e( 'List', 'gce' ); ?></option>
154
- <option value="list-grouped" <?php selected( $gce_display_mode, 'list-grouped', true ); ?>><?php _e( 'Grouped List', 'gce' ); ?></option>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
155
  </select>
156
- <p class="description"><?php _e( 'Choose how you want your calendar to be displayed.', 'gce' ); ?></p>
 
 
 
157
  </td>
158
  </tr>
159
 
160
- <tr>
 
 
 
 
 
 
 
 
 
 
 
 
161
  <th scope="row"><label for="gce_paging"><?php _e( 'Show Paging Links', 'gce' ); ?></label></th>
162
  <td>
163
- <input type="checkbox" name="gce_paging" id="gce_paging" value="1" <?php checked( $gce_paging, '1' ); ?> /> <?php _e( 'Check this option to display Next and Back navigation links.', 'gce' ); ?>
 
164
  </td>
165
  </tr>
166
 
167
  <tr>
168
- <th scope="row"><label for="gce_list_max_num"><?php _e( 'Number of Events per Page', 'gce' ); ?></label></th>
169
  <td>
170
- <input type="number" min="0" step="1" class="small-text" id="gce_list_max_num" name="gce_list_max_num" value="<?php echo $gce_list_max_num; ?>" />
171
- <select name="gce_list_max_length" id="gce_list_max_length">
172
- <option value="days" <?php selected( $gce_list_max_length, 'days', true ); ?>><?php _e( 'Days', 'gce' ); ?></option>
173
- <option value="events" <?php selected( $gce_list_max_length, 'events', true ); ?>><?php _e( 'Events', 'gce' ); ?></option>
174
- </select>
175
- <p class="description"><?php _e( 'How many events to display per page (List View only).', 'gce' ); ?></p>
176
  </td>
177
  </tr>
178
 
179
  <tr>
180
- <th scope="row"><label for="gce_list_start_offset_num"><?php _e( 'Display Start Date Offset', 'gce' ); ?></label></th>
181
  <td>
182
- <input type="number" min="0" step="1" class="small-text" id="gce_list_start_offset_num" name="gce_list_start_offset_num" value="<?php echo $gce_list_start_offset_num; ?>" />
183
- <?php _e( 'Days', 'gce' ); ?>
184
- <select name="gce_list_start_offset_direction" id="gce_list_start_offset_direction">
185
- <option value="back" <?php selected( $gce_list_start_offset_direction, 'back', true ); ?>><?php _e( 'Back', 'gce' ); ?></option>
186
- <option value="ahead" <?php selected( $gce_list_start_offset_direction, 'ahead', true ); ?>><?php _e( 'Ahead', 'gce' ); ?></option>
187
- </select>
188
- <p class="description"><?php _e( 'Change if you need to initially display events on a date other than today (List View only).', 'gce' ); ?></p>
189
- </td>
190
  </tr>
191
 
192
  <tr>
193
- <th scope="row"><label for="gce_feed_start"><?php _e( 'Minimum Feed Start Date', 'gce' ); ?></label></th>
194
  <td>
195
- <input type="number" min="0" step="1" class="small-text" id="gce_feed_start" name="gce_feed_start" value="<?php echo $gce_feed_start; ?>" />
196
- <select name="gce_feed_start_interval" id="gce_feed_start_interval">
197
- <option value="days" <?php selected( $gce_feed_start_interval, 'days', true ); ?>><?php _e( 'Days', 'gce' ); ?></option>
198
- <option value="months" <?php selected( $gce_feed_start_interval, 'months', true ); ?>><?php _e( 'Months', 'gce' ); ?></option>
199
- <option value="years" <?php selected( $gce_feed_start_interval, 'years', true ); ?>><?php _e( 'Years', 'gce' ); ?></option>
200
- </select>
201
- <?php _e( 'back', 'gce' ); ?>
202
- <p class="description"><?php _e( 'Set how far back to retrieve events regardless of month or page being displayed.', 'gce' ); ?></p>
203
- </td>
204
  </tr>
205
 
206
  <tr>
207
- <th scope="row"><label for="gce_feed_end"><?php _e( 'Maximum Feed End Date', 'gce' ); ?></label></th>
208
  <td>
209
- <input type="number" min="0" step="1" class="small-text" id="gce_feed_end" name="gce_feed_end" value="<?php echo $gce_feed_end; ?>" />
210
- <select name="gce_feed_end_interval" id="gce_feed_end_interval">
211
- <option value="days" <?php selected( $gce_feed_end_interval, 'days', true ); ?>><?php _e( 'Days', 'gce' ); ?></option>
212
- <option value="months" <?php selected( $gce_feed_end_interval, 'months', true ); ?>><?php _e( 'Months', 'gce' ); ?></option>
213
- <option value="years" <?php selected( $gce_feed_end_interval, 'years', true ); ?>><?php _e( 'Years', 'gce' ); ?></option>
214
- </select>
215
- <?php _e( 'forward', 'gce' ); ?>
216
- <p class="description"><?php _e( 'Set how far in the future to retrieve events regardless of month or page being displayed.', 'gce' ); ?></p>
217
- </td>
218
  </tr>
219
  </table>
28
  $gce_search_query = get_post_meta( $post->ID, 'gce_search_query', true );
29
  $gce_expand_recurring = get_post_meta( $post->ID, 'gce_expand_recurring', true );
30
  $gce_paging = get_post_meta( $post->ID, 'gce_paging', true );
31
+ $gce_events_per_page = get_post_meta( $post->ID, 'gce_events_per_page', true );
32
+ $gce_per_page_num = get_post_meta( $post->ID, 'gce_per_page_num', true );
33
  $gce_list_start_offset_num = get_post_meta( $post->ID, 'gce_list_start_offset_num', true );
34
  $gce_list_start_offset_direction = get_post_meta( $post->ID, 'gce_list_start_offset_direction', true );
35
  $gce_feed_start = get_post_meta( $post->ID, 'gce_feed_start', true );
36
+ $gce_feed_start_num = get_post_meta( $post->ID, 'gce_feed_start_num', true );
37
  $gce_feed_end = get_post_meta( $post->ID, 'gce_feed_end', true );
38
+ $gce_feed_end_num = get_post_meta( $post->ID, 'gce_feed_end_num', true );
39
+ $gce_feed_range_start = get_post_meta( $post->ID, 'gce_feed_range_start', true );
40
+ $gce_feed_range_end = get_post_meta( $post->ID, 'gce_feed_range_end', true );
41
 
42
+
43
+ $use_range = ( selected( $gce_display_mode, 'date-range', false ) ? true : false );
44
+
45
+ if( empty( $gce_events_per_page ) ) {
46
+ $gce_events_per_page = 'days';
47
+ }
48
+
49
+ $gce_show_tooltips = get_post_meta( $post->ID, 'gce_show_tooltips', true );
50
+
51
  if( empty( $gce_list_start_offset_num ) ) {
52
  $gce_list_start_offset_num = 0;
53
  }
54
 
55
  if( empty( $gce_feed_start ) ) {
56
+ $gce_feed_start = 'years';
57
  }
58
 
59
  if( empty( $gce_feed_end ) ) {
60
+ $gce_feed_end = 'years';
61
+ }
62
+
63
+ if( empty( $gce_feed_start_num ) ) {
64
+ $gce_feed_start_num = 1;
65
+ }
66
+
67
+ if( empty( $gce_feed_end_num ) ) {
68
+ $gce_feed_end_num = 1;
69
+ }
70
+
71
+ if( empty( $gce_per_page_num ) ) {
72
+ $gce_per_page_num = 7;
73
  }
74
  ?>
75
 
76
  <div id="gce-admin-promo">
 
 
 
 
 
 
 
 
 
77
  <?php echo __( 'Want to be in the know?', 'gce' ); ?>
78
  <strong>
79
  <a href="http://eepurl.com/0_VsT" target="_blank">
96
  <tr>
97
  <th scope="row"><label for="gce_feed_url"><?php _e( 'Google Calendar ID', 'gce' ); ?></label></th>
98
  <td>
99
+ <input type="text" class="regular-text" style="width: 30em;" name="gce_feed_url" id="gce_feed_url" value="<?php echo esc_attr( $gce_feed_url ); ?>" />
100
  <p class="description">
101
  <?php _e( 'The Google Calendar ID.', 'gce' ); ?> <?php _e( 'Example', 'gce' ); ?>:<br/>
102
  <code>umsb0ekhivs1a2ubtq6vlqvcjk@group.calendar.google.com</code><br/>
103
+ <a href="<?php echo gce_ga_campaign_url( 'http://wpdocs.philderksen.com/google-calendar-events/getting-started/find-calendar-id/', 'gce_lite', 'settings_link', 'docs' ); ?>" target="_blank"><?php _e( 'How to find your Google Calendar ID', 'gce' ); ?></a>
104
  </p>
105
  </td>
106
  </tr>
108
  <tr>
109
  <th scope="row"><label for="gce_search_query"><?php _e( 'Search Query', 'gce' ); ?></label></th>
110
  <td>
111
+ <input type="text" class="" name="gce_search_query" id="gce_search_query" value="<?php echo esc_attr( $gce_search_query ); ?>" />
112
  <p class="description"><?php _e( 'Find and show events based on a search query.', 'gce' ); ?></p>
113
  </td>
114
  </tr>
117
  <th scope="row"><label for="gce_expand_recurring"><?php _e( 'Expand Recurring Events?', 'gce' ); ?></label></th>
118
  <td>
119
  <input type="checkbox" name="gce_expand_recurring" id="gce_expand_recurring" value="1" <?php checked( $gce_expand_recurring, '1' ); ?> /> <?php _e( 'Yes', 'gce' ); ?>
120
+ <p class="description"><?php _e( 'Display recurring events each time they occur. If disabled, events will be displayed only the first time they occur.', 'gce' ); ?></p>
121
  </td>
122
  </tr>
123
 
124
  <tr>
125
+ <th scope="row"><label for="gce_multi_day_events"><?php _e( 'Multiple Day Events', 'gce' ); ?></label></th>
126
  <td>
127
+ <input type="checkbox" name="gce_multi_day_events" id="gce_multi_day_events" value="1" <?php checked( $gce_multi_day_events, '1' ); ?> /> <?php _e( 'Show on each day', 'gce' ); ?>
128
+ <p class="description"><?php _e( 'Display multiple day events on each day that they span. If disabled, multiple day events will be displayed only on the first day they occur.', 'gce' ); ?></p>
 
 
 
129
  </td>
130
  </tr>
131
 
132
  <tr>
133
+ <th scope="row"><label for="gce_display_mode"><?php _e( 'Display Mode', 'gce' ); ?></label></th>
134
  <td>
135
+ <select name="gce_display_mode" id="gce_display_mode">
136
+ <option value="grid" <?php selected( $gce_display_mode, 'grid', true ); ?>><?php _e( 'Grid (Month view)', 'gce' ); ?></option>
137
+ <option value="list" <?php selected( $gce_display_mode, 'list', true ); ?>><?php _e( 'List', 'gce' ); ?></option>
138
+ <option value="list-grouped" <?php selected( $gce_display_mode, 'list-grouped', true ); ?>><?php _e( 'Grouped List', 'gce' ); ?></option>
139
+ <option value="date-range" <?php selected( $gce_display_mode, 'date-range', true ); ?>><?php _e( 'Custom Date Range (List)', 'gce' ); ?></option>
140
+ </select>
141
+ <p class="description"><?php _e( 'Select how to display this feed.', 'gce' ); ?></p>
142
  </td>
143
  </tr>
144
+
145
+ <tr class="gce-display-option <?php echo ( $use_range == true ? 'gce-admin-hidden' : '' ); ?>">
146
+ <th scope="row"><label for="gce_events_per_page"><?php _e( 'Events per Page', 'gce' ); ?></label></th>
 
 
 
147
  <td>
148
+ <select id="gce_events_per_page" name="gce_events_per_page">
149
+ <option value="days" <?php selected( $gce_events_per_page, 'days', true ); ?>><?php _e( 'Number of Days', 'gce' ); ?></option>
150
+ <option value="events" <?php selected( $gce_events_per_page, 'events', true ); ?>><?php _e( 'Number of Events', 'gce' ); ?></option>
151
+ <option value="week" <?php selected( $gce_events_per_page, 'week', true ); ?>><?php _e( 'One Week', 'gce' ); ?></option>
152
+ <option value="month" <?php selected( $gce_events_per_page, 'month', true ); ?>><?php _e( 'One Month', 'gce' ); ?></option>
153
+ </select>
154
+ <span class="gce_per_page_num_wrap <?php echo ( $gce_events_per_page != 'days' && $gce_events_per_page != 'events' ? 'gce-admin-hidden' : '' ); ?>">
155
+ <input type="number" min="0" step="1" class="small-text" name="gce_per_page_num" id="gce_per_page_num" value="<?php echo esc_attr( $gce_per_page_num ); ?>" />
156
+ </span>
157
+ <p class="description"><?php _e( 'How many events to display per page (List View only).', 'gce' ); ?></p>
158
+ </td>
159
  </tr>
160
+
161
+ <tr class="gce-display-option <?php echo ( $use_range == true ? 'gce-admin-hidden' : '' ); ?>">
162
+ <th scope="row"><label for="gce_list_start_offset_num"><?php _e( 'Display Start Date Offset', 'gce' ); ?></label></th>
163
  <td>
164
+ <select name="gce_list_start_offset_direction" id="gce_list_start_offset_direction">
165
+ <option value="back" <?php selected( $gce_list_start_offset_direction, 'back', true ); ?>><?php _e( 'Number of Days Back', 'gce' ); ?></option>
166
+ <option value="ahead" <?php selected( $gce_list_start_offset_direction, 'ahead', true ); ?>><?php _e( 'Number of Days Forward', 'gce' ); ?></option>
167
+ </select>
168
+ <input type="number" min="0" step="1" class="small-text" id="gce_list_start_offset_num" name="gce_list_start_offset_num" value="<?php echo esc_attr( $gce_list_start_offset_num ); ?>" />
169
+ <p class="description"><?php _e( 'Change to initially display events on a date other than today (List View only).', 'gce' ); ?></p>
170
  </td>
171
  </tr>
172
+
173
+ <tr class="gce-display-option <?php echo ( $use_range == true ? 'gce-admin-hidden' : '' ); ?>">
174
+ <th scope="row"><label for="gce_feed_start"><?php _e( 'Earliest Feed Event Date', 'gce' ); ?></label></th>
175
  <td>
176
+ <select id="gce_feed_start" name="gce_feed_start">
177
+ <option value="days" <?php selected( $gce_feed_start, 'days', true ); ?>><?php _e( 'Number of Days Back', 'gce' ); ?></option>
178
+ <option value="months" <?php selected( $gce_feed_start, 'months', true ); ?>><?php _e( 'Number of Months Back', 'gce' ); ?></option>
179
+ <option value="years" <?php selected( $gce_feed_start, 'years', true ); ?>><?php _e( 'Number of Years Back', 'gce' ); ?></option>
180
+ </select>
181
+ <span class="gce_feed_start_num_wrap <?php echo ( $gce_feed_start == 'custom' ? 'gce-admin-hidden' : '' ); ?>">
182
+ <input type="number" min="0" step="1" class="small-text" id="gce_feed_start_num" name="gce_feed_start_num" value="<?php echo esc_attr( $gce_feed_start_num ); ?>" />
183
+ </span>
184
+ <p class="description"><?php _e( 'Set how far back to retrieve events regardless of initial display.', 'gce' ); ?></p>
185
+ </td>
186
+ </tr>
187
+
188
+ <tr class="gce-display-option <?php echo ( $use_range == true ? 'gce-admin-hidden' : '' ); ?>">
189
+ <th scope="row"><label for="gce_feed_end"><?php _e( 'Latest Feed Event Date', 'gce' ); ?></label></th>
190
+ <td>
191
+ <select id="gce_feed_end" name="gce_feed_end">
192
+ <option value="days" <?php selected( $gce_feed_end, 'days', true ); ?>><?php _e( 'Number of Days Forward', 'gce' ); ?></option>
193
+ <option value="months" <?php selected( $gce_feed_end, 'months', true ); ?>><?php _e( 'Number of Months Forward', 'gce' ); ?></option>
194
+ <option value="years" <?php selected( $gce_feed_end, 'years', true ); ?>><?php _e( 'Number of Years Forward', 'gce' ); ?></option>
195
  </select>
196
+ <span class="gce_feed_end_num_wrap <?php echo ( $gce_feed_end == 'custom' ? 'gce-admin-hidden' : '' ); ?>">
197
+ <input type="number" min="0" step="1" class="small-text" id="gce_feed_end_num" name="gce_feed_end_num" value="<?php echo esc_attr( $gce_feed_end_num ); ?>" />
198
+ </span>
199
+ <p class="description"><?php _e( 'Set how far in the future to retrieve events regardless of initial display.', 'gce' ); ?></p>
200
  </td>
201
  </tr>
202
 
203
+ <tr class="gce-custom-range <?php echo ( $use_range == true ? '' : 'gce-admin-hidden' ); ?>">
204
+ <th scope="row"><label for="gce_feed_use_range"><?php _e( 'Use Custom Date Range', 'gce' ); ?></label></th>
205
+ <td>
206
+ <span>
207
+ <input type="text" name="gce_feed_range_start" id="gce_feed_range_start" value="<?php echo esc_attr( $gce_feed_range_start ); ?>" />
208
+ <?php _ex( 'to', 'separator between custom date range fields', 'gce' ); ?>
209
+ <input type="text" id="gce_feed_range_end" name="gce_feed_range_end" value="<?php echo esc_attr( $gce_feed_range_end ); ?>" />
210
+ <p class="description"><?php _e( 'Set a specific range of events to retrieve.', 'gce' ); ?></p>
211
+ </span>
212
+ </td>
213
+ </tr>
214
+
215
+ <tr class="gce-display-option <?php echo ( $use_range == true ? 'gce-admin-hidden' : '' ); ?>">
216
  <th scope="row"><label for="gce_paging"><?php _e( 'Show Paging Links', 'gce' ); ?></label></th>
217
  <td>
218
+ <input type="checkbox" name="gce_paging" id="gce_paging" value="1" <?php checked( $gce_paging, '1' ); ?> />
219
+ <?php _e( 'Display Next and Back navigation links.', 'gce' ); ?>
220
  </td>
221
  </tr>
222
 
223
  <tr>
224
+ <th scope="row"><label for="gce_show_tooltips"><?php _e( 'Show Tooltips', 'gce' ); ?></label></th>
225
  <td>
226
+ <input type="checkbox" name="gce_show_tooltips" id="gce_show_tooltips" value="1" <?php checked( $gce_show_tooltips, '1' ); ?> />
227
+ <?php _e( 'Display tooltips when hovering over events (Grid View only).', 'gce' ); ?>
 
 
 
 
228
  </td>
229
  </tr>
230
 
231
  <tr>
232
+ <th scope="row"><label for="gce_date_format"><?php _e( 'Date Format', 'gce' ); ?></label></th>
233
  <td>
234
+ <input type="text" class="" name="gce_date_format" id="gce_date_format" value="<?php echo esc_attr( $gce_date_format ); ?>" />
235
+ <p class="description">
236
+ <?php printf( __( 'Use %sPHP date formatting%s.', 'gce' ), '<a href="http://php.net/manual/en/function.date.php" target="_blank">', '</a>' ); ?>
237
+ <?php _e( 'Leave blank to use the default.', 'gce' ); ?>
238
+ </p>
239
+ </td>
 
 
240
  </tr>
241
 
242
  <tr>
243
+ <th scope="row"><label for="gce_time_format"><?php _e( 'Time Format', 'gce' ); ?></label></th>
244
  <td>
245
+ <input type="text" class="" name="gce_time_format" id="gce_time_format" value="<?php echo esc_attr( $gce_time_format ); ?>" />
246
+ <p class="description">
247
+ <?php printf( __( 'Use %sPHP date formatting%s.', 'gce' ), '<a href="http://php.net/manual/en/function.date.php" target="_blank">', '</a>' ); ?>
248
+ <?php _e( 'Leave blank to use the default.', 'gce' ); ?>
249
+ </p>
250
+ </td>
 
 
 
251
  </tr>
252
 
253
  <tr>
254
+ <th scope="row"><label for="gce_cache"><?php _e( 'Cache Duration', 'gce' ); ?></label></th>
255
  <td>
256
+ <input type="text" class="" name="gce_cache" id="gce_cache" value="<?php echo esc_attr( $gce_cache ); ?>" />
257
+ <p class="description"><?php _e( 'The length of time, in seconds, to cache the feed (43200 = 12 hours). If this feed changes regularly, you may want to reduce the cache duration.', 'gce' ); ?></p>
258
+ <td>
259
+ </tr>
260
+
261
+ <tr>
262
+ <td colspan="2">
263
+ <input type="button" class="button button-primary button-large gce-feed-update-button" value="Save Changes">
264
+ </td>
265
  </tr>
266
  </table>
views/admin/gce-feed-sidebar-help.php CHANGED
@@ -5,23 +5,25 @@
5
  <a href="<?php echo gce_ga_campaign_url( 'http://wpdocs.philderksen.com/google-calendar-events/', 'gce_lite', 'sidebar_link', 'docs' ); ?>" target="_blank">
6
  <?php _e( 'Documentation & getting started', 'gce' ); ?></a>
7
  </li>
8
-
9
  <li>
10
  <div class="dashicons dashicons-arrow-right-alt2"></div>
11
  <a href="https://wordpress.org/support/plugin/google-calendar-events" target="_blank">
12
  <?php _e( 'Community support forums', 'gce' ); ?></a>
13
  </li>
14
-
15
  <li>
16
  <div class="dashicons dashicons-arrow-right-alt2"></div>
17
- <a href="http://eepurl.com/0_VsT" target="_blank">
18
- <?php _e( 'Get notified of new features', 'gce' ); ?></a>
19
  </li>
20
-
21
  <li>
22
  <div class="dashicons dashicons-arrow-right-alt2"></div>
23
- <a href="https://wordpress.org/support/view/plugin-reviews/google-calendar-events" target="_blank">
24
- <?php _e( 'Rate this plugin', 'gce' ); ?></a>
 
 
 
 
 
25
  </li>
26
  </ul>
27
  </div>
5
  <a href="<?php echo gce_ga_campaign_url( 'http://wpdocs.philderksen.com/google-calendar-events/', 'gce_lite', 'sidebar_link', 'docs' ); ?>" target="_blank">
6
  <?php _e( 'Documentation & getting started', 'gce' ); ?></a>
7
  </li>
 
8
  <li>
9
  <div class="dashicons dashicons-arrow-right-alt2"></div>
10
  <a href="https://wordpress.org/support/plugin/google-calendar-events" target="_blank">
11
  <?php _e( 'Community support forums', 'gce' ); ?></a>
12
  </li>
 
13
  <li>
14
  <div class="dashicons dashicons-arrow-right-alt2"></div>
15
+ <a href="https://wordpress.org/support/view/plugin-reviews/google-calendar-events#postform" target="_blank">
16
+ <?php _e( 'Rate this plugin', 'gce' ); ?></a>
17
  </li>
 
18
  <li>
19
  <div class="dashicons dashicons-arrow-right-alt2"></div>
20
+ <a href="https://trello.com/b/ZQSzsarY" target="_blank">
21
+ <?php _e( 'View our roadmap & vote', 'gce' ); ?></a>
22
+ </li>
23
+ <li>
24
+ <div class="dashicons dashicons-arrow-right-alt2"></div>
25
+ <a href="http://eepurl.com/0_VsT" target="_blank">
26
+ <?php _e( 'Get notified of new features', 'gce' ); ?></a>
27
  </li>
28
  </ul>
29
  </div>
views/widgets.php CHANGED
@@ -27,6 +27,19 @@ class GCE_Widget extends WP_Widget {
27
  $name = __( 'Google Calendar Events', 'gce' ),
28
  array( 'description' => __( 'Display a list or calendar grid of events from one or more Google Calendar feeds you have added', 'gce' ) )
29
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  }
31
 
32
  /**
@@ -40,16 +53,40 @@ class GCE_Widget extends WP_Widget {
40
  //Output before widget stuff
41
  echo $before_widget;
42
 
43
- $paging = ( isset( $instance['paging'] ) ? $instance['paging'] : null );
44
- $max_num = ( isset( $instance['list_max_num'] ) ? $instance['list_max_num'] : null );
45
- $max_length = ( isset( $instance['list_max_length'] ) ? $instance['list_max_length'] : null );
46
- $max_events = null;
 
47
 
48
  // Start offset
49
  $offset_num = ( isset( $instance['list_start_offset_num'] ) ? $instance['list_start_offset_num'] : 0 );
50
  $offset_length = 86400;
51
  $offset_direction = ( isset( $instance['list_start_offset_direction'] ) ? $instance['list_start_offset_direction'] : null );
52
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
 
54
  if( $offset_direction == 'back' ) {
55
  $offset_direction = -1;
@@ -61,12 +98,18 @@ class GCE_Widget extends WP_Widget {
61
 
62
  $paging_interval = null;
63
 
 
 
 
 
64
  if( $max_length == 'days' ) {
65
  $paging_interval = $max_num * 86400;
66
- }
67
-
68
- if( $max_length == 'events' ) {
69
  $max_events = $max_num;
 
 
 
 
70
  }
71
 
72
  // Check whether any feeds have been added yet
@@ -87,8 +130,13 @@ class GCE_Widget extends WP_Widget {
87
 
88
  //Check each id is an integer, if not, remove it from the array
89
  foreach ( $feed_ids as $key => $feed_id ) {
90
- if ( 0 == absint( $feed_id ) )
91
  unset( $feed_ids[$key] );
 
 
 
 
 
92
  }
93
 
94
  //If at least one of the feed ids entered exists, set no_feeds_exist to false
@@ -121,29 +169,42 @@ class GCE_Widget extends WP_Widget {
121
  $sort_order = ( isset( $instance['order'] ) ) ? $instance['order'] : 'asc';
122
 
123
  $args = array(
124
- 'title_text' => $title_text,
125
- 'sort' => $sort_order,
126
- 'month' => null,
127
- 'year' => null,
128
- 'widget' => 1,
129
- 'max_events' => $max_events,
130
- 'start_offset' => $start_offset,
131
- 'paging_type' => $max_length
 
 
132
  );
133
 
134
- if( 'list-grouped' == $instance['display_type'] ) {
135
  $args['grouped'] = 1;
136
  }
137
 
138
- $markup = gce_print_calendar( $feed_ids, $instance['display_type'], $args, true );
 
 
 
 
 
139
 
140
- echo $markup;
 
 
 
 
 
 
141
  }
142
  } else {
143
  if( current_user_can( 'manage_options' ) ) {
144
  _e( 'You have not added any feeds yet.', 'gce' );
145
  } else {
146
- return;
147
  }
148
  }
149
 
@@ -161,14 +222,15 @@ class GCE_Widget extends WP_Widget {
161
  $instance = $old_instance;
162
  $instance['title'] = esc_html( $new_instance['title'] );
163
  $instance['id'] = esc_html( $new_instance['id'] );
164
- $instance['display_type'] = esc_html( $new_instance['display_type'] );
165
  $instance['order'] = ( 'asc' == $new_instance['order'] ) ? 'asc' : 'desc';
166
  $instance['display_title_text'] = esc_html( $new_instance['display_title_text'] );
167
  $instance['paging'] = ( isset( $new_instance['paging'] ) ? 1 : 0 );
168
- $instance['list_max_num'] = $new_instance['list_max_num'];
169
- $instance['list_max_length'] = $new_instance['list_max_length'];
170
  $instance['list_start_offset_num'] = $new_instance['list_start_offset_num'];
171
  $instance['list_start_offset_direction'] = $new_instance['list_start_offset_direction'];
 
 
 
172
 
173
  return $instance;
174
  }
@@ -191,43 +253,44 @@ class GCE_Widget extends WP_Widget {
191
 
192
  $title = ( isset( $instance['title'] ) ) ? $instance['title'] : '';
193
  $ids = ( isset( $instance['id'] ) ) ? $instance['id'] : '';
194
- $display_type = ( isset( $instance['display_type'] ) ) ? $instance['display_type'] : 'grid';
195
  $order = ( isset( $instance['order'] ) ) ? $instance['order'] : 'asc';
196
  $display_title = ( isset( $instance['display_title'] ) ) ? $instance['display_title'] : true;
197
  $title_text = ( isset( $instance['display_title_text'] ) ) ? $instance['display_title_text'] : __( 'Events on', 'gce' );
198
  $paging = ( isset( $instance['paging'] ) ? $instance['paging'] : 1 );
199
- $list_max_num = ( isset( $instance['list_max_num'] ) ? $instance['list_max_num'] : 7 );
200
- $list_max_length = ( isset( $instance['list_max_length'] ) ? $instance['list_max_length'] : 'days' );
201
- $list_start_offset_num = ( isset( $instance['list_start_offset_num'] ) ? $instance['list_start_offset_num'] : 0 );
 
 
202
  $list_start_offset_direction = ( isset( $instance['list_start_offset_direction'] ) ? $instance['list_start_offset_direction'] : 'back' );
 
 
 
203
 
204
  ?>
205
  <p>
206
  <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:', 'gce' ); ?></label>
207
- <input type="text" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $title; ?>" class="widefat" />
208
  </p>
209
  <p>
210
  <label for="<?php echo $this->get_field_id( 'id' ); ?>">
211
  <?php _e( 'Feeds to Display (comma separated list - i.e. 101,102,103):', 'gce' ); ?>
212
  </label>
213
- <input type="text" id="<?php echo $this->get_field_id( 'id' ); ?>" name="<?php echo $this->get_field_name( 'id' ); ?>" value="<?php echo $ids; ?>" class="widefat" />
214
  </p>
 
215
  <p>
216
  <label for="<?php echo $this->get_field_id( 'display_type' ); ?>"><?php _e( 'Display Events as:', 'gce' ); ?></label>
217
  <select id="<?php echo $this->get_field_id( 'display_type' ); ?>" name="<?php echo $this->get_field_name( 'display_type' ); ?>" class="widefat">
218
- <option value="grid"<?php selected( $display_type, 'grid' ); ?>><?php _e( 'Grid', 'gce' ); ?></option>
219
- <option value="list"<?php selected( $display_type, 'list' ); ?>><?php _e( 'List', 'gce' ); ?></option>
220
- <option value="list-grouped"<?php selected( $display_type, 'list-grouped' );?>><?php _e( 'Grouped List', 'gce' ); ?></option>
 
221
  </select>
222
  </p>
223
 
224
- <p>
225
- <label for="<?php echo $this->get_field_id( 'paging' ); ?>"><?php _e( 'Show Paging Links:', 'gce' ); ?></label><br>
226
- <input type="checkbox" id="<?php echo $this->get_field_id( 'paging' ); ?>" name="<?php echo $this->get_field_name( 'paging' ); ?>" class="widefat" value="1" <?php checked( $paging, 1 ); ?>>
227
- <?php _e( 'Check this option to display Next and Back navigation links.', 'gce' ); ?>
228
- </p>
229
-
230
- <p>
231
  <label for="<?php echo $this->get_field_id( 'order' ); ?>"><?php _e( 'Sort Order (List View only):', 'gce' ); ?></label>
232
  <select id="<?php echo $this->get_field_id( 'order' ); ?>" name="<?php echo $this->get_field_name( 'order' ); ?>" class="widefat">
233
  <option value="asc" <?php selected( $order, 'asc' ); ?>><?php _e( 'Ascending', 'gce' ); ?></option>
@@ -235,28 +298,45 @@ class GCE_Widget extends WP_Widget {
235
  </select>
236
  </p>
237
 
238
- <p>
239
- <label for="<?php echo $this->get_field_id( 'list_max_num' ); ?>"><?php _e( 'Number of Events per Page (List View only):', 'gce' ); ?></label><br>
240
- <input type="number" min="0" step="1" class="small-text" id="<?php echo $this->get_field_id( 'list_max_num' ); ?>" name="<?php echo $this->get_field_name( 'list_max_num' ); ?>" value="<?php echo $list_max_num; ?>" />
241
- <select name="<?php echo $this->get_field_name( 'list_max_length' ); ?>" id="<?php echo $this->get_field_id( 'list_max_length' ); ?>">
242
- <option value="days" <?php selected( $list_max_length, 'days', true ); ?>><?php _e( 'Days', 'gce' ); ?></option>
243
- <option value="events" <?php selected( $list_max_length, 'events', true ); ?>><?php _e( 'Events', 'gce' ); ?></option>
 
244
  </select>
 
 
 
245
  </p>
 
 
 
 
246
 
247
- <p>
248
  <label for="<?php echo $this->get_field_id( 'list_start_offset_num' ); ?>"><?php _e( 'Display Start Date Offset (List View only):', 'gce' ); ?></label><br>
249
- <input type="number" min="0" step="1" class="small-text" id="<?php echo $this->get_field_id( 'list_start_offset_num' ); ?>" name="<?php echo $this->get_field_name( 'list_start_offset_num' ); ?>" value="<?php echo $list_start_offset_num; ?>" />
250
- <?php _e( 'Days', 'gce' ); ?>
251
  <select name="<?php echo $this->get_field_name( 'list_start_offset_direction' ); ?>" id="<?php echo $this->get_field_id( 'list_start_offset_direction' ); ?>">
252
- <option value="back" <?php selected( $list_start_offset_direction, 'back', true ); ?>><?php _e( 'Back', 'gce' ); ?></option>
253
- <option value="ahead" <?php selected( $list_start_offset_direction, 'ahead', true ); ?>><?php _e( 'Ahead', 'gce' ); ?></option>
254
  </select>
 
 
 
255
  </p>
256
 
257
- <p>
258
  <label for="<?php echo $this->get_field_id( 'display_title' ); ?>"><?php _e( 'Display Title on Tooltip/List Item (e.g. \'Events on 7th March\'). Grouped lists always have a title displayed.', 'gce' ); ?></label>
259
- <input type="text" class="widefat" id="<?php echo $this->get_field_id( 'display_title_text' ); ?>" name="<?php echo $this->get_field_name( 'display_title_text' ); ?>" value="<?php echo $title_text; ?>" />
 
 
 
 
 
 
 
 
260
  </p>
261
 
262
  <?php
27
  $name = __( 'Google Calendar Events', 'gce' ),
28
  array( 'description' => __( 'Display a list or calendar grid of events from one or more Google Calendar feeds you have added', 'gce' ) )
29
  );
30
+
31
+ if ( is_active_widget( false, false, $this->id_base ) ) {
32
+ // Call action to load CSS for widget
33
+ add_action( 'wp_enqueue_scripts', array( $this, 'gce_widget_add_styles' ) );
34
+
35
+ // Load JS
36
+ wp_enqueue_script( 'google-calendar-events-public' );
37
+ }
38
+ }
39
+
40
+ function gce_widget_add_styles() {
41
+ // Load CSS
42
+ wp_enqueue_style( 'google-calendar-events-public' );
43
  }
44
 
45
  /**
53
  //Output before widget stuff
54
  echo $before_widget;
55
 
56
+ $paging = ( isset( $instance['paging'] ) ? $instance['paging'] : null );
57
+ $max_num = ( isset( $instance['per_page_num'] ) ? $instance['per_page_num'] : null );
58
+ $max_length = ( isset( $instance['events_per_page'] ) ? $instance['events_per_page'] : null );
59
+ $max_events = null;
60
+ $display_type = ( isset( $instance['display_type'] ) ? $instance['display_type'] : null );
61
 
62
  // Start offset
63
  $offset_num = ( isset( $instance['list_start_offset_num'] ) ? $instance['list_start_offset_num'] : 0 );
64
  $offset_length = 86400;
65
  $offset_direction = ( isset( $instance['list_start_offset_direction'] ) ? $instance['list_start_offset_direction'] : null );
66
 
67
+ $invalid_id = false;
68
+
69
+
70
+ // Get custom date range if set
71
+ if( 'date-range' == $display_type ) {
72
+ $range_start = ( isset( $instance['feed_range_start'] ) ? $instance['feed_range_start'] : null );
73
+ $range_end = ( isset( $instance['feed_range_end'] ) ? $instance['feed_range_end'] : null );
74
+
75
+ if( $range_start !== null && ! empty( $range_start ) ) {
76
+ $range_start = gce_date_unix( $range_start );
77
+ }
78
+
79
+ if( $range_end !== null && ! empty( $range_end ) ) {
80
+ $range_end = gce_date_unix( $range_end );
81
+ }
82
+ }
83
+
84
+ if( ! isset( $instance['show_tooltips'] ) ) {
85
+ $show_tooltips = 1;
86
+ } else {
87
+ $show_tooltips = ( isset( $instance['show_tooltips'] ) ? $instance['show_tooltips'] : 'false' );
88
+ }
89
+
90
 
91
  if( $offset_direction == 'back' ) {
92
  $offset_direction = -1;
98
 
99
  $paging_interval = null;
100
 
101
+ if( $display_type == 'date-range' ) {
102
+ $max_length = 'date-range';
103
+ }
104
+
105
  if( $max_length == 'days' ) {
106
  $paging_interval = $max_num * 86400;
107
+ } else if( $max_length == 'events' ) {
 
 
108
  $max_events = $max_num;
109
+ } else if( $max_length == 'week' ) {
110
+ $paging_interval = 604800;
111
+ } else if( $max_length == 'month' ) {
112
+ $paging_interval = 2629743;
113
  }
114
 
115
  // Check whether any feeds have been added yet
130
 
131
  //Check each id is an integer, if not, remove it from the array
132
  foreach ( $feed_ids as $key => $feed_id ) {
133
+ if ( 0 == absint( $feed_id ) ) {
134
  unset( $feed_ids[$key] );
135
+ }
136
+
137
+ if( ! ( 'publish' == get_post_status( $feed_id ) ) ) {
138
+ $invalid_id = true;
139
+ }
140
  }
141
 
142
  //If at least one of the feed ids entered exists, set no_feeds_exist to false
169
  $sort_order = ( isset( $instance['order'] ) ) ? $instance['order'] : 'asc';
170
 
171
  $args = array(
172
+ 'title_text' => $title_text,
173
+ 'sort' => $sort_order,
174
+ 'month' => null,
175
+ 'year' => null,
176
+ 'widget' => 1,
177
+ 'max_events' => $max_events,
178
+ 'start_offset' => $start_offset,
179
+ 'paging_type' => $max_length,
180
+ 'max_num' => $max_num,
181
+ 'show_tooltips' => $show_tooltips
182
  );
183
 
184
+ if( 'list-grouped' == $display_type ) {
185
  $args['grouped'] = 1;
186
  }
187
 
188
+ if( 'date-range' == $display_type ) {
189
+ $args['max_events'] = INF;
190
+ $args['max_num'] = INF;
191
+ }
192
+
193
+ $markup = gce_print_calendar( $feed_ids, $display_type, $args, true );
194
 
195
+ if( ! $invalid_id ) {
196
+ echo $markup;
197
+ } else {
198
+ if( current_user_can( 'manage_options' ) ) {
199
+ echo '<p>' . __( 'There was a problem with one or more of your feed IDs. Please check your widget settings and make sure they are correct.', 'gce' ) . '</p>';
200
+ }
201
+ }
202
  }
203
  } else {
204
  if( current_user_can( 'manage_options' ) ) {
205
  _e( 'You have not added any feeds yet.', 'gce' );
206
  } else {
207
+ echo '';
208
  }
209
  }
210
 
222
  $instance = $old_instance;
223
  $instance['title'] = esc_html( $new_instance['title'] );
224
  $instance['id'] = esc_html( $new_instance['id'] );
225
+ $instance['display_type'] = esc_html( $new_instance['display_type'] );
226
  $instance['order'] = ( 'asc' == $new_instance['order'] ) ? 'asc' : 'desc';
227
  $instance['display_title_text'] = esc_html( $new_instance['display_title_text'] );
228
  $instance['paging'] = ( isset( $new_instance['paging'] ) ? 1 : 0 );
 
 
229
  $instance['list_start_offset_num'] = $new_instance['list_start_offset_num'];
230
  $instance['list_start_offset_direction'] = $new_instance['list_start_offset_direction'];
231
+ $instance['per_page_num'] = $new_instance['per_page_num'];
232
+ $instance['events_per_page'] = $new_instance['events_per_page'];
233
+ $instance['show_tooltips'] = ( isset( $new_instance['show_tooltips'] ) ? 1 : 0 );
234
 
235
  return $instance;
236
  }
253
 
254
  $title = ( isset( $instance['title'] ) ) ? $instance['title'] : '';
255
  $ids = ( isset( $instance['id'] ) ) ? $instance['id'] : '';
256
+ $display_type = ( isset( $instance['display_type'] ) ) ? $instance['display_type'] : 'grid';
257
  $order = ( isset( $instance['order'] ) ) ? $instance['order'] : 'asc';
258
  $display_title = ( isset( $instance['display_title'] ) ) ? $instance['display_title'] : true;
259
  $title_text = ( isset( $instance['display_title_text'] ) ) ? $instance['display_title_text'] : __( 'Events on', 'gce' );
260
  $paging = ( isset( $instance['paging'] ) ? $instance['paging'] : 1 );
261
+
262
+ $per_page_num = ( isset( $instance['per_page_num'] ) && ! empty( $instance['per_page_num'] ) ? $instance['per_page_num'] : 7 );
263
+ $events_per_page = ( isset( $instance['events_per_page'] ) ? $instance['events_per_page'] : 'days' );
264
+
265
+ $list_start_offset_num = ( isset( $instance['list_start_offset_num'] ) && ! empty( $instance['list_start_offset_num'] ) ? $instance['list_start_offset_num'] : 0 );
266
  $list_start_offset_direction = ( isset( $instance['list_start_offset_direction'] ) ? $instance['list_start_offset_direction'] : 'back' );
267
+ $show_tooltips = ( isset( $instance['show_tooltips'] ) ? $instance['show_tooltips'] : 1 );
268
+
269
+ $use_range = ( selected( $display_type, 'date-range', false ) ? true : false );
270
 
271
  ?>
272
  <p>
273
  <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:', 'gce' ); ?></label>
274
+ <input type="text" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo esc_attr( $title ); ?>" class="widefat" />
275
  </p>
276
  <p>
277
  <label for="<?php echo $this->get_field_id( 'id' ); ?>">
278
  <?php _e( 'Feeds to Display (comma separated list - i.e. 101,102,103):', 'gce' ); ?>
279
  </label>
280
+ <input type="text" id="<?php echo $this->get_field_id( 'id' ); ?>" name="<?php echo $this->get_field_name( 'id' ); ?>" value="<?php echo esc_attr( $ids ); ?>" class="widefat" />
281
  </p>
282
+
283
  <p>
284
  <label for="<?php echo $this->get_field_id( 'display_type' ); ?>"><?php _e( 'Display Events as:', 'gce' ); ?></label>
285
  <select id="<?php echo $this->get_field_id( 'display_type' ); ?>" name="<?php echo $this->get_field_name( 'display_type' ); ?>" class="widefat">
286
+ <option value="grid" <?php selected( $display_type, 'grid' ); ?>><?php _e( 'Grid (Month view)', 'gce' ); ?></option>
287
+ <option value="list" <?php selected( $display_type, 'list' ); ?>><?php _e( 'List', 'gce' ); ?></option>
288
+ <option value="list-grouped" <?php selected( $display_type, 'list-grouped' );?>><?php _e( 'Grouped List', 'gce' ); ?></option>
289
+ <option value="date-range" <?php selected( $display_type, 'date-range' );?>><?php _e( 'Custom Date Range (List)', 'gce' ); ?></option>
290
  </select>
291
  </p>
292
 
293
+ <p class="gce-display-option <?php echo ( $use_range == true ? 'gce-admin-hidden' : '' ); ?>">
 
 
 
 
 
 
294
  <label for="<?php echo $this->get_field_id( 'order' ); ?>"><?php _e( 'Sort Order (List View only):', 'gce' ); ?></label>
295
  <select id="<?php echo $this->get_field_id( 'order' ); ?>" name="<?php echo $this->get_field_name( 'order' ); ?>" class="widefat">
296
  <option value="asc" <?php selected( $order, 'asc' ); ?>><?php _e( 'Ascending', 'gce' ); ?></option>
298
  </select>
299
  </p>
300
 
301
+ <p class="gce-display-option <?php echo ( $use_range == true ? 'gce-admin-hidden' : '' ); ?>">
302
+ <label for="<?php echo $this->get_field_id( 'events_per_page' ); ?>"><?php _e( 'Events per Page (List View only):', 'gce' ); ?></label><br/>
303
+ <select id="<?php echo $this->get_field_id( 'events_per_page' ); ?>" name="<?php echo $this->get_field_name( 'events_per_page' ); ?>">
304
+ <option value="days" <?php selected( $events_per_page, 'days', true ); ?>><?php _e( 'Number of Days', 'gce' ); ?></option>
305
+ <option value="events" <?php selected( $events_per_page, 'events', true ); ?>><?php _e( 'Number of Events', 'gce' ); ?></option>
306
+ <option value="week" <?php selected( $events_per_page, 'week', true ); ?>><?php _e( 'One Week', 'gce' ); ?></option>
307
+ <option value="month" <?php selected( $events_per_page, 'month', true ); ?>><?php _e( 'One Month', 'gce' ); ?></option>
308
  </select>
309
+ <span class="gce_per_page_num_wrap <?php echo ( $events_per_page != 'days' && $events_per_page != 'events' ? 'gce-admin-hidden' : '' ); ?>">
310
+ <input type="number" min="0" step="1" class="small-text" name="<?php echo $this->get_field_name( 'per_page_num' ); ?>" id="<?php echo $this->get_field_id( 'per_page_num' ); ?>" value="<?php echo esc_attr( $per_page_num ); ?>" />
311
+ </span>
312
  </p>
313
+
314
+ <span class="gce-custom-range <?php echo ( $use_range == true ? '' : 'gce-admin-hidden' ); ?>">
315
+ <small><?php _e( 'This setting will pull from the custom date range set in the main feed settings and cannot be changed here.', 'gce' ); ?></small>
316
+ </span>
317
 
318
+ <p class="gce-display-option <?php echo ( $use_range == true ? 'gce-admin-hidden' : '' ); ?>">
319
  <label for="<?php echo $this->get_field_id( 'list_start_offset_num' ); ?>"><?php _e( 'Display Start Date Offset (List View only):', 'gce' ); ?></label><br>
 
 
320
  <select name="<?php echo $this->get_field_name( 'list_start_offset_direction' ); ?>" id="<?php echo $this->get_field_id( 'list_start_offset_direction' ); ?>">
321
+ <option value="back" <?php selected( $list_start_offset_direction, 'back', true ); ?>><?php _e( 'Number of Days Back', 'gce' ); ?></option>
322
+ <option value="ahead" <?php selected( $list_start_offset_direction, 'ahead', true ); ?>><?php _e( 'Number of Days Forward', 'gce' ); ?></option>
323
  </select>
324
+ <input type="number" min="0" step="1" class="small-text" id="<?php echo $this->get_field_id( 'list_start_offset_num' ); ?>" name="<?php echo $this->get_field_name( 'list_start_offset_num' ); ?>" value="<?php echo esc_attr( $list_start_offset_num ); ?>" />
325
+ <br>
326
+ <small><?php _e( 'Change to initially display events on a date other than today (List View only).', 'gce' ); ?></small>
327
  </p>
328
 
329
+ <p class="gce-display-option gce-display-control <?php echo ( $use_range == true ? 'gce-admin-hidden' : '' ); ?>">
330
  <label for="<?php echo $this->get_field_id( 'display_title' ); ?>"><?php _e( 'Display Title on Tooltip/List Item (e.g. \'Events on 7th March\'). Grouped lists always have a title displayed.', 'gce' ); ?></label>
331
+ <input type="text" class="widefat" id="<?php echo $this->get_field_id( 'display_title_text' ); ?>" name="<?php echo $this->get_field_name( 'display_title_text' ); ?>" value="<?php echo esc_attr( $title_text ); ?>" />
332
+ </p>
333
+
334
+ <p class="gce-display-option <?php echo ( $use_range == true ? 'gce-admin-hidden' : '' ); ?>">
335
+ <input type="checkbox" id="<?php echo $this->get_field_id( 'paging' ); ?>" name="<?php echo $this->get_field_name( 'paging' ); ?>" class="widefat" value="1" <?php checked( $paging, 1 ); ?>>
336
+ <label for="<?php echo $this->get_field_id( 'paging' ); ?>"><?php _e( 'Show Paging Links', 'gce' ); ?></label>
337
+ <br>
338
+ <input type="checkbox" id="<?php echo $this->get_field_id( 'show_tooltips' ); ?>" name="<?php echo $this->get_field_name( 'show_tooltips' ); ?>" class="widefat" value="1" <?php checked( $show_tooltips, 1 ); ?>>
339
+ <label for="<?php echo $this->get_field_id( 'show_tooltips' ); ?>"><?php _e( 'Show Tooltips', 'gce' ); ?></label>
340
  </p>
341
 
342
  <?php