diff options
author | nachoparker <nacho@ownyourbits.com> | 2018-04-04 16:49:24 +0300 |
---|---|---|
committer | nachoparker <nacho@ownyourbits.com> | 2018-04-04 16:57:18 +0300 |
commit | 4f321ccfa4ed82a5c72d6580962493f33919411c (patch) | |
tree | 5bf92107b5d019466d28061be7bd078ea9a17ad2 | |
parent | e652777b9dc1dc6f81dc9dd144f230cf16edc683 (diff) |
ncp-web: refresh sidebar after launching actionsv0.53.18
-rw-r--r-- | etc/nextcloudpi-config.d/nc-datadir.sh | 3 | ||||
-rw-r--r-- | ncp-web/index.php | 37 | ||||
-rw-r--r-- | ncp-web/ncp-launcher.php | 8 | ||||
-rw-r--r-- | ncp-web/ncp.js | 80 | ||||
-rw-r--r-- | ncp-web/sidebar.php | 61 |
5 files changed, 126 insertions, 63 deletions
diff --git a/etc/nextcloudpi-config.d/nc-datadir.sh b/etc/nextcloudpi-config.d/nc-datadir.sh index cf59eb15..dd21753a 100644 --- a/etc/nextcloudpi-config.d/nc-datadir.sh +++ b/etc/nextcloudpi-config.d/nc-datadir.sh @@ -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" ]] } diff --git a/ncp-web/index.php b/ncp-web/index.php index dac32d7a..642688f3 100644 --- a/ncp-web/index.php +++ b/ncp-web/index.php @@ -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> diff --git a/ncp-web/ncp-launcher.php b/ncp-web/ncp-launcher.php index e859db3b..62bf09ef 100644 --- a/ncp-web/ncp-launcher.php +++ b/ncp-web/ncp-launcher.php @@ -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 diff --git a/ncp-web/ncp.js b/ncp-web/ncp.js index 1b2e4128..6ef408fa 100644 --- a/ncp-web/ncp.js +++ b/ncp-web/ncp.js @@ -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 ); }); diff --git a/ncp-web/sidebar.php b/ncp-web/sidebar.php new file mode 100644 index 00000000..f8ee63fa --- /dev/null +++ b/ncp-web/sidebar.php @@ -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 +?> |