diff --git a/addthis.module b/addthis.module index a15e40842acaacadeb4093baa329704d084d72ca..4271d2372d63080fec180dc6f7d4549226c6a90a 100644 --- a/addthis.module +++ b/addthis.module @@ -156,6 +156,7 @@ function addthis_field_formatter_settings_summary($field, $instance, $view_mode) * Implements hook_field_formatter_view(). */ function addthis_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) { + AddThis::addConfigurationOptionsJs(); $element = array(); foreach ($items as $delta => $item) { @@ -163,7 +164,6 @@ function addthis_field_formatter_view($entity_type, $entity, $field, $instance, $markup = AddThis::getWidgetMarkup($widgetType, $entity); $element[$delta] = array('#markup' => $markup); } - return $element; } diff --git a/addthis.test b/addthis.test index 88225b6f0898e67a2246a150a85779e4dfc97e45..03d873b7315b447ff90a4c1e051416d7d882b7c6 100644 --- a/addthis.test +++ b/addthis.test @@ -126,10 +126,24 @@ class AddThisFunctionalityTestCase extends DrupalWebTestCase { $edit = array(); $profileId = TestHelper::generateRandomLowercaseString(); $edit[AddThis::PROFILE_ID_KEY] = $profileId; + $serviceName = '2linkme'; + $edit["addthis_enabled_services[$serviceName]"] = $serviceName; $this->drupalPost('admin/config/system/addthis', $edit, t('Save configuration')); - $this->assertText(t('The configuration options have been saved.')); + $this->assertText(t('The configuration options have been saved.'), 'AddThis system settings should be able to be saved.'); + + $this->addThisProfileIdShouldBeAbleToBeSaved($profileId); + + $this->addThisEnabledServicesShouldBeAbleToBeSaved($serviceName); + } + + private function addThisProfileIdShouldBeAbleToBeSaved($profileId) { + $this->assertFieldByName(AddThis::PROFILE_ID_KEY, $profileId, 'AddThis profile ID should be able to be saved.'); + } + + private function addThisEnabledServicesShouldBeAbleToBeSaved($serviceName) { + $this->assertFieldChecked('edit-addthis-enabled-services-' . $serviceName, 'AddThis enabled services should be able to be saved.'); } private function createAndLoginUser() { diff --git a/classes/AddThis.php b/classes/AddThis.php index b3c142b7b3cd4504e4cc5ca974055945816f2451..d9fecc9240bb0aa61741aaa6b47fed28cc3ed7e3 100644 --- a/classes/AddThis.php +++ b/classes/AddThis.php @@ -120,6 +120,27 @@ class AddThis { drupal_add_css(self::getAdminCssFilePath(), 'file'); } + public static function addConfigurationOptionsJs() { + $enabledServices = self::getServiceNamesAsCommaSeparatedString(); + drupal_add_js("var addthis_config = {services_compact: '" + . $enabledServices + . "more', services_expanded: '" + . $enabledServices + . "more'}", 'inline' + ); + } + + private static function getServiceNamesAsCommaSeparatedString() { + $enabledServiceNames = array_values(self::getEnabledServices()); + $enabledServicesAsCommaSeparatedString = ''; + foreach ($enabledServiceNames as $enabledServiceName) { + if ($enabledServiceName != '0') { + $enabledServicesAsCommaSeparatedString .= $enabledServiceName . ','; + } + } + return $enabledServicesAsCommaSeparatedString; + } + private static function getAdminCssFilePath() { return drupal_get_path('module', self::MODULE_NAME) . '/' . self::ADMIN_CSS_FILE; } @@ -131,8 +152,8 @@ class AddThis { $services = $json->decode(self::SERVICES_JSON_URL); if ($services != NULL) { foreach ($services['data'] AS $service) { - $serviceCode = $service['code']; - $serviceName = $service['name']; + $serviceCode = check_plain($service['code']); + $serviceName = check_plain($service['name']); $rows[$serviceCode] = ' ' . $serviceName; } } diff --git a/classes/MarkupGenerator.php b/classes/MarkupGenerator.php index 3ff7e5a1b7110a4a930c89ce00036a08ae3ca0be..084ce32701c100ee1ecf8dcbd6b1efc9fbe392ad 100644 --- a/classes/MarkupGenerator.php +++ b/classes/MarkupGenerator.php @@ -9,6 +9,6 @@ class MarkupGenerator { public static function generateAttribute($name, $value) { - return $name != NULL && $value != NULL ? $name . '="' . $value . '"' : ''; + return $name != NULL && $value != NULL ? check_plain($name) . '="' . $value . '"' : ''; } }