1
0
mirror of https://github.com/misterunknown/ifm.git synced 2025-08-11 18:43:58 +02:00

prepare for inline mode, added support for empty config

This commit is contained in:
Marco Dickert
2017-07-05 21:36:02 +02:00
parent 82ddaaa131
commit dad9738ee4

View File

@@ -24,16 +24,13 @@ class IFM {
"auth" => 0,"auth_source" => 'inlineadmin:$2y$10$0Bnm5L4wKFHRxJgNq.oZv.v7yXhkJZQvinJYR2p6X1zPvzyDRUVRC', "auth" => 0,"auth_source" => 'inlineadmin:$2y$10$0Bnm5L4wKFHRxJgNq.oZv.v7yXhkJZQvinJYR2p6X1zPvzyDRUVRC',
"root_dir" => "","defaulttimezone" => "Europe/Berlin","tmp_dir" => "","ajaxrequest" => 1 "root_dir" => "","defaulttimezone" => "Europe/Berlin","tmp_dir" => "","ajaxrequest" => 1
); );
private $config = array();
public function __construct( $config ) { private $config = array();
public $mode = "";
public function __construct( $config=array() ) {
session_start(); session_start();
if( ! is_array( $config ) ) { $this->config = array_merge( $this->defaultconfig, $config );
trigger_error( "IFM: could not load config" );
exit( 1 );
} else {
$this->config = array_merge( $this->defaultconfig, $config );
}
} }
/** /**
@@ -46,14 +43,36 @@ class IFM {
<title>IFM - improved file manager</title> <title>IFM - improved file manager</title>
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">';
<style type="text/css">';?> @@@src/includes/bootstrap.min.css@@@ <?php print '</style> $this->getCSS();
<style type="text/css">';?> @@@src/includes/ekko-lightbox.min.css@@@ <?php print '</style> print '
<style type="text/css">';?> @@@src/includes/fontello-embedded.css@@@ <?php print '</style>
<style type="text/css">';?> @@@src/style.css@@@ <?php print '</style>
</head> </head>
<body> <body>
<div id="ifm"></div> <div id="ifm"></div>';
$this->getJS();
print '
</body>
</html>
';
}
public function getInlineApplication() {
$this->getCSS();
print '<div id="ifm"></div>';
$this->getJS();
}
private function getCSS() {
print '
<style type="text/css">';?> @@@src/includes/bootstrap.min.css@@@ <?php print '</style>
<style type="text/css">';?> @@@src/includes/ekko-lightbox.min.css@@@ <?php print '</style>
<style type="text/css">';?> @@@src/includes/fontello-embedded.css@@@ <?php print '</style>
<style type="text/css">';?> @@@src/style.css@@@ <?php print '</style>
';
}
private function getJS() {
print '
<script>';?> @@@src/includes/ace.js@@@ <?php print '</script> <script>';?> @@@src/includes/ace.js@@@ <?php print '</script>
<script>';?> @@@src/includes/jquery.min.js@@@ <?php print '</script> <script>';?> @@@src/includes/jquery.min.js@@@ <?php print '</script>
<script>';?> @@@src/includes/bootstrap.min.js@@@ <?php print '</script> <script>';?> @@@src/includes/bootstrap.min.js@@@ <?php print '</script>
@@ -62,8 +81,6 @@ class IFM {
<script>';?> @@@src/includes/bootstrap-treeview.min.js@@@ <?php print '</script> <script>';?> @@@src/includes/bootstrap-treeview.min.js@@@ <?php print '</script>
<script>';?> @@@src/includes/mustache.min.js@@@ <?php print '</script> <script>';?> @@@src/includes/mustache.min.js@@@ <?php print '</script>
<script>';?> @@@src/ifm.js@@@ <?php print '</script> <script>';?> @@@src/ifm.js@@@ <?php print '</script>
</body>
</html>
'; ';
} }
@@ -85,7 +102,7 @@ class IFM {
$this->getFiles( "" ); $this->getFiles( "" );
} }
elseif( $_REQUEST["api"] == "getConfig" ) { elseif( $_REQUEST["api"] == "getConfig" ) {
echo json_encode( $this->config ); $this->getConfig();
} elseif( $_REQUEST["api"] == "getTemplates" ) { } elseif( $_REQUEST["api"] == "getTemplates" ) {
echo json_encode( $this->getTemplates() ); echo json_encode( $this->getTemplates() );
} else { } else {
@@ -117,17 +134,20 @@ class IFM {
} }
} }
public function run() { public function run( $mode="standalone" ) {
if ( $this->checkAuth() ) { if ( $this->checkAuth() ) {
// go to our root_dir // go to our root_dir
if( ! is_dir( realpath( $this->config['root_dir'] ) ) || ! is_readable( realpath( $this->config['root_dir'] ) ) ) if( ! is_dir( realpath( $this->config['root_dir'] ) ) || ! is_readable( realpath( $this->config['root_dir'] ) ) )
die( "Cannot access root_dir."); die( "Cannot access root_dir.");
else else
chdir( realpath( $this->config['root_dir'] ) ); chdir( realpath( $this->config['root_dir'] ) );
if ( ! isset($_REQUEST['api']) ) { $this->mode = $mode;
$this->getApplication(); if ( isset($_REQUEST['api']) ) {
} else {
$this->handleRequest(); $this->handleRequest();
} elseif( $mode == "standalone" ) {
$this->getApplication();
} else {
$this->getInlineApplication();
} }
} }
} }
@@ -207,6 +227,13 @@ class IFM {
echo json_encode( array_merge( $dirs, $files ) ); echo json_encode( array_merge( $dirs, $files ) );
} }
private function getConfig() {
$ret = $this->config;
$ret['inline'] = ( $this->mode == "inline" ) ? true : false;
$ret['isDocroot'] = ( realpath( IFMConfig::root_dir ) == dirname( __FILE__ ) ) ? "true" : "false";
echo json_encode( $ret );
}
private function getFolderTreeRecursive( $start_dir ) { private function getFolderTreeRecursive( $start_dir ) {
$ret = array(); $ret = array();
$start_dir = realpath( $start_dir ); $start_dir = realpath( $start_dir );