mirror of
https://github.com/processwire/processwire.git
synced 2025-08-08 07:47:00 +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) {
|
function hideItem($item) {
|
||||||
var $actions = $item.find('.PageListActions');
|
var $actions = $item.find('.PageListActions');
|
||||||
|
if($item.hasClass('PageListItemOpen') && $actions.hasClass('PageListActionsKeepOpen')) return;
|
||||||
$item.removeClass('PageListItemHover');
|
$item.removeClass('PageListItemHover');
|
||||||
if($actions.is(":visible")) { // || $hoveredItem.hasClass('PageListItemOpen')) {
|
if($actions.is(":visible")) { // || $hoveredItem.hasClass('PageListItemOpen')) {
|
||||||
$actions.animate({opacity: 0}, options.hoverActionFade, function () {
|
$actions.animate({opacity: 0}, options.hoverActionFade, function () {
|
||||||
@@ -564,6 +565,9 @@ $(document).ready(function() {
|
|||||||
} else {
|
} else {
|
||||||
$loading.fadeOut('fast');
|
$loading.fadeOut('fast');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data.list = $target;
|
||||||
|
data.item = $target.prev('.PageListItem');
|
||||||
|
|
||||||
if(replace) {
|
if(replace) {
|
||||||
$children.show();
|
$children.show();
|
||||||
|
File diff suppressed because one or more lines are too long
@@ -27,6 +27,7 @@
|
|||||||
* @method string ajaxAction($action)
|
* @method string ajaxAction($action)
|
||||||
* @method PageArray find($selectorString, Page $page)
|
* @method PageArray find($selectorString, Page $page)
|
||||||
* @method array getHidePageIDs(array $a = array())
|
* @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
|
* @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($limit)) $limit = $this->limit;
|
||||||
if(is_null($start)) $start = $this->start;
|
if(is_null($start)) $start = $this->start;
|
||||||
|
|
||||||
if($limit) {
|
$selector = $this->getSelector($page, [ 'start' => $start, 'limit' => $limit ]);
|
||||||
$selector = "start=$start, limit=$limit, status<" . Page::statusMax;
|
|
||||||
|
if(strlen($selector)) {
|
||||||
if($this->useTrash && !$superuser) {
|
|
||||||
$trashID = $this->wire()->config->trashPageID;
|
|
||||||
if($page->id == $trashID && $user->hasPermission('page-edit') && $page->listable()) {
|
|
||||||
$selector .= ", check_access=0";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$children = $this->find($selector, $page);
|
$children = $this->find($selector, $page);
|
||||||
} else {
|
} else {
|
||||||
$children = $this->wire()->pages->newPageArray();
|
$children = $this->wire()->pages->newPageArray();
|
||||||
@@ -409,6 +403,46 @@ class ProcessPageList extends Process implements ConfigurableModule {
|
|||||||
return $renderer;
|
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
|
* Set the page label field
|
||||||
*
|
*
|
||||||
@@ -444,6 +478,17 @@ class ProcessPageList extends Process implements ConfigurableModule {
|
|||||||
return $pageLabelField;
|
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
|
* Process an AJAX action and return JSON string
|
||||||
*
|
*
|
||||||
@@ -491,12 +536,6 @@ class ProcessPageList extends Process implements ConfigurableModule {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public function ___find($selectorString, Page $page) {
|
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);
|
return $page->children($selectorString);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user