Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/nextcloudpi.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornachoparker <nacho@ownyourbits.com>2018-04-04 16:49:24 +0300
committernachoparker <nacho@ownyourbits.com>2018-04-04 16:57:18 +0300
commit4f321ccfa4ed82a5c72d6580962493f33919411c (patch)
tree5bf92107b5d019466d28061be7bd078ea9a17ad2
parente652777b9dc1dc6f81dc9dd144f230cf16edc683 (diff)
ncp-web: refresh sidebar after launching actionsv0.53.18
-rw-r--r--etc/nextcloudpi-config.d/nc-datadir.sh3
-rw-r--r--ncp-web/index.php37
-rw-r--r--ncp-web/ncp-launcher.php8
-rw-r--r--ncp-web/ncp.js80
-rw-r--r--ncp-web/sidebar.php61
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
+?>