setJson(new Json()); $addThis->setMarkupGenerator(new MarkupGenerator()); self::$instance = $addThis; } return self::$instance; } public function setJson(Json $json) { $this->json = $json; } public function setMarkupGenerator(MarkupGenerator $markupGenerator) { $this->markupGenerator = $markupGenerator; } public function getWidgetTypes() { return array( self::WIDGET_TYPE_DISABLED => t('Disabled'), self::WIDGET_TYPE_COMPACT_BUTTON => t('Compact button'), self::WIDGET_TYPE_LARGE_BUTTON => t('Large button'), self::WIDGET_TYPE_TOOLBOX => t('Toolbox'), self::WIDGET_TYPE_SHARECOUNT => t('Sharecount'), ); } public function getBlockWidgetType() { return variable_get(self::BLOCK_WIDGET_TYPE_KEY, self::WIDGET_TYPE_COMPACT_BUTTON); } public function getWidgetMarkup($widgetType = '', $entity = NULL) { $markup = ''; if (self::WIDGET_TYPE_LARGE_BUTTON == $widgetType) { $markup = $this->getLargeButtonWidgetMarkup($entity); } elseif (self::WIDGET_TYPE_COMPACT_BUTTON == $widgetType) { $markup = $this->getCompactButtonWidgetMarkup($entity); } elseif (self::WIDGET_TYPE_TOOLBOX == $widgetType) { $markup = $this->getToolboxWidgetMarkup($entity); } elseif (self::WIDGET_TYPE_SHARECOUNT == $widgetType) { $markup = $this->getSharecountWidgetMarkup($entity); } return $markup; } public function getProfileId() { return check_plain(variable_get(AddThis::PROFILE_ID_KEY)); } public function getServicesCssUrl() { return check_url(variable_get(AddThis::SERVICES_CSS_URL_KEY, self::DEFAULT_SERVICES_CSS_URL)); } public function getServicesJsonUrl() { return check_url(variable_get(AddThis::SERVICES_JSON_URL_KEY, self::DEFAULT_SERVICES_JSON_URL)); } public function getServices() { $rows = array(); $services = $this->json->decode($this->getServicesJsonUrl()); if ($services != NULL) { foreach ($services['data'] AS $service) { $serviceCode = check_plain($service['code']); $serviceName = check_plain($service['name']); $rows[$serviceCode] = ' ' . $serviceName; } } return $rows; } public function getEnabledServices() { return variable_get(self::ENABLED_SERVICES_KEY, array()); } public function addStylesheets() { drupal_add_css($this->getServicesCssUrl(), 'external'); drupal_add_css($this->getAdminCssFilePath(), 'file'); } public function addConfigurationOptionsJs() { if ($this->isCustomConfigurationCodeEnabled()) { $javascript = $this->getCustomConfigurationCode(); } else { $enabledServices = $this->getServiceNamesAsCommaSeparatedString(); $javascript = "var addthis_config = {services_compact: '" . $enabledServices . "more'" . $this->getUiHeaderColorConfigurationOptions() . '}'; } drupal_add_js($javascript, 'inline'); } public function areLargeIconsEnabled() { return variable_get(self::LARGE_ICONS_ENABLED_KEY, TRUE); } public function getUiHeaderColor() { return check_plain(variable_get(self::UI_HEADER_COLOR_KEY)); } public function getUiHeaderBackgroundColor() { return check_plain(variable_get(self::UI_HEADER_BACKGROUND_COLOR_KEY)); } public function getCustomConfigurationCode() { return variable_get(self::CUSTOM_CONFIGURATION_CODE_KEY, self::DEFAULT_CUSTOM_CONFIGURATION_CODE); } public function isCustomConfigurationCodeEnabled() { return variable_get(self::CUSTOM_CONFIGURATION_CODE_ENABLED_KEY, FALSE); } public function getBaseWidgetJsUrl() { return check_url(variable_get(self::WIDGET_JS_URL_KEY, self::DEFAULT_WIDGET_JS_URL)); } public function getBaseBookmarkUrl() { return check_url(variable_get(self::BOOKMARK_URL_KEY, self::DEFAULT_BOOKMARK_URL)); } public function getNumberOfPreferredServices() { return variable_get(self::NUMBER_OF_PREFERRED_SERVICES_KEY, self::DEFAULT_NUMBER_OF_PREFERRED_SERVICES); } private function getLargeButtonWidgetMarkup($entity) { return 'getAddThisAttributesMarkup($entity) . $this->markupGenerator->generateAttribute('href', self::getFullBookmarkUrl()) . '>' . self::getWidgetScriptElement(); } private function getCompactButtonWidgetMarkup($entity) { return 'markupGenerator->generateAttribute('href', $this->getFullBookmarkUrl()) . '>' . $this->getWidgetScriptElement(); } private function getToolboxWidgetMarkup($entity) { $markup = '