Skip to content

Commit 905a2a6

Browse files
committed
Added gui support for changing the path of the env file for a stack.
1 parent 44073ab commit 905a2a6

File tree

2 files changed

+104
-7
lines changed

2 files changed

+104
-7
lines changed

source/compose.manager/php/compose_manager_main.php

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,14 @@ functionBefore: function(instance,helper) {
153153
var disabled = $("#"+myID).attr('data-isup') == "1" ? "disabled" : "";
154154
var notdisabled = $("#"+myID).attr('data-isup') == "1" ? "" : "disabled";
155155
var stackName = $("#"+myID).attr("data-scriptname");
156-
instance.content(stackName + "<br><center><input type='button' value='Edit Name' onclick='editName(&quot;"+myID+"&quot;);' "+disabled+"><input type='button' value='Edit Description' onclick='editDesc(&quot;"+myID+"&quot;);'><input type='button' onclick='editStack(&quot;"+myID+"&quot;);' value='Edit Stack'><input type='button' onclick='deleteStack(&quot;"+myID+"&quot;);' value='Delete Stack' "+disabled+"><input type='button' onclick='ComposeLogs(&quot;"+myID+"&quot;);' value='Logs' "+notdisabled+"></center>");
156+
instance.content(stackName + "<br> \
157+
<center> \
158+
<input type='button' onclick='editName(&quot;"+myID+"&quot;);' value='Edit Name' "+disabled+"> \
159+
<input type='button' onclick='editDesc(&quot;"+myID+"&quot;);' value='Edit Description' > \
160+
<input type='button' onclick='editStack(&quot;"+myID+"&quot;);' value='Edit Stack'> \
161+
<input type='button' onclick='deleteStack(&quot;"+myID+"&quot;);' value='Delete Stack' "+disabled+"> \
162+
<input type='button' onclick='ComposeLogs(&quot;"+myID+"&quot;);' value='Logs' "+notdisabled+"> \
163+
</center>");
157164
}
158165
});
159166
$('.auto_start').switchButton({labels_placement:'right', on_label:"On", off_label:"Off"});
@@ -325,6 +332,7 @@ function editStack(myID) {
325332
buttonsList["compose_file"] = { text: "Compose File" };
326333
buttonsList["env_file"] = { text: "ENV File" };
327334
buttonsList["override_file"] = { text: "UI Labels" };
335+
buttonsList["stack_settings"] = { text: "Stack Settings" };
328336

329337
buttonsList["Cancel"] = { text: "Cancel", value: null, };
330338
swal2({
@@ -343,6 +351,9 @@ className: 'edit-stack-form',
343351
case 'override_file':
344352
generateOverride(myID);
345353
break;
354+
case 'stack_settings':
355+
editStackSettings(myID);
356+
break;
346357
default:
347358
return;
348359
}
@@ -563,6 +574,53 @@ function saveEdit() {
563574

564575
}
565576

577+
function editStackSettings(myID) {
578+
var script = $("#"+myID).attr("data-scriptname");
579+
580+
$.post(caURL,{action:'getEnvPath',script:script},function(rawEnvPath) {
581+
if (rawEnvPath) {
582+
var rawEnvPath = jQuery.parseJSON(rawEnvPath);
583+
if(rawEnvPath.result == 'success') {
584+
var form = document.createElement("div");
585+
// form.classList.add("swal-content");
586+
form.innerHTML = `<div class="swal-text" style="font-weight: bold; padding-left: 0px; margin-top: 0px;">ENV File Path</div>`;
587+
form.innerHTML += `<br>`;
588+
form.innerHTML += `<input type='text' id='env_path' class='swal-content__input' pattern="(\/mnt\/.*\/.+)" oninput="this.reportValidity()" title="A path under /mnt/user/ or /mnt/cache/ or /mnt/pool/" placeholder=Default value='${rawEnvPath.content}'>`;
589+
swal2({
590+
title: "Stack Settings",
591+
// text: "Enter in the name for the stack",
592+
content: form,
593+
buttons: true,
594+
}).then((inputValue) => {
595+
if (inputValue) {
596+
var new_env_path = document.getElementById("env_path").value;
597+
$.post(caURL,{action:'setEnvPath',envPath:new_env_path,script:script},function(data) {
598+
var title = "Failed to set stack settings.";
599+
var message = "";
600+
var icon = "error";
601+
if (data) {
602+
var response = jQuery.parseJSON(data);
603+
if (response.result == "success") {
604+
title = "Success";
605+
}
606+
message = response.message;
607+
icon = response.result;
608+
}
609+
swal2({
610+
title: title,
611+
text: message,
612+
icon: icon,
613+
}).then(() => {
614+
location.reload();
615+
});
616+
});
617+
}
618+
});
619+
}
620+
}
621+
});
622+
}
623+
566624
function ComposeUp(path) {
567625
var height = 800;
568626
var width = 1200;

source/compose.manager/php/exec.php

Lines changed: 45 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -104,14 +104,18 @@ function getElement($element) {
104104
case 'getEnv':
105105
$script = isset($_POST['script']) ? urldecode(($_POST['script'])) : "";
106106
$basePath = getPath("$compose_root/$script");
107-
$fileName = ".env";
107+
$fileName = "$basePath/.env";
108+
if ( is_file("$basePath/envpath") ) {
109+
$fileName = file_get_contents("$basePath/envpath");
110+
$fileName = str_replace("\r","",$fileName);
111+
}
108112

109-
$scriptContents = is_file("$basePath/$fileName") ? file_get_contents("$basePath/$fileName") : "";
113+
$scriptContents = is_file("$fileName") ? file_get_contents("$fileName") : "";
110114
$scriptContents = str_replace("\r","",$scriptContents);
111115
if ( ! $scriptContents ) {
112116
$scriptContents = "\n";
113117
}
114-
echo json_encode( [ 'result' => 'success', 'fileName' => "$basePath/$fileName", 'content' => $scriptContents ] );
118+
echo json_encode( [ 'result' => 'success', 'fileName' => "$fileName", 'content' => $scriptContents ] );
115119
break;
116120
case 'getOverride':
117121
$script = isset($_POST['script']) ? urldecode(($_POST['script'])) : "";
@@ -138,10 +142,14 @@ function getElement($element) {
138142
$script = isset($_POST['script']) ? urldecode(($_POST['script'])) : "";
139143
$scriptContents = isset($_POST['scriptContents']) ? $_POST['scriptContents'] : "";
140144
$basePath = getPath("$compose_root/$script");
141-
$fileName = ".env";
145+
$fileName = "$basePath/.env";
146+
if ( is_file("$basePath/envpath") ) {
147+
$fileName = file_get_contents("$basePath/envpath");
148+
$fileName = str_replace("\r","",$fileName);
149+
}
142150

143-
file_put_contents("$basePath/$fileName",$scriptContents);
144-
echo "$basePath/$fileName saved";
151+
file_put_contents("$fileName",$scriptContents);
152+
echo "$fileName saved";
145153
break;
146154
case 'saveOverride':
147155
$script = isset($_POST['script']) ? urldecode(($_POST['script'])) : "";
@@ -172,6 +180,37 @@ function getElement($element) {
172180
case 'unPatchUI':
173181
exec("$plugin_root/scripts/patch_ui.sh -r");
174182
break;
183+
case 'setEnvPath':
184+
$script = isset($_POST['script']) ? urldecode(($_POST['script'])) : "";
185+
if ( ! $script ) {
186+
echo json_encode( [ 'result' => 'error', 'message' => 'Stack not specified.' ] );
187+
break;
188+
}
189+
$fileContent = isset($_POST['envPath']) ? urldecode(($_POST['envPath'])) : "";
190+
$fileName = "$compose_root/$script/envpath";
191+
if ( is_file($fileName) ) {
192+
exec("rm ".escapeshellarg($fileName));
193+
}
194+
if ( isset($fileContent) && !empty($fileContent) ) {
195+
file_put_contents($fileName,$fileContent);
196+
}
197+
echo json_encode( [ 'result' => 'success', 'message' => '' ] );
198+
break;
199+
case 'getEnvPath':
200+
$script = isset($_POST['script']) ? urldecode(($_POST['script'])) : "";
201+
if ( ! $script ) {
202+
echo json_encode( [ 'result' => 'error', 'message' => 'Stack not specified.' ] );
203+
break;
204+
}
205+
$fileName = "$compose_root/$script/envpath";
206+
$fileContents = is_file("$fileName") ? file_get_contents("$fileName") : "";
207+
$fileContents = str_replace("\r","",$fileContents);
208+
if ( ! $fileContents ) {
209+
$fileContents = "";
210+
}
211+
echo json_encode( [ 'result' => 'success', 'fileName' => "$fileName", 'content' => $fileContents ] );
212+
break;
213+
175214
}
176215

177216
?>

0 commit comments

Comments
 (0)