Version 4.1.2

This commit is contained in:
Neo committed 2025-12-19 05:32:19 -08:00
1 parent 3ba79295ee
commit 28bd025b35
1131 files changed
+63658 -20579

No files matched your search

+42 -8
View File
@@ -186,7 +186,8 @@ class _Controller extends \IPS\Dispatcher\Controller
( ( $node instanceof \IPS\Node\Model ) ? $node->_badge : $this->_getRowBadge( $node ) ),
$this->_titleHtml,
$this->_descriptionHtml,
$node->canAdd()
$node->canAdd(),
( $node instanceof $nodeClass )
);
}
@@ -404,6 +405,10 @@ class _Controller extends \IPS\Dispatcher\Controller
if ( $node->_id AND !$node->noCopyButton )
{
$form->copyButton = $this->url->setQueryString( array( 'do' => 'massChange', 'from' => $node->_id ) );
if ( !( $node instanceof $this->nodeClass ) )
{
$form->copyButton = $form->copyButton->setQueryString( 'subnode', 1 );
}
}
$node->form( $form );
@@ -438,6 +443,10 @@ class _Controller extends \IPS\Dispatcher\Controller
{
/* Check permission */
$nodeClass = $this->nodeClass;
if ( \IPS\Request::i()->subnode )
{
$nodeClass = $nodeClass::$subnodeClass;
}
try
{
$node = call_user_func( "{$nodeClass}::load", \IPS\Request::i()->from );
@@ -487,7 +496,12 @@ class _Controller extends \IPS\Dispatcher\Controller
if ( $values = $form->values() )
{
$url = $this->url;
\IPS\Output::i()->output = new \IPS\Helpers\MultipleRedirect( $this->url->setQueryString( array( 'do' => 'massChange', 'key' => \IPS\Request::i()->key, 'value' => $value, 'nodes' => \IPS\Request::i()->nodes ?: $values['nodes'], 'from' => \IPS\Request::i()->from, 'form_submitted' => 1, 'csrfKey' => \IPS\Request::i()->csrfKey ) ),
$multiRedirectUrl = $this->url->setQueryString( array( 'do' => 'massChange', 'key' => \IPS\Request::i()->key, 'value' => $value, 'nodes' => \IPS\Request::i()->nodes ?: $values['nodes'], 'from' => \IPS\Request::i()->from, 'form_submitted' => 1, 'csrfKey' => \IPS\Request::i()->csrfKey ) );
if ( \IPS\Request::i()->subnode )
{
$multiRedirectUrl = $multiRedirectUrl->setQueryString( 'subnode', 1 );
}
\IPS\Output::i()->output = new \IPS\Helpers\MultipleRedirect( $multiRedirectUrl,
function( $doneSoFar ) use ( $nodeClass )
{
$select = \IPS\Db::i()->select( '*', $nodeClass::$databaseTable, \IPS\Request::i()->nodes == 0 ? NULL : \IPS\Db::i()->in( $nodeClass::$databasePrefix . $nodeClass::$databaseColumnId, explode( ',',\IPS\Request::i()->nodes) ), $nodeClass::$databasePrefix . $nodeClass::$databaseColumnId, array( $doneSoFar, 50 ), NULL, NULL, \IPS\Db::SELECT_SQL_CALC_FOUND_ROWS );
@@ -506,7 +520,7 @@ class _Controller extends \IPS\Dispatcher\Controller
if ( $_node->canCopyValue( \IPS\Request::i()->key, \IPS\Request::i()->value ) )
{
$values = $_node->formatFormValues( array( \IPS\Request::i()->key => \IPS\Request::i()->value ) );
foreach( $values as $k => $v )
{
$k = str_replace( $nodeClass::$databasePrefix, "", $k );
@@ -544,7 +558,12 @@ class _Controller extends \IPS\Dispatcher\Controller
/* Clear guest page caches */
\IPS\Data\Cache::i()->clearAll();
\IPS\Output::i()->redirect( $url->setQueryString( array( 'do' => 'form', 'id' => \IPS\Request::i()->from ) ) );
$finishUrl = $url->setQueryString( array( 'do' => 'form', 'id' => \IPS\Request::i()->from ) );
if ( \IPS\Request::i()->subnode )
{
$finishUrl = $finishUrl->setQueryString( 'subnode', 1 );
}
\IPS\Output::i()->redirect( $finishUrl );
},
FALSE
);
@@ -949,12 +968,26 @@ class _Controller extends \IPS\Dispatcher\Controller
return $value;
},
);
$disabledPermissions = $node->disabledPermissions();
foreach ( $node->permissionTypes() as $k => $v )
{
$matrix->columns[ $k ] = function( $key, $value, $data ) use ( $current, $k, $v )
$matrix->columns[ $k ] = function( $key, $value, $data ) use ( $current, $k, $v, $disabledPermissions )
{
$groupId = mb_substr( $key, 0, -( 2 + mb_strlen( $k ) ) );
$disabled = ( $groupId == \IPS\Settings::i()->guest_group AND in_array( $k, array('review', 'rate' ) ) ) ? TRUE : FALSE;
$groupId = mb_substr( $key, 0, -( 2 + mb_strlen( $k ) ) );
$disabled = FALSE;
if ( array_key_exists( $groupId, $disabledPermissions ) and is_array( $disabledPermissions[ $groupId ] ) )
{
$disabled = in_array( $v, array_values( $disabledPermissions[ $groupId ] ) );
}
if ( $disabled === FALSE )
{
$disabled = ( $groupId == \IPS\Settings::i()->guest_group AND in_array( $k, array('review', 'rate' ) ) ) ? TRUE : FALSE;
}
$fieldValue = ( isset( $current[ "perm_{$v}" ] ) and ( $current[ "perm_{$v}" ] === '*' or in_array( $groupId, explode( ',', $current[ "perm_{$v}" ] ) ) ) );
return new \IPS\Helpers\Form\Checkbox( $key, ( $disabled ? 0 : $fieldValue ), NULL, array( 'disabled' => $disabled ) );
@@ -1031,7 +1064,8 @@ class _Controller extends \IPS\Dispatcher\Controller
\IPS\Data\Cache::i()->clearAll();
/* Redirect */
\IPS\Output::i()->redirect( $this->url->setQueryString( array( 'root' => ( $node->parent() ? $node->parent()->_id : '' ) ) ), 'saved' );
$this->_afterSave( NULL, $node );
return;
}
/* Display */