Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

9 block help #10

Open
wants to merge 2 commits into
base: 1.x-1.x
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
File renamed without changes.
Empty file removed git
Empty file.
70 changes: 0 additions & 70 deletions plugins/content_types/sharethis/sharethis.inc

This file was deleted.

313 changes: 313 additions & 0 deletions sharethis.admin.inc
Original file line number Diff line number Diff line change
@@ -0,0 +1,313 @@
<?php
/**
* @file
* A module that adds one of the ShareThis widget to your website.
*/

/**
* This is the main configuration form for the admin page.
*/
function sharethis_configuration_form($form, &$form_state) {
// First, setup variables we will need.
// Get the path variables setup.
$my_path = backdrop_get_path('module', 'sharethis');
// Load the css and js for our module's configuration.
backdrop_add_css($my_path . '/ShareThisForm.css');
backdrop_add_js('https://ws.sharethis.com/share5x/js/stcommon.js', 'external'); //This is ShareThis's common library - has a serviceList of all the objects that are currently supported.
backdrop_add_js($my_path . '/ShareThisForm.js');
backdrop_add_js($my_path . '/stlib_picker.js');
backdrop_add_css($my_path . '/stlib_picker.css');
$current_options_array = sharethis_get_options_array();
global $base_url;

// Create the variables related to widget choice.
$widget_type = $current_options_array['widget'];
$widget_markup = "";
if ($widget_type == "st_multi") {
$widget_markup = "st_multi";
}
// Create the variables related to button choice.
$button_choice = check_plain($current_options_array['buttons']);
// Create the variables related to services chosen.
$service_string = $current_options_array['services'];
$service_string_markup = "";
foreach (explode(",", $service_string) as $name => $string) {
$key = explode(":", backdrop_substr($string, 0, -1));
$key = $key[1];
$service_string_markup .= "\"" . $key . "\",";
}
$service_string_markup = backdrop_substr($service_string_markup, 0, -1);

// Create the variables for publisher keys.
$publisher = $current_options_array['publisherID'];

$form = array();
$form['options'] = array(
'#type' => 'fieldset',
'#title' => t('Display'),
);
$form['options']['sharethis_button_option'] = array(
'#required' => TRUE,
'#type' => 'radios',
'#options' => array(
'stbc_large' => t('Large Chicklets'),
'stbc_' => t('Small Chicklets'),
'stbc_button' => t('Classic Buttons'),
'stbc_vcount' => t('Vertical Counters'),
'stbc_hcount' => t('Horizontal Counters'),
'stbc_custom' => t('Custom Buttons via CSS'),
),
'#default_value' => $button_choice,
'#title' => t("Choose a button style:"),
'#prefix' => '<div class="st_widgetContain"><div class="st_spriteCover"><img id="stb_sprite" class="st_buttonSelectSprite ' . $button_choice . '" src="' . $base_url . '/' . $my_path . '/img/preview_sprite.png"></img></div><div class="st_widgetPic"><img class="st_buttonSelectImage" src="' . $base_url . '/' . $my_path . '/img/preview_bg.png"></img></div>',
'#suffix' => '</div>'
);
$form['options']['sharethis_service_option'] = array(
'#description' => t("<b>Add</b> a service by selecting it on the right and clicking the <i>left arrow</i>. <b>Remove</b> it by clicking the <i>right arrow</i>.<br /><b>Change the order</b> of services under \"Selected Services\" by using the <i>up</i> and <i>down</i> arrows."),
'#required' => TRUE,
'#type' => 'textfield',
'#prefix' => '<div>',
'#suffix' => '</div><div id="myPicker"></div><script type="text/javascript">stlib_picker.setupPicker(jQuery("#myPicker"), [' . $service_string_markup . '], backdrop_st.serviceCallback);</script>',
'#title' => t("Choose Your Services."),
'#default_value' => t($service_string),
'#maxlength' => 1024,
);
$form['options']['sharethis_option_extras'] = array(
'#title' => t('Extra services'),
'#description' => t('Select additional services which will be available. These are not officially supported by ShareThis, but are available.'),
'#type' => 'checkboxes',
'#options' => array(
'Google Plus One:plusone' => t('Google Plus One'),
'Facebook Like:fblike' => t('Facebook Like'),
),
'#default_value' => $current_options_array['option_extras'],
);

$form['options']['sharethis_callesi'] = array(
'#type' => 'hidden',
'#default_value' => $current_options_array['sharethis_callesi'],
);

$form['additional_settings'] = array(
'#type' => 'vertical_tabs',
);
$form['context'] = array(
'#type' => 'fieldset',
'#title' => t('Context'),
'#group' => 'additional_settings',
'#description' => t('Configure where the ShareThis widget should appear.'),
);

$form['context']['sharethis_location'] = array(
'#title' => t('Location'),
'#type' => 'radios',
'#options' => array(
'content' => t('Node content'),
'links' => t('Links area'),
),
'#default_value' => config_get('sharethis.settings', 'sharethis_location'),
);

// Add an information section for each location type, each dependent on the
// currently selected location.
foreach (array('links', 'content') as $location_type) {
$form['context'][$location_type]['#type'] = 'container';
$form['context'][$location_type]['#states']['visible'][':input[name="sharethis_location"]'] = array('value' => $location_type);
}

// Add help text for the 'content' location.
$form['context']['content']['help'] = array(
'#markup' => t('When using the Content location, you must place the ShareThis links in the <a href="@url">Manage Display</a> section of each content type.', array('@url' => url('admin/structure/types'))),
'#weight' => 10,
'#prefix' => '<em>',
'#suffix' => '</em>',
);

// Add checkboxes for each view mode of each bundle.
$entity_info = entity_get_info('node');
$modes = array();
foreach ($entity_info['view modes'] as $mode => $mode_info) {
$modes[$mode] = $mode_info['label'];
}
// Get a list of content types and view modes
$view_modes_selected = $current_options_array['view_modes'];
foreach ($entity_info['bundles'] as $bundle => $bundle_info) {
$form['context']['links']['sharethis_' . $bundle . '_options'] = array(
'#title' => t('%label View Modes', array('%label' => $bundle_info['label'])),
'#description' => t('Select which view modes the ShareThis widget should appear on for %label nodes.', array('%label' => $bundle_info['label'])),
'#type' => 'checkboxes',
'#options' => $modes,
'#default_value' => $view_modes_selected[$bundle],
);
}

// Allow the user to choose which content types will have ShareThis added
// when using the 'Content' location.
$content_types = array();
$enabled_content_types = $current_options_array['sharethis_node_types'];
foreach($entity_info['bundles'] as $bundle => $bundle_info) {
$content_types[$bundle] = t($bundle_info['label']);
}
$form['context']['content']['sharethis_node_types'] = array(
'#title' => t('Node Types'),
'#description' => t('Select which node types the ShareThis widget should appear on.'),
'#type' => 'checkboxes',
'#options' => $content_types,
'#default_value' => $enabled_content_types,
);
$form['context']['sharethis_comments'] = array(
'#title' => t('Comments'),
'#type' => 'checkbox',
'#default_value' => config_get('sharethis.settings', 'sharethis_comments'),
'#description' => t('Display ShareThis on comments.'),
'#access' => module_exists('comment'),
);
$form['context']['sharethis_weight'] = array(
'#title' => t('Weight'),
'#description' => t('The weight of the widget determines the location on the page where it will appear.'),
'#required' => FALSE,
'#type' => 'select',
'#options' => backdrop_map_assoc(array(-100, -50, -25, -10, 0, 10, 25, 50, 100)),
'#default_value' => config_get('sharethis.settings', 'sharethis_weight'),
);
$form['advanced'] = array(
'#type' => 'fieldset',
'#title' => t('Advanced'),
'#group' => 'additional_settings',
'#description' => t('The advanced settings can usually be ignored if you have no need for them.'),
);
$form['advanced']['sharethis_publisherID'] = array(
'#title' => t("Insert a publisher key (optional)."),
'#description' => t("When you install the module, we create a random publisher key. You can register the key with ShareThis by contacting customer support. Otherwise, you can go to <a href='http://www.sharethis.com/account'>ShareThis</a> and create an account.<br />Your official publisher key can be found under 'My Account'.<br />It allows you to get detailed analytics about sharing done on your site."),
'#type' => 'textfield',
'#default_value' => $publisher
);
$form['advanced']['sharethis_late_load'] = array(
'#title' => t('Late Load'),
'#description' => t("You can change the order in which ShareThis widget loads on the user's browser. By default the ShareThis widget loader loads as soon as the browser encounters the JavaScript tag; typically in the tag of your page. ShareThis assets are generally loaded from a CDN closest to the user. However, if you wish to change the default setting so that the widget loads after your web-page has completed loading then you simply tick this option."),
'#type' => 'checkbox',
'#default_value' => config_get('sharethis.settings', 'sharethis_late_load'),
);
$form['advanced']['sharethis_twitter_suffix'] = array(
'#title' => t("Twitter Suffix"),
'#description' => t("Optionally append a Twitter handle, or text, so that you get pinged when someone shares an article. Example: <em>via @YourNameHere</em>"),
'#type' => 'textfield',
'#default_value' => config_get('sharethis.settings', 'sharethis_twitter_suffix'),
);
$form['advanced']['sharethis_twitter_handle'] = array(
'#title' => t('Twitter Handle'),
'#description' => t('Twitter handle to use when sharing.'),
'#type' => 'textfield',
'#default_value' => config_get('sharethis.settings', 'sharethis_twitter_handle'),
);
$form['advanced']['sharethis_twitter_recommends'] = array(
'#title' => t('Twitter recommends'),
'#description' => t('Specify a twitter handle to be recommended to the user.'),
'#type' => 'textfield',
'#default_value' => config_get('sharethis.settings', 'sharethis_twitter_recommends'),
);
$form['advanced']['sharethis_option_onhover'] = array(
'#type' => 'checkbox',
'#title' => t('Display ShareThis widget on hover'),
'#description' => t('If disabled, the ShareThis widget will be displayed on click instead of hover.'),
'#default_value' => config_get('sharethis.settings', 'sharethis_option_onhover'),
);
$form['advanced']['sharethis_option_neworzero'] = array(
'#type' => 'checkbox',
'#title' => t('Display count "0" instead of "New"'),
'#description' => t('Display a zero (0) instead of "New" in the count for content not yet shared.'),
'#default_value' => config_get('sharethis.settings', 'sharethis_option_neworzero'),
);
$form['advanced']['sharethis_option_shorten'] = array(
'#type' => 'checkbox',
'#title' => t('Display short URL'),
'#description' => t('Display either the full or the shortened URL.'),
'#default_value' => config_get('sharethis.settings', 'sharethis_option_shorten'),
);
$form['advanced']['sharethis_cns'] = array(
'#title' => t('<b>CopyNShare </b><sup>(<a href="http://support.sharethis.com/customer/portal/articles/517332-share-widget-faqs#copynshare" target="_blank">?</a>)</sup>'),
'#type' => 'checkboxes',
'#prefix' => '<div id="st_cns_settings">',
'#suffix' => '</div><div class="st_cns_container">
<p>CopyNShare is the new ShareThis widget feature that enables you to track the shares that occur when a user copies and pastes your website\'s <u>URL</u> or <u>Content</u>. <br/>
<u>Site URL</u> - ShareThis adds a special #hashtag at the end of your address bar URL to keep track of where your content is being shared on the web.<br/>
<u>Site Content</u> - It enables the pasting of "See more: YourURL#SThashtag" after user copies-and-pastes text. When a user copies text within your site, a "See more: yourURL.com#SThashtag" will appear after the pasted text. <br/>
Please refer the <a href="http://support.sharethis.com/customer/portal/articles/517332-share-widget-faqs#copynshare" target="_blank">CopyNShare FAQ</a> for more details.</p>
</div>',
'#options' => array(
'donotcopy' => t('Measure copy & shares of your site\'s Content'),
'hashaddress' => t('Measure copy & shares of your site\'s URLs'),
),
'#default_value' => $current_options_array['sharethis_cns'],
);
$form['advanced']['sharethis_widget_option'] = array(
'#options' => array(
'st_multi' => t("Multi-Post Widget"),
'st_direct' => t("Direct-Post Widget")
),
'#default_value' => $widget_type,
'#type' => 'radios',
'#required' => TRUE,
'#title' => t("Choose a widget type:"),
'#prefix' => '<div class="st_widgetContain"><div class="st_widgetPic ' . $widget_markup . '"><div class="st_widgetPicContain"><img src="' . $base_url . '/' . $my_path . '/img/widget.png"></img></div></div>',
'#suffix' => '</div>'
);

$form['#submit'][] = 'sharethis_configuration_form_submit';

$form['actions']['#type'] = 'actions';
$form['actions']['submit'] = array(
'#type' => 'submit',
'#value' => t('Save configuration'),
);

return $form;
}

