Skip to content

Commit

Permalink
NEW Show CWP version underneath SilverStripe version in CMS help menu
Browse files Browse the repository at this point in the history
  • Loading branch information
robbieaverill committed Nov 9, 2018
1 parent ea0cae8 commit 0a472cc
Show file tree
Hide file tree
Showing 6 changed files with 148 additions and 2 deletions.
4 changes: 4 additions & 0 deletions _config/extensions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,7 @@ SilverStripe\Security\Group:
HtmlEditorField_Toolbar:
extensions:
- CWP\Core\Extension\CustomHtmlEditorFieldToolbar

SilverStripe\Admin\LeftAndMain:
extensions:
- CWP\Core\Extension\CWPVersionExtension
2 changes: 0 additions & 2 deletions _config/version.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,4 @@ After:
---
SilverStripe\Core\Manifest\VersionProvider:
modules:
silverstripe/framework: ''
silverstripe/cms: ''
cwp/cwp-core: 'CWP'
13 changes: 13 additions & 0 deletions css/custom.css
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,16 @@
.alignExtraLabel label{
line-height:2em;
}

/* See vendor/silverstripe/admin/client/src/components/Menu/Menu.scss */
.cms-help__logo {
min-width: 26px;
}

.cms-help__toggle-title {
line-height: 12px;
}

.cms-help__toggle-cwp-title {
font-size: 9px;
}
29 changes: 29 additions & 0 deletions src/Extension/CWPVersionExtension.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<?php

namespace CWP\Core\Extension;

use SilverStripe\Core\Extension;
use SilverStripe\Core\Manifest\VersionProvider;

class CWPVersionExtension extends Extension
{
/**
* Gets the version of cwp/cwp-core and returns the major.minor version from it
*
* @return string
*/
public function getCWPVersionNumber()
{
/** @var VersionProvider $versionProvider */
$versionProvider = $this->owner->getVersionProvider();

$modules = $versionProvider->getModuleVersionFromComposer(['cwp/cwp-core']);
if (empty($modules)) {
return '';
}

// Example: "2.2.x-dev"
$cwpCore = $modules['cwp/cwp-core'];
return (string) substr($cwpCore, 0, strpos($cwpCore, '.', 2));
}
}
37 changes: 37 additions & 0 deletions templates/SilverStripe/Admin/Includes/LeftAndMain_MenuToggle.ss
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<%-- See silverstripe/admin:templates/SilverStripe/Admin/Includes/LeftAndMain_MenuToggle.ss --%>
<div class="cms-help__toggle">
<button class="cms-help__menu" type="button" title="<%t SilverStripe\Admin\LeftAndMain.HelpMenu "Help menu" %>" aria-label="<%t SilverStripe\Admin\LeftAndMain.HelpMenu "Help menu" %>" aria-expanded="false">
<span class="cms-help__logo font-icon-silverstripe"></span>
<span class="cms-help__toggle-title">
$ApplicationName
<%-- Modification from core template --%>
<span class="cms-help__toggle-cwp-title text-sm">
CWP $CWPVersionNumber
</span>
<%-- End modification from core template --%>
</span>
<span class="cms-help__badge badge badge-info">
<% if $CMSVersionNumber %>
<span class="cms-sitename__version" title="$ApplicationName (<%t SilverStripe\Admin\LeftAndMain.Version "Version" %> - $CMSVersion)">$CMSVersionNumber.LimitCharacters(3, '')</span>
<% end_if %>
</span>
<span class="cms-help__caret font-icon-caret-down-two"></span>
</button>
<% if $HelpLinks %>
<div class="cms-help__links">
<% loop $HelpLinks %>
<% if $URL %>
<a class="cms-help__link" href="$URL" target="_blank" rel="noopener noreferrer">$Title</a>
<% end_if %>
<% end_loop %>
</div>
<% end_if %>
</div>

<div class="sticky-toggle">
<button class="sticky-toggle__button" type="button" title="<%t SilverStripe\Admin\LeftAndMain.MenuToggleStickyNav "Sticky nav" %>"><%t SilverStripe\Admin\LeftAndMain.MenuToggleStickyNav "Sticky nav" %></button>
<span class="sticky-toggle__status sticky-status-indicator"><%t SilverStripe\Admin\LeftAndMain.MenuToggleAuto "Auto" %></span>
</div>

<a class="toggle-expand" href="#" data-toggle="tooltip" title="<%t SilverStripe\Admin\LeftAndMain.ExpandPanel "Expand panel" %>" aria-label="<%t SilverStripe\Admin\LeftAndMain.ExpandPanel "Expand panel" %>"><span>&raquo;</span></a>
<a class="toggle-collapse" href="#" data-toggle="tooltip" title="<%t SilverStripe\Admin\LeftAndMain.CollapsePanel "Collapse panel" %>" aria-label="<%t SilverStripe\Admin\LeftAndMain.CollapsePanel "Collapse panel" %>"><span>&laquo;</span></a>
65 changes: 65 additions & 0 deletions tests/Extension/CWPVersionExtensionTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
<?php

namespace CWP\Core\Tests\Extension;

use CWP\Core\Extension\CWPVersionExtension;
use PHPUnit_Framework_MockObject_MockObject;
use SilverStripe\Admin\LeftAndMain;
use SilverStripe\Core\Manifest\VersionProvider;
use SilverStripe\Dev\SapphireTest;

class CWPVersionExtensionTest extends SapphireTest
{
/**
* @var VersionProvider|PHPUnit_Framework_MockObject_MockObject
*/
protected $versionProvider;

/**
* @var LeftAndMain|PHPUnit_Framework_MockObject_MockObject
*/
protected $leftAndMain;

protected function setUp()
{
parent::setUp();

$this->versionProvider = $this->createMock(VersionProvider::class);
$this->leftAndMain = $this->createMock(LeftAndMain::class);

$this->leftAndMain
->expects($this->atLeastOnce())
->method('getVersionProvider')
->willReturn($this->versionProvider);
}

/**
* @param array $modules
* @param string $expected
* @dataProvider getVersionProvider
*/
public function testGetVersion($modules, $expected)
{
$this->versionProvider->expects($this->once())
->method('getModuleVersionFromComposer')
->willReturn($modules);

$extension = new CWPVersionExtension();
$extension->setOwner($this->leftAndMain);

$result = $extension->getCWPVersionNumber();
$this->assertSame($expected, $result);
}

/**
* @return array
*/
public function getVersionProvider()
{
return [
'dev version' => [['cwp/cwp-core' => '2.3.x-dev'], '2.3'],
'stable version' => [['cwp/cwp-core' => '2.2.0'], '2.2'],
'not found' => [[], ''],
];
}
}

0 comments on commit 0a472cc

Please sign in to comment.