mirror of
https://github.com/processwire/processwire.git
synced 2025-08-07 15:26:54 +02:00
Updates to ProcessPageList to make some parts more hookable
This commit is contained in:
@@ -228,6 +228,7 @@ $(document).ready(function() {
|
||||
|
||||
function hideItem($item) {
|
||||
var $actions = $item.find('.PageListActions');
|
||||
if($item.hasClass('PageListItemOpen') && $actions.hasClass('PageListActionsKeepOpen')) return;
|
||||
$item.removeClass('PageListItemHover');
|
||||
if($actions.is(":visible")) { // || $hoveredItem.hasClass('PageListItemOpen')) {
|
||||
$actions.animate({opacity: 0}, options.hoverActionFade, function () {
|
||||
@@ -565,6 +566,9 @@ $(document).ready(function() {
|
||||
$loading.fadeOut('fast');
|
||||
}
|
||||
|
||||
data.list = $target;
|
||||
data.item = $target.prev('.PageListItem');
|
||||
|
||||
if(replace) {
|
||||
$children.show();
|
||||
loaded();
|
||||
|
File diff suppressed because one or more lines are too long
@@ -27,6 +27,7 @@
|
||||
* @method string ajaxAction($action)
|
||||
* @method PageArray find($selectorString, Page $page)
|
||||
* @method array getHidePageIDs(array $a = array())
|
||||
* @method string getSelector(Page $page, array $options)
|
||||
*
|
||||
* @todo Option to configure whether "Pub" action should appear for non-superusers
|
||||
*
|
||||
@@ -381,16 +382,9 @@ class ProcessPageList extends Process implements ConfigurableModule {
|
||||
if(is_null($limit)) $limit = $this->limit;
|
||||
if(is_null($start)) $start = $this->start;
|
||||
|
||||
if($limit) {
|
||||
$selector = "start=$start, limit=$limit, status<" . Page::statusMax;
|
||||
|
||||
if($this->useTrash && !$superuser) {
|
||||
$trashID = $this->wire()->config->trashPageID;
|
||||
if($page->id == $trashID && $user->hasPermission('page-edit') && $page->listable()) {
|
||||
$selector .= ", check_access=0";
|
||||
}
|
||||
}
|
||||
$selector = $this->getSelector($page, [ 'start' => $start, 'limit' => $limit ]);
|
||||
|
||||
if(strlen($selector)) {
|
||||
$children = $this->find($selector, $page);
|
||||
} else {
|
||||
$children = $this->wire()->pages->newPageArray();
|
||||
@@ -409,6 +403,46 @@ class ProcessPageList extends Process implements ConfigurableModule {
|
||||
return $renderer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get selector string to use in finding children
|
||||
*
|
||||
* @param Page $page
|
||||
* @param array $options
|
||||
* @return string
|
||||
* @since 3.0.245
|
||||
*
|
||||
*/
|
||||
public function ___getSelector(Page $page, array $options) {
|
||||
|
||||
$defaults = [
|
||||
'start' => 0,
|
||||
'limit' => 50,
|
||||
];
|
||||
|
||||
$options = array_merge($defaults, $options);
|
||||
$user = $this->wire()->user;
|
||||
$start = (int) $options['start'];
|
||||
$limit = (int) $options['limit'];
|
||||
|
||||
$selector = "start=$start, limit=$limit, status<" . Page::statusMax;
|
||||
|
||||
if($this->useTrash && !$user->isSuperuser()) {
|
||||
$trashID = $this->wire()->config->trashPageID;
|
||||
if($page->id == $trashID && $user->hasPermission('page-edit') && $page->listable()) {
|
||||
$selector .= ", check_access=0";
|
||||
}
|
||||
}
|
||||
|
||||
if($page->id === $this->wire()->config->trashPageID && !preg_match('/\bsort=/', $selector)) {
|
||||
$sortfield = $page->sortfield();
|
||||
if(!$sortfield || $sortfield === 'sort') {
|
||||
$selector = trim("$selector, sort=-modified", ',');
|
||||
}
|
||||
}
|
||||
|
||||
return $selector;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the page label field
|
||||
*
|
||||
@@ -444,6 +478,17 @@ class ProcessPageList extends Process implements ConfigurableModule {
|
||||
return $pageLabelField;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get parent page that current request is for
|
||||
*
|
||||
* @return Page|null
|
||||
* @since 3.0.245
|
||||
*
|
||||
*/
|
||||
public function getPage() {
|
||||
return $this->page;
|
||||
}
|
||||
|
||||
/**
|
||||
* Process an AJAX action and return JSON string
|
||||
*
|
||||
@@ -491,12 +536,6 @@ class ProcessPageList extends Process implements ConfigurableModule {
|
||||
*
|
||||
*/
|
||||
public function ___find($selectorString, Page $page) {
|
||||
if($page->id === $this->wire()->config->trashPageID && !preg_match('/\bsort=/', $selectorString)) {
|
||||
$sortfield = $page->sortfield();
|
||||
if(!$sortfield || $sortfield === 'sort') {
|
||||
$selectorString = trim("$selectorString,sort=-modified", ',');
|
||||
}
|
||||
}
|
||||
return $page->children($selectorString);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user