static function handle_subscription_shortcode($atts, $content = null) { extract(shortcode_atts(array('title' => 'Subscribe to calendar', 'type' => 'google', 'class' => '', 'id' => '', 'style' => '', 'category' => false, 'venue' => false), $atts, 'eo_subscribe')); if ($category) { $url = eo_get_event_category_feed($category); } elseif ($venue) { $url = eo_get_event_venue_feed($venue); } else { $url = eo_get_events_feed(); } $class = $class ? 'class="' . esc_attr($class) . '"' : false; $title = $title ? 'title="' . esc_attr($title) . '"' : false; $style = $style ? 'style="' . esc_attr($style) . '"' : false; $id = $id ? 'id="' . esc_attr($id) . '"' : false; if (strtolower($type) == 'webcal') { $url = str_replace('http://', 'webcal://', $url); } elseif (strtolower($type) == 'ical') { //Do nothing } else { $url = add_query_arg('cid', urlencode($url), 'http://www.google.com/calendar/render'); } $html = '<a href="' . $url . '" target="_blank" ' . $class . ' ' . $title . ' ' . $id . ' ' . $style . '>' . $content . '</a>'; return $html; }
/** * This is called in the register_settings method. * Once the tabs have been registered, and sections added to each tabbed page, we now add the fields for each section * A section should have the form {tab_id}._{identifer} (e.g. general_main, or gateways_google). * * @param $tab_id - the string identifer for the tab (given in $this->tabs as the key). * @uses add_settings_field */ function add_fields($tab_id) { switch ($tab_id) { case 'general': /* General - main */ add_settings_field('supports', __('Select which features events should support', 'eventorganiser'), 'eventorganiser_checkbox_field', 'eventorganiser_' . $tab_id, $tab_id, array('label_for' => 'supports', 'checked' => eventorganiser_get_option('supports'), 'options' => array('author' => __('Organiser', 'eventorganiser') . ' ( ' . __('Author', 'eventorganiser') . ' )', 'thumbnail' => __('Thumbnail'), 'excerpt' => __('Excerpt'), 'custom-fields' => __('Custom Fields'), 'comments' => __('Comments'), 'revisions' => __('Revisions'), 'eventtag' => __('Event Tags', 'eventorganiser')), 'name' => 'eventorganiser_options[supports]')); add_settings_field('showpast', __("Show past events:", 'eventorganiser'), 'eventorganiser_checkbox_field', 'eventorganiser_' . $tab_id, $tab_id, array('label_for' => 'showpast', 'name' => 'eventorganiser_options[showpast]', 'options' => 1, 'checked' => eventorganiser_get_option('showpast'), 'help' => __("Display past events on calendars, event lists and archives (this can be over-ridden by shortcode attributes and widget options).", 'eventorganiser'))); add_settings_field('addtomenu', __("Add an 'events' link to the navigation menu:", 'eventorganiser'), array($this, 'menu_option'), 'eventorganiser_' . $tab_id, $tab_id, array('label_for' => 'addtomenu')); add_settings_field('dateformat', __('Date Format:', 'eventorganiser'), 'eventorganiser_select_field', 'eventorganiser_' . $tab_id, $tab_id, array('label_for' => 'dateformat', 'selected' => eventorganiser_get_option('dateformat'), 'name' => 'eventorganiser_options[dateformat]', 'options' => array('d-m-Y' => __('dd-mm-yyyy', 'eventorganiser'), 'm-d-Y' => __('mm-dd-yyyy', 'eventorganiser'), 'Y-m-d' => __('yyyy-mm-dd', 'eventorganiser')), 'help' => __("This alters the default format for inputting dates.", 'eventorganiser'))); add_settings_field('showpast', __("Show past events:", 'eventorganiser'), 'eventorganiser_checkbox_field', 'eventorganiser_' . $tab_id, $tab_id, array('label_for' => 'showpast', 'name' => 'eventorganiser_options[showpast]', 'options' => 1, 'checked' => eventorganiser_get_option('showpast'), 'help' => __("Display past events on calendars, event lists and archives (this can be over-ridden by shortcode attributes and widget options).", 'eventorganiser'))); add_settings_field('group_events', __("Group occurrences", 'eventorganiser'), 'eventorganiser_checkbox_field', 'eventorganiser_' . $tab_id, $tab_id, array('label_for' => 'group_events', 'name' => 'eventorganiser_options[group_events]', 'options' => 'series', 'checked' => eventorganiser_get_option('group_events'), 'help' => __("If selected only one occurrence of an event will be displayed on event lists and archives (this can be over-ridden by shortcode attributes and widget options.", 'eventorganiser'))); add_settings_field('runningisnotpast', __("Are current events past?", 'eventorganiser'), 'eventorganiser_select_field', 'eventorganiser_' . $tab_id, $tab_id, array('label_for' => 'runningisnotpast', 'name' => 'eventorganiser_options[runningisnotpast]', 'selected' => eventorganiser_get_option('runningisnotpast', 0), 'options' => array('0' => __('No', 'eventorganiser'), '1' => __('Yes', 'eventorganiser')), 'help' => __("If 'no' is selected, an occurrence of an event is only past when it has finished. Otherwise, an occurrence is considered 'past' as soon as it starts.", 'eventorganiser'))); add_settings_field('deleteexpired', __("Delete expired events:", 'eventorganiser'), 'eventorganiser_checkbox_field', 'eventorganiser_' . $tab_id, $tab_id, array('label_for' => 'deleteexpired', 'name' => 'eventorganiser_options[deleteexpired]', 'options' => 1, 'checked' => eventorganiser_get_option('deleteexpired'), 'help' => __("If selected the event will be automatically trashed 24 hours after the last occurrence finishes.", 'eventorganiser'))); add_settings_field('feed', __("Enable events ICAL feed:", 'eventorganiser'), 'eventorganiser_checkbox_field', 'eventorganiser_' . $tab_id, $tab_id, array('label_for' => 'feed', 'name' => 'eventorganiser_options[feed]', 'options' => 1, 'checked' => eventorganiser_get_option('feed'), 'help' => sprintf(__('If selected, visitors can subscribe to your events with the url: %s', 'eventorganiser'), '<code>' . eo_get_events_feed() . '</code>'))); add_settings_field('excludefromsearch', __("Exclude events from searches:", 'eventorganiser'), 'eventorganiser_checkbox_field', 'eventorganiser_' . $tab_id, $tab_id, array('label_for' => 'excludefromsearch', 'name' => 'eventorganiser_options[excludefromsearch]', 'options' => 1, 'checked' => eventorganiser_get_option('excludefromsearch'))); add_settings_field('templates', __("Enable templates:", 'eventorganiser'), 'eventorganiser_checkbox_field', 'eventorganiser_' . $tab_id, $tab_id . '_templates', array('label_for' => 'templates', 'name' => 'eventorganiser_options[templates]', 'options' => 1, 'checked' => eventorganiser_get_option('templates'), 'help' => __("For each of the pages, the corresponding template is used. To use your own template simply give it the same name and store in your theme folder. By default, if Event Organiser cannot find a template in your theme directory, it will use its own default template. To prevent this, uncheck this option. WordPress will then decide which template from your theme's folder to use.", 'eventorganiser') . sprintf("<p><strong> %s </strong><code>archive-event.php</code></p>\n\t\t\t\t\t\t\t\t\t\t\t<p><strong> %s </strong><code>single-event.php</code></p>\n\t\t\t\t\t\t\t\t\t\t\t<p><strong> %s </strong><code>taxonomy-event-venue.php</code></p>\n\t\t\t\t\t\t\t\t\t\t\t<p><strong> %s </strong><code>taxonomy-event-category.php</code></p>", __("Events archives:", 'eventorganiser'), __("Event page:", 'eventorganiser'), __("Venue page:", 'eventorganiser'), __("Events Category page:", 'eventorganiser')) . sprintf(__("For more information see documentation <a href='%s'>on editing the templates</a>", 'eventorganiser'), 'http://docs.wp-event-organiser.com/theme-integration'))); add_settings_field('disable_css', __("Disable CSS:", 'eventorganiser'), 'eventorganiser_checkbox_field', 'eventorganiser_' . $tab_id, $tab_id . '_templates', array('label_for' => 'disable_css', 'name' => 'eventorganiser_options[disable_css]', 'options' => 1, 'checked' => eventorganiser_get_option('disable_css'), 'help' => __('Check this option to prevent any stylesheets from Event Organiser being loaded on the front-end', 'eventorganiser'))); break; case 'permissions': break; case 'permalinks': add_settings_field('prettyurl', __("Enable event pretty permalinks:", 'eventorganiser'), 'eventorganiser_checkbox_field', 'eventorganiser_' . $tab_id, $tab_id, array('label_for' => 'prettyurl', 'name' => 'eventorganiser_options[prettyurl]', 'options' => 1, 'checked' => eventorganiser_get_option('prettyurl'), 'help' => __("If you have pretty permalinks enabled, select to have pretty premalinks for events.", 'eventorganiser'))); $home_url = home_url(); add_settings_field('url_event', __("Event (single)", 'eventorganiser'), 'eventorganiser_text_field', 'eventorganiser_' . $tab_id, $tab_id, array('label_for' => 'url_event', 'name' => 'eventorganiser_options[url_event]', 'class' => 'regular-text', 'value' => eventorganiser_get_option('url_event'), 'help' => "<code>{$home_url}/<strong>" . eventorganiser_get_option('url_event') . "</strong>/[event_slug]</code>")); add_settings_field('url_events', __("Events page", 'eventorganiser'), 'eventorganiser_text_field', 'eventorganiser_' . $tab_id, $tab_id, array('label_for' => 'url_events', 'name' => 'eventorganiser_options[url_events]', 'class' => 'regular-text', 'value' => eventorganiser_get_option('url_events'), 'help' => "<code>{$home_url}/<strong>" . eventorganiser_get_option('url_events') . "</strong></code>")); $now = new DateTime(); $base_url = eventorganiser_get_option('url_events') . "/<strong>" . eventorganiser_get_option('url_on') . "</strong>"; add_settings_field('url_on', __("Event (date archive)", 'eventorganiser'), 'eventorganiser_text_field', 'eventorganiser_' . $tab_id, $tab_id, array('label_for' => 'url_on', 'name' => 'eventorganiser_options[url_on]', 'class' => 'regular-text', 'value' => eventorganiser_get_option('url_on'), 'help' => "<code>{$home_url}/{$base_url}/{$now->format('Y')}</code> " . __('Year archive', 'eventorganiser') . '<br>' . "<code>{$home_url}/{$base_url}/{$now->format('Y/m')}</code>" . __('Month archive', 'eventorganiser') . '<br>' . "<code>{$home_url}/{$base_url}/{$now->format('Y/m/d')}</code>" . __('Day archive', 'eventorganiser'))); $supports = eventorganiser_get_option('supports'); if (in_array('event-venue', $supports)) { add_settings_field('url_venue', __("Venues", 'eventorganiser'), 'eventorganiser_text_field', 'eventorganiser_' . $tab_id, $tab_id, array('label_for' => 'url_venue', 'name' => 'eventorganiser_options[url_venue]', 'class' => 'regular-text', 'value' => eventorganiser_get_option('url_venue'), 'help' => "<code>{$home_url}/<strong>" . eventorganiser_get_option('url_venue') . "</strong>/[venue_slug]</code>")); } add_settings_field('url_cat', __("Event Categories", 'eventorganiser'), 'eventorganiser_text_field', 'eventorganiser_' . $tab_id, $tab_id, array('label_for' => 'url_cat', 'name' => 'eventorganiser_options[url_cat]', 'class' => 'regular-text', 'value' => eventorganiser_get_option('url_cat'), 'help' => "<code>{$home_url}/<strong>" . eventorganiser_get_option('url_cat') . "</strong>/[event_cat_slug]</code>")); add_settings_field('url_tag', __("Event Tags", 'eventorganiser'), 'eventorganiser_text_field', 'eventorganiser_' . $tab_id, $tab_id, array('label_for' => 'url_tag', 'name' => 'eventorganiser_options[url_tag]', 'class' => 'regular-text', 'value' => eventorganiser_get_option('url_tag'), 'help' => "<label><code>{$home_url}/<strong>" . eventorganiser_get_option('url_tag') . "</strong>/[event_tag_slug]</code></label>")); break; } }
function display_general() { ?> <table class="form-table"> <tr> <th><?php _e('Select which features events should support', 'eventorganiser'); ?> :</th> <td> <table> <tr> <?php $counter = 1; foreach (self::$sup_array as $supp_display => $supp) { echo '<td><input type="checkbox" name="eventorganiser_options[supports][]" value="' . $supp . '" ' . checked(true, in_array($supp, self::$settings['supports']), false) . ' />' . $supp_display . '</td>'; if ($counter == 4) { echo '</tr><tr>'; } $counter++; } self::$settings['eventtag'] = empty(self::$settings['eventtag']) ? 0 : 1; ?> <td><input type="checkbox" name="eventorganiser_options[eventtag]" value="1" <?php checked('1', self::$settings['eventtag']); ?> /><?php _e("Event Tags", 'eventorganiser'); ?> </td> </tr> </table> </td> </tr> <tr> <th><?php _e("Add an 'events' link to the navigation menu:", 'eventorganiser'); ?> </th> <td> <?php self::$settings['addtomenu'] = !empty(self::$settings['addtomenu']) ? self::$settings['addtomenu'] : 0; ?> <?php $menus = get_terms('nav_menu'); ?> <select name="eventorganiser_options[addtomenu]"> <option <?php selected(0, self::$settings['addtomenu']); ?> value="0"><?php _e('Do not add to menu', 'eventorganiser'); ?> </option> <?php foreach ($menus as $menu) { ?> <option <?php selected($menu->slug, self::$settings['addtomenu']); ?> value="<?php echo $menu->slug; ?> "><?php echo $menu->name; ?> </option> <?php } ?> <option <?php selected(1, self::$settings['addtomenu']); ?> value="1"><?php _e('Page list (fallback)', 'eventorganiser'); ?> </option> </select> <?php self::$settings['navtitle'] = !empty(self::$settings['navtitle']) ? self::$settings['navtitle'] : __('Events', 'eventorganiser'); ?> <?php self::$settings['menu_item_db_id'] = !empty(self::$settings['menu_item_db_id']) ? (int) self::$settings['menu_item_db_id'] : 0; ?> <input type="hidden" name ="eventorganiser_options[menu_item_db_id]" value="<?php echo self::$settings['menu_item_db_id']; ?> " /> <input type="text" name="eventorganiser_options[navtitle]" value="<?php echo self::$settings['navtitle']; ?> " /> <?php _e("(This may not work with some themes):", 'eventorganiser'); ?> </td> </tr> <tr> <th><?php _e('Date Format:', 'eventorganiser'); ?> </th> <td> <label> <select name="eventorganiser_options[dateformat]"> <option <?php selected('dd-mm', self::$settings['dateformat']); ?> value="dd-mm"><?php _e('dd-mm-yyyy', 'eventorganiser'); ?> </option> <option <?php selected('mm-dd', self::$settings['dateformat']); ?> value="mm-dd"><?php _e('mm-dd-yyyy', 'eventorganiser'); ?> </option> </select> <?php _e("This alters the default format for inputting dates.", 'eventorganiser'); ?> </label> </td> </tr> <tr> <th><?php _e("Show past events:", 'eventorganiser'); ?> </th> <td> <label> <input type="checkbox" name="eventorganiser_options[showpast]" value="1" <?php checked('1', self::$settings['showpast']); ?> /> <?php _e("Display past events on calendars, event lists and archives (this can be over-ridden by shortcode attributes and widget options).", 'eventorganiser'); ?> </label></td> </tr> <tr> <th><?php _e("Group occurrences", 'eventorganiser'); ?> :</th> <?php self::$settings['group_events'] = isset(self::$settings['group_events']) ? self::$settings['group_events'] : ''; ?> <td> <label> <input type="checkbox" name="eventorganiser_options[group_events]" value="series" <?php checked('series', self::$settings['group_events']); ?> /> <?php _e("If selected only one occurrence of an event will be displayed on event lists and archives (this can be over-ridden by shortcode attributes and widget options).", 'eventorganiser'); ?> </label></td> </tr> <tr> <th><?php _e("Are current events past?", 'eventorganiser'); ?> </th> <td> <?php $runningsisnotpast = empty(self::$settings['runningisnotpast']) ? 0 : self::$settings['runningisnotpast']; ?> <input type="radio" id="whatispast-0" name="eventorganiser_options[runningisnotpast]" value="0" <?php checked('0', $runningsisnotpast); ?> /> <label for="whatispast-0"><?php _e('Yes'); ?> </label> <input type="radio" id="whatispast-1" name="eventorganiser_options[runningisnotpast]" value="1" <?php checked('1', $runningsisnotpast); ?> /> <label for="whatispast-1"><?php _e('No'); ?> </label></br> <?php _e("If 'no' is selected, an occurrence of an event is only past when it has finished. Otherwise, an occurrence is considered 'past' as soon as it starts.", 'eventorganiser'); ?> </td> </tr> <tr> <th><?php _e("Delete expired events:", 'eventorganiser'); ?> </th> <td> <label> <input type="checkbox" name="eventorganiser_options[deleteexpired]" value="1" <?php checked('1', self::$settings['deleteexpired']); ?> /> <?php _e("If selected the event will be automatically trashed 24 hours after the last occurrence finishes.", 'eventorganiser'); ?> </label></td> </tr> <tr> <th><?php _e("Enable events ICAL feed:", 'eventorganiser'); ?> </th> <td> <input type="checkbox" name="eventorganiser_options[feed]" value="1" <?php checked('1', self::$settings['feed']); ?> /> <label> <?php printf(__('If selected, visitors can subscribe to your events with the url: %s', 'eventorganiser'), '<code>' . eo_get_events_feed() . '</code>'); ?> </label> </td> </tr> <tr> <th><?php _e("Exclude events from searches:", 'eventorganiser'); ?> </th> <td> <label> <input type="checkbox" name="eventorganiser_options[excludefromsearch]" value="1" <?php checked('1', self::$settings['excludefromsearch']); ?> /> </label></td> </tr> <tr> <th><?php _e("Enable templates:", 'eventorganiser'); ?> </th> <td><input type="checkbox" name="eventorganiser_options[templates]" value="1" <?php checked('1', self::$settings['templates']); ?> /> <?php _e("For each of the pages, the corresponding template is used. To use your own template simply give it the same name and store in your theme folder. By default, if Event Organiser cannot find a template in your theme directory, it will use its own default template. To prevent this, uncheck this option. WordPress will then decide which template from your theme's folder to use.", 'eventorganiser'); ?> <p> <strong><?php _e("Events archives:", 'eventorganiser'); ?> </strong><code>archive-event.php</code> </p> <p> <strong><?php _e("Event page:", 'eventorganiser'); ?> </strong> <code>single-event.php</code> </p> <p> <strong><?php _e("Venue page:", 'eventorganiser'); ?> </strong> <code>venue-template.php</code> </p> <p> <strong><?php _e("Events Category page:", 'eventorganiser'); ?> </strong> <code>taxonomy-event-category.php</code> </p> </td> </tr> </table> <?php }