Move filters from panel to header

- The filters panel has been removed in favour of a search panel in the header
- Multi-select updated
  - Renamed to Bulk actions
  - Styles updated
  - Added placeholder text / removed redundant option
  - Now appears in SiteTree view too
This commit is contained in:
David Craig 2015-06-16 10:49:19 +12:00
parent 6513f8ac49
commit cc3385b9f8
18 changed files with 271 additions and 136 deletions

View File

@ -308,7 +308,7 @@ JS
$fields->setForm($form); $fields->setForm($form);
$form->setTemplate($this->getTemplatesWithSuffix('_EditForm')); $form->setTemplate($this->getTemplatesWithSuffix('_EditForm'));
// TODO Can't merge $FormAttributes in template at the moment // TODO Can't merge $FormAttributes in template at the moment
$form->addExtraClass('cms-edit-form cms-panel-padded center ' . $this->BaseCSSClasses()); $form->addExtraClass('cms-edit-form ' . $this->BaseCSSClasses());
$form->setAttribute('data-pjax-fragment', 'CurrentForm'); $form->setAttribute('data-pjax-fragment', 'CurrentForm');
$form->Fields()->findOrMakeTab('Root')->setTemplate('CMSTabSet'); $form->Fields()->findOrMakeTab('Root')->setTemplate('CMSTabSet');
@ -360,21 +360,17 @@ JS
foreach($context->getFilters() as $filter) $filter->setFullName(sprintf('q[%s]', $filter->getFullName())); foreach($context->getFilters() as $filter) $filter->setFullName(sprintf('q[%s]', $filter->getFullName()));
// Customize fields // Customize fields
$context->addField( $dateHeader = HeaderField::create('q[Date]', _t('CMSSearch.FILTERDATEHEADING', 'Date'), 4);
new HeaderField('q[Date]', _t('CMSSearch.FILTERDATEHEADING', 'Date'), 4) $dateFrom = DateField::create('q[CreatedFrom]', _t('CMSSearch.FILTERDATEFROM', 'From'))
); ->setConfig('showcalendar', true);
$context->addField( $dateTo = DateField::create('q[CreatedTo]',_t('CMSSearch.FILTERDATETO', 'To'))
DateField::create( ->setConfig('showcalendar', true);
'q[CreatedFrom]', $dateGroup = FieldGroup::create(
_t('CMSSearch.FILTERDATEFROM', 'From') $dateHeader,
)->setConfig('showcalendar', true) $dateFrom,
); $dateTo
$context->addField(
DateField::create(
'q[CreatedTo]',
_t('CMSSearch.FILTERDATETO', 'To')
)->setConfig('showcalendar', true)
); );
$context->addField($dateGroup);
$appCategories = array( $appCategories = array(
'image' => _t('AssetAdmin.AppCategoryImage', 'Image'), 'image' => _t('AssetAdmin.AppCategoryImage', 'Image'),
'audio' => _t('AssetAdmin.AppCategoryAudio', 'Audio'), 'audio' => _t('AssetAdmin.AppCategoryAudio', 'Audio'),

View File

@ -314,8 +314,8 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
*/ */
public function SearchForm() { public function SearchForm() {
// Create the fields // Create the fields
$content = new TextField('q[Term]', _t('CMSSearch.FILTERLABELTEXT', 'Content')); $content = new TextField('q[Term]', _t('CMSSearch.FILTERLABELTEXT', 'Search'));
$dateHeader = new HeaderField('q[Date]', _t('CMSSearch.FILTERDATEHEADING', 'Date'), 4); $dateHeader = new HeaderField('q[Date]', _t('CMSSearch.PAGEFILTERDATEHEADING', 'Last edited'), 4);
$dateFrom = new DateField( $dateFrom = new DateField(
'q[LastEditedFrom]', 'q[LastEditedFrom]',
_t('CMSSearch.FILTERDATEFROM', 'From') _t('CMSSearch.FILTERDATEFROM', 'From')
@ -328,12 +328,12 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
$dateTo->setConfig('showcalendar', true); $dateTo->setConfig('showcalendar', true);
$pageFilter = new DropdownField( $pageFilter = new DropdownField(
'q[FilterClass]', 'q[FilterClass]',
_t('CMSMain.PAGES', 'Pages'), _t('CMSMain.PAGES', 'Page status'),
CMSSiteTreeFilter::get_all_filters() CMSSiteTreeFilter::get_all_filters()
); );
$pageClasses = new DropdownField( $pageClasses = new DropdownField(
'q[ClassName]', 'q[ClassName]',
_t('CMSMain.PAGETYPEOPT', 'Page Type', 'Dropdown for limiting search to a page type'), _t('CMSMain.PAGETYPEOPT', 'Page type', 'Dropdown for limiting search to a page type'),
$this->getPageTypes() $this->getPageTypes()
); );
$pageClasses->setEmptyString(_t('CMSMain.PAGETYPEANYOPT','Any')); $pageClasses->setEmptyString(_t('CMSMain.PAGETYPEANYOPT','Any'));
@ -356,9 +356,9 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
// Create the Search and Reset action // Create the Search and Reset action
$actions = new FieldList( $actions = new FieldList(
FormAction::create('doSearch', _t('CMSMain_left_ss.APPLY_FILTER', 'Apply Filter')) FormAction::create('doSearch', _t('CMSMain_left_ss.APPLY_FILTER', 'Search'))
->addExtraClass('ss-ui-action-constructive'), ->addExtraClass('ss-ui-action-constructive'),
Object::create('ResetFormAction', 'clear', _t('CMSMain_left_ss.CLEAR_FILTER', 'Clear Filter')) Object::create('ResetFormAction', 'clear', _t('CMSMain_left_ss.CLEAR_FILTER', 'Clear'))
); );
// Use <button> to allow full jQuery UI styling on the all of the Actions // Use <button> to allow full jQuery UI styling on the all of the Actions

View File

@ -13,13 +13,21 @@
/** -------------------------------------------- Tree View (collapsed for sidebar) -------------------------------------------- */ /** -------------------------------------------- Tree View (collapsed for sidebar) -------------------------------------------- */
#cms-content-treeview .cms-tree-expand-trigger, #cms-content-listview .cms-tree-expand-trigger { display: none; } #cms-content-treeview .cms-tree-expand-trigger, #cms-content-listview .cms-tree-expand-trigger { display: none; }
/** DEPRECATED: .cms-content-tools will be removed in 4.0 Use .cms-content-filters instead. Hide certain elements when shown in "sidebar mode" */
.cms-content-tools #cms-content-treeview .cms-content-toolbar { border-bottom: none; box-shadow: none; margin-bottom: 8px; } .cms-content-tools #cms-content-treeview .cms-content-toolbar { border-bottom: none; box-shadow: none; margin-bottom: 8px; }
.cms-content-tools #cms-content-treeview .cms-tree-view-modes, .cms-content-tools #cms-content-treeview .cms-content-batchactions { display: none; }
.cms-content-tools #cms-content-treeview .cms-tree-expand-trigger { display: block; float: left; margin: 0 0 2px 0; } .cms-content-tools #cms-content-treeview .cms-tree-expand-trigger { display: block; float: left; margin: 0 0 2px 0; }
.cms-content-tools #cms-content-treeview .cms-tree-expand-trigger span.ui-button-text { padding-right: 8px; } .cms-content-tools #cms-content-treeview .cms-tree-expand-trigger span.ui-button-text { padding-right: 8px; }
.cms-content-tools #cms-content-treeview .cms-tree .badge { display: none; }
.cms-content-tools #cms-content-treeview .cms-tree a:hover > .text > .badge, .cms-content-tools #cms-content-treeview .cms-tree .jstree-clicked > .text > .badge { display: inline-block; } .cms-content-tools #cms-content-treeview .cms-tree a:hover > .text > .badge, .cms-content-tools #cms-content-treeview .cms-tree .jstree-clicked > .text > .badge { display: inline-block; }
/** -------------------------------------------- The CMS Content Toolbar. Associated behaviour in CMSMain.js -------------------------------------------- */
.cms-content-toolbar button.ss-ui-button { padding: .4em .75em; vertical-align: baseline; }
.cms-content-toolbar button.ss-ui-button:hover { -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; }
.cms-content-toolbar button.ss-ui-button:focus { -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; outline: 0; }
.cms-content-toolbar button.ss-ui-button:before { font-size: 1.1em; }
.cms-content-toolbar button.ss-ui-button.ui-state-focus { -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; }
.cms-content-toolbar button.ss-ui-button.active { -webkit-box-shadow: 0 0 5px #b3b3b3 inset; -moz-box-shadow: 0 0 5px #b3b3b3 inset; box-shadow: 0 0 5px #b3b3b3 inset; }
.cms-content-toolbar button.ss-ui-button .ui-button-text { display: -moz-inline-stack; display: inline-block; vertical-align: middle; *vertical-align: auto; zoom: 1; *display: inline; vertical-align: baseline; padding: 0; }
/** ------------------------------------------------------------------ URLSegment field ----------------------------------------------------------------- */ /** ------------------------------------------------------------------ URLSegment field ----------------------------------------------------------------- */
.field.urlsegment.loading { background: url(../images/loading.gif) no-repeat 162px 8px; } .field.urlsegment.loading { background: url(../images/loading.gif) no-repeat 162px 8px; }
.field.urlsegment .preview { padding-top: 8px; display: inline-block; } .field.urlsegment .preview { padding-top: 8px; display: inline-block; }
@ -30,8 +38,8 @@
#Form_EditForm #Title .update { margin-left: 7px; } #Form_EditForm #Title .update { margin-left: 7px; }
.cms .AssetAdmin .cms-content-fields { overflow: hidden; } .cms .AssetAdmin .cms-content-fields { /** DEPRECATED: .cms-content-tools will be removed in 4.0 Use .cms-content-filters instead. */ }
.cms .AssetAdmin .cms-content-fields .cms-edit-form.AssetAdmin { overflow-y: auto; } .cms .AssetAdmin .cms-content-fields .cms-edit-form.AssetAdmin { width: 100%; overflow-y: auto; }
.cms .AssetAdmin .cms-content-fields .cms-content-tools .cms-panel-content { overflow: hidden; } .cms .AssetAdmin .cms-content-fields .cms-content-tools .cms-panel-content { overflow: hidden; }
.cms .AssetAdmin .cms-content-fields .cms-content-tools .cms-panel-content .cms-search-form { height: 100%; } .cms .AssetAdmin .cms-content-fields .cms-content-tools .cms-panel-content .cms-search-form { height: 100%; }
.cms .AssetAdmin .cms-content-toolbar .cms-page-add-button { background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2YzZjNmMyIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2Q5ZDlkOSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f3f3f3), color-stop(100%, #d9d9d9)); background-image: -moz-linear-gradient(#f3f3f3, #d9d9d9); background-image: -webkit-linear-gradient(#f3f3f3, #d9d9d9); background-image: linear-gradient(#f3f3f3, #d9d9d9); border-color: #c0c0c2; } .cms .AssetAdmin .cms-content-toolbar .cms-page-add-button { background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2YzZjNmMyIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2Q5ZDlkOSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f3f3f3), color-stop(100%, #d9d9d9)); background-image: -moz-linear-gradient(#f3f3f3, #d9d9d9); background-image: -webkit-linear-gradient(#f3f3f3, #d9d9d9); background-image: linear-gradient(#f3f3f3, #d9d9d9); border-color: #c0c0c2; }

View File

@ -0,0 +1,95 @@
(function ($) {
/**
* Behaviour for the CMS Content Toolbar.
* Applies to tools on top-level views i.e. '/admin/pages' and '/admin/assets' and
* their corresponding tools in the SiteTree panel.
* An example is 'bulk actions' on the Pages view.
*/
$.entwine('ss', function ($) {
$('.cms-content-toolbar').entwine({
onmatch: function () {
var self = this;
this._super();
// Initialise the buttons
$.each(this.find('.cms-actions-buttons-row .tool-button'), function () {
var $button = $(this),
toolId = $button.data('toolid'),
isActive = $button.hasClass('active');
// We don't care about tools that don't have a related 'action'.
if (toolId !== void 0) {
// Set the tool to its closed state.
$button.data('active', false).removeClass('active');
$('#' + toolId).hide();
self.bindActionButtonEvents($button);
}
});
},
onunmatch: function () {
var self = this;
this._super();
$.each(this.find('.cms-actions-buttons-row .tool-button'), function () {
var $button = $(this);
self.unbindActionButtonEvents($button);
});
},
/**
* @func bindActionButtonEvents
* @param {object} $button
* @desc Add event handlers in the '.cmsContentToolbar' namespace.
*/
bindActionButtonEvents: function ($button) {
var self = this;
$button.on('click.cmsContentToolbar', function (e) {
self.showHideTool($button);
});
},
/**
* @func unbindActionButtonEvents
* @param {object} $button
* @desc Remove all event handlers in the '.cmsContentToolbar' namespace.
*/
unbindActionButtonEvents: function ($button) {
$button.off('.cmsContentToolbar');
},
/**
* @func showTool
* @param {object} $button
* @desc Show a tool in the tools row. Hides all other tools.
*/
showHideTool: function ($button) {
var isActive = $button.data('active'),
toolId = $button.data('toolid'),
$action = $('#' + toolId);
// Hide all tools except the one passed as a param,
// which gets handled separately.
$.each(this.find('.cms-actions-buttons-row .tool-button'), function () {
var $currentButton = $(this),
$currentAction = $('#' + $currentButton.data('toolid'));
if ($currentButton.data('toolid') !== toolId) {
$currentAction.hide();
$currentButton.data('active', false);
}
});
$button[isActive ? 'removeClass' : 'addClass']('active');
$action[isActive ? 'hide' : 'show']();
$button.data('active', !isActive);
}
});
});
}(jQuery));

View File

@ -121,7 +121,7 @@
var compare, selected; var compare, selected;
// compare mode // compare mode
compare = this.parents("form").find(':input[name=CompareMode]').attr("checked"), compare = this.parents("form").find(':input[name=CompareMode]').attr("checked");
selected = this.siblings(".active"); selected = this.siblings(".active");
if(compare && this.hasClass('active')) { if(compare && this.hasClass('active')) {
@ -172,6 +172,6 @@
this.find(":input[type=checkbox]").attr("checked", true); this.find(":input[type=checkbox]").attr("checked", true);
} }
}) });
}); });
})(jQuery); })(jQuery);

View File

@ -91,9 +91,9 @@ en:
ListFiltered: 'Filtered list.' ListFiltered: 'Filtered list.'
NEWPAGE: 'New {pagetype}' NEWPAGE: 'New {pagetype}'
PAGENOTEXISTS: 'This page doesn''t exist' PAGENOTEXISTS: 'This page doesn''t exist'
PAGES: Pages PAGES: 'Page status'
PAGETYPEANYOPT: Any PAGETYPEANYOPT: Any
PAGETYPEOPT: 'Page Type' PAGETYPEOPT: 'Page type'
PUBALLCONFIRM: 'Please publish every page in the site, copying content stage to live' PUBALLCONFIRM: 'Please publish every page in the site, copying content stage to live'
PUBALLFUN: '"Publish All" functionality' PUBALLFUN: '"Publish All" functionality'
PUBALLFUN2: "Pressing this button will do the equivalent of going to every page and pressing \"publish\". It's\n intended to be used after there have been massive edits of the content, such as when the site was\n first built." PUBALLFUN2: "Pressing this button will do the equivalent of going to every page and pressing \"publish\". It's\n intended to be used after there have been massive edits of the content, such as when the site was\n first built."
@ -115,13 +115,13 @@ en:
TabContent: Content TabContent: Content
TabHistory: History TabHistory: History
TabSettings: Settings TabSettings: Settings
TreeFiltered: 'Filtered tree.' TreeFiltered: 'Search results.'
TreeFilteredClear: 'Clear filter' TreeFilteredClear: Clear
MENUTITLE: 'Edit Page' MENUTITLE: 'Edit Page'
ARCHIVE: Archive ARCHIVE: Archive
ARCHIVEDPAGE: 'Archived page ''%s''' ARCHIVEDPAGE: 'Archived page ''%s'''
CMSMain_left_ss: CMSMain_left_ss:
APPLY_FILTER: 'Apply Filter' APPLY_FILTER: 'Search'
RESET: Reset RESET: Reset
CLEAR_FILTER: 'Clear Filter' CLEAR_FILTER: 'Clear Filter'
CMSPageAddController: CMSPageAddController:
@ -151,14 +151,14 @@ en:
MENUTITLE: Pages MENUTITLE: Pages
TreeView: 'Tree View' TreeView: 'Tree View'
CMSPagesController_ContentToolbar_ss: CMSPagesController_ContentToolbar_ss:
MULTISELECT: Multi-selection MULTISELECT: Bulk actions
CMSPagesController_Tools_ss: CMSPagesController_Tools_ss:
FILTER: Filter FILTER: Filter
CMSSearch: CMSSearch:
FILTERDATEFROM: From FILTERDATEFROM: From
FILTERDATEHEADING: Date FILTERDATEHEADING: 'Date'
FILTERDATETO: To FILTERDATETO: To
FILTERLABELTEXT: Content FILTERLABELTEXT: 'Search'
CMSSiteTreeFilter_ChangedPages: CMSSiteTreeFilter_ChangedPages:
Title: 'Modified pages' Title: 'Modified pages'
CMSSiteTreeFilter_DeletedPages: CMSSiteTreeFilter_DeletedPages:

View File

@ -1,9 +1,15 @@
.cms .AssetAdmin { .cms .AssetAdmin {
.cms-content-fields { .cms-content-fields {
overflow:hidden; //removes scrolling from filter panel
.cms-edit-form.AssetAdmin { .cms-edit-form.AssetAdmin {
width: 100%;
overflow-y:auto; //adds scrolling only to the datagrid overflow-y:auto; //adds scrolling only to the datagrid
} }
/**
* DEPRECATED:
* .cms-content-tools will be removed in 4.0
* Use .cms-content-filters instead.
*/
.cms-content-tools .cms-panel-content { .cms-content-tools .cms-panel-content {
overflow:hidden; //removes scollbar from search field in filter overflow:hidden; //removes scollbar from search field in filter
.cms-search-form { .cms-search-form {

View File

@ -53,7 +53,13 @@
} }
} }
// Hide certain elements when shown in "sidebar mode" /**
* DEPRECATED:
* .cms-content-tools will be removed in 4.0
* Use .cms-content-filters instead.
*
* Hide certain elements when shown in "sidebar mode"
*/
.cms-content-tools { .cms-content-tools {
#cms-content-treeview { #cms-content-treeview {
.cms-content-toolbar { .cms-content-toolbar {
@ -61,10 +67,6 @@
box-shadow:none; box-shadow:none;
margin-bottom:8px; margin-bottom:8px;
} }
.cms-tree-view-modes,
.cms-content-batchactions {
display: none;
}
.cms-tree-expand-trigger { .cms-tree-expand-trigger {
display: block; display: block;
float: left; float: left;
@ -75,11 +77,6 @@
} }
.cms-tree { .cms-tree {
// Hide badges and drag icons to save space
.badge {
display: none;
}
// Show badge on hovered node // Show badge on hovered node
a:hover > .text > .badge, .jstree-clicked > .text > .badge { a:hover > .text > .badge, .jstree-clicked > .text > .badge {
display: inline-block; display: inline-block;
@ -88,6 +85,44 @@
} }
} }
/** --------------------------------------------
* The CMS Content Toolbar.
* Associated behaviour in CMSMain.js
* -------------------------------------------- */
.cms-content-toolbar {
button.ss-ui-button {
padding: .4em .75em;
vertical-align: baseline;
&:hover {
@include box-shadow(none);
}
&:focus {
@include box-shadow(none);
outline: 0;
}
&:before {
font-size: 1.1em;
}
&.ui-state-focus {
@include box-shadow(none);
}
&.active {
@include box-shadow(0 0 5px #b3b3b3 inset);
}
.ui-button-text {
@include inline-block;
vertical-align: baseline;
padding: 0;
}
}
}
/** ------------------------------------------------------------------ /** ------------------------------------------------------------------
* URLSegment field * URLSegment field
* ----------------------------------------------------------------- */ * ----------------------------------------------------------------- */

View File

@ -4,16 +4,15 @@
<div class="cms-content-header north"> <div class="cms-content-header north">
<div class="cms-content-header-info"> <div class="cms-content-header-info">
<% include BackLink_Button %> <% include BackLink_Button %>
<% with $Controller %> <% with $Controller %>
<% include CMSBreadcrumbs %> <% include CMSBreadcrumbs %>
<% end_with %> <% end_with %>
</div> </div>
<% if $Fields.hasTabset %> <% if $Fields.hasTabset %>
<% with $Fields.fieldByName('Root') %> <% with $Fields.fieldByName('Root') %>
<div class="cms-content-header-tabs"> <div class="cms-content-header-tabs">
<button id="filters-button" class="icon-button font-icon-search" title="<% _t('CMSPagesController_Tools_ss.FILTER', 'Filter') %>"></button>
<ul class="cms-tabset-nav-primary"> <ul class="cms-tabset-nav-primary">
<% loop $Tabs %> <% loop $Tabs %>
<li<% if $extraClass %> class="$extraClass"<% end_if %>><a href="#$id">$Title</a></li> <li<% if $extraClass %> class="$extraClass"<% end_if %>><a href="#$id">$Title</a></li>
@ -24,10 +23,13 @@
<% end_if %> <% end_if %>
</div> </div>
<div class="cms-content-fields center ui-widget-content" data-layout-type="border"> <div class="cms-content-fields center ui-widget-content cms-panel-padded" data-layout-type="border">
$Top.Tools $Top.Tools
<div class="cms-content-view">
$forTemplate $forTemplate
</div> </div>
</div>
<% end_with %> <% end_with %>
</div> </div>

View File

@ -1,9 +1,3 @@
<div class="cms-content-tools west cms-panel cms-panel-layout collapsed" id="cms-content-tools-AssetAdmin" data-expandOnClick="true" data-layout-type="border"> <div id="cms-content-filters-AssetAdmin" class="cms-content-filters">
<div class="cms-panel-content center">
<h3 class="cms-panel-header"><% _t('AssetAdmin_Tools.FILTER', 'Filter') %></h3>
$SearchForm $SearchForm
</div> </div>
<div class="cms-panel-content-collapsed">
<h3 class="cms-panel-header"><% _t('AssetAdmin_Tools.FILTER', 'Filter') %></h3>
</div>
</div>

View File

@ -1,6 +1,4 @@
<div class="cms-content-toolbar">
<% include CMSPagesController_ContentToolActions %> <% include CMSPagesController_ContentToolActions %>
</div>
<div class="ss-dialog cms-page-add-form-dialog cms-dialog-content" id="cms-page-add-form" title="<% _t('CMSMain.AddNew', 'Add new page') %>"> <div class="ss-dialog cms-page-add-form-dialog cms-dialog-content" id="cms-page-add-form" title="<% _t('CMSMain.AddNew', 'Add new page') %>">
$AddForm $AddForm

View File

@ -1,7 +1,4 @@
<div class="cms-content-toolbar"> <% include CMSPagesController_ContentToolActions View='Tree' %>
<% include CMSPagesController_ContentToolActions %>
<% include CMSPagesController_ContentToolbar %>
</div>
<div class="ss-dialog cms-page-add-form-dialog cms-dialog-content" id="cms-page-add-form" title="<% _t('CMSMain.AddNew', 'Add new page') %>"> <div class="ss-dialog cms-page-add-form-dialog cms-dialog-content" id="cms-page-add-form" title="<% _t('CMSMain.AddNew', 'Add new page') %>">
$AddForm $AddForm
@ -12,9 +9,9 @@ $ExtraTreeTools
<div class="center"> <div class="center">
<% if $TreeIsFiltered %> <% if $TreeIsFiltered %>
<div class="cms-tree-filtered cms-notice"> <div class="cms-tree-filtered cms-notice">
<strong><% _t('CMSMain.TreeFiltered', 'Filtered tree.') %></strong> <strong><% _t('CMSMain.TreeFiltered', 'Search results.') %></strong>
<a href="$LinkPages" class="cms-panel-link"> <a href="$LinkPages" class="cms-panel-link">
<% _t('CMSMain.TreeFilteredClear', 'Clear filter') %> <% _t('CMSMain.TreeFilteredClear', 'Clear') %>
</a> </a>
</div> </div>
<% end_if %> <% end_if %>

View File

@ -6,6 +6,7 @@
</div> </div>
<div class="cms-content-header-tabs"> <div class="cms-content-header-tabs">
<button id="filters-button" class="icon-button font-icon-search" title="<% _t('CMSPagesController_Tools_ss.FILTER', 'Filter') %>"></button>
<ul class="cms-tabset-nav-primary"> <ul class="cms-tabset-nav-primary">
<li class="content-treeview<% if ViewState == tree %> ui-tabs-active ss-tabs-force-active<% end_if %> cms-tabset-icon tree"> <li class="content-treeview<% if ViewState == tree %> ui-tabs-active ss-tabs-force-active<% end_if %> cms-tabset-icon tree">
<a href="#cms-content-treeview" class="cms-panel-link" data-href="$LinkTreeView"><% _t('CMSPagesController.TreeView', 'Tree View') %></a> <a href="#cms-content-treeview" class="cms-panel-link" data-href="$LinkTreeView"><% _t('CMSPagesController.TreeView', 'Tree View') %></a>
@ -22,9 +23,8 @@
</div> </div>
</div> </div>
$Tools
<div class="cms-content-fields center ui-widget-content cms-panel-padded"> <div class="cms-content-fields center ui-widget-content cms-panel-padded">
$Tools
<div class="cms-content-view cms-panel-deferred" id="cms-content-treeview" data-url="$LinkTreeView"> <div class="cms-content-view cms-panel-deferred" id="cms-content-treeview" data-url="$LinkTreeView">
<%-- Lazy-loaded via ajax --%> <%-- Lazy-loaded via ajax --%>

View File

@ -1,6 +1,19 @@
<div class="cms-actions-row"> <div class="cms-content-toolbar">
<a class="cms-page-add-button ss-ui-button ss-ui-action-constructive" data-icon="add" href="$LinkPageAdd" data-url-addpage="{$LinkPageAdd('', 'ParentID=%s')}"><% _t('CMSMain.AddNewButton', 'Add new') %></a> <div class="cms-actions-buttons-row">
<button href="$LinkPagesWithSearch" class="cms-tree-expand-trigger cms-panel-link ss-button" data-icon="pencil"> <a class="cms-page-add-button ss-ui-button ss-ui-action-constructive tool-button" data-icon="add" href="$LinkPageAdd" data-url-addpage="{$LinkPageAdd('', 'ParentID=%s')}"><% _t('CMSMain.AddNewButton', 'Add new') %></a>
<% _t('CMSMain.EditTree', 'Edit Tree') %>
<% if $View == 'Tree' %>
<button class="cms-content-batchactions-button tool-button font-icon-list" data-toolid="batch-actions">
<% _t("CMSPagesController_ContentToolbar_ss.MULTISELECT","Batch actions") %>
</button> </button>
<% end_if %>
</div>
<div class="cms-actions-tools-row">
<% if $View == 'Tree' %>
<div id="batch-actions" class="cms-content-batchactions-dropdown tool-action">
$BatchActionsForm
</div>
<% end_if %>
</div>
</div> </div>

View File

@ -1,8 +0,0 @@
<div class="cms-content-batchactions">
<label class="view-mode-batchactions-wrapper">
<input id="view-mode-batchactions" name="view-mode-batchactions" type="checkbox" />
<span class="view-mode-batchactions-label"><% _t("CMSPagesController_ContentToolbar_ss.MULTISELECT","Multi-selection") %></span>
</label>
$BatchActionsForm
</div>

View File

@ -1,9 +1,3 @@
<div class="cms-content-tools west cms-panel cms-panel-layout collapsed" data-expandOnClick="true" data-layout-type="border" id="cms-content-tools-CMSPagesController"> <div id="cms-content-filters-CMSPagesController" class="cms-content-filters">
<div class="cms-panel-content center">
<h3 class="cms-panel-header"><% _t('CMSPagesController_Tools_ss.FILTER', 'Filter') %></h3>
$SearchForm $SearchForm
</div> </div>
<div class="cms-panel-content-collapsed">
<h3 class="cms-panel-header"><% _t('CMSPagesController_Tools_ss.FILTER', 'Filter') %></h3>
</div>
</div>

View File

@ -62,24 +62,24 @@ Feature: Manage files
Then I should see "png," Then I should see "png,"
Scenario: I can filter the files list view using name Scenario: I can filter the files list view using name
Given I expand the "Filter" CMS Panel Given I expand the content filters
And I fill in "Name" with "file1" And I fill in "Name" with "file1"
And I press the "Apply Filter" button And I press the "Search" button
Then the "Files" table should contain "file1" Then the "Files" table should contain "file1"
And the "Files" table should not contain "file2" And the "Files" table should not contain "file2"
Scenario: I can filter the files list view using filetype Scenario: I can filter the files list view using filetype
Given a "file" "assets/document.pdf" Given a "file" "assets/document.pdf"
And I expand the "Filter" CMS Panel And I expand the content filters
And I select "Image" from "File type" with javascript And I select "Image" from "File type" with javascript
And I press the "Apply Filter" button And I press the "Search" button
Then the "Files" table should contain "file1" Then the "Files" table should contain "file1"
And the "Files" table should not contain "document" And the "Files" table should not contain "document"
Scenario: I can filter out files that don't match the date range Scenario: I can filter out files that don't match the date range
Given I expand the "Filter" CMS Panel Given I expand the content filters
And I fill in "From" with "2003-01-01" And I fill in "From" with "2003-01-01"
And I fill in "To" with "2011-01-01" And I fill in "To" with "2011-01-01"
And I press the "Apply Filter" button And I press the "Search" button
And the "Files" table should contain "file2" And the "Files" table should contain "file2"
And the "Files" table should not contain "file1" And the "Files" table should not contain "file1"

View File

@ -9,18 +9,19 @@ Feature: Search for a page
And a "page" "Contact Us" And a "page" "Contact Us"
And I am logged in with "ADMIN" permissions And I am logged in with "ADMIN" permissions
And I go to "/admin/pages" And I go to "/admin/pages"
And I expand the "Filter" CMS Panel And I expand the content filters
And I wait for 2 seconds
Scenario: I can search for a page by its title Scenario: I can search for a page by its title
Given I fill in "Content" with "About Us" Given I fill in "Search" with "About Us"
And I press the "Apply Filter" button And I press the "Search" button
Then I should see "About Us" in the tree Then I should see "About Us" in the tree
But I should not see "Contact Us" in the tree But I should not see "Contact Us" in the tree
Scenario: I can search for a page by its type Scenario: I can search for a page by its type
Given a "Error Page" "My Error Page" Given a "Error Page" "My Error Page"
When I select "Error Page" from "Page Type" When I select "Error Page" from "Page type"
And I press the "Apply Filter" button And I press the "Search" button
Then I should see "My Error Page" in the tree Then I should see "My Error Page" in the tree
But I should not see "Contact Us" in the tree But I should not see "Contact Us" in the tree
@ -28,7 +29,7 @@ Feature: Search for a page
Given a "page" "Recent Page" Given a "page" "Recent Page"
And a "page" "Old Page" was last edited "7 days ago" And a "page" "Old Page" was last edited "7 days ago"
When I fill in "From" with "the date of 5 days ago" When I fill in "From" with "the date of 5 days ago"
And I press the "Apply Filter" button And I press the "Search" button
Then I should see "Recent Page" in the tree Then I should see "Recent Page" in the tree
But I should not see "Old Page" in the tree But I should not see "Old Page" in the tree
@ -36,7 +37,7 @@ Feature: Search for a page
Given a "page" "Recent Page" Given a "page" "Recent Page"
And a "page" "Old Page" was last edited "7 days ago" And a "page" "Old Page" was last edited "7 days ago"
When I fill in "To" with "the date of 5 days ago" When I fill in "To" with "the date of 5 days ago"
And I press the "Apply Filter" button And I press the "Search" button
Then I should not see "Recent Page" in the tree Then I should not see "Recent Page" in the tree
But I should see "Old Page" in the tree But I should see "Old Page" in the tree
@ -44,30 +45,33 @@ Feature: Search for a page
Given a "page" "Deleted Page" Given a "page" "Deleted Page"
And the "page" "Deleted Page" is unpublished And the "page" "Deleted Page" is unpublished
And the "page" "Deleted Page" is deleted And the "page" "Deleted Page" is deleted
When I press the "Apply Filter" button When I press the "Search" button
Then I should not see "Deleted Page" in the tree Then I should not see "Deleted Page" in the tree
When I select "All pages, including archived" from "Pages" When I expand the content filters
And I press the "Apply Filter" button And I select "All pages, including archived" from "Page status"
And I press the "Search" button
Then I should see "Deleted Page" in the tree Then I should see "Deleted Page" in the tree
Scenario: I can include only deleted pages in my search Scenario: I can include only deleted pages in my search
Given a "page" "Deleted Page" Given a "page" "Deleted Page"
And the "page" "Deleted Page" is unpublished And the "page" "Deleted Page" is unpublished
And the "page" "Deleted Page" is deleted And the "page" "Deleted Page" is deleted
When I press the "Apply Filter" button When I press the "Search" button
Then I should not see "Deleted Page" in the tree Then I should not see "Deleted Page" in the tree
When I select "Archived pages" from "Pages" When I expand the content filters
And I press the "Apply Filter" button And I select "Archived pages" from "Page status"
And I press the "Search" button
Then I should see "Deleted Page" in the tree Then I should see "Deleted Page" in the tree
And I should not see "About Us" in the tree And I should not see "About Us" in the tree
Scenario: I can include draft pages in my search Scenario: I can include draft pages in my search
Given a "page" "Draft Page" Given a "page" "Draft Page"
And the "page" "Draft Page" is not published And the "page" "Draft Page" is not published
When I press the "Apply Filter" button When I press the "Search" button
Then I should see "Draft Page" in the tree Then I should see "Draft Page" in the tree
When I select "Draft pages" from "Pages" When I expand the content filters
And I press the "Apply Filter" button And I select "Draft pages" from "Page status"
And I press the "Search" button
Then I should see "Draft Page" in the tree Then I should see "Draft Page" in the tree
And I should not see "About Us" in the tree And I should not see "About Us" in the tree
@ -80,9 +84,9 @@ Feature: Search for a page
Then I should see "Saved" in the "button#Form_EditForm_action_save" element Then I should see "Saved" in the "button#Form_EditForm_action_save" element
When I go to "/admin/pages" When I go to "/admin/pages"
And I expand the "Filter" CMS Panel And I expand the content filters
When I select "Modified pages" from "Pages" When I select "Modified pages" from "Page status"
And I press the "Apply Filter" button And I press the "Search" button
Then I should see "About Us" in the tree Then I should see "About Us" in the tree
And I should not see "Home" in the tree And I should not see "Home" in the tree
@ -90,10 +94,11 @@ Feature: Search for a page
Given a "page" "Live Page" Given a "page" "Live Page"
And the "page" "Live Page" is published And the "page" "Live Page" is published
And the "page" "Live Page" is deleted And the "page" "Live Page" is deleted
When I press the "Apply Filter" button When I press the "Search" button
Then I should not see "Live Page" in the tree Then I should not see "Live Page" in the tree
When I select "Live but removed from draft" from "Pages" When I expand the content filters
And I press the "Apply Filter" button And I select "Live but removed from draft" from "Page status"
And I press the "Search" button
Then I should see "Live Page" in the tree Then I should see "Live Page" in the tree
And I should not see "About Us" in the tree And I should not see "About Us" in the tree
@ -106,8 +111,8 @@ Feature: Search for a page
And the "page" "Deleted Page" is unpublished And the "page" "Deleted Page" is unpublished
And the "page" "Deleted Page" is deleted And the "page" "Deleted Page" is deleted
When I select "Published pages" from "Pages" When I select "Published pages" from "Page status"
And I press the "Apply Filter" button And I press the "Search" button
Then I should not see "Draft Page" in the tree Then I should not see "Draft Page" in the tree
And I should not see "Deleted Page" in the tree And I should not see "Deleted Page" in the tree
But I should see "Live Page" in the tree But I should see "Live Page" in the tree