/**
* Form validation handler for sharethis_configuration_form().
*/
function sharethis_configuration_form_validate($form, &$form_state) {
// Sanitize the publisher ID option. Since it's a text field, remove anything that resembles code
$form_state['values']['sharethis_service_option'] = filter_xss($form_state['values']['sharethis_service_option'], array());

//Additional filters for the option extras input
$form_state['values']['sharethis_option_extras'] = (isset($form_state['values']['sharethis_option_extras'])) ? $form_state['values']['sharethis_option_extras'] : array();

// Sanitize the publisher ID option. Since it's a text field, remove anything that resembles code
$form_state['values']['sharethis_publisherID'] = filter_xss($form_state['values']['sharethis_publisherID'], array());

if ($form_state['values']['sharethis_callesi'] == 1) {
unset($form_state['values']['sharethis_cns']);
}
unset($form_state['values']['sharethis_callesi']);

// Ensure default value for twitter suffix
$form_state['values']['sharethis_twitter_suffix'] = (isset($form_state['values']['sharethis_twitter_suffix'])) ? $form_state['values']['sharethis_twitter_suffix'] : '';

// Ensure default value for twitter handle
$form_state['values']['sharethis_twitter_handle'] = (isset($form_state['values']['sharethis_twitter_handle'])) ? $form_state['values']['sharethis_twitter_handle'] : '';

// Ensure default value for twitter recommends
$form_state['values']['sharethis_twitter_recommends'] = (isset($form_state['values']['sharethis_twitter_recommends'])) ? $form_state['values']['sharethis_twitter_recommends'] : '';
}

/**
* Form submission handler for sharethis_configuration_form().
*/
function sharethis_configuration_form_submit($form, &$form_state) {
// If the location is changing to/from 'content', clear the Field Info cache.
$current_location = config_get('sharethis.settings', 'sharethis_location');
$new_location = $form_state['values']['sharethis_location'];
if (($current_location == 'content' || $new_location == 'content') && $current_location != $new_location) {
field_info_cache_clear();
}

$config = config('sharethis.settings');
foreach ($form_state['values'] as $key => $value) {
$config->set($key, $value);
}
$config->save();

backdrop_set_message(t('The configuration options have been saved.'));
}
5 changes: 3 additions & 2 deletions sharethis.info
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
type = module
name = ShareThis
description = Add the <a href="http://www.sharethis.com/">ShareThis</a> widget to nodes on your site.
backdrop = 1.x
version = 1.x-1.2.1
package = Social
configure = admin/config/services/sharethis
type = module
; Views handlers

; Views handlers - @todo
files[] = views/sharethis_handler_field_link.inc
Loading