mirror of
https://github.com/xevidos/codiad.git
synced 2024-12-23 06:12:16 +01:00
Started work on a new archive management system, Market system, and drag and drop system, Updated update messages
This commit is contained in:
parent
b1d8b7df7f
commit
24830cc7e8
17 changed files with 1299 additions and 730 deletions
|
@ -37,8 +37,9 @@ Current Tasks:
|
||||||
|
|
||||||
Task List:
|
Task List:
|
||||||
|
|
||||||
|
* Add ability to create shortlinks with certain permissions for users to share.
|
||||||
* Add ability to login with LDAP
|
* Add ability to login with LDAP
|
||||||
* Add archive management
|
* Add archive management abilities
|
||||||
* Add bookmark files
|
* Add bookmark files
|
||||||
* Add custom market
|
* Add custom market
|
||||||
* \- Add in new admin interface ( Check admin-portal branch for progress )
|
* \- Add in new admin interface ( Check admin-portal branch for progress )
|
||||||
|
|
209
components/filemanager/class.archive.php
Normal file
209
components/filemanager/class.archive.php
Normal file
|
@ -0,0 +1,209 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
class Archive {
|
||||||
|
|
||||||
|
const COMMANDS = array(
|
||||||
|
|
||||||
|
"zip" => array(
|
||||||
|
"compress" => array(
|
||||||
|
"windows" => "",
|
||||||
|
"linux" => "zip -r9 %output% %input%",
|
||||||
|
),
|
||||||
|
"decompress" => array(
|
||||||
|
"windows" => "",
|
||||||
|
"linux" => "unzip %input%",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
const EXTENSIONS = array(
|
||||||
|
|
||||||
|
"zip" => "zip",
|
||||||
|
);
|
||||||
|
|
||||||
|
const INVALID_FILES = array(
|
||||||
|
".",
|
||||||
|
"..",
|
||||||
|
".DS_Store"
|
||||||
|
);
|
||||||
|
|
||||||
|
const SUPPORTED_TYPES = array(
|
||||||
|
|
||||||
|
"gz",
|
||||||
|
"rar",
|
||||||
|
"tar",
|
||||||
|
"tar.gz",
|
||||||
|
"zip",
|
||||||
|
);
|
||||||
|
|
||||||
|
public static $instance = null;
|
||||||
|
public $manager = null;
|
||||||
|
|
||||||
|
|
||||||
|
function __construct() {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function get_instance() {
|
||||||
|
|
||||||
|
if ( null == self::$instance ) {
|
||||||
|
|
||||||
|
self::$instance = new self;
|
||||||
|
}
|
||||||
|
|
||||||
|
return self::$instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function get_system() {
|
||||||
|
|
||||||
|
$system = "unknown";
|
||||||
|
|
||||||
|
if( strtoupper( substr( PHP_OS, 0, 3 ) ) === 'WIN' ) {
|
||||||
|
|
||||||
|
$system = "windows";
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$system = "linux";
|
||||||
|
}
|
||||||
|
return $system;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function compress( $path, $type = "zip" ) {
|
||||||
|
|
||||||
|
$response = array();
|
||||||
|
$supported = self::supports( $type );
|
||||||
|
$archive = self::get_instance();
|
||||||
|
|
||||||
|
if( $supported["status"] === "success" ) {
|
||||||
|
|
||||||
|
if( extension_loaded( self::EXTENSIONS["{$type}"] ) ) {
|
||||||
|
|
||||||
|
$response = call_user_func( array( $archive, "{$type}_c" ), $path );
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$response = $archive->execute( $type, "compress" );
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$response = $supported;
|
||||||
|
}
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function decompress( $file, $path = null ) {
|
||||||
|
|
||||||
|
$type = filetype( $file );
|
||||||
|
$response = array();
|
||||||
|
$supported = self::supports( $type );
|
||||||
|
$archive = self::get_instance();
|
||||||
|
|
||||||
|
if( $supported["status"] === "success" ) {
|
||||||
|
|
||||||
|
if( extension_loaded( self::EXTENSIONS["{$type}"] ) ) {
|
||||||
|
|
||||||
|
$response = call_user_func( array( $archive, "{$type}_d" ), $path );
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$response = $archive->execute( $type, "decompress" );
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$response = $supported;
|
||||||
|
}
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function supports( $type ) {
|
||||||
|
|
||||||
|
$response = array();
|
||||||
|
$type = strtolower( $type );
|
||||||
|
|
||||||
|
if( in_array( $type, self::SUPPORTED_TYPES ) ) {
|
||||||
|
|
||||||
|
$system = self::get_system();
|
||||||
|
$supported = false;
|
||||||
|
$extension = self::EXTENSIONS["{$type}"];
|
||||||
|
$command = self::COMMANDS["{$system}"]["{$type}"];
|
||||||
|
|
||||||
|
if( extension_loaded( $extension ) ) {
|
||||||
|
|
||||||
|
$type_supported = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( $type_supported ) {
|
||||||
|
|
||||||
|
$response["status"] = "success";
|
||||||
|
$response["message"] = "Type is supported";
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$response["status"] = "error";
|
||||||
|
$response["message"] = "The extension or program required to use this type of file does not seem to be installed.";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$response["status"] = "error";
|
||||||
|
$response["message"] = "The filetype supplied is not currently supported by Codiad's archive management system.";
|
||||||
|
}
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
|
function zip_c( $path, $output, &$archive = null ) {
|
||||||
|
|
||||||
|
if( $archive == null ) {
|
||||||
|
|
||||||
|
$path = rtrim( $path, '/' );
|
||||||
|
//$output = rtrim( $output, '/' ) . '/';
|
||||||
|
$archive = new ZipArchive();
|
||||||
|
if( $archive->open( $output, ZIPARCHIVE::CREATE ) !== true ) {
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$i = new RecursiveIteratorIterator( new RecursiveDirectoryIterator( $path ) );
|
||||||
|
|
||||||
|
foreach( $i as $file ) {
|
||||||
|
|
||||||
|
$file_name = $file->getBasename();
|
||||||
|
$file_path = $file->getPathname();
|
||||||
|
$relative_path = str_replace( $path, "", $file_path );
|
||||||
|
$relative_path = ltrim( $relative_path, '/' );
|
||||||
|
|
||||||
|
if( in_array( $file_name, self::INVALID_FILES ) ) {
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( is_file( $file_path ) ) {
|
||||||
|
|
||||||
|
$archive->addFile( $file_path, $relative_path );
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$archive->addEmptyDir( $relative_path );
|
||||||
|
$this->zip_c( $file_path, $output, $archive );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$archive->close();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function zip_d( $path, $output ) {
|
||||||
|
|
||||||
|
$status = false;
|
||||||
|
$output = rtrim( $output, '/' ) . '/';
|
||||||
|
$archive = new ZipArchive();
|
||||||
|
|
||||||
|
if ( $archive->open( $path ) === true ) {
|
||||||
|
|
||||||
|
$archive->extractTo( $output );
|
||||||
|
$archive->close();
|
||||||
|
$status = true;
|
||||||
|
}
|
||||||
|
return $status;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
|
@ -1,55 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author umbalaconmeogia at NOSPAM dot gmail dot com
|
|
||||||
* @link http://www.php.net/manual/de/class.ziparchive.php#110719
|
|
||||||
*/
|
|
||||||
class DirZip
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Add files and sub-directories in a folder to zip file.
|
|
||||||
* @param string $folder
|
|
||||||
* @param ZipArchive $zipFile
|
|
||||||
* @param int $exclusiveLength Number of text to be exclusived from the file path.
|
|
||||||
*/
|
|
||||||
private static function folderToZip($folder, &$zipFile, $exclusiveLength)
|
|
||||||
{
|
|
||||||
$handle = opendir($folder);
|
|
||||||
while ($f = readdir($handle)) {
|
|
||||||
if ($f != '.' && $f != '..') {
|
|
||||||
$filePath = "$folder/$f";
|
|
||||||
// Remove prefix from file path before add to zip.
|
|
||||||
$localPath = substr($filePath, $exclusiveLength);
|
|
||||||
if (is_file($filePath)) {
|
|
||||||
$zipFile->addFile($filePath, $localPath);
|
|
||||||
} elseif (is_dir($filePath)) {
|
|
||||||
// Add sub-directory.
|
|
||||||
$zipFile->addEmptyDir($localPath);
|
|
||||||
self::folderToZip($filePath, $zipFile, $exclusiveLength);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
closedir($handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Zip a folder (include itself).
|
|
||||||
* Usage:
|
|
||||||
* DirZip::zipDir('/path/to/sourceDir', '/path/to/out.zip');
|
|
||||||
*
|
|
||||||
* @param string $sourcePath Path of directory to be zip.
|
|
||||||
* @param string $outZipPath Path of output zip file.
|
|
||||||
*/
|
|
||||||
public static function zipDir($sourcePath, $outZipPath)
|
|
||||||
{
|
|
||||||
$pathInfo = pathInfo($sourcePath);
|
|
||||||
$parentPath = $pathInfo['dirname'];
|
|
||||||
$dirName = $pathInfo['basename'];
|
|
||||||
|
|
||||||
$z = new ZipArchive();
|
|
||||||
$z->open($outZipPath, ZIPARCHIVE::CREATE);
|
|
||||||
$z->addEmptyDir($dirName);
|
|
||||||
self::folderToZip($sourcePath, $z, strlen("$parentPath/"));
|
|
||||||
$z->close();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Codiad & Kent Safranski (codiad.com), distributed
|
* Copyright (c) Codiad & Kent Safranski (codiad.com), Telaaedifex distributed
|
||||||
* as-is and without warranty under the MIT License. See
|
* as-is and without warranty under the MIT License. See
|
||||||
* [root]/license.txt for more. This information must remain intact.
|
* [root]/license.txt for more. This information must remain intact.
|
||||||
*/
|
*/
|
||||||
|
@ -318,9 +318,16 @@ class Filemanager extends Common {
|
||||||
|
|
||||||
while( false !== ( $object = readdir( $handle ) ) ) {
|
while( false !== ( $object = readdir( $handle ) ) ) {
|
||||||
|
|
||||||
if( $object != "." && $object != ".." && $object != $this->controller ) {
|
if( $object != "." && $object != ".." && $object != "" ) {
|
||||||
|
|
||||||
if ( is_dir( $path . '/' . $object ) ) {
|
$full_path = $path . '/' . $object;
|
||||||
|
|
||||||
|
if( is_link( $full_path ) ) {
|
||||||
|
|
||||||
|
$full_path = readlink( $full_path );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( is_dir( $full_path ) ) {
|
||||||
|
|
||||||
$type = "directory";
|
$type = "directory";
|
||||||
$size = count( glob( $path . '/' . $object . '/*' ) );
|
$size = count( glob( $path . '/' . $object . '/*' ) );
|
||||||
|
|
|
@ -11,6 +11,12 @@
|
||||||
"applies-to" : "directory-only",
|
"applies-to" : "directory-only",
|
||||||
"onclick": "codiad.filemanager.createNode($('#context-menu').attr('data-path'),'directory');"
|
"onclick": "codiad.filemanager.createNode($('#context-menu').attr('data-path'),'directory');"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"title": "Archive",
|
||||||
|
"icon": "icon-folder",
|
||||||
|
"applies-to" : "directory-only",
|
||||||
|
"onclick": "codiad.filemanager.archive( $('#context-menu').attr('data-path') );"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"title": "Break",
|
"title": "Break",
|
||||||
"icon": null,
|
"icon": null,
|
||||||
|
|
|
@ -86,9 +86,20 @@ if( isset( $_GET["destination"] ) ) {
|
||||||
//////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
$Filemanager = new Filemanager();
|
$Filemanager = new Filemanager();
|
||||||
|
$Archive = new Archive();
|
||||||
|
|
||||||
switch( $action ) {
|
switch( $action ) {
|
||||||
|
|
||||||
|
case 'archive':
|
||||||
|
|
||||||
|
if( ! isset( $_GET["path"] ) ) {
|
||||||
|
|
||||||
|
exit( formatJSEND( "error", "No path specified." ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
//$Archive->compress( );
|
||||||
|
break;
|
||||||
|
|
||||||
case 'create':
|
case 'create':
|
||||||
|
|
||||||
if( isset( $_GET["type"] ) ) {
|
if( isset( $_GET["type"] ) ) {
|
||||||
|
|
|
@ -49,7 +49,7 @@ if (isset($_GET['type']) && ($_GET['type']=='directory' || $_GET['type']=='root'
|
||||||
|
|
||||||
$filename .= '.zip';
|
$filename .= '.zip';
|
||||||
$download_file = $targetPath.$filename;
|
$download_file = $targetPath.$filename;
|
||||||
DirZip::zipDir($dir, $targetPath .$filename);
|
Archive::compress( $dir, $targetPath . $filename );
|
||||||
} elseif (isAvailable('system') && stripos(PHP_OS, 'win') === false) {
|
} elseif (isAvailable('system') && stripos(PHP_OS, 'win') === false) {
|
||||||
# Execute the tar command and save file
|
# Execute the tar command and save file
|
||||||
$filename .= '.tar.gz';
|
$filename .= '.tar.gz';
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,24 +1,42 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Codiad & daeks (codiad.com), distributed
|
* Copyright (c) Codiad & daeks (codiad.com), and Isaac Brown (telaaedifex.com), distributed
|
||||||
* as-is and without warranty under the MIT License. See
|
* as-is and without warranty under the MIT License. See
|
||||||
* [root]/license.txt for more. This information must remain intact.
|
* [root]/license.txt for more. This information must remain intact.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
(function(global, $){
|
( function( global, $ ) {
|
||||||
|
|
||||||
var codiad = global.codiad;
|
let codiad = global.codiad;
|
||||||
|
|
||||||
$(function() {
|
$( function() {
|
||||||
codiad.market.init();
|
|
||||||
});
|
|
||||||
|
|
||||||
codiad.market = {
|
codiad.market.init();
|
||||||
|
});
|
||||||
|
|
||||||
controller: 'components/market/controller.php',
|
codiad.market = {
|
||||||
dialog: 'components/market/dialog.php',
|
|
||||||
|
|
||||||
init: function() {
|
controller: 'components/market/controller.php',
|
||||||
},
|
dialog: 'components/market/dialog.php',
|
||||||
|
|
||||||
|
init: function() {},
|
||||||
|
|
||||||
|
get_installed_plugins: function() {},
|
||||||
|
get_installed_themes: function() {},
|
||||||
|
|
||||||
|
get_plugins: function() {},
|
||||||
|
get_themes: function() {},
|
||||||
|
|
||||||
|
install: function() {},
|
||||||
|
|
||||||
|
search: function() {},
|
||||||
|
|
||||||
|
uninstall: function() {},
|
||||||
|
|
||||||
|
update: function() {},
|
||||||
|
};
|
||||||
|
})( this, jQuery );
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////
|
||||||
// Open marketplace
|
// Open marketplace
|
||||||
|
@ -99,4 +117,5 @@
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
})(this, jQuery);
|
|
||||||
|
*/
|
|
@ -262,12 +262,6 @@ class Project extends Common {
|
||||||
OR id IN ( SELECT project FROM access WHERE user = ? );";
|
OR id IN ( SELECT project FROM access WHERE user = ? );";
|
||||||
$bind_variables = array( $_SESSION["user"], $_SESSION["user_id"] );
|
$bind_variables = array( $_SESSION["user"], $_SESSION["user_id"] );
|
||||||
$return = $sql->query( $query, $bind_variables, array() );
|
$return = $sql->query( $query, $bind_variables, array() );
|
||||||
|
|
||||||
if( empty( $return ) ) {
|
|
||||||
|
|
||||||
$return = formatJSEND( "error", "No projects found." );
|
|
||||||
}
|
|
||||||
|
|
||||||
return( $return );
|
return( $return );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -337,16 +331,17 @@ class Project extends Common {
|
||||||
|
|
||||||
public function GetFirst() {
|
public function GetFirst() {
|
||||||
|
|
||||||
|
if( ! is_array( $this->projects ) || empty( $this->projects ) ) {
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
$this->name = $this->projects[0]['name'];
|
$this->name = $this->projects[0]['name'];
|
||||||
$this->path = $this->projects[0]['path'];
|
$this->path = $this->projects[0]['path'];
|
||||||
|
|
||||||
// Set Sessions
|
// Set Sessions
|
||||||
$_SESSION['project'] = $this->path;
|
$_SESSION['project'] = $this->path;
|
||||||
|
return $this->projects[0];
|
||||||
if ( ! $this->no_return ) {
|
|
||||||
|
|
||||||
echo formatJSEND( "success", $this->projects[0] );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////
|
||||||
|
|
|
@ -154,7 +154,15 @@ if( $_GET['action'] == 'get_current' ) {
|
||||||
|
|
||||||
$Project->no_return = true;
|
$Project->no_return = true;
|
||||||
}
|
}
|
||||||
$Project->GetFirst();
|
$project = $Project->GetFirst();
|
||||||
|
|
||||||
|
if( $project == null ) {
|
||||||
|
|
||||||
|
exit( formatJSEND( "error", "Error, Could not load a projet." ) );
|
||||||
|
} else {
|
||||||
|
|
||||||
|
exit( formatJSEND( "success", $project ) );
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
// Load current
|
// Load current
|
||||||
|
@ -162,7 +170,7 @@ if( $_GET['action'] == 'get_current' ) {
|
||||||
$project_name = $Project->GetName();
|
$project_name = $Project->GetName();
|
||||||
if( ! $no_return ) {
|
if( ! $no_return ) {
|
||||||
|
|
||||||
echo formatJSEND( "success", array( "name" => $project_name, "path" => $_SESSION['project'] ) );
|
exit( formatJSEND( "success", array( "name" => $project_name, "path" => $_SESSION['project'] ) ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
107
components/tasks/class.tasks.php
Normal file
107
components/tasks/class.tasks.php
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
require_once('../../common.php');
|
||||||
|
|
||||||
|
class Tasks {
|
||||||
|
|
||||||
|
function __construct() {}
|
||||||
|
|
||||||
|
static function build_command( $command, $arguments = array() ) {
|
||||||
|
|
||||||
|
$query = "";
|
||||||
|
$query .= "& echo $!";
|
||||||
|
return $query;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function create_task( $command, $arguments = array() ) {
|
||||||
|
|
||||||
|
$return = array(
|
||||||
|
"status" => "none",
|
||||||
|
"message" => "",
|
||||||
|
);
|
||||||
|
$command = self::build_command( $command, $arguments );
|
||||||
|
|
||||||
|
if( function_exists( "exec" ) ) {
|
||||||
|
|
||||||
|
|
||||||
|
} elseif( function_exists( "shell_exec" ) ) {
|
||||||
|
|
||||||
|
|
||||||
|
} elseif( function_exists( "system" ) ) {
|
||||||
|
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$return["status"] = "error";
|
||||||
|
$return["message"] = "Could not find an enabled shell execution function.";
|
||||||
|
}
|
||||||
|
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function get_task( $id ) {
|
||||||
|
|
||||||
|
$return = array(
|
||||||
|
"status" => "none",
|
||||||
|
"message" => "",
|
||||||
|
);
|
||||||
|
|
||||||
|
if( is_numeric( $id ) ) {
|
||||||
|
|
||||||
|
if( function_exists( "exec" ) ) {
|
||||||
|
|
||||||
|
|
||||||
|
} elseif( function_exists( "shell_exec" ) ) {
|
||||||
|
|
||||||
|
|
||||||
|
} elseif( function_exists( "system" ) ) {
|
||||||
|
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$return["status"] = "error";
|
||||||
|
$return["message"] = "Could not find an enabled shell execution function.";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$return["status"] = "error";
|
||||||
|
$return["message"] = "Invalid PID";
|
||||||
|
}
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function kill_task( $id ) {
|
||||||
|
|
||||||
|
$return = array(
|
||||||
|
"status" => "none",
|
||||||
|
"message" => "",
|
||||||
|
);
|
||||||
|
|
||||||
|
if( is_numeric( $id ) ) {
|
||||||
|
|
||||||
|
$command = "kill -9 {$id}";
|
||||||
|
|
||||||
|
if( function_exists( "exec" ) ) {
|
||||||
|
|
||||||
|
|
||||||
|
} elseif( function_exists( "shell_exec" ) ) {
|
||||||
|
|
||||||
|
|
||||||
|
} elseif( function_exists( "system" ) ) {
|
||||||
|
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$return["status"] = "error";
|
||||||
|
$return["message"] = "Could not find an enabled shell execution function.";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$return["status"] = "error";
|
||||||
|
$return["message"] = "Invalid PID";
|
||||||
|
}
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
29
components/tasks/controller.php
Normal file
29
components/tasks/controller.php
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
require_once('./class.tasks.php');
|
||||||
|
|
||||||
|
if( isset( $_POST["action"] ) ) {
|
||||||
|
|
||||||
|
$action = $_POST["action"];
|
||||||
|
} elseif( isset( $_GET["action"] ) ) {
|
||||||
|
|
||||||
|
$action = $_GET["action"];
|
||||||
|
} else {
|
||||||
|
|
||||||
|
exit( formatJSEND( "error", "No action was specified" ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
switch( $action ) {
|
||||||
|
|
||||||
|
case( "get_task" ):
|
||||||
|
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
|
||||||
|
exit( formatJSEND( "error", "An invalid action was specified" ) );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
55
components/tasks/init.js
Normal file
55
components/tasks/init.js
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
( function( global, $ ) {
|
||||||
|
|
||||||
|
var codiad = global.codiad;
|
||||||
|
|
||||||
|
$( function() {
|
||||||
|
|
||||||
|
codiad.project.init();
|
||||||
|
});
|
||||||
|
|
||||||
|
codiad.tasks = {
|
||||||
|
|
||||||
|
controller: 'components/tasks/controller.php',
|
||||||
|
|
||||||
|
init: function() {},
|
||||||
|
|
||||||
|
get_task: function( id ) {
|
||||||
|
|
||||||
|
let _this = this;
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: _this.controller,
|
||||||
|
type: "POST",
|
||||||
|
dataType: 'JSON',
|
||||||
|
data: {
|
||||||
|
"action": 'mypit_email_save_email',
|
||||||
|
"data": JSON.stringify( data ),
|
||||||
|
},
|
||||||
|
success: function( result ) {
|
||||||
|
|
||||||
|
if( ! isNaN( result ) ) {
|
||||||
|
|
||||||
|
_this.current_id = result;
|
||||||
|
}
|
||||||
|
console.log( result );
|
||||||
|
},
|
||||||
|
error: function(jqXHR, textStatus, errorThrown) {
|
||||||
|
|
||||||
|
document.getElementById( 'mypit_message' ).style.color = "#a94442";
|
||||||
|
document.getElementById( 'mypit_message' ).style.backgroundColor = "#f2dede";
|
||||||
|
document.getElementById( 'mypit_message' ).style.borderColor = "#ebccd1";
|
||||||
|
document.getElementById( 'mypit_message' ).innerHTML = "<p style='text-align: center;'>Error saving email. Please contact the system administrator.</p>";
|
||||||
|
document.getElementById( 'mypit_message' ).style.display = "block";
|
||||||
|
jQuery('html, body').animate( {scrollTop: 0}, 300 );
|
||||||
|
console.log('jqXHR:');
|
||||||
|
console.log(jqXHR);
|
||||||
|
console.log('textStatus:');
|
||||||
|
console.log(textStatus);
|
||||||
|
console.log('errorThrown:');
|
||||||
|
console.log(errorThrown);
|
||||||
|
throw "Error sending emails!";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
}
|
||||||
|
});
|
|
@ -66,11 +66,11 @@ switch($_GET['action']){
|
||||||
?>
|
?>
|
||||||
<br><br><b><label><?php echo htmlentities("Your current version of Codiad is up to date."); ?></label></b>
|
<br><br><b><label><?php echo htmlentities("Your current version of Codiad is up to date."); ?></label></b>
|
||||||
<?php
|
<?php
|
||||||
if( $vars[0]['data']['name'] != '' ) {
|
/*if( $vars[0]['data']['name'] != '' ) {
|
||||||
?>
|
?>
|
||||||
<em><?php i18n("Last update was done by "); ?><?php echo $vars[0]['data']['name']; ?>.</em>
|
<em><?php i18n("Last update was done by "); ?><?php echo $vars[0]['data']['name']; ?>.</em>
|
||||||
<?php
|
<?php
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<?php
|
<?php
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
$('#modal-content form')
|
$('#modal-content form')
|
||||||
.die('submit'); // Prevent form bubbling
|
.die('submit'); // Prevent form bubbling
|
||||||
codiad.modal.load(500, this.dialog + '?action=check');
|
codiad.modal.load(500, this.dialog + '?action=check');
|
||||||
$('#modal-content').html('<div id="modal-loading"></div><div align="center">' + i18n("Contacting GitHub...") + '</div><br>');
|
$('#modal-content').html('<div id="modal-loading"></div><div align="center">' + i18n("Contacting Git Server...") + '</div><br>');
|
||||||
},
|
},
|
||||||
|
|
||||||
check_for_update: function () {
|
check_for_update: function () {
|
||||||
|
|
|
@ -421,3 +421,7 @@
|
||||||
#file-manager .loading {
|
#file-manager .loading {
|
||||||
background-image: url(images/spinner.gif);
|
background-image: url(images/spinner.gif);
|
||||||
}
|
}
|
||||||
|
#file-manager .drag_over {
|
||||||
|
background-color: #4a4a4a;
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
Loading…
Reference in a new issue