Index: classes/rt/ojs/JournalRT.inc.php =================================================================== RCS file: /cvs/ojs2/classes/rt/ojs/JournalRT.inc.php,v --- classes/rt/ojs/JournalRT.inc.php 8 Apr 2009 19:54:22 -0000 1.11 +++ classes/rt/ojs/JournalRT.inc.php 14 May 2009 21:00:18 -0000 @@ -27,6 +27,17 @@ var $journalId; var $enabled; + var $sharingEnabled; + var $sharingUserName; + var $sharingButtonStyle; + var $sharingDropDownMenu; + var $sharingBrand; + var $sharingDropDown; + var $sharingLanguage; + var $sharingLogo; + var $sharingLogoBackground; + var $sharingLogoColor; + function JournalRT($journalId) { $this->setJournalId($journalId); } @@ -40,6 +51,77 @@ function setJournalId($journalId) { $this->journalId = $journalId; } + + function getSharingEnabled() { + return $this->sharingEnabled; + } + function getSharingUserName() { + return $this->sharingUserName; + } + function getSharingButtonStyle() { + return $this->sharingButtonStyle; + } + function getSharingDropDownMenu() { + return $this->sharingDropDownMenu; + } + function getSharingBrand() { + return $this->sharingBrand; + } + function getSharingDropDown() { + return $this->sharingDropDown; + } + function getSharingLanguage() { + return $this->sharingLanguage; + } + function getSharingLogo() { + return $this->sharingLogo; + } + function getSharingLogoBackground() { + return $this->sharingLogoBackground; + } + function getSharingLogoColor() { + return $this->sharingLogoColor; + } + + function setSharingEnabled($sharingEnabled) { + $this->sharingEnabled = $sharingEnabled; + } + + function setSharingUserName($sharingUserName) { + $this->sharingUserName = $sharingUserName; + } + + function setSharingButtonStyle($sharingButtonStyle) { + $this->sharingButtonStyle = $sharingButtonStyle; + } + + function setSharingDropDownMenu($sharingDropDownMenu) { + $this->sharingDropDownMenu = $sharingDropDownMenu; + } + + function setSharingBrand($sharingBrand) { + $this->sharingBrand = $sharingBrand; + } + + function setSharingDropDown($sharingDropDown) { + $this->sharingDropDown = $sharingDropDown; + } + + function setSharingLanguage($sharingLanguage) { + $this->sharingLanguage = $sharingLanguage; + } + + function setSharingLogo($sharingLogo) { + $this->sharingLogo = $sharingLogo; + } + + function setSharingLogoBackground($sharingLogoBackground) { + $this->sharingLogoBackground = $sharingLogoBackground; + } + + function setSharingLogoColor($sharingLogoColor) { + $this->sharingLogoColor = $sharingLogoColor; + } } ?> Index: classes/rt/ojs/RTDAO.inc.php =================================================================== RCS file: /cvs/ojs2/classes/rt/ojs/RTDAO.inc.php,v --- classes/rt/ojs/RTDAO.inc.php 8 Apr 2009 19:54:22 -0000 1.41 +++ classes/rt/ojs/RTDAO.inc.php 14 May 2009 21:00:18 -0000 @@ -42,6 +42,18 @@ $rt->setEmailAuthor($journal->getSetting('rtEmailAuthor')?true:false); $rt->setEmailOthers($journal->getSetting('rtEmailOthers')?true:false); $rt->setFindingReferences($journal->getSetting('rtFindingReferences')?true:false); + + $rt->setSharingEnabled($journal->getSetting("rtSharingEnabled") ? $journal->getSetting("rtSharingEnabled") : ""); + $rt->setSharingUserName($journal->getSetting("rtSharingUserName") ? $journal->getSetting("rtSharingUserName") : ""); + $rt->setSharingButtonStyle($journal->getSetting("rtSharingButtonStyle") ? $journal->getSetting("rtSharingButtonStyle") : ""); + $rt->setSharingDropDownMenu($journal->getSetting("rtSharingDropDownMenu") ? $journal->getSetting("rtSharingDropDownMenu") : ""); + $rt->setSharingBrand($journal->getSetting("rtSharingBrand") ? $journal->getSetting("rtSharingBrand") : ""); + $rt->setSharingDropDown($journal->getSetting("rtSharingDropDown") ? $journal->getSetting("rtSharingDropDown") : ""); + $rt->setSharingLanguage($journal->getSetting("rtSharingLanguage") ? $journal->getSetting("rtSharingLanguage") : ""); + $rt->setSharingLogo($journal->getSetting("rtSharingLogo") ? $journal->getSetting("rtSharingLogo") : ""); + $rt->setSharingLogoBackground($journal->getSetting("rtSharingLogoBackground") ? $journal->getSetting("rtSharingLogoBackground") : ""); + $rt->setSharingLogoColor($journal->getSetting("rtSharingLogoColor") ? $journal->getSetting("rtSharingLogoColor") : ""); + return $rt; } @@ -61,6 +73,18 @@ $journal->updateSetting('rtEmailAuthor', $rt->getEmailAuthor(), 'bool'); $journal->updateSetting('rtEmailOthers', $rt->getEmailOthers(), 'bool'); $journal->updateSetting('rtFindingReferences', $rt->getFindingReferences()); + + $journal->updateSetting("rtSharingEnabled", $rt->getSharingEnabled()); + $journal->updateSetting("rtSharingUserName", $rt->getSharingUserName()); + $journal->updateSetting("rtSharingButtonStyle", $rt->getSharingButtonStyle()); + $journal->updateSetting("rtSharingDropDownMenu", $rt->getSharingDropDownMenu()); + $journal->updateSetting("rtSharingBrand", $rt->getSharingBrand()); + $journal->updateSetting("rtSharingDropDown", $rt->getSharingDropDown()); + $journal->updateSetting("rtSharingLanguage", $rt->getSharingLanguage()); + $journal->updateSetting("rtSharingLogo", $rt->getSharingLogo()); + $journal->updateSetting("rtSharingLogoBackground", $rt->getSharingLogoBackground()); + $journal->updateSetting("rtSharingLogoColor", $rt->getSharingLogoColor()); + return true; } Index: classes/rt/ojs/SharingRT.inc.php =================================================================== RCS file: classes/rt/ojs/SharingRT.inc.php --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ classes/rt/ojs/SharingRT.inc.php 14 May 2009 21:00:18 -0000 @@ -0,0 +1,127 @@ + 'Chinese', + 'da' => 'Danish', + 'nl' => 'Dutch', + 'en' => 'English', + 'fi' => 'Finnish', + 'fr' => 'French', + 'de' => 'German', + 'he' => 'Hebrew', + 'it' => 'Italian', + 'ja' => 'Japanese', + 'ko' => 'Korean', + 'no' => 'Norwegian', + 'pl' => 'Polish', + 'pt' => 'Portugese', + 'ru' => 'Russian', + 'es' => 'Spanish', + 'sv' => 'Swedish' + ); + + static $btnStyles = array ( + 'share' => array ( + 'img' => 'lg-share-%lang%.gif', + 'w' => 125, + 'h' => 16 + ), + 'bookmark' => array ( + 'img' => 'lg-bookmark-en.gif', + 'w' => 125, + 'h' => 16 + ), + 'addthis' => array ( + 'img' => 'lg-addthis-en.gif', + 'w' => 125, + 'h' => 16 + ), + 'share-small' => array ( + 'img' => 'sm-share-%lang%.gif', + 'w' => 83, + 'h' => 16 + ), + 'bookmark-small' => array ( + 'img' => 'sm-bookmark-en.gif', + 'w' => 83, + 'h' => 16 + ), + 'plus' => array ( + 'img' => 'sm-plus.gif', + 'w' => 16, + 'h' => 16 + ) + /* Add your own style here, like this: + , 'custom' => array('img'=>'http://example.com/button.gif', 'w'=>16, 'h'=>16) */ + + ); + + /** + * Generate the information for the HTML tag for the sharing button + * @return array(url, width, height) + */ + function sharingButtonImage($journalRt) { + $btnStyle = $journalRt->getSharingButtonStyle(); + if ($journalRt->getSharingLanguage() != 'en') { + if ($btnStyle == 'bookmark' || $btnStyle == 'adthis' || $btnStyle == 'bookmark-sm') { + $btnStyle = 'share'; + } + } + if (!isset (self :: $btnStyles[$btnStyle])) { + $btnStyle = 'share'; + } + $btnRecord = self :: $btnStyles[$btnStyle]; + $btnUrl = (strpos(trim($btnRecord['img']), 'http://') !== 0 ? "http://s7.addthis.com/static/btn/" : "") . $btnRecord['img']; + $btnUrl = str_replace('%lang%', SharingRT :: sharingLocale($journalRt->getSharingLanguage()), $btnUrl); + $btnWidth = $btnRecord['w']; + $btnHeight = $btnRecord['h']; + $btnHeight = Locale :: getLocale(); + return array ( + $btnUrl, + $btnWidth, + $btnHeight + ); + } + + /** + * determine the correct language for the sharing button. Attempt to use the user's local + * setting if it is one that AddThis supports. If not, use the language the administrator + * has chosen. + * + * @return string + * @param $default string + */ + function sharingLocale($default) { + //getLocal() returns a string like 'en_US' + $locale = Locale :: getLocale(); + $lang = substr($locale, 0, 2); + if (isset (self :: $languages[$lang])) { + return $lang; + } + return $default; + } +} +?> Index: pages/article/ArticleHandler.inc.php =================================================================== RCS file: /cvs/ojs2/pages/article/ArticleHandler.inc.php,v --- pages/article/ArticleHandler.inc.php 20 Apr 2009 21:07:44 -0000 1.95 +++ pages/article/ArticleHandler.inc.php 14 May 2009 21:00:19 -0000 @@ -19,6 +19,7 @@ import('rt.ojs.RTDAO'); import('rt.ojs.JournalRT'); import('handler.Handler'); +import('rt.ojs.SharingRT'); class ArticleHandler extends Handler { /** journal associated with the request **/ @@ -279,6 +280,29 @@ $templateMgr->assign('galleyId', $galleyId); $templateMgr->assign('defineTermsContextId', isset($defineTermsContextId)?$defineTermsContextId:null); $templateMgr->assign('comments', isset($comments)?$comments:null); + + $templateMgr->assign('sharingEnabled', $journalRt->getSharingEnabled()); + + if($journalRt->getSharingEnabled()) { + $templateMgr->assign('sharingRequestURL', Request::getRequestURL()); + $templateMgr->assign('sharingArticleTitle', $article->getArticleTitle()); + $templateMgr->assign_by_ref('sharingUserName', $journalRt->getSharingUserName()); + $templateMgr->assign_by_ref('sharingButtonStyle', $journalRt->getSharingButtonStyle()); + $templateMgr->assign_by_ref('sharingDropDownMenu', $journalRt->getSharingDropDownMenu()); + $templateMgr->assign_by_ref('sharingBrand', $journalRt->getSharingBrand()); + $templateMgr->assign_by_ref('sharingDropDown', $journalRt->getSharingDropDown()); + $templateMgr->assign_by_ref('sharingLanguage', $journalRt->getSharingLanguage()); + $templateMgr->assign_by_ref('sharingLogo', $journalRt->getSharingLogo()); + $templateMgr->assign_by_ref('sharingLogoBackground', $journalRt->getSharingLogoBackground()); + $templateMgr->assign_by_ref('sharingLogoColor', $journalRt->getSharingLogoColor()); + list($btnUrl, $btnWidth, $btnHeight) = SharingRT::sharingButtonImage($journalRt); + $templateMgr->assign('sharingButtonUrl', $btnUrl); + $templateMgr->assign('sharingButtonWidth', $btnWidth); + $templateMgr->assign('sharingButtonHeight', $btnHeight); + } + $templateMgr->display('article/article.tpl'); + + $templateMgr->display('article/article.tpl'); } Index: pages/rtadmin/RTAdminHandler.inc.php =================================================================== RCS file: /cvs/ojs2/pages/rtadmin/RTAdminHandler.inc.php,v --- pages/rtadmin/RTAdminHandler.inc.php 20 Apr 2009 21:07:44 -0000 1.44 +++ pages/rtadmin/RTAdminHandler.inc.php 14 May 2009 21:00:19 -0000 @@ -17,6 +17,7 @@ import('rt.ojs.JournalRTAdmin'); import('handler.Handler'); +import('rtadmin.RTSharingHandler'); class RTAdminHandler extends Handler { /** @@ -80,6 +81,16 @@ } } + function configureSharing() { + import('pages.rtadmin.RTSharingHandler'); + RTSharingHandler::settings(); + } + + function saveConfigureSharing() { + import('pages.rtadmin.RTSharingHandler'); + RTSharingHandler::saveSettings(); + } + function validateUrls($args) { $this->validate(); Index: pages/rtadmin/RTSharingHandler.inc.php =================================================================== RCS file: pages/rtadmin/RTSharingHandler.inc.php --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ pages/rtadmin/RTSharingHandler.inc.php 14 May 2009 21:00:19 -0000 @@ -0,0 +1,79 @@ +getJournalRTByJournal($journal); + + $templateMgr->assign("sharingEnabled", $rt->getSharingEnabled()); + $templateMgr->assign("sharingUserName", $rt->getSharingUserName()); + $templateMgr->assign("sharingButtonStyle", $rt->getSharingButtonStyle()); + $templateMgr->assign_by_ref("sharingButtonStyleOptions", array_keys(SharingRT::$btnStyles)); + $templateMgr->assign("sharingDropDownMenu", $rt->getSharingDropDownMenu()); + $templateMgr->assign("sharingBrand", $rt->getSharingBrand()); + $templateMgr->assign("sharingDropDown", $rt->getSharingDropDown()); + $templateMgr->assign("sharingLanguage", $rt->getSharingLanguage()); + $templateMgr->assign_by_ref("sharingLanguageOptions", SharingRT::$languages); + $templateMgr->assign("sharingLogo", $rt->getSharingLogo()); + $templateMgr->assign("sharingLogoBackground", $rt->getSharingLogoBackground()); + $templateMgr->assign("sharingLogoColor", $rt->getSharingLogoColor()); + + $templateMgr->assign('helpTopicId', 'journal.managementPages.readingTools.addthisSettings'); + $templateMgr->display('rtadmin/addthis.tpl'); + } else { + Request::redirect(null, Request::getRequestedPage()); + } + } + + function saveSettings() { + RTAdminHandler::validate(); + + $journal = Request::getJournal(); + + if ($journal) { + $rtDao = &DAORegistry::getDAO('RTDAO'); + $rt = $rtDao->getJournalRTByJournal($journal); + + $rt->setSharingEnabled(Request::getUserVar("sharingEnabled")); + $rt->setSharingUserName(Request::getUserVar("sharingUserName")); + $rt->setSharingButtonStyle(Request::getUserVar("sharingButtonStyle")); + $rt->setSharingDropDownMenu(Request::getUserVar("sharingDropDownMenu")); + $rt->setSharingBrand(Request::getUserVar("sharingBrand")); + $rt->setSharingDropDown(Request::getUserVar("sharingDropDown")); + $rt->setSharingLanguage(Request::getUserVar("sharingLanguage")); + $rt->setSharingLogo(Request::getUserVar("sharingLogo")); + $rt->setSharingLogoBackground(Request::getUserVar("sharingLogoBackground")); + $rt->setSharingLogoColor(Request::getUserVar("sharingLogoColor")); + + $rtDao->updateJournalRT($rt); + } + Request::redirect(null, Request::getRequestedPage()); + } +} + +?> Index: templates/article/footer.tpl =================================================================== RCS file: /cvs/ojs2/templates/article/footer.tpl,v --- templates/article/footer.tpl 29 Apr 2009 15:43:58 -0000 1.3 +++ templates/article/footer.tpl 14 May 2009 21:00:20 -0000 @@ -8,6 +8,35 @@ * * $Id: footer.tpl,v 1.3 2009/04/29 15:43:58 mj Exp $ *} + + +{if $sharingEnabled} +{if isset($sharingDropDownMenu)} + +{if isset($sharingUserName)} + +{/if}{* sharingUserName *} + +
+ + Bookmark and Share + + +
+{else}{* sharingUserName *} + + Bookmark and Share + +{/if}{* sharingDropdown *} +{/if}{* sharingEnabled *} + + {if $currentJournal && $currentJournal->getSetting('includeCreativeCommons')}

Creative Commons License @@ -15,6 +44,7 @@ This work is licensed under a Creative Commons Attribution 3.0 License. {/if} + {if $pageFooter}

{$pageFooter} @@ -26,6 +56,7 @@ + {if $defineTermsContextId}