mirror of
https://github.com/unraid/webgui.git
synced 2026-01-29 13:09:05 -06:00
@@ -85,6 +85,17 @@ if (isset($_POST['contName'])) {
|
||||
if (!is_dir($userTmplDir)) mkdir($userTmplDir, 0777, true);
|
||||
if ($Name) {
|
||||
$filename = sprintf('%s/my-%s.xml', $userTmplDir, $Name);
|
||||
if ( is_file($filename) ) {
|
||||
$oldXML = simplexml_load_file($filename);
|
||||
if ($oldXML->Icon != $_POST['contIcon']) {
|
||||
if (! strpos($Repository,":")) {
|
||||
$Repository .= ":latest";
|
||||
}
|
||||
$iconPath = $DockerTemplates->getIcon($Repository);
|
||||
@unlink("$docroot/$iconPath");
|
||||
@unlink("{$dockerManPaths['images']}/".basename($iconPath));
|
||||
}
|
||||
}
|
||||
file_put_contents($filename, $postXML);
|
||||
}
|
||||
// Run dry
|
||||
@@ -137,7 +148,8 @@ if (isset($_POST['contName'])) {
|
||||
}
|
||||
if ($startContainer) $cmd = str_replace('/docker create ', '/docker run -d ', $cmd);
|
||||
execCommand($cmd);
|
||||
echo '<div style="text-align:center"><button type="button" onclick="done()">Done</button></div><br>';
|
||||
|
||||
echo '<div style="text-align:center"><button type="button" onclick="done()">Done</button></div><br>';
|
||||
goto END;
|
||||
}
|
||||
|
||||
@@ -371,11 +383,11 @@ button[type=button]{margin:0 20px 0 0}
|
||||
}
|
||||
return newConfig.prop('outerHTML');
|
||||
}
|
||||
|
||||
|
||||
function escapeQuote(string) {
|
||||
return string.replace(new RegExp('"','g'),""");
|
||||
}
|
||||
|
||||
|
||||
function makeAllocations(container,current) {
|
||||
var html = [];
|
||||
for (var i=0,ct; ct=container[i]; i++) {
|
||||
@@ -896,7 +908,7 @@ button[type=button]{margin:0 20px 0 0}
|
||||
</blockquote>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="<?=$authoring;?>">
|
||||
<tr class='noshow'> <!-- Deprecated for author to enter or change, but needs to be present -->
|
||||
<td>Template URL:</td>
|
||||
<td><input type="text" name="contTemplateURL"></td>
|
||||
</tr>
|
||||
|
||||
@@ -23,7 +23,7 @@ $dockerManPaths = [
|
||||
'template-repos' => "/boot/config/plugins/dockerMan/template-repos",
|
||||
'templates-user' => "/boot/config/plugins/dockerMan/templates-user",
|
||||
'templates-usb' => "/boot/config/plugins/dockerMan/templates",
|
||||
'images-usb' => "/boot/config/plugins/dockerMan/images",
|
||||
'images' => "/var/lib/docker/unraid/images",
|
||||
'user-prefs' => "/boot/config/plugins/dockerMan/userprefs.cfg",
|
||||
'plugin' => "$docroot/plugins/dynamix.docker.manager",
|
||||
'images-ram' => "$docroot/state/plugins/dynamix.docker.manager/images",
|
||||
@@ -305,12 +305,15 @@ class DockerTemplates {
|
||||
$name = preg_replace("%\/|\\\%", '-', $matches[1][0]);
|
||||
$version = $matches[2][0];
|
||||
$iconRAM = sprintf('%s/%s-%s-%s.png', $dockerManPaths['images-ram'], $name, $version, 'icon');
|
||||
$iconUSB = sprintf('%s/%s-%s-%s.png', $dockerManPaths['images-usb'], $name, $version, 'icon');
|
||||
$icon = sprintf('%s/%s-%s-%s.png', $dockerManPaths['images'], $name, $version, 'icon');
|
||||
if (!is_dir(dirname($iconRAM))) mkdir(dirname($iconRAM), 0755, true);
|
||||
if (!is_dir(dirname($iconUSB))) mkdir(dirname($iconUSB), 0755, true);
|
||||
if (!is_dir(dirname($icon))) mkdir(dirname($icon), 0755, true);
|
||||
if (!is_file($iconRAM)) {
|
||||
if (!is_file($iconUSB)) $this->download_url($imgUrl, $iconUSB);
|
||||
@copy($iconUSB, $iconRAM);
|
||||
if (!is_file($icon)) $this->download_url($imgUrl, $icon);
|
||||
@copy($icon, $iconRAM);
|
||||
}
|
||||
if ( !is_file($icon) && is_file($iconRAM) ) {
|
||||
@copy($iconRAM,$icon);
|
||||
}
|
||||
return (is_file($iconRAM)) ? str_replace($docroot, '', $iconRAM) : '';
|
||||
}
|
||||
@@ -747,7 +750,7 @@ class DockerClient {
|
||||
if (isset($info[$name])) {
|
||||
if (isset($info[$name]['icon'])) {
|
||||
$iconRAM = $docroot.$info[$name]['icon'];
|
||||
$iconUSB = str_replace($dockerManPaths['images-ram'], $dockerManPaths['images-usb'], $iconRAM);
|
||||
$iconUSB = str_replace($dockerManPaths['images-ram'], $dockerManPaths['images'], $iconRAM);
|
||||
if ($cache>=1 && is_file($iconRAM)) unlink($iconRAM);
|
||||
if ($cache==2 && $code===true && is_file($iconUSB)) unlink($iconUSB);
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ foreach ($containers as $ct) {
|
||||
$color = $status=='started' ? 'green-text' : ($status=='paused' ? 'orange-text' : 'red-text');
|
||||
$update = $updateStatus=='false' ? 'blue-text' : '';
|
||||
$icon = $info['icon'] ?: '/plugins/dynamix.docker.manager/images/question.png';
|
||||
$image = substr($icon,-4)=='.png' ? "<img src='$icon' class='img'>" : (substr($icon,0,5)=='icon-' ? "<i class='$icon img'></i>" : "<i class='fa fa-$icon img'></i>");
|
||||
$image = substr($icon,-4)=='.png' ? "<img src='$icon?".filemtime("$docroot{$info['icon']}")."' class='img'>" : (substr($icon,0,5)=='icon-' ? "<i class='$icon img'></i>" : "<i class='fa fa-$icon img'></i>");
|
||||
$wait = var_split($autostart[array_search($name,$names)],1);
|
||||
$ports = [];
|
||||
foreach ($ct['Ports'] as $port) {
|
||||
|
||||
@@ -22,6 +22,7 @@ function download_url($url, $path = "") {
|
||||
curl_setopt($ch,CURLOPT_TIMEOUT,45);
|
||||
curl_setopt($ch,CURLOPT_ENCODING,"");
|
||||
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
|
||||
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
|
||||
$out = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
if ( $path )
|
||||
|
||||
@@ -51,7 +51,7 @@ if ($_POST['docker'] && ($display=='icons' || $display=='docker')) {
|
||||
$color = $status=='started' ? 'green-text' : ($status=='paused' ? 'orange-text' : 'red-text');
|
||||
$update = $updateStatus=='false' ? 'blue-text' : '';
|
||||
$icon = $info['icon'] ?: '/plugins/dynamix.docker.manager/images/question.png';
|
||||
$image = substr($icon,-4)=='.png' ? "<img src='$icon' class='img'>" : (substr($icon,0,5)=='icon-' ? "<i class='$icon img'></i>" : "<i class='fa fa-$icon img'></i>");
|
||||
$image = substr($icon,-4)=='.png' ? "<img src='$icon?".filemtime("$docroot{$info['icon']}")."' class='img'>" : (substr($icon,0,5)=='icon-' ? "<i class='$icon img'></i>" : "<i class='fa fa-$icon img'></i>");
|
||||
echo "<span class='outer solid apps $status'><span id='$id' class='hand'>$image</span><span class='inner'><span class='$update'>$name</span><br><i class='fa fa-$shape $status $color'></i><span class='state'>$status</span></span></span>";
|
||||
}
|
||||
$none = count($containers) ? "No running docker containers" : "No docker containers defined";
|
||||
|
||||
@@ -84,7 +84,7 @@ span.tub span[id^='txt-tub']{margin-top:7px}
|
||||
#title:first-child{margin-top:0}
|
||||
#title.shift{margin-top:-12px}
|
||||
#clear{clear:both}
|
||||
#footer{position:fixed;bottom:0;left:0;color:#808080;background-color:#121510;padding:5px 0;width:100%;height:1.6rem;line-height:1.6rem;text-align:center;z-index:100}
|
||||
#footer{position:fixed;bottom:0;left:0;color:#808080;background-color:#121510;padding:5px 0;width:100%;height:1.6rem;line-height:1.6rem;text-align:center;z-index:10000}
|
||||
#statusraid{float:left;padding-left:10px}
|
||||
#countdown{margin:0 auto}
|
||||
#copyright{font-family:bitstream;font-size:1.1rem;float:right;padding-right:10px}
|
||||
|
||||
@@ -74,7 +74,7 @@ textarea{resize:none}
|
||||
#nav-block #nav-item.active:after{background-color:#1c1b1b}
|
||||
#txt-tub1,#txt-tub2,#txt-tub3{color:#f2f2f2}
|
||||
#clear{clear:both}
|
||||
#footer{position:fixed;bottom:0;left:0;color:#d4d5d6;background-color:#2b2a29;padding:5px 0;width:100%;height:1.6rem;line-height:1.6rem;text-align:center;z-index:100}
|
||||
#footer{position:fixed;bottom:0;left:0;color:#d4d5d6;background-color:#2b2a29;padding:5px 0;width:100%;height:1.6rem;line-height:1.6rem;text-align:center;z-index:10000}
|
||||
#statusraid{float:left;padding-left:10px}
|
||||
#countdown{margin:0 auto}
|
||||
#copyright{font-family:bitstream;font-size:1.1rem;float:right;padding-right:10px}
|
||||
|
||||
@@ -84,7 +84,7 @@ span.tub span[id^='txt-tub']{margin-top:7px}
|
||||
#title:first-child{margin-top:0}
|
||||
#title.shift{margin-top:-12px}
|
||||
#clear{clear:both}
|
||||
#footer{position:fixed;bottom:0;left:0;color:#808080;background-color:#121510;padding:5px 0;width:100%;height:1.6rem;line-height:1.6rem;text-align:center;z-index:100}
|
||||
#footer{position:fixed;bottom:0;left:0;color:#808080;background-color:#121510;padding:5px 0;width:100%;height:1.6rem;line-height:1.6rem;text-align:center;z-index:10000}
|
||||
#statusraid{float:left;padding-left:10px}
|
||||
#countdown{margin:0 auto}
|
||||
#copyright{font-family:bitstream;font-size:1.1rem;float:right;padding-right:10px}
|
||||
|
||||
@@ -74,7 +74,7 @@ textarea{resize:none}
|
||||
#nav-block #nav-item.active:after{background-color:#f2f2f2}
|
||||
#txt-tub1,#txt-tub2,#txt-tub3{color:#f2f2f2}
|
||||
#clear{clear:both}
|
||||
#footer{position:fixed;bottom:0;left:0;color:#2b2a29;background-color:#d4d5d6;padding:5px 0;width:100%;height:1.6rem;line-height:1.6rem;text-align:center;z-index:100}
|
||||
#footer{position:fixed;bottom:0;left:0;color:#2b2a29;background-color:#d4d5d6;padding:5px 0;width:100%;height:1.6rem;line-height:1.6rem;text-align:center;z-index:10000}
|
||||
#statusraid{float:left;padding-left:10px}
|
||||
#countdown{margin:0 auto}
|
||||
#copyright{font-family:bitstream;font-size:1.1rem;float:right;padding-right:10px}
|
||||
|
||||
Reference in New Issue
Block a user