mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
MINOR Moved SilverStripeNavigator from 'sapphire' to 'cms'
This commit is contained in:
parent
3dc5c2b1db
commit
4adcdba226
@ -1,189 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* @package cms
|
|
||||||
* @subpackage content
|
|
||||||
*/
|
|
||||||
class SilverStripeNavigator {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param SiteTree $record
|
|
||||||
* @return Array template data
|
|
||||||
*/
|
|
||||||
static function get_for_record($record) {
|
|
||||||
$items = '';
|
|
||||||
$message = '';
|
|
||||||
|
|
||||||
$navItemClasses = ClassInfo::subclassesFor('SilverStripeNavigatorItem');
|
|
||||||
array_shift($navItemClasses);
|
|
||||||
|
|
||||||
// Sort menu items according to priority
|
|
||||||
$menuPriority = array();
|
|
||||||
$i = 0;
|
|
||||||
foreach($navItemClasses as $navItemClass) {
|
|
||||||
if($navItemClass == 'SilverStripeNavigatorItem') continue;
|
|
||||||
|
|
||||||
$i++;
|
|
||||||
$obj = new $navItemClass();
|
|
||||||
// This funny litle formula ensures that the first item added with the same priority will be left-most.
|
|
||||||
$priority = Object::get_static($navItemClass, 'priority');
|
|
||||||
$menuPriority[$priority * 100 - 1] = $obj;
|
|
||||||
}
|
|
||||||
ksort($menuPriority);
|
|
||||||
|
|
||||||
foreach($menuPriority as $obj) {
|
|
||||||
|
|
||||||
$text = $obj->getHTML($record);
|
|
||||||
if($text) $items .= $text;
|
|
||||||
$newMessage = $obj->getMessage($record);
|
|
||||||
if($newMessage) $message = $newMessage;
|
|
||||||
}
|
|
||||||
|
|
||||||
return array(
|
|
||||||
'items' => $items,
|
|
||||||
'message' => $message
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Navigator items are links that appear in the $SilverStripeNavigator bar.
|
|
||||||
* To add an item, extends this class.
|
|
||||||
*
|
|
||||||
* @package cms
|
|
||||||
* @subpackage content
|
|
||||||
*/
|
|
||||||
class SilverStripeNavigatorItem extends Object {
|
|
||||||
function getHTML($page) {}
|
|
||||||
function getMessage($page) {}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @package cms
|
|
||||||
* @subpackage content
|
|
||||||
*/
|
|
||||||
class SilverStripeNavigatorItem_CMSLink extends SilverStripeNavigatorItem {
|
|
||||||
static $priority = 10;
|
|
||||||
|
|
||||||
function getHTML($page) {
|
|
||||||
if(is_a(Controller::curr(), 'CMSMain')) {
|
|
||||||
return '<a class="current">CMS</a>';
|
|
||||||
} else {
|
|
||||||
$cmsLink = 'admin/show/' . $page->ID;
|
|
||||||
$cmsLink = "<a href=\"$cmsLink\" class=\"newWindow\" target=\"cms\">". _t('ContentController.CMS', 'CMS') ."</a>";
|
|
||||||
|
|
||||||
return $cmsLink;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function getLink($page) {
|
|
||||||
if(is_a(Controller::curr(), 'CMSMain')) {
|
|
||||||
return Controller::curr()->AbsoluteLink('show') . $page->ID;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @package cms
|
|
||||||
* @subpackage content
|
|
||||||
*/
|
|
||||||
class SilverStripeNavigatorItem_StageLink extends SilverStripeNavigatorItem {
|
|
||||||
static $priority = 20;
|
|
||||||
|
|
||||||
function getHTML($page) {
|
|
||||||
if(Versioned::current_stage() == 'Stage' && !(ClassInfo::exists('SiteTreeFutureState') && SiteTreeFutureState::get_future_datetime())) {
|
|
||||||
return "<a class=\"current\">". _t('ContentController.DRAFTSITE', 'Draft Site') ."</a>";
|
|
||||||
} else {
|
|
||||||
$draftPage = Versioned::get_one_by_stage('SiteTree', 'Stage', '"SiteTree"."ID" = ' . $page->ID);
|
|
||||||
if($draftPage) {
|
|
||||||
$pageLink = Controller::join_links($draftPage->AbsoluteLink(), "?stage=Stage");
|
|
||||||
return "<a href=\"$pageLink\" class=\"newWindow\" target=\"site\" style=\"left : -1px;\">". _t('ContentController.DRAFTSITE', 'Draft Site') ."</a>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function getMessage($page) {
|
|
||||||
if(Versioned::current_stage() == 'Stage') {
|
|
||||||
return "<div id=\"SilverStripeNavigatorMessage\" title=\"". _t('ContentControl.NOTEWONTBESHOWN', 'Note: this message will not be shown to your visitors') ."\">". _t('ContentController.DRAFTSITE', 'Draft Site') ."</div>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function getLink($page) {
|
|
||||||
if(Versioned::current_stage() == 'Stage') {
|
|
||||||
return Controller::join_links($page->AbsoluteLink(), '?stage=Stage');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @package cms
|
|
||||||
* @subpackage content
|
|
||||||
*/
|
|
||||||
class SilverStripeNavigatorItem_LiveLink extends SilverStripeNavigatorItem {
|
|
||||||
static $priority = 30;
|
|
||||||
|
|
||||||
function getHTML($page) {
|
|
||||||
if(Versioned::current_stage() == 'Live') {
|
|
||||||
return "<a class=\"current\">". _t('ContentController.PUBLISHEDSITE', 'Published Site') ."</a>";
|
|
||||||
} else {
|
|
||||||
$livePage = Versioned::get_one_by_stage('SiteTree', 'Live', '"SiteTree"."ID" = ' . $page->ID);
|
|
||||||
if($livePage) {
|
|
||||||
$pageLink = Controller::join_links($livePage->AbsoluteLink(), "?stage=Live");
|
|
||||||
return "<a href=\"$pageLink\" class=\"newWindow\" target=\"site\" style=\"left : -3px;\">". _t('ContentController.PUBLISHEDSITE', 'Published Site') ."</a>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function getMessage($page) {
|
|
||||||
if(Versioned::current_stage() == 'Live') {
|
|
||||||
return "<div id=\"SilverStripeNavigatorMessage\" title=\"". _t('ContentControl.NOTEWONTBESHOWN', 'Note: this message will not be shown to your visitors') ."\">". _t('ContentController.PUBLISHEDSITE', 'Published Site') ."</div>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function getLink($page) {
|
|
||||||
if(Versioned::current_stage() == 'Live') {
|
|
||||||
return Controller::join_links($page->AbsoluteLink(), '?stage=Live');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @package cms
|
|
||||||
* @subpackage content
|
|
||||||
*/
|
|
||||||
class SilverStripeNavigatorItem_ArchiveLink extends SilverStripeNavigatorItem {
|
|
||||||
static $priority = 40;
|
|
||||||
|
|
||||||
function getHTML($page) {
|
|
||||||
if(Versioned::current_archived_date()) {
|
|
||||||
return "<a class=\"current\">". _t('ContentController.ARCHIVEDSITE', 'Archived Site') ."</a>";
|
|
||||||
} else {
|
|
||||||
// Display the archive link if the page currently displayed in the CMS is other version than live and draft
|
|
||||||
$currentDraft = Versioned::get_one_by_stage('SiteTree', 'Draft', '"SiteTree"."ID" = ' . $page->ID);
|
|
||||||
$currentLive = Versioned::get_one_by_stage('SiteTree', 'Live', '"SiteTree"."ID" = ' . $page->ID);
|
|
||||||
if(
|
|
||||||
(!$currentDraft || ($currentDraft && $page->Version != $currentDraft->Version))
|
|
||||||
&& (!$currentLive || ($currentLive && $page->Version != $currentLive->Version))
|
|
||||||
) {
|
|
||||||
$pageLink = $page->AbsoluteLink();
|
|
||||||
return "<a href=\"$pageLink?archiveDate={$page->LastEdited}\" class=\"newWindow\" target=\"site\" style=\"left : -3px;\">". _t('ContentController.ARCHIVEDSITE', 'Archived Site') ."</a>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function getMessage($page) {
|
|
||||||
if($date = Versioned::current_archived_date()) {
|
|
||||||
$dateObj = Object::create('Datetime');
|
|
||||||
$dateObj->setValue($date);
|
|
||||||
return "<div id=\"SilverStripeNavigatorMessage\" title=\"". _t('ContentControl.NOTEWONTBESHOWN', 'Note: this message will not be shown to your visitors') ."\">". _t('ContentController.ARCHIVEDSITEFROM', 'Archived site from') ."<br>" . $dateObj->Nice() . "</div>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function getLink($page) {
|
|
||||||
if($date = Versioned::current_archived_date()) {
|
|
||||||
return $page->AbsoluteLink() . '?archiveDate=' . $date;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
?>
|
|
@ -1,111 +0,0 @@
|
|||||||
|
|
||||||
#SilverStripeNavigator {
|
|
||||||
position: fixed;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
border-top: 2px solid #d4d0c8;
|
|
||||||
background-color:#81858d;
|
|
||||||
height: 22px;
|
|
||||||
background: #4d4e5a url(../../cms/images/textures/footerBg.gif) repeat-x left top;
|
|
||||||
}
|
|
||||||
|
|
||||||
#SilverStripeNavigator * {
|
|
||||||
font-family: Arial,Helvetica,sans-serif;
|
|
||||||
font-size: 10px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
#SilverStripeNavigator .holder {
|
|
||||||
text-align: center;
|
|
||||||
padding-top : 4px;
|
|
||||||
padding-left : 3px;
|
|
||||||
padding-right : 6px;
|
|
||||||
color: white;
|
|
||||||
border-top: 1px solid #555555;
|
|
||||||
}
|
|
||||||
#SilverStripeNavigator #logInStatus {
|
|
||||||
float: right;
|
|
||||||
}
|
|
||||||
#SilverStripeNavigator #switchView {
|
|
||||||
float: left;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#SilverStripeNavigator a {
|
|
||||||
color: #fff;
|
|
||||||
background-color: transparent;
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
#SilverStripeNavigator a:hover {
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
#SilverStripeNavigator .bottomTabs a {
|
|
||||||
margin-right: 8px;
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
#SilverStripeNavigator .bottomTabs div.blank {
|
|
||||||
display: block;
|
|
||||||
float : left;
|
|
||||||
height : 13px;
|
|
||||||
position:relative;
|
|
||||||
top : -2px;
|
|
||||||
cursor: pointer;
|
|
||||||
border : none;
|
|
||||||
background-color: transparent;
|
|
||||||
padding: 2px 4px 2px 2px;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#SilverStripeNavigator .bottomTabs a.current {
|
|
||||||
font-weight:bold;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#SilverStripeNavigatorMessage {
|
|
||||||
font-family: 'Lucida Grande', Verdana, Arial, 'sans-serif';
|
|
||||||
position: absolute;
|
|
||||||
right: 20px;
|
|
||||||
top: 40px;
|
|
||||||
padding: 10px;
|
|
||||||
border-color: #c99;
|
|
||||||
color: #fff;
|
|
||||||
background-color: #c00;
|
|
||||||
border: 1px solid #000;
|
|
||||||
}
|
|
||||||
|
|
||||||
#SilverStripeNavigator #logInStatus {
|
|
||||||
background:transparent url(../../cms/images/logout.gif) no-repeat scroll right top !important;
|
|
||||||
padding-bottom:4px;
|
|
||||||
padding-right:20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#SilverStripeNavigatorLinkPopup {
|
|
||||||
display: none;
|
|
||||||
position: absolute;
|
|
||||||
top: -60px;
|
|
||||||
height: 50px;
|
|
||||||
width: 350px;
|
|
||||||
left: 200px;
|
|
||||||
background-color: white;
|
|
||||||
border: 1px solid black;
|
|
||||||
z-index: 100;
|
|
||||||
color: black;
|
|
||||||
padding: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#SilverStripeNavigatorLinkPopup input {
|
|
||||||
width: 250px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#SilverStripeNavigatorLinkPopup a.close {
|
|
||||||
color: blue;
|
|
||||||
text-align: right;
|
|
||||||
width: 80%;
|
|
||||||
border: none !important;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
|||||||
function windowName(suffix) {
|
|
||||||
var base = document.getElementsByTagName('base')[0].href.replace('http://','').replace(/\//g,'_').replace(/\./g,'_');
|
|
||||||
return base + suffix;
|
|
||||||
}
|
|
||||||
|
|
||||||
(function($) {
|
|
||||||
$('#switchView a.newWindow').live('click',
|
|
||||||
function() {
|
|
||||||
var w = window.open(this.href, windowName(this.target));
|
|
||||||
w.focus();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
$('#SilverStripeNavigatorLink').live('click',
|
|
||||||
function() {
|
|
||||||
$('#SilverStripeNavigatorLinkPopup').toggle();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
$('#SilverStripeNavigatorLinkPopup a.close').live('click',
|
|
||||||
function() {
|
|
||||||
$('#SilverStripeNavigatorLinkPopup').hide();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
$('#SilverStripeNavigatorLinkPopup input').live('focus',
|
|
||||||
function() {
|
|
||||||
this.select();
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
})(jQuery);
|
|
@ -1,10 +0,0 @@
|
|||||||
|
|
||||||
<a id="SilverStripeNavigatorLink" href="#">
|
|
||||||
<% _t('SilverStripeNavigatorLink.ShareLink','Share link') %>
|
|
||||||
</a>
|
|
||||||
<div id="SilverStripeNavigatorLinkPopup">
|
|
||||||
<a class="close"><% _t('SilverStripeNavigatorLinkl.CloseLink','Close') %></a>
|
|
||||||
<p>
|
|
||||||
<% _t('SilverStripeNavigatorLink.ShareInstructions','To share a this to this page, copy and paste the link below.') %></p>
|
|
||||||
<input value="$Link" />
|
|
||||||
</div>
|
|
Loading…
Reference in New Issue
Block a user