mirror of
https://github.com/nextcloud/nextcloudpi.git
synced 2026-01-10 15:12:01 -03:30
ncp-web: refresh sidebar after launching actions
This commit is contained in:
parent
e652777b9d
commit
4f321ccfa4
@ -23,7 +23,8 @@ because they do not provide a compatible user/permissions system"
|
||||
is_active()
|
||||
{
|
||||
local SRCDIR
|
||||
SRCDIR=$( cd /var/www/nextcloud; sudo -u www-data php occ config:system:get datadirectory ) || return 1;
|
||||
[[ "$( id -u )" != 33 ]] && local SUDO="sudo -u www-data"
|
||||
SRCDIR=$( $SUDO php /var/www/nextcloud/occ config:system:get datadirectory ) || return 1;
|
||||
[[ "$SRCDIR" != "/var/www/nextcloud/data" ]]
|
||||
}
|
||||
|
||||
|
||||
@ -24,6 +24,8 @@
|
||||
exit();
|
||||
}
|
||||
session_start();
|
||||
|
||||
include('sidebar.php');
|
||||
$modules_path = '/usr/local/etc/nextcloudpi-config.d/';
|
||||
$l10nDir = "l10n";
|
||||
|
||||
@ -160,40 +162,7 @@ HTML;
|
||||
<div id='overlay' class="hidden"></div>
|
||||
<div id="app-navigation">
|
||||
<ul id="ncp-options">
|
||||
<?php
|
||||
|
||||
// fill options with contents from directory
|
||||
$files = array_diff(scandir($modules_path), array('.', '..', 'nc-wifi.sh', 'nc-info.sh', 'l10n'));
|
||||
|
||||
foreach ($files as $file) {
|
||||
|
||||
$script = pathinfo($file, PATHINFO_FILENAME);
|
||||
|
||||
|
||||
$txt = file_get_contents($modules_path . $file);
|
||||
|
||||
$active = "";
|
||||
$etc = '/usr/local/etc';
|
||||
exec("bash -c \"source $etc/library.sh && is_active_script $etc/nextcloudpi-config.d/$script\".sh", $output, $ret);
|
||||
if ($ret == 0) {
|
||||
$active = " ✓";
|
||||
}
|
||||
|
||||
echo "<li id=\"$script\" class=\"nav-recent\">";
|
||||
echo "<a href=\"#\"> {$l->__($script, $script)}$active </a>";
|
||||
|
||||
if (preg_match('/^DESCRIPTION="(.*)"$/m', $txt, $matches))
|
||||
echo "<input id=\"$script-desc\" type=\"hidden\" value=\"{$l->__($matches[1], $script)}\" />";
|
||||
|
||||
if (preg_match('/^INFO="(.*)"/msU', $txt, $matches))
|
||||
echo "<input id=\"$script-info\" type=\"hidden\" value=\"{$l->__($matches[1], $script)}\" />";
|
||||
|
||||
if (preg_match('/^INFOTITLE="(.*)"/msU', $txt, $matches))
|
||||
echo "<input id=\"$script-infotitle\" type=\"hidden\" value=\"{$l->__($matches[1], $script)}\" />";
|
||||
|
||||
echo "</li>";
|
||||
}
|
||||
?>
|
||||
<?php echo print_sidebar($l); ?>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
@ -194,6 +194,14 @@ else
|
||||
echo ' "suggestions": ' . json_encode( $suggestions ) . ' , ';
|
||||
echo ' "ret": "' . $ret . '" }';
|
||||
}
|
||||
else if ( $_POST['action'] == "sidebar" )
|
||||
{
|
||||
require( "sidebar.php" );
|
||||
// return JSON
|
||||
echo '{ "token": "' . getCSRFToken() . '",'; // Get new token
|
||||
echo ' "output": ' . json_encode( print_sidebar( $l ) ) . ' , ';
|
||||
echo ' "ret": "0" }';
|
||||
}
|
||||
}
|
||||
|
||||
// License
|
||||
|
||||
@ -27,6 +27,48 @@ function switch_to_section( name )
|
||||
selectedID = null;
|
||||
}
|
||||
|
||||
function set_sidebar_click_handlers()
|
||||
{
|
||||
// Show selected option configuration box
|
||||
$( 'li' , '#app-navigation' ).on('click', function(e)
|
||||
{
|
||||
if ( selectedID == this.get( '.id' ) ) // already selected
|
||||
return;
|
||||
|
||||
if ( confLock ) return;
|
||||
confLock = true;
|
||||
|
||||
if ( window.innerWidth <= 768 )
|
||||
close_menu();
|
||||
|
||||
$( '#' + selectedID ).set('-active');
|
||||
var that = this;
|
||||
$.request('post', 'ncp-launcher.php', { action:'cfgreq',
|
||||
ref:this.get('.id') ,
|
||||
csrf_token: $( '#csrf-token' ).get( '.value' ) }).then(
|
||||
function success( result )
|
||||
{
|
||||
cfgreqReceive( result, that );
|
||||
confLock = false;
|
||||
}).error( errorMsg );
|
||||
});
|
||||
}
|
||||
|
||||
function reload_sidebar()
|
||||
{
|
||||
// request
|
||||
$.request('post', 'ncp-launcher.php', { action:'sidebar',
|
||||
csrf_token: $( '#csrf-token' ).get( '.value' ) }).then(
|
||||
function success( result )
|
||||
{
|
||||
var ret = $.parseJSON( result );
|
||||
if ( ret.token )
|
||||
$('#csrf-token').set( { value: ret.token } );
|
||||
$('#ncp-options').ht( ret.output );
|
||||
set_sidebar_click_handlers();
|
||||
}).error( errorMsg );
|
||||
}
|
||||
|
||||
function cfgreqReceive( result, item )
|
||||
{
|
||||
var ret = $.parseJSON( result );
|
||||
@ -71,29 +113,7 @@ $(function()
|
||||
textarea[0].scrollTop = textarea[0].scrollHeight;
|
||||
}, false);
|
||||
|
||||
// Show selected option configuration box
|
||||
$( 'li' , '#app-navigation' ).on('click', function(e)
|
||||
{
|
||||
if ( selectedID == this.get( '.id' ) ) // already selected
|
||||
return;
|
||||
|
||||
if ( confLock ) return;
|
||||
confLock = true;
|
||||
|
||||
if ( window.innerWidth <= 768 )
|
||||
close_menu();
|
||||
|
||||
$( '#' + selectedID ).set('-active');
|
||||
var that = this;
|
||||
$.request('post', 'ncp-launcher.php', { action:'cfgreq',
|
||||
ref:this.get('.id') ,
|
||||
csrf_token: $( '#csrf-token' ).get( '.value' ) }).then(
|
||||
function success( result )
|
||||
{
|
||||
cfgreqReceive( result, that );
|
||||
confLock = false;
|
||||
}).error( errorMsg );
|
||||
});
|
||||
set_sidebar_click_handlers();
|
||||
|
||||
// Launch selected script
|
||||
$( '#config-button' ).on('click', function(e)
|
||||
@ -145,8 +165,15 @@ $(function()
|
||||
$('#csrf-token').set( { value: ret.token } );
|
||||
if ( ret.ret ) // means that the process was launched
|
||||
{
|
||||
if ( ret.ret == '0' ) $('#circle-retstatus').set( '+icon-green-circle' );
|
||||
else $('#circle-retstatus').set( '-icon-green-circle' );
|
||||
if ( ret.ret == '0' )
|
||||
{
|
||||
if( ret.ref && ret.ref == 'nc-update' )
|
||||
window.location.reload( true );
|
||||
reload_sidebar();
|
||||
$('#circle-retstatus').set( '+icon-green-circle' );
|
||||
}
|
||||
else
|
||||
$('#circle-retstatus').set( '-icon-green-circle' );
|
||||
$('#circle-retstatus').show();
|
||||
}
|
||||
else // print error from server instead
|
||||
@ -155,9 +182,6 @@ $(function()
|
||||
$('#config-button').set('@disabled',null);
|
||||
$('#loading-gif').hide();
|
||||
confLock = false;
|
||||
|
||||
if( ret.ref && ret.ref == 'nc-update' );
|
||||
window.location.reload( true );
|
||||
}).error( errorMsg );
|
||||
});
|
||||
|
||||
|
||||
61
ncp-web/sidebar.php
Normal file
61
ncp-web/sidebar.php
Normal file
@ -0,0 +1,61 @@
|
||||
<?php
|
||||
///
|
||||
// NextcloudPlus Web Panel Side bar
|
||||
//
|
||||
// Copyleft 2018 by Ignacio Nunez Hernanz <nacho _a_t_ ownyourbits _d_o_t_ com>
|
||||
// GPL licensed (see end of file) * Use at your own risk!
|
||||
//
|
||||
// More at https://ownyourbits.com/2017/02/13/nextcloud-ready-raspberry-pi-image/
|
||||
///
|
||||
|
||||
// fill options with contents from directory
|
||||
|
||||
function print_sidebar( $l /* translations l10n object */ )
|
||||
{
|
||||
$modules_path = '/usr/local/etc/nextcloudpi-config.d/';
|
||||
$files = array_diff(scandir($modules_path), array('.', '..', 'nc-wifi.sh', 'nc-info.sh', 'l10n'));
|
||||
$ret = "";
|
||||
|
||||
foreach ($files as $file) {
|
||||
$script = pathinfo($file, PATHINFO_FILENAME);
|
||||
$txt = file_get_contents($modules_path . $file);
|
||||
|
||||
$active = "";
|
||||
$etc = '/usr/local/etc';
|
||||
exec("bash -c \"source $etc/library.sh && is_active_script $etc/nextcloudpi-config.d/$script\".sh", $output, $retval);
|
||||
if ($retval == 0)
|
||||
$active = " ✓";
|
||||
|
||||
$ret .= "<li id=\"$script\" class=\"nav-recent\">";
|
||||
$ret .= "<a href=\"#\"> {$l->__($script, $script)}$active </a>";
|
||||
|
||||
if (preg_match('/^DESCRIPTION="(.*)"$/m', $txt, $matches))
|
||||
$ret .= "<input id=\"$script-desc\" type=\"hidden\" value=\"{$l->__($matches[1], $script)}\" />";
|
||||
|
||||
if (preg_match('/^INFO="(.*)"/msU', $txt, $matches))
|
||||
$ret .= "<input id=\"$script-info\" type=\"hidden\" value=\"{$l->__($matches[1], $script)}\" />";
|
||||
|
||||
if (preg_match('/^INFOTITLE="(.*)"/msU', $txt, $matches))
|
||||
$ret .= "<input id=\"$script-infotitle\" type=\"hidden\" value=\"{$l->__($matches[1], $script)}\" />";
|
||||
|
||||
$ret .= "</li>";
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
// License
|
||||
//
|
||||
// This script is free software; you can redistribute it and/or modify it
|
||||
// under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 2 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This script is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this script; if not, write to the
|
||||
// Free Software Foundation, Inc., 59 Temple Place, Suite 330,
|
||||
// Boston, MA 02111-1307 USA
|
||||
?>
|
||||
Loading…
x
Reference in New Issue
Block a user