diff --git a/modules/backend/assets/js/october.layout.js b/modules/backend/assets/js/october.layout.js
index 7c97e9191..f671dc6c1 100644
--- a/modules/backend/assets/js/october.layout.js
+++ b/modules/backend/assets/js/october.layout.js
@@ -1,5 +1,16 @@
(function($){
- function updateLayout() {
+ var OctoberLayout = function() {}
+
+ OctoberLayout.prototype.setPageTitle = function(title) {
+ var $title = $('title')
+
+ if (this.pageTitleTemplate === undefined)
+ this.pageTitleTemplate = $title.data('titleTemplate')
+
+ $title.text(this.pageTitleTemplate.replace('%s', title))
+ }
+
+ OctoberLayout.prototype.updateLayout = function(title) {
$('.layout-cell.width-fix').each(function(){
var $el = $(this).children();
if ($el.length > 0) {
@@ -14,6 +25,13 @@
})
}
- $(document).ready(updateLayout)
- $(window).on('resize', updateLayout)
+ if ($.oc === undefined)
+ $.oc = {}
+
+ $.oc.layout = new OctoberLayout()
+
+ $(document).ready($.oc.layout.updateLayout())
+ $(window).on('resize', function() {
+ $.oc.layout.updateLayout()
+ })
})(jQuery);
\ No newline at end of file
diff --git a/modules/backend/classes/Controller.php b/modules/backend/classes/Controller.php
index 6bc7e434a..4594c3d07 100644
--- a/modules/backend/classes/Controller.php
+++ b/modules/backend/classes/Controller.php
@@ -76,6 +76,11 @@ class Controller extends Extendable
*/
public $pageTitle;
+ /**
+ * @var string Page title template
+ */
+ public $pageTitleTemplate;
+
/**
* @var string Body class property used for customising the layout on a controller basis.
*/
diff --git a/modules/backend/layouts/_head.htm b/modules/backend/layouts/_head.htm
index b8eb382d3..487c74f20 100644
--- a/modules/backend/layouts/_head.htm
+++ b/modules/backend/layouts/_head.htm
@@ -1,6 +1,8 @@
-
= $this->pageTitle ?> | October CMS
+
+ = $this->pageTitle ?> | October CMS
+
diff --git a/modules/cms/assets/js/october.cmspage.js b/modules/cms/assets/js/october.cmspage.js
index 2a8fdc04d..e2da4b975 100644
--- a/modules/cms/assets/js/october.cmspage.js
+++ b/modules/cms/assets/js/october.cmspage.js
@@ -40,7 +40,7 @@
success: function(data) {
this.success(data).done(function(){
$.oc.stripeLoadIndicator.hide()
- $('#cms-master-tabs').ocTab('addTab', data.title, data.tab, tabId, $form.data('type-icon'))
+ $('#cms-master-tabs').ocTab('addTab', data.tabTitle, data.tab, tabId, $form.data('type-icon'))
}).always(function(){
$.oc.stripeLoadIndicator.hide()
})
@@ -82,6 +82,9 @@
*/
$('#cms-master-tabs').on('closed.oc.tab', function(event){
updateModifiedCounter()
+
+ if ($('> div.tab-content > div.tab-pane', '#cms-master-tabs').length == 0)
+ setPageTitle('')
})
/*
@@ -92,6 +95,11 @@
return
var dataId = $(event.target).closest('li').attr('data-tab-id')
+
+ var title = $(event.target).attr('title')
+ if (title)
+ setPageTitle(title)
+
$('#cms-side-panel [data-control=filelist]').fileList('markActive', dataId)
$('#cms-side-panel form').trigger('oc.list.setActiveItem', [dataId])
})
@@ -202,8 +210,10 @@
$('[data-control=preview-button]', this).attr('href', data.pageUrl)
}
- if (data.title !== undefined)
- $('#cms-master-tabs').ocTab('updateTitle', $(this).closest('.tab-pane'), data.title)
+ if (data.tabTitle !== undefined) {
+ $('#cms-master-tabs').ocTab('updateTitle', $(this).closest('.tab-pane'), data.tabTitle)
+ setPageTitle(data.tabTitle)
+ }
var tabId = $('input[name=templateType]', this).val() + '-'
+ $('input[name=theme]', this).val() + '-'
@@ -251,8 +261,9 @@
},
success: function(data) {
this.success(data).done(function(){
- $('#cms-master-tabs').ocTab('addTab', data.title, data.tab, tabId, $form.data('type-icon') + ' new-template')
+ $('#cms-master-tabs').ocTab('addTab', data.tabTitle, data.tab, tabId, $form.data('type-icon') + ' new-template')
$('#layout-side-panel').trigger('close.oc.sidePanel')
+ setPageTitle(data.tabTitle)
}).always(function(){
$.oc.stripeLoadIndicator.hide()
})
@@ -446,7 +457,7 @@
success: function(data) {
this.success(data).done(function(){
$.oc.stripeLoadIndicator.hide()
- $('#cms-master-tabs').ocTab('updateTab', tab, data.title, data.tab)
+ $('#cms-master-tabs').ocTab('updateTab', tab, data.tabTitle, data.tab)
$('#cms-master-tabs').ocTab('unmodifyTab', tab)
updateModifiedCounter()
}).always(function(){
@@ -460,6 +471,13 @@
})
}
+ function setPageTitle(title) {
+ if (title.length)
+ $.oc.layout.setPageTitle(title + ' | ')
+ else
+ $.oc.layout.setPageTitle(title)
+ }
+
/*
* Listen for the click event on the components' remove link
*/
diff --git a/modules/cms/controllers/Index.php b/modules/cms/controllers/Index.php
index 91e895dfd..e14845c5d 100644
--- a/modules/cms/controllers/Index.php
+++ b/modules/cms/controllers/Index.php
@@ -90,6 +90,7 @@ class Index extends Controller
$this->bodyClass = 'compact-container side-panel-not-fixed';
$this->pageTitle = Lang::get('cms::lang.cms.menu_label');
+ $this->pageTitleTemplate = '%s CMS | October';
}
//
@@ -116,7 +117,7 @@ class Index extends Controller
}
return [
- 'title' => $this->getTabTitle($type, $template),
+ 'tabTitle' => $this->getTabTitle($type, $template),
'tab' => $this->makePartial('form_page', [
'form' => $widget,
'templateType' => $type,
@@ -162,7 +163,7 @@ class Index extends Controller
$result = [
'templatePath' => $template->fileName,
'templateMtime' => $template->mtime,
- 'title' => $this->getTabTitle($type, $template)
+ 'tabTitle' => $this->getTabTitle($type, $template)
];
if ($type == 'page') {
@@ -192,7 +193,7 @@ class Index extends Controller
$this->vars['templatePath'] = '';
return [
- 'title' => $this->getTabTitle($type, $template),
+ 'tabTitle' => $this->getTabTitle($type, $template),
'tab' => $this->makePartial('form_page', [
'form' => $widget,
'templateType' => $type,