123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417 |
- <?php
- include '../auth.php';
- if(isset($_GET["bkend"])){
- if(isset($_GET["query"])){
- if($_GET["query"] == "playlist"){
- $intdirs = array_filter(glob("storage/" . "*"), 'is_dir');
- $IntDirWInfo = [];
- foreach ($intdirs as &$intdir) {
- preg_match('/storage\/([^\/]*)/', $intdir, $out_playlist);
- $tmp = [];
- if(ctype_xdigit($out_playlist[1])){
- $tmp["name"] = "Internal - ".hex2bin($out_playlist[1]);
- }else{
- $tmp["name"] = "Internal - ".$out_playlist[1];
- }
- $tmp["dir"] = "../../../Video/".$intdir."/";
- $tmp["drive"] = "internal";
- $tmp["playlist"] = $out_playlist[1];
- array_push($IntDirWInfo,$tmp);
- }
- if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
- $ExtDirWInfo = []; //TODO: add ext support
- }else{
- if (file_exists("/media/")){
- $extdirs = array_filter(glob("/media/*/Video/*"), 'is_dir');
- $ExtDirWInfo = [];
- foreach ($extdirs as &$extdir) {
- preg_match('/\/media\/([^\/]*)\//', $extdir, $out_storage);
- preg_match('/Video\/([^\/]*)/', $extdir, $out_playlist);
- $tmp = [];
- if(ctype_xdigit($out_playlist[1])){
- $tmp["name"] = $out_storage[1]." - ".hex2bin($out_playlist[1]);
- }else{
- $tmp["name"] = $out_storage[1]." - ".$out_playlist[1];
- }
- $tmp["dir"] = $extdir."/";
- $tmp["drive"] = $out_storage[1];
- $tmp["playlist"] = $out_playlist[1];
- array_push($ExtDirWInfo,$tmp);
- }
- }
- }
- $dirs = array_merge($IntDirWInfo,$ExtDirWInfo);
- echo json_encode($dirs);
- }else if($_GET["query"] == "storage"){
- if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
- $extdirs = [];
- }else{
- $extdirs = array_filter(glob("/media/*"), 'is_dir');
- }
- $dirs = array_merge($extdirs,["internal"]);
- echo json_encode($dirs);
- }else if($_GET["query"] == "unsort"){
- $intdirs = glob('uploads/*.{jpg,jpeg,png,gif}', GLOB_BRACE);
- $IntDirWInfo = [];
- foreach ($intdirs as &$intdir) {
- $tmp = [];
- $tmp["dir"] = "../../../Photo/".$intdir;
- $tmp["drive"] = "internal";
- array_push($IntDirWInfo,$tmp);
- }
- if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
- $ExtDirWInfo = []; //TODO: add ext support
- }else{
- if (file_exists("/media/")){
- $extdirs = glob("/media/*/Photo/*.{jpg,jpeg,png,gif}");
- $ExtDirWInfo = [];
- foreach ($extdirs as &$extdir) {
- preg_match('/\/media\/([^\/]*)\//', $extdir, $out_storage);
- $tmp = [];
- $tmp["dir"] = $extdir;
- $tmp["drive"] = $out_storage[1];
- array_push($ExtDirWInfo,$tmp);
- }
- }
- }
- $dirs = array_merge($IntDirWInfo,$ExtDirWInfo);
- echo json_encode($dirs);
- }
- }
- die();
- }
- ?>
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <script src="../script/jquery.min.js"></script>
- <link rel="stylesheet" href="../script/tocas/tocas.css">
- <script type='text/javascript' src="../script/tocas/tocas.js"></script>
- <script type='text/javascript' src="../script/ao_module.js"></script>
- <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
- <title>ArOZ Onlineβ</title>
- <style>
- body{
- background:rgba(245,245,245,0.8);
- }
- @media (max-width: 767px){
- .ts.bottom.right.snackbar.active{
- width: 100% !important;
- bottom: 0px !important;
- right: 0px !important;
- }
- }
- </style>
- </head>
- <body>
- <nav class="ts attached borderless small menu">
- <a id="rtiBtn" href="index.php" class="item"><i class="angle left icon"></i></a>
- <a href="index.php" class="item">ArOZ Photo</a>
- <div class="right menu">
- <a onclick="ts('#AddstorageModal').modal('show')" class="item"><i class="add outline icon"></i></a>
- <a href="../Upload Manager/upload_interface.php?target=Photo&filetype=jpg,jpeg,png,gif" class="item"><i class="upload icon"></i></a>
- <a href="Image_manager.php" class="item"><i class="folder open outline icon"></i></a>
- </div>
- </nav>
- <br>
- <div class="ts container">
- <div class="ts inverted segment">
- <p>Batch moving :
- <select class="ts basic dropdown" name="batchfolderdropdown">
- <option>Select</option>
- </select>
- <button name="batchfolderbutton" class="ts button"><i class="move icon"></i>Move</button>
- <button onclick="ts('#AddstorageModal').modal('show')" class="ts right floated button"><i class="add icon"></i>New folder</button>
- </p>
- </div>
- <div class="ts stackable grid" id="unsortlist">
- </div>
- </div>
- <div class="ts modals dimmer">
- <dialog id="AddstorageModal" class="ts fullscreen modal" open>
- <div class="header">
- Create new storage
- </div>
- <div class="content">
- <div class="ts form">
- <div class="field">
- <label>Storage</label>
- <select name="storagedropdown">
- <option>Select</option>
- </select>
- </div>
- <div class="field">
- <label>New storage name</label>
- <input type="text" id="storagename">
- <small></small>
- </div>
- </div>
- </div>
- <div class="actions">
- <button class="ts deny button">
- Cancel
- </button>
- <button class="ts positive button" onclick="submit()">
- Confirm
- </button>
- </div>
- </dialog>
- </div>
- <br><br><br><br>
- <div class="ts bottom right snackbar">
- <div class="content"></div>
- </div>
- <script>
- //Bind enter key to the input bar
- $("#storagename").on("keydown",function(e){
- if (e.keyCode == 13){
- submit();
- }
- });
- //first script to run
- $.ajax({url: "Image_manager.php?bkend=true&query=unsort", success: function(result){
- var resultArr = JSON.parse(result);
- var allfile = "";
- $.each(resultArr, function( index, value ) {
- if(value["drive"] !== "internal"){
- var drivename = '<div class="ts horizontal right floated label"><i class="usb icon"></i>' + value["drive"] + '</div>';
- }else{
- var drivename = '';
- }
- $("#unsortlist").append('<div class="four wide column" id="' + value["dir"] + '"><div class="ts card" style="height:100%"><div class="image"><img src="AOB' + value["dir"] + '"><div class="header"><div class="sub header">' + ao_module_codec.decodeUmFilename(value["dir"].replace(/^.*[\\\/]/, '')) + drivename + '</div></div></div><div class="content"><p><i class="move icon"></i>Move to <select class="ts basic dropdown" name="folderdropdown" file="' + value["dir"] + '" storage="' + value["drive"] + '"><option>Select</option></select></p><button name="deletefile" file="' + value["dir"] + '" class="ts mini very compact negative button"><i class="delete icon"></i>Delete</button></div></div></div>');
- allfile += value["dir"] + ",";
- });
- $("select[name='batchfolderdropdown']").attr("file",allfile.substr(0,allfile.length -1));
- step2();
- }});
- function step2(){
- $.ajax({url: "Image_manager.php?bkend=true&query=playlist", success: function(result){
- var resultArr = JSON.parse(result);
- $("select[name='folderdropdown']").html("");
- $("select[name='folderdropdown']").append(new Option("Select",""));
-
- $("select[name='batchfolderdropdown']").html("");
- $("select[name='batchfolderdropdown']").append(new Option("Select",""));
- $.each(resultArr, function( index, value ) {
- $("select[name='folderdropdown'][storage='" + value["drive"] + "']").append(new Option(value["name"],value["dir"]));
- $("select[name='batchfolderdropdown']").append(new Option(value["name"],value["dir"]));
- });
-
- step3();
- }});
- }
- function step3(){
- $.ajax({url: "Image_manager.php?bkend=true&query=storage", success: function(result){
- var resultArr = JSON.parse(result);
- $("select[name='storagedropdown']").html("");
- $("select[name='storagedropdown']").append(new Option("Select",""));
- $.each(resultArr, function( index, value ) {
- $("select[name='storagedropdown']").append(new Option(value,value));
- });
- }});
-
- step4();
- }
- function step4(){
- $( "button[name='batchfolderbutton']" ).click(function() {
- if($("select[name='batchfolderdropdown']").val()!==""){
- var Arr = $("select[name='batchfolderdropdown']").attr("file").split(",");
- var DOM = $("select[name='batchfolderdropdown']");
-
- var length = Arr.length;
- var success = 0;
- var failed = 0;
-
- $.each(Arr, function( index, value ) {
- if(value!== ""){
- $(DOM).parent().parent().parent().append('<div class="ts active inverted dimmer"><div class="ts text loader" id="processingtext">Processing...</div></div>');
- $.get( "../SystemAOB/functions/file_system/fsexec.php?opr=move&from=" + value + "&target=" + $(DOM).val() + value.replace(/^.*[\\\/]/, ''), function(UUID) {
- //Return an UUID, can call fsexec.php?listen={uuid} to see the file moving progress
- if(!UUID.includes("ERROR")){
- var timer = setInterval(function(){
- $.get( '../SystemAOB/functions/file_system/fsexec.php?listen=["' + UUID + '"]', function(data) {
- if(data[0][1] == "done"){
- success += 1;
- if(success == length){
- $("#unsortlist").html('<div class="ts card"><div class="ts slate accordion item"><i class="notice circle icon"></i><span class="header">No file unsorted</span><span class="description">Upload some files to here :)</span></div></div>');
- $(DOM).parent().parent().parent().find(".ts.active.inverted.dimmer").remove();
- }
- if((success + failed) == length){
- location.reload();
- }
- msgbox("Moved " + value.replace(/^.*[\\\/]/, ''));
- clearInterval(timer);
- }else if(data[0][1] == "error"){
- failed += 1;
- if((success + failed) == length){
- location.reload();
- }
- msgbox("Error moving " + value.replace(/^.*[\\\/]/, ''));
- clearInterval(timer);
- }
- });
- }, 3000);
- }else{
- failed += 1;
- if((success + failed) == length){
- location.reload();
- }
- msgbox(UUID);
- }
- });
- }
- });
- }else{
- msgbox("Nothing selected");
- }
- });
-
- $( "select[name='folderdropdown']" ).change(function() {
- if($(this).val()!==""){
- var DOM = $(this);
- $(DOM).parent().parent().parent().append('<div class="ts active inverted dimmer"><div class="ts text loader">Processing...</div></div>');
- $.get( "../SystemAOB/functions/file_system/fsexec.php?opr=move&from=" + $(this).attr("file") + "&target=" + $(this).val() + $(this).attr("file").replace(/^.*[\\\/]/, ''), function(UUID) {
- //Return an UUID, can call fsexec.php?listen={uuid} to see the file moving progress
- if(!UUID.includes("ERROR")){
- var timer = setInterval(function(){
- $.get( '../SystemAOB/functions/file_system/fsexec.php?listen=["' + UUID + '"]', function(data) {
- if(data[0][1] == "done"){
- $(DOM).parent().parent().parent().parent().fadeOut( "slow", function() {
- $(DOM).parent().parent().parent().parent().remove();
- if($.trim($("#unsortlist").html()) == ""){
- $("#unsortlist").html('<div class="ts card"><div class="ts slate accordion item"><i class="notice circle icon"></i><span class="header">No file unsorted</span><span class="description">Upload some files to here :)</span></div></div>');
- }
- });
- $(DOM).parent().parent().parent().find(".ts.active.inverted.dimmer").remove();
- msgbox("Success moving " + $(DOM).attr("file").replace(/^.*[\\\/]/, ''));
- clearInterval(timer);
- }else if(data[0][1] == "error"){
- $(DOM).parent().parent().parent().find(".ts.active.inverted.dimmer").remove();
- msgbox("Error moving " + $(DOM).attr("file").replace(/^.*[\\\/]/, ''));
- clearInterval(timer);
- }
- });
- }, 3000);
- }else{
- $(DOM).parent().parent().parent().find(".ts.active.inverted.dimmer").remove();
- msgbox(UUID);
- }
- });
-
- /*
- $.post( "mover.php", { opr: 1, files: $(this).attr("file"), dir: $(this).val() },function( data ) {
- if(data == "DONE"){
- $(DOM).parent().parent().parent().parent().parent().fadeOut( "slow", function() {
- $(DOM).parent().parent().parent().parent().parent().remove();
- if($.trim($("#unsortlist").html()) == ""){
- $("#unsortlist").html('<div class="ts slate accordion item"><i class="notice circle icon"></i><span class="header">No file unsorted</span><span class="description">Upload some files to here :)</span></div>');
- }
- });
- msgbox("Finished.");
- }else{
- msgbox("Error.");
- }
- });
- */
- }else{
- msgbox("Nothing selected");
- }
- });
- $( "button[name='deletefile']" ).click(function() {
- var DOM = $(this);
- $.post( "mover.php", { opr: 3, files: $(this).attr("file")},function( data ) {
- if(data == "DONE"){
- $(DOM).parent().parent().parent().parent().parent().fadeOut( "slow", function() {
- $(DOM).parent().parent().parent().parent().parent().remove();
- if($.trim($("#unsortlist").html()) == ""){
- $("#unsortlist").html('<div class="ts card"><div class="ts slate accordion item"><i class="notice circle icon"></i><span class="header">No file unsorted</span><span class="description">Upload some files to here :)</span></div></div>');
- }
- });
- msgbox("Finished.");
- }else{
- msgbox("Error.");
- }
- });
- });
- $( "details" ).click(function() {
- $("details[open='']").not(this).removeAttr('open');
- });
- $( ".ts.accordion.item" ).hover(function() {
- $(".ts.accordion.item").not(this).removeAttr('style');
- $(this).attr('style',"background-color:#f7f7f7");
- });
-
- if($.trim($("#unsortlist").html()) == ""){
- $("#unsortlist").html('<div class="ts card"><div class="ts slate accordion item"><i class="notice circle icon"></i><span class="header">No file unsorted</span><span class="description">Upload some files to here :)</span></div></div>');
- }
- }
- /*
- var OldArr = [];
- var firstInitOldArr = true;
- setInterval(function(){
- var notmatch = false;
- $.ajax({url: "Image_manager.php?bkend=true&query=unsort", success: function(result){
- var resultArr = JSON.parse(result);
- if(resultArr.length !== OldArr.length){
- notmatch = true;
- }else{
- for (var i = 0; resultArr.length < i; i++) {
- if (resultArr[i] !== oldArr[i]){
- notmatch = true;
- }
- }
- }
- if(firstInitOldArr){
- firstInitOldArr = false;
- notmatch = false;
- }
- if(notmatch){
- location.reload();
- }
- OldArr = resultArr;
- }
- });
- }, 3000);
- */
-
- function submit(){
- if(storage = $("select[name='storagedropdown']").val() !== ""){
- var storage = $("select[name='storagedropdown']").val() + "/";
- if(storage == "internal/"){
- storage = "storage/";
- }
- $.post( "new_folder.php", { storage: storage, name : $("#storagename").val() },function( data ) {
- if(data == "DONE"){
- msgbox("Finished.");
- location.reload();
- }
- });
- }else{
- msgbox("You must select the directory.");
- }
- }
- function msgbox(content,bgcolor,fontcolor){
- $(".snackbar").attr("style",'background-color: ' + bgcolor + ';color:' + fontcolor);
- ts('.snackbar').snackbar({
- content: content,
- onAction: () => {
- $(".snackbar").removeAttr("style");
- }
- });
- }
- </script>
- </body>
- </html>
|