public function management_page() { $sharer = new Sharing_Service(); $enabled = $sharer->get_blog_services(); $global = $sharer->get_global_options(); $shows = array_values(get_post_types(array('public' => true))); array_unshift($shows, 'index'); if (false == function_exists('mb_stripos')) { echo '<div id="message" class="updated fade"><h3>' . __('Warning! Multibyte support missing!', 'jetpack') . '</h3>'; echo "<p>" . sprintf(__('This plugin will work without it, but multibyte support is used <a href="%s">if available</a>. You may see minor problems with Tweets and other sharing services.', 'jetpack'), "http://www.php.net/manual/en/mbstring.installation.php") . '</p></div>'; } if (isset($_GET['update']) && $_GET['update'] == 'saved') { echo '<div class="updated"><p>' . __('Settings have been saved', 'jetpack') . '</p></div>'; } if (!isset($global['sharing_label'])) { $global['sharing_label'] = __('Share this:', 'jetpack'); } ?> <div class="wrap"> <div class="icon32" id="icon-options-general"><br /></div> <h2><?php _e('Sharing Settings', 'jetpack'); ?> </h2> <?php /** * Fires at the top of the admin sharing settings screen. * * @since 1.6.0 */ do_action('pre_admin_screen_sharing'); ?> <?php if (current_user_can('manage_options')) { ?> <div class="share_manage_options"> <h3><?php _e('Sharing Buttons', 'jetpack'); ?> </h3> <p><?php _e('Add sharing buttons to your blog and allow your visitors to share posts with their friends.', 'jetpack'); ?> </p> <div id="services-config"> <table id="available-services"> <tr> <td class="description"> <h3><?php _e('Available Services', 'jetpack'); ?> </h3> <p><?php _e("Drag and drop the services you'd like to enable into the box below.", 'jetpack'); ?> </p> <p><a href="#TB_inline?height=395&width=600&inlineId=new-service" class="thickbox" id="add-a-new-service"><?php _e('Add a new service', 'jetpack'); ?> </a></p> </td> <td class="services"> <ul class="services-available" style="height: 100px;"> <?php foreach ($sharer->get_all_services_blog() as $id => $service) { ?> <?php if (!isset($enabled['all'][$id])) { $this->output_service($id, $service); } ?> <?php } ?> </ul> <?php if (-1 == get_option('blog_public')) { echo '<p><strong>' . __('Please note that your services have been restricted because your site is private.', 'jetpack') . '</strong></p>'; } ?> <br class="clearing" /> </td> </tr> </table> <table id="enabled-services"> <tr> <td class="description"> <h3> <?php _e('Enabled Services', 'jetpack'); ?> <img src="<?php echo admin_url('images/loading.gif'); ?> " width="16" height="16" alt="loading" style="vertical-align: middle; display: none" /> </h3> <p><?php _e('Services dragged here will appear individually.', 'jetpack'); ?> </p> </td> <td class="services" id="share-drop-target"> <h2 id="drag-instructions" <?php if (count($enabled['visible']) > 0) { echo ' style="display: none"'; } ?> ><?php _e('Drag and drop available services here.', 'jetpack'); ?> </h2> <ul class="services-enabled"> <?php foreach ($enabled['visible'] as $id => $service) { ?> <?php $this->output_service($id, $service, true); ?> <?php } ?> <li class="end-fix"></li> </ul> </td> <td id="hidden-drop-target" class="services"> <p><?php _e('Services dragged here will be hidden behind a share button.', 'jetpack'); ?> </p> <ul class="services-hidden"> <?php foreach ($enabled['hidden'] as $id => $service) { ?> <?php $this->output_service($id, $service, true); ?> <?php } ?> <li class="end-fix"></li> </ul> </td> </tr> </table> <table id="live-preview"> <tr> <td class="description"> <h3><?php _e('Live Preview', 'jetpack'); ?> </h3> </td> <td class="services"> <h2<?php if (count($enabled['all']) > 0) { echo ' style="display: none"'; } ?> ><?php _e('Sharing is off. Add services above to enable.', 'jetpack'); ?> </h2> <div class="sharedaddy sd-sharing-enabled"> <?php if (count($enabled['all']) > 0) { ?> <h3 class="sd-title"><?php echo esc_html($global['sharing_label']); ?> </h3> <?php } ?> <div class="sd-content"> <ul class="preview"> <?php foreach ($enabled['visible'] as $id => $service) { ?> <?php $this->output_preview($service); ?> <?php } ?> <?php if (count($enabled['hidden']) > 0) { ?> <li class="advanced"><a href="#" class="sharing-anchor sd-button share-more"><span><?php _e('More', 'jetpack'); ?> </span></a></li> <?php } ?> </ul> <?php if (count($enabled['hidden']) > 0) { ?> <div class="sharing-hidden"> <div class="inner" style="display: none; <?php echo count($enabled['hidden']) == 1 ? 'width:150px;' : ''; ?> "> <?php if (count($enabled['hidden']) == 1) { ?> <ul style="background-image:none;"> <?php } else { ?> <ul> <?php } ?> <?php foreach ($enabled['hidden'] as $id => $service) { $this->output_preview($service); } ?> </ul> </div> </div> <?php } ?> <ul class="archive" style="display:none;"> <?php foreach ($sharer->get_all_services_blog() as $id => $service) { if (isset($enabled['visible'][$id])) { $service = $enabled['visible'][$id]; } elseif (isset($enabled['hidden'][$id])) { $service = $enabled['hidden'][$id]; } $service->button_style = 'icon-text'; // The archive needs the full text, which is removed in JS later $service->smart = false; $this->output_preview($service); } ?> <li class="advanced"><a href="#" class="sharing-anchor sd-button share-more"><span><?php _e('More', 'jetpack'); ?> </span></a></li> </ul> </div> </div> <br class="clearing" /> </td> </tr> </table> <form method="post" action="<?php echo admin_url('admin-ajax.php'); ?> " id="save-enabled-shares"> <input type="hidden" name="action" value="sharing_save_services" /> <input type="hidden" name="visible" value="<?php echo implode(',', array_keys($enabled['visible'])); ?> " /> <input type="hidden" name="hidden" value="<?php echo implode(',', array_keys($enabled['hidden'])); ?> " /> <input type="hidden" name="_wpnonce" value="<?php echo wp_create_nonce('sharing-options'); ?> " /> </form> </div> <form method="post" action=""> <table class="form-table"> <tbody> <tr valign="top"> <th scope="row"><label><?php _e('Button style', 'jetpack'); ?> </label></th> <td> <select name="button_style" id="button_style"> <option<?php if ($global['button_style'] == 'icon-text') { echo ' selected="selected"'; } ?> value="icon-text"><?php _e('Icon + text', 'jetpack'); ?> </option> <option<?php if ($global['button_style'] == 'icon') { echo ' selected="selected"'; } ?> value="icon"><?php _e('Icon only', 'jetpack'); ?> </option> <option<?php if ($global['button_style'] == 'text') { echo ' selected="selected"'; } ?> value="text"><?php _e('Text only', 'jetpack'); ?> </option> <option<?php if ($global['button_style'] == 'official') { echo ' selected="selected"'; } ?> value="official"><?php _e('Official buttons', 'jetpack'); ?> </option> </select> </td> </tr> <tr valign="top"> <th scope="row"><label><?php _e('Sharing label', 'jetpack'); ?> </label></th> <td> <input type="text" name="sharing_label" value="<?php echo esc_attr($global['sharing_label']); ?> " /> </td> </tr> <?php /** * Filters the HTML at the beginning of the "Show button on" row. * * @since 2.1.0 * * @param string $var Opening HTML tag at the beginning of the "Show button on" row. */ echo apply_filters('sharing_show_buttons_on_row_start', '<tr valign="top">'); ?> <th scope="row"><label><?php _e('Show buttons on', 'jetpack'); ?> </label></th> <td> <?php $br = false; foreach ($shows as $show) { if ('index' == $show) { $label = __('Front Page, Archive Pages, and Search Results', 'jetpack'); } else { $post_type_object = get_post_type_object($show); $label = $post_type_object->labels->name; } ?> <?php if ($br) { echo '<br />'; } ?> <label><input type="checkbox"<?php checked(in_array($show, $global['show'])); ?> name="show[]" value="<?php echo esc_attr($show); ?> " /> <?php echo esc_html($label); ?> </label> <?php $br = true; } ?> </td> <?php /** * Filters the HTML at the end of the "Show button on" row. * * @since 2.1.0 * * @param string $var Closing HTML tag at the end of the "Show button on" row. */ echo apply_filters('sharing_show_buttons_on_row_end', '</tr>'); ?> <?php /** * Fires at the end of the sharing global options settings table. * * @since 1.1.0 */ do_action('sharing_global_options'); ?> </tbody> </table> <p class="submit"> <input type="submit" name="submit" class="button-primary" value="<?php _e('Save Changes', 'jetpack'); ?> " /> </p> <input type="hidden" name="_wpnonce" value="<?php echo wp_create_nonce('sharing-options'); ?> " /> </form> <div id="new-service" style="display: none"> <form method="post" action="<?php echo admin_url('admin-ajax.php'); ?> " id="new-service-form"> <table class="form-table"> <tbody> <tr valign="top"> <th scope="row" width="100"><label><?php _e('Service name', 'jetpack'); ?> </label></th> <td> <input type="text" name="sharing_name" id="new_sharing_name" size="40" /> </td> </tr> <tr valign="top"> <th scope="row" width="100"><label><?php _e('Sharing URL', 'jetpack'); ?> </label></th> <td> <input type="text" name="sharing_url" id="new_sharing_url" size="40" /> <p><?php _e('You can add the following variables to your service sharing URL:', 'jetpack'); ?> <br/> <code>%post_title%</code>, <code>%post_url%</code>, <code>%post_full_url%</code>, <code>%post_excerpt%</code>, <code>%post_tags%</code></p> </td> </tr> <tr valign="top"> <th scope="row" width="100"><label><?php _e('Icon URL', 'jetpack'); ?> </label></th> <td> <input type="text" name="sharing_icon" id="new_sharing_icon" size="40" /> <p><?php _e('Enter the URL of a 16x16px icon you want to use for this service.', 'jetpack'); ?> </p> </td> </tr> <tr valign="top" width="100"> <th scope="row"></th> <td> <input type="submit" class="button-primary" value="<?php _e('Create Share Button', 'jetpack'); ?> " /> <img src="<?php echo admin_url('images/loading.gif'); ?> " width="16" height="16" alt="loading" style="vertical-align: middle; display: none" /> </td> </tr> <?php /** * Fires after the custom sharing service form * * @since 1.1.0 */ do_action('sharing_new_service_form'); ?> </tbody> </table> <?php /** * Fires at the bottom of the admin sharing settings screen. * * @since 1.6.0 */ do_action('post_admin_screen_sharing'); ?> <div class="inerror" style="display: none; margin-top: 15px"> <p><?php _e('An error occurred creating your new sharing service - please check you gave valid details.', 'jetpack'); ?> </p> </div> <input type="hidden" name="action" value="sharing_new_service" /> <input type="hidden" name="_wpnonce" value="<?php echo wp_create_nonce('sharing-new_service'); ?> " /> </form> </div> </div> <?php } ?> </div> <script type="text/javascript"> var sharing_loading_icon = '<?php echo esc_js(admin_url("/images/loading.gif")); ?> '; <?php if (isset($_GET['create_new_service']) && 'true' == $_GET['create_new_service']) { ?> jQuery(document).ready(function() { // Prefill new service box and then open it jQuery( '#new_sharing_name' ).val( '<?php echo esc_js($_GET['name']); ?> ' ); jQuery( '#new_sharing_url' ).val( '<?php echo esc_js($_GET['url']); ?> ' ); jQuery( '#new_sharing_icon' ).val( '<?php echo esc_js($_GET['icon']); ?> ' ); jQuery( '#add-a-new-service' ).click(); }); <?php } ?> </script> <?php }
public function management_page() { $sharer = new Sharing_Service(); $enabled = $sharer->get_blog_services(); $global = $sharer->get_global_options(); $shows = array_values(get_post_types(array('public' => true))); array_unshift($shows, 'index'); if (false == function_exists('mb_stripos')) { echo '<div id="message" class="updated fade"><h3>' . __('Warning! Multibyte support missing!', 'jetpack') . '</h3>'; echo "<p>" . sprintf(__('This plugin will work without it, but multibyte support is used <a href="%s">if available</a>. You may see minor problems with Tweets and other sharing services.', 'jetpack'), "http://www.php.net/manual/en/mbstring.installation.php") . '</p></div>'; } if (isset($_GET['update']) && $_GET['update'] == 'saved') { echo '<div class="updated"><p>' . __('Settings have been saved', 'jetpack') . '</p></div>'; } ?> <div class="wrap"> <div class="icon32" id="icon-options-general"><br /></div> <h2><?php _e('Sharing Settings', 'jetpack'); ?> </h2> <div id="services-config"> <table id="available-services"> <tr> <td class="description"> <h3><?php _e('Available Services', 'jetpack'); ?> </h3> <p><?php _e("Drag and drop the services you'd like to enable into the box below.", 'jetpack'); ?> </p> <p><a href="#TB_inline?height=395&width=600&inlineId=new-service" title="<?php echo esc_attr(__('Add a new service', 'jetpack')); ?> " class="thickbox"><?php _e('Add a new service', 'jetpack'); ?> </a></p> </td> <td class="services"> <ul class="services-available" style="height: 100px;"> <?php foreach ($sharer->get_all_services_blog() as $id => $service) { ?> <?php if (!isset($enabled['all'][$id])) { $this->output_service($id, $service); } ?> <?php } ?> </ul> <br class="clearing" /> </td> </tr> </table> <table id="enabled-services"> <tr> <td class="description"> <h3> <?php _e('Enabled Services', 'jetpack'); ?> <img src="<?php echo admin_url('images/loading.gif'); ?> " width="16" height="16" alt="loading" style="vertical-align: middle; display: none" /> </h3> <p><?php _e('Services dragged here will appear individually.', 'jetpack'); ?> </p> </td> <td class="services" id="share-drop-target"> <h2 id="drag-instructions" <?php if (count($enabled['visible']) > 0) { echo ' style="display: none"'; } ?> ><?php _e('Drag and drop available services here', 'jetpack'); ?> </h2> <ul class="services-enabled"> <?php foreach ($enabled['visible'] as $id => $service) { ?> <?php $this->output_service($id, $service, true); ?> <?php } ?> <li class="end-fix"></li> </ul> </td> <td id="hidden-drop-target" class="services"> <p><?php _e('Services dragged here will be hidden behind a share button.', 'jetpack'); ?> </p> <ul class="services-hidden"> <?php foreach ($enabled['hidden'] as $id => $service) { ?> <?php $this->output_service($id, $service, true); ?> <?php } ?> <li class="end-fix"></li> </ul> </td> </tr> </table> <table id="live-preview"> <tr> <td class="description"> <h3><?php _e('Live Preview', 'jetpack'); ?> </h3> </td> <td class="services"> <h2<?php if (count($enabled['all']) > 0) { echo ' style="display: none"'; } ?> ><?php _e('Sharing is off. Please add services above to enable', 'jetpack'); ?> </h2> <ul class="preview"> <?php if (count($enabled['all']) > 0) { ?> <li class="sharing-label"><?php echo esc_html($global['sharing_label']); ?> </li> <?php } ?> <?php foreach ($enabled['visible'] as $id => $service) { ?> <?php $this->output_preview($service); ?> <?php } ?> <?php if (count($enabled['hidden']) > 0) { ?> <li class="share-custom"> <a href="#" class="sharing-anchor"><?php _ex('Share', 'dropdown button', 'jetpack'); ?> </a> <div class="sharing-hidden"> <div class="inner" style="display: none;"> <ul> <?php $count = 1; foreach ($enabled['hidden'] as $id => $service) { $this->output_preview($service); if ($count % 2 == 0) { echo '<li class="share-end"></li>'; } $count++; } ?> <li class="share-end"></li> </ul> </div> </div> </li> <?php } ?> </ul> <ul class="archive" style="display: none"> <li class="sharing-label"><?php echo esc_html($global['sharing_label']); ?> </li> <?php foreach ($sharer->get_all_services_blog() as $id => $service) { ?> <?php if (isset($enabled['visible'][$id])) { $service = $enabled['visible'][$id]; } elseif (isset($enabled['hidden'][$id])) { $service = $enabled['hidden'][$id]; } $service->button_style = 'icon-text'; // The archive needs the full text, which is removed in JS later $this->output_preview($service); ?> <?php } ?> <li class="share-custom"> <a href="#" class="sharing-anchor"><?php _ex('Share', 'dropdown button', 'jetpack'); ?> </a> <div class="sharing-hidden"> <div class="inner" style="display: none;"> <ul> <li/> </ul> </div> </div> </li> </ul> <br class="clearing" /> </td> </tr> </table> <form method="post" action="<?php echo admin_url('admin-ajax.php'); ?> " id="save-enabled-shares"> <input type="hidden" name="action" value="sharing_save_services" /> <input type="hidden" name="visible" value="<?php echo implode(',', array_keys($enabled['visible'])); ?> " /> <input type="hidden" name="hidden" value="<?php echo implode(',', array_keys($enabled['hidden'])); ?> " /> <input type="hidden" name="_wpnonce" value="<?php echo wp_create_nonce('sharing-options'); ?> " /> </form> </div> <form method="post" action=""> <table class="form-table"> <tbody> <tr valign="top"> <th scope="row"><label><?php _e('Default button style', 'jetpack'); ?> </label></th> <td> <select name="button_style"> <option<?php if ($global['button_style'] == 'icon-text') { echo ' selected="selected"'; } ?> value="icon-text"><?php _e('Icon + text', 'jetpack'); ?> </option> <option<?php if ($global['button_style'] == 'icon') { echo ' selected="selected"'; } ?> value="icon"><?php _e('Icon only', 'jetpack'); ?> </option> <option<?php if ($global['button_style'] == 'text') { echo ' selected="selected"'; } ?> value="text"><?php _e('Text only', 'jetpack'); ?> </option> </select> </td> </tr> <tr valign="top"> <th scope="row"><label><?php _e('Sharing label', 'jetpack'); ?> </label></th> <td> <input type="text" name="sharing_label" value="<?php echo esc_attr($global['sharing_label']); ?> " /> </td> </tr> <tr valign="top"> <th scope="row"><label><?php _e('Open links in', 'jetpack'); ?> </label></th> <td> <select name="open_links"> <option<?php if ($global['open_links'] == 'new') { echo ' selected="selected"'; } ?> value="new"><?php _e('New window', 'jetpack'); ?> </option> <option<?php if ($global['open_links'] == 'same') { echo ' selected="selected"'; } ?> value="same"><?php _e('Same window', 'jetpack'); ?> </option> </select> </td> </tr> <tr valign="top"> <th scope="row"><label><?php _e('Show sharing buttons on', 'jetpack'); ?> </label></th> <td> <?php $br = false; foreach ($shows as $show) { if ('index' == $show) { $label = __('Front Page, Archive Pages, and Search Results', 'jetpack'); } else { $post_type_object = get_post_type_object($show); $label = $post_type_object->labels->name; } ?> <?php if ($br) { echo '<br />'; } ?> <label><input type="checkbox"<?php checked(in_array($show, $global['show'])); ?> name="show[]" value="<?php echo esc_attr($show); ?> " /> <?php echo esc_html($label); ?> </label> <?php $br = true; } ?> </td> </tr> <?php do_action('sharing_global_options'); ?> </tbody> </table> <p class="submit"> <input type="submit" name="submit" class="button-primary" value="<?php _e('Save Changes', 'jetpack'); ?> " /> </p> <input type="hidden" name="_wpnonce" value="<?php echo wp_create_nonce('sharing-options'); ?> " /> </form> <div id="new-service" style="display: none"> <form method="post" action="<?php echo admin_url('admin-ajax.php'); ?> " id="new-service-form"> <table class="form-table"> <tbody> <tr valign="top"> <th scope="row" width="100"><label><?php _e('Service name', 'jetpack'); ?> </label></th> <td> <input type="text" name="sharing_name" size="40" /> </td> </tr> <tr valign="top"> <th scope="row" width="100"><label><?php _e('Sharing URL', 'jetpack'); ?> </label></th> <td> <input type="text" name="sharing_url" size="40" /> <p><?php _e('You can add the following variables to your service sharing URL:', 'jetpack'); ?> <br/> <code>%post_title%</code>, <code>%post_url%</code>, <code>%post_full_url%</code>, <code>%post_excerpt%</code>, <code>%post_full_url%</code>, <code>%post_tags%</code></p> </td> </tr> <tr valign="top"> <th scope="row" width="100"><label><?php _e('Icon URL', 'jetpack'); ?> </label></th> <td> <input type="text" name="sharing_icon" size="40" /> <p><?php _e('Enter the URL of a 16x16px icon you want to use for this service.', 'jetpack'); ?> </p> </td> </tr> <tr valign="top" width="100"> <th scope="row"></th> <td> <input type="submit" class="button-secondary" value="<?php _e('Create Share', 'jetpack'); ?> " /> <img src="<?php echo admin_url('images/loading.gif'); ?> " width="16" height="16" alt="loading" style="vertical-align: middle; display: none" /> </td> </tr> <?php do_action('sharing_new_service_form'); ?> </tbody> </table> <div class="inerror" style="display: none; margin-top: 15px"> <p><?php _e('An error occurred creating your new sharing service - please check you gave valid details.', 'jetpack'); ?> </p> </div> <input type="hidden" name="action" value="sharing_new_service" /> <input type="hidden" name="_wpnonce" value="<?php echo wp_create_nonce('sharing-new_service'); ?> " /> </form> </div> </div> <script type="text/javascript"> var sharing_loading_icon = '<?php echo esc_js(admin_url("/images/loading.gif")); ?> '; </script> <?php }
public function callback($path = '', $blog_id = 0, $button_id = 0) { // Validate request $blog_id = $this->api->switch_to_blog_and_validate_user($this->api->get_blog_id($blog_id)); if (is_wp_error($blog_id)) { return $blog_id; } if (!current_user_can('manage_options')) { return new WP_Error('forbidden', 'You do not have the capability to manage sharing buttons for this site', 403); } else { if (!class_exists('Sharing_Service') || !class_exists('Sharing_Source') || method_exists('Jetpack', 'is_module_active') && !Jetpack::is_module_active('sharedaddy')) { return new WP_Error('missing_jetpack_module', 'The Sharing module must be activated in order to use this endpoint', 400); } } // Find existing button $ss = new Sharing_Service(); $all_buttons = $ss->get_all_services_blog(); if (!array_key_exists($button_id, $all_buttons)) { // Button doesn't exist return new WP_Error('not_found', 'The specified sharing button was not found', 404); } // Verify button is custom if (!is_a($all_buttons[$button_id], 'Share_Custom')) { return new WP_error('invalid_request', 'Only custom sharing buttons can be deleted', 400); } $success = $ss->delete_service($button_id); return array('ID' => $button_id, 'success' => $success); }