From 9d37b7879ae3fd61a354041b6b881726275b8ab6 Mon Sep 17 00:00:00 2001 From: gfjardim Date: Mon, 14 Mar 2016 09:11:48 -0300 Subject: [PATCH 1/5] Export ports as variable if Network is set to host --- plugins/dynamix.docker.manager/include/CreateDocker.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/plugins/dynamix.docker.manager/include/CreateDocker.php b/plugins/dynamix.docker.manager/include/CreateDocker.php index 1b14eba53..fe3827a5e 100644 --- a/plugins/dynamix.docker.manager/include/CreateDocker.php +++ b/plugins/dynamix.docker.manager/include/CreateDocker.php @@ -350,9 +350,14 @@ function xmlToCommand($xml) { if ($confType == "path") { $Volumes[] = sprintf('"%s":"%s":%s', $hostConfig, $containerConfig, $Mode); } elseif ($confType == 'port') { - $Ports[] = sprintf("%s:%s/%s", $hostConfig, $containerConfig, $Mode); + # Export ports as variable if Network is set to host + if (strtolower($xml['Network']) == 'host') { + $Variables[] = strtoupper(sprintf('"%s_PORT_%s"="%s"', $Mode, $containerConfig, $hostConfig)); + } else { + $Ports[] = sprintf("%s:%s/%s", $hostConfig, $containerConfig, $Mode); + } } elseif ($confType == "variable") { - $Variables[] = sprintf('%s="%s"', $containerConfig, $hostConfig); + $Variables[] = sprintf('"%s"="%s"', $containerConfig, $hostConfig); } elseif ($confType == "device") { $Devices[] = '"'.$containerConfig.'"'; } From d304921142c9c1834cc464d414c536fddad840ea Mon Sep 17 00:00:00 2001 From: gfjardim Date: Mon, 14 Mar 2016 09:30:19 -0300 Subject: [PATCH 2/5] Deal with deprecation of auto creating host paths URL: https://docs.docker.com/engine/deprecated/#auto-creating-missing-host-pa ths-for-bind-mounts --- .../dynamix.docker.manager/include/CreateDocker.php | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/plugins/dynamix.docker.manager/include/CreateDocker.php b/plugins/dynamix.docker.manager/include/CreateDocker.php index fe3827a5e..617117891 100644 --- a/plugins/dynamix.docker.manager/include/CreateDocker.php +++ b/plugins/dynamix.docker.manager/include/CreateDocker.php @@ -326,7 +326,7 @@ function xmlToVar($xml) { return $out; } -function xmlToCommand($xml) { +function xmlToCommand($xml, $create_paths=false) { global $var; $xml = xmlToVar($xml); $cmdName = (strlen($xml['Name'])) ? '--name="'.$xml['Name'].'"' : ""; @@ -349,6 +349,11 @@ function xmlToCommand($xml) { if (!strlen($containerConfig)) continue; if ($confType == "path") { $Volumes[] = sprintf('"%s":"%s":%s', $hostConfig, $containerConfig, $Mode); + if ( ! file_exists($hostConfig) && $create_paths ) { + @mkdir($hostConfig, 0777, true); + @chown($hostConfig, 99); + @chgrp($hostConfig, 100); + } } elseif ($confType == 'port') { # Export ports as variable if Network is set to host if (strtolower($xml['Network']) == 'host') { @@ -415,12 +420,14 @@ function setXmlVal(&$xml, $value, $el, $attr = null, $pos = 0) { if (isset($_POST['contName'])) { $postXML = postToXML($_POST, true); + $dry_run = ($_POST['dryRun'] == "true") ? true : false; + $create_paths = $dry_run ? false : true; // Get the command line - list($cmd, $Name, $Repository) = xmlToCommand($postXML); + list($cmd, $Name, $Repository) = xmlToCommand($postXML, $create_paths); // Run dry - if ($_POST['dryRun'] == "true") { + if ($dry_run) { echo "

XML

"; echo "
".htmlentities($postXML)."
"; echo "

COMMAND:

"; From fea79851c0d1c9cce50bce56e9a60568cec7852d Mon Sep 17 00:00:00 2001 From: gfjardim Date: Mon, 14 Mar 2016 11:23:04 -0300 Subject: [PATCH 3/5] Remove deprecated stylesheet (gh-buttons.css) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This was needed with banner view mode, it’s useless now. --- .../DockerContainers.page | 1 - .../styles/gh-buttons.css | 440 ------------------ 2 files changed, 441 deletions(-) delete mode 100644 plugins/dynamix.docker.manager/styles/gh-buttons.css diff --git a/plugins/dynamix.docker.manager/DockerContainers.page b/plugins/dynamix.docker.manager/DockerContainers.page index ffc415b4e..7efa73f88 100644 --- a/plugins/dynamix.docker.manager/DockerContainers.page +++ b/plugins/dynamix.docker.manager/DockerContainers.page @@ -22,7 +22,6 @@ $DockerClient = new DockerClient(); $DockerUpdate = new DockerUpdate(); $DockerTemplates = new DockerTemplates(); ?> - diff --git a/plugins/dynamix.docker.manager/styles/gh-buttons.css b/plugins/dynamix.docker.manager/styles/gh-buttons.css deleted file mode 100644 index 661167971..000000000 --- a/plugins/dynamix.docker.manager/styles/gh-buttons.css +++ /dev/null @@ -1,440 +0,0 @@ -/* ------------------------------------------ - * CSS3 GITHUB BUTTONS (Nicolas Gallagher) - * Licensed under Unlicense - * http://github.com/necolas/css3-github-buttons - * --------------------------------------- */ - - -/* ============================================================================= - Base Button - ========================================================================== */ - -.button { - position: relative; - overflow: visible; - display: inline-block; - padding: 0.5em 1em; - border: 1px solid #d4d4d4; - margin: 0; - text-decoration: none; - text-align: center; - text-shadow: 1px 1px 0 #fff; - font:11px/normal sans-serif; - color: #333; - white-space: nowrap; - cursor: pointer; - outline: none; - background-color: #ececec; - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f4f4f4), to(#ececec)); - background-image: -moz-linear-gradient(#f4f4f4, #ececec); - background-image: -ms-linear-gradient(#f4f4f4, #ececec); - background-image: -o-linear-gradient(#f4f4f4, #ececec); - background-image: linear-gradient(#f4f4f4, #ececec); - -moz-background-clip: padding; /* for Firefox 3.6 */ - background-clip: padding-box; - border-radius: 0.2em; - /* IE hacks */ - zoom: 1; - *display: inline; -} - -.button:hover, -.button:focus, -.button:active, -.button.active { - border-color: #3072b3; - border-bottom-color: #2a65a0; - text-decoration: none; - text-shadow: -1px -1px 0 rgba(0,0,0,0.3); - color: #fff; - background-color: #3c8dde; - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#599bdc), to(#3072b3)); - background-image: -moz-linear-gradient(#599bdc, #3072b3); - background-image: -o-linear-gradient(#599bdc, #3072b3); - background-image: linear-gradient(#599bdc, #3072b3); -} - -.button:active, -.button.active { - border-color: #2a65a0; - border-bottom-color: #3884cd; - background-color: #3072b3; - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#3072b3), to(#599bdc)); - background-image: -moz-linear-gradient(#3072b3, #599bdc); - background-image: -ms-linear-gradient(#3072b3, #599bdc); - background-image: -o-linear-gradient(#3072b3, #599bdc); - background-image: linear-gradient(#3072b3, #599bdc); -} - -/* overrides extra padding on button elements in Firefox */ -.button::-moz-focus-inner { - padding: 0; - border: 0; -} - - -/* ============================================================================= - Button icons - ========================================================================== */ - -.button.icon:before { - content: ""; - position: relative; - top: 1px; - float:left; - width: 12px; - height: 12px; - margin: 0 0.75em 0 -0.25em; - background: url(gh-icons.png) 0 99px no-repeat; -} - -.button.arrowup.icon:before { background-position: 0 0; } -.button.arrowup.icon:hover:before, -.button.arrowup.icon:focus:before, -.button.arrowup.icon:active:before { background-position: -12px 0; } - -.button.arrowdown.icon:before { background-position: 0 -12px; } -.button.arrowdown.icon:hover:before, -.button.arrowdown.icon:focus:before, -.button.arrowdown.icon:active:before { background-position: -12px -12px; } - -.button.arrowleft.icon:before { background-position: 0 -24px; } -.button.arrowleft.icon:hover:before, -.button.arrowleft.icon:focus:before, -.button.arrowleft.icon:active:before { background-position: -12px -24px; } - -.button.arrowright.icon:before { float:right; margin: 0 -0.25em 0 0.5em; background-position: 0 -36px; } -.button.arrowright.icon:hover:before, -.button.arrowright.icon:focus:before, -.button.arrowright.icon:active:before { background-position: -12px -36px; } - -.button.approve.icon:before { background-position: 0 -48px; } -.button.approve.icon:hover:before, -.button.approve.icon:focus:before, -.button.approve.icon:active:before { background-position: -12px -48px; } - -.button.add.icon:before { background-position: 0 -288px; } -.button.add.icon:hover:before, -.button.add.icon:focus:before, -.button.add.icon:active:before { background-position: -12px -288px; } - -.button.remove.icon:before { background-position: 0 -60px; } -.button.remove.icon:hover:before, -.button.remove.icon:focus:before, -.button.remove.icon:active:before { background-position: -12px -60px; } - -.button.log.icon:before { background-position: 0 -72px; } -.button.log.icon:hover:before, -.button.log.icon:focus:before, -.button.log.icon:active:before { background-position: -12px -72px; } - -.button.calendar.icon:before { background-position: 0 -84px; } -.button.calendar.icon:hover:before, -.button.calendar.icon:focus:before, -.button.calendar.icon:active:before { background-position: -12px -84px; } - -.button.chat.icon:before { background-position: 0 -96px; } -.button.chat.icon:hover:before, -.button.chat.icon:focus:before, -.button.chat.icon:active:before { background-position: -12px -96px; } - -.button.clock.icon:before { background-position: 0 -108px; } -.button.clock.icon:hover:before, -.button.clock.icon:focus:before, -.button.clock.icon:active:before { background-position: -12px -108px; } - -.button.settings.icon:before { background-position: 0 -120px; } -.button.settings.icon:hover:before, -.button.settings.icon:focus:before, -.button.settings.icon:active:before { background-position: -12px -120px; } - -.button.comment.icon:before { background-position: 0 -132px; } -.button.comment.icon:hover:before, -.button.comment.icon:focus:before, -.button.comment.icon:active:before { background-position: -12px -132px; } - -.button.fork.icon:before { background-position: 0 -144px; } -.button.fork.icon:hover:before, -.button.fork.icon:focus:before, -.button.fork.icon:active:before { background-position: -12px -144px; } - -.button.like.icon:before { background-position: 0 -156px; } -.button.like.icon:hover:before, -.button.like.icon:focus:before, -.button.like.icon:active:before { background-position: -12px -156px; } - -.button.favorite.icon:before { background-position: 0 -348px; } -.button.favorite.icon:hover:before, -.button.favorite.icon:focus:before, -.button.favorite.icon:active:before { background-position: -12px -348px; } - -.button.home.icon:before { background-position: 0 -168px; } -.button.home.icon:hover:before, -.button.home.icon:focus:before, -.button.home.icon:active:before { background-position: -12px -168px; } - -.button.key.icon:before { background-position: 0 -180px; } -.button.key.icon:hover:before, -.button.key.icon:focus:before, -.button.key.icon:active:before { background-position: -12px -180px; } - -.button.lock.icon:before { background-position: 0 -192px; } -.button.lock.icon:hover:before, -.button.lock.icon:focus:before, -.button.lock.icon:active:before { background-position: -12px -192px; } - -.button.unlock.icon:before { background-position: 0 -204px; } -.button.unlock.icon:hover:before, -.button.unlock.icon:focus:before, -.button.unlock.icon:active:before { background-position: -12px -204px; } - -.button.loop.icon:before { background-position: 0 -216px; } -.button.loop.icon:hover:before, -.button.loop.icon:focus:before, -.button.loop.icon:active:before { background-position: -12px -216px; } - -.button.search.icon:before { background-position: 0 -228px; } -.button.search.icon:hover:before, -.button.search.icon:focus:before, -.button.search.icon:active:before { background-position: -12px -228px; } - -.button.mail.icon:before { background-position: 0 -240px; } -.button.mail.icon:hover:before, -.button.mail.icon:focus:before, -.button.mail.icon:active:before { background-position: -12px -240px; } - -.button.move.icon:before { background-position: 0 -252px; } -.button.move.icon:hover:before, -.button.move.icon:focus:before, -.button.move.icon:active:before { background-position: -12px -252px; } - -.button.edit.icon:before { background-position: 0 -264px; } -.button.edit.icon:hover:before, -.button.edit.icon:focus:before, -.button.edit.icon:active:before { background-position: -12px -264px; } - -.button.pin.icon:before { background-position: 0 -276px; } -.button.pin.icon:hover:before, -.button.pin.icon:focus:before, -.button.pin.icon:active:before { background-position: -12px -276px; } - -.button.reload.icon:before { background-position: 0 -300px; } -.button.reload.icon:hover:before, -.button.reload.icon:focus:before, -.button.reload.icon:active:before { background-position: -12px -300px; } - -.button.rss.icon:before { background-position: 0 -312px; } -.button.rss.icon:hover:before, -.button.rss.icon:focus:before, -.button.rss.icon:active:before { background-position: -12px -312px; } - -.button.tag.icon:before { background-position: 0 -324px; } -.button.tag.icon:hover:before, -.button.tag.icon:focus:before, -.button.tag.icon:active:before { background-position: -12px -324px; } - -.button.trash.icon:before { background-position: 0 -336px; } -.button.trash.icon:hover:before, -.button.trash.icon:focus:before, -.button.trash.icon:active:before { background-position: -12px -336px; } - -.button.user.icon:before { background-position: 0 -360px; } -.button.user.icon:hover:before, -.button.user.icon:focus:before, -.button.user.icon:active:before { background-position: -12px -360px; } - - -/* ============================================================================= - Button extensions - ========================================================================== */ - -/* Primary button - ========================================================================== */ - -.button.primary { - font-weight: bold; -} - -/* Danger button - ========================================================================== */ - -.button.danger { - color: #900; -} - -.button.danger:hover, -.button.danger:focus, -.button.danger:active { - border-color: #b53f3a; - border-bottom-color: #a0302a; - color: #fff; - background-color: #dc5f59; - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#dc5f59), to(#b33630)); - background-image: -moz-linear-gradient(#dc5f59, #b33630); - background-image: -ms-linear-gradient(#dc5f59, #b33630); - background-image: -o-linear-gradient(#dc5f59, #b33630); - background-image: linear-gradient(#dc5f59, #b33630); -} - -.button.danger:active, -.button.danger.active { - border-color: #a0302a; - border-bottom-color: #bf4843; - background-color: #b33630; - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b33630), to(#dc5f59)); - background-image: -moz-linear-gradient(#b33630, #dc5f59); - background-image: -ms-linear-gradient(#b33630, #dc5f59); - background-image: -o-linear-gradient(#b33630, #dc5f59); - background-image: linear-gradient(#b33630, #dc5f59); -} - -/* Green button - ========================================================================== */ - -.button.green { - color: #009900; -} - -.button.blue { - color: #0519FF; -} - -.button.blue:hover, -.button.blue:focus, -.button.blue:active { - color: #fff; -} - -.button.green:hover, -.button.green:focus, -.button.green:active { - color: #FFF; - text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.25); - background-color: #60B044; - background-image: linear-gradient(#8ADD6D, #60B044); - background-repeat: repeat-x; - border-color: #5CA941; -} - -.button.green:active, -.button.green.active { - color: #FFF; - text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.25); - background-color: #60B044; - background-image: linear-gradient(#60B044, #8ADD6D); - background-repeat: repeat-x; - border-color: #5CA941; -} - -/* Pill button - ========================================================================== */ - -.button.pill { - border-radius: 50em; -} - -/* Disabled button - ========================================================================== */ - -.button.disable { - opacity: 0.5; -} - -/* Big button - ========================================================================== */ - -.button.big { - font-size: 14px; -} - -.button.big.icon:before { - top: 0; -} - - -/* ============================================================================= - Button groups - ========================================================================== */ - -/* Standard group - ========================================================================== */ - -.button-group { - display: inline-block; - list-style: none; - padding: 0; - margin: 0; - /* IE hacks */ - zoom: 1; - *display: inline; -} - -.button + .button, -.button + .button-group, -.button-group + .button, -.button-group + .button-group { - margin-left: 15px; -} - -.button-group li { - float: left; - padding: 0; - margin: 0; -} - -.button-group .button { - float: left; - margin-left: -1px; -} - -.button-group > .button:not(:first-child):not(:last-child), -.button-group li:not(:first-child):not(:last-child) .button { - border-radius: 0; -} - -.button-group > .button:first-child, -.button-group li:first-child .button { - margin-left: 0; - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.button-group > .button:last-child, -.button-group li:last-child > .button { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -/* Minor group - ========================================================================== */ - -.button-group.minor-group .button { - border: 1px solid #d4d4d4; - text-shadow: none; - background-image: none; - background-color: #fff; -} - -.button-group.minor-group .button:hover, -.button-group.minor-group .button:focus { - background-color: #599bdc; -} - -.button-group.minor-group .button:active, -.button-group.minor-group .button.active { - background-color: #3072b3; -} - -.button-group.minor-group .button.icon:before { - opacity: 0.8; -} - -/* ============================================================================= - Button container (mixing buttons and groups, e.g., nav bar) - ========================================================================== */ - -.button-container .button, -.button-container .button-group { - vertical-align: top; -} - From 0289168bf190d8e391716beb73ed6e4e5030c0fd Mon Sep 17 00:00:00 2001 From: gfjardim Date: Mon, 14 Mar 2016 11:24:11 -0300 Subject: [PATCH 4/5] Patch jQuery Ui widget to Dynamic black theme. --- .../include/CreateDocker.php | 1 + .../styles/style-black.css | 60 +++++++++++++++++++ .../styles/style-white.css | 0 3 files changed, 61 insertions(+) create mode 100644 plugins/dynamix.docker.manager/styles/style-black.css create mode 100644 plugins/dynamix.docker.manager/styles/style-white.css diff --git a/plugins/dynamix.docker.manager/include/CreateDocker.php b/plugins/dynamix.docker.manager/include/CreateDocker.php index 617117891..d0ac3167e 100644 --- a/plugins/dynamix.docker.manager/include/CreateDocker.php +++ b/plugins/dynamix.docker.manager/include/CreateDocker.php @@ -618,6 +618,7 @@ $showAdditionalInfo = ''; +