diff --git a/css/betternavigator.css b/css/betternavigator.css index c6ee408..9fdc4dc 100644 --- a/css/betternavigator.css +++ b/css/betternavigator.css @@ -26,6 +26,7 @@ span[class^='bn-icon'], span[class*=' bn-icon'] { display: inline-block; } #BetterNavigator { position: fixed; top: 0; right: 0; z-index: 99999; max-height: 100%; overflow: auto; font-family: Helvetica, Arial, sans-serif; font-size: 12px; line-height: 16px; text-align: left; } #BetterNavigator a { text-decoration: none; } +#BetterNavigator form { display: none; } #BetterNavigator.collapsed { box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.5); -moz-transform-origin: right top; -ms-transform-origin: right top; -webkit-transform-origin: right top; transform-origin: right top; -moz-transform: rotate(90deg) translate(100%, 0); -ms-transform: rotate(90deg) translate(100%, 0); -webkit-transform: rotate(90deg) translate(100%, 0); transform: rotate(90deg) translate(100%, 0); border-width: 0 1px 1px 0; } #BetterNavigator.collapsed #BetterNavigatorStatus { border-width: 0 1px 1px 0; } #BetterNavigator.collapsed #BetterNavigatorStatus .bn-icon-close { display: none; } diff --git a/javascript/betternavigator.js b/javascript/betternavigator.js index e821846..8bf533f 100755 --- a/javascript/betternavigator.js +++ b/javascript/betternavigator.js @@ -1,4 +1,4 @@ -//For reading cookies +// For reading cookies function getCookie(cname) { var name = cname + "="; var ca = document.cookie.split(';'); @@ -15,21 +15,29 @@ function getCookie(cname) { } function initialiseBetterNavigator() { - //Dom elements + // Dom elements var BetterNavigator = document.getElementById("BetterNavigator"); var BetterNavigatorStatus = document.getElementById("BetterNavigatorStatus"); + var BetterNavigatorLogoutLink = document.getElementById("BetterNavigatorLogoutLink"); + var BetterNavigatorLogoutForm = document.getElementById("LogoutForm_BetterNavigatorLogoutForm"); - //Toggle visibility of menu by clicking status + // Toggle visibility of menu by clicking status BetterNavigatorStatus.onclick = function () { BetterNavigator.className = BetterNavigator.className === 'collapsed' ? 'open' : 'collapsed'; //Set cookie to remember state document.cookie = "BetterNavigator=" + BetterNavigator.className + ";path=/"; }; - //Restore menu state + // Restore menu state if (getCookie('BetterNavigator') === 'open') { BetterNavigator.className = 'open'; } + + // Upgrade logout link to directly log users out instead of redirecting to logout form + BetterNavigatorLogoutLink.onclick = function (e) { + e.preventDefault(); + BetterNavigatorLogoutForm.submit(); + }; } if (document.addEventListener && document.readyState === 'loading') { diff --git a/scss/betternavigator.scss b/scss/betternavigator.scss index a0a5a70..49524f2 100644 --- a/scss/betternavigator.scss +++ b/scss/betternavigator.scss @@ -27,6 +27,10 @@ span[class^='bn-icon'],span[class*=' bn-icon']{ text-decoration: none; } + form { + display:none; + } + //Toggle states &.collapsed { @@ -164,7 +168,7 @@ $archiveColor: #6f6f6f; } } -//Some hlep for debugging info +//Some help for debugging info body > p.message { text-align: left; background: #fff; diff --git a/src/Extension/BetterNavigatorExtension.php b/src/Extension/BetterNavigatorExtension.php index 20eb36d..55056d6 100644 --- a/src/Extension/BetterNavigatorExtension.php +++ b/src/Extension/BetterNavigatorExtension.php @@ -7,6 +7,8 @@ use SilverStripe\Security\Permission; use SilverStripe\CMS\Controllers\SilverStripeNavigator; use SilverStripe\Control\Director; use SilverStripe\Security\Member; +use SilverStripe\Security\Security; +use SilverStripe\Security\LogoutForm; use SilverStripe\Core\Config\Config; use SilverStripe\Control\Controller; use SilverStripe\Versioned\Versioned; @@ -66,8 +68,9 @@ class BetterNavigatorExtension extends DataExtension { 'Member' => $member, 'Stage' => Versioned::get_stage(), 'Viewing' => $viewing, // What we're viewing doesn't necessarily align with the active Stage - 'LoginLink' => Controller::join_links(Director::absoluteBaseURL(), Config::inst()->get('Security', 'login_url'), $backURL), - 'LogoutLink' => Controller::join_links(Director::absoluteBaseURL() . 'Security/logout', $backURL), + 'LoginLink' => Controller::join_links(Director::absoluteBaseURL(), Security::config()->login_url, $backURL), + 'LogoutLink' => Controller::join_links(Director::absoluteBaseURL() . Security::config()->logout_url, $backURL), + 'LogoutForm' => LogoutForm::create($this->owner)->setName('BetterNavigatorLogoutForm'), 'EditLink' => $editLink, 'Mode' => Director::get_environment_type(), 'IsDeveloper' => $isDeveloper diff --git a/templates/BetterNavigator/BetterNavigator.ss b/templates/BetterNavigator/BetterNavigator.ss index 9280313..fae5d4d 100644 --- a/templates/BetterNavigator/BetterNavigator.ss +++ b/templates/BetterNavigator/BetterNavigator.ss @@ -37,7 +37,8 @@ <% end_if %> <% if $Member %> - Log out<% if $Member.FirstName %> ($Member.FirstName)<% end_if %> + $LogoutForm + Log out<% if $Member.FirstName %> ($Member.FirstName)<% end_if %> <% else %> Log in <% end_if %>