diff options
8 files changed, 81 insertions, 70 deletions
diff --git a/modules-available/locationinfo/page.inc.php b/modules-available/locationinfo/page.inc.php index f849aa1d..13d7d459 100644 --- a/modules-available/locationinfo/page.inc.php +++ b/modules-available/locationinfo/page.inc.php @@ -417,6 +417,7 @@ class Page_LocationInfo extends Page $bookmarkUrls = Request::post('bookmarkUrls', [], 'array'); $bookmarkString = ''; for ($i = 0; $i < count($bookmarkNames); $i++) { + if ($bookmarkNames[$i] == '' || $bookmarkUrls[$i] == '') continue; $bookmarkString .= rawurlencode($bookmarkNames[$i]); $bookmarkString .= ","; $bookmarkString .= rawurlencode($bookmarkUrls[$i]); @@ -433,7 +434,7 @@ class Page_LocationInfo extends Page 'split-login' => Request::post('split-login', 0, 'bool'), 'browser' => Request::post('browser', 'slx-browser', 'string'), 'interactive' => Request::post('interactive', '0', 'bool'), - 'bookmarks' => $bookmarkString, + 'bookmarks' => $bookmarkString ? $bookmarkString : '', ); return array('config' => $conf, 'locationids' => []); } @@ -1026,6 +1027,21 @@ class Page_LocationInfo extends Page 'overrides' => json_encode($config['overrides']), )); } elseif ($panel['paneltype'] === 'URL') { + + $bookmarksArray = []; + if ($config['bookmarks'] !== '') { + $bookmarksConfig = explode(' ', $config['bookmarks']); + foreach ($bookmarksConfig AS $bookmark) { + $bookmark = explode(',', $bookmark); + $name = rawurldecode($bookmark[0]); + $url = rawurldecode($bookmark[1]); + $bookmarksArray[] = [ + 'name' => $name, + 'url' => $url, + ]; + } + } + Render::addTemplate('page-config-panel-url', array( 'new' => $id === 'new', 'uuid' => $id, @@ -1038,7 +1054,7 @@ class Page_LocationInfo extends Page 'split-login_checked' => $config['split-login'] ? 'checked' : '', 'browser' => $config['browser'], 'interactive_checked' => $config['interactive'] ? 'checked' : '', - 'bookmarks' => $config['bookmarks'], + 'bookmarks' => $bookmarksArray, )); } else { Render::addTemplate('page-config-panel-summary', array( diff --git a/modules-available/locationinfo/templates/page-config-panel-url.html b/modules-available/locationinfo/templates/page-config-panel-url.html index e34f0477..7b82199e 100644 --- a/modules-available/locationinfo/templates/page-config-panel-url.html +++ b/modules-available/locationinfo/templates/page-config-panel-url.html @@ -166,19 +166,11 @@ </div> <div class="list-group-item" id="bookmarks"> - <div class="row" id="bookmark0"> + <div class="row"> <div class="col-sm-3"> <label for="bookmarks">{{lang_bookmarks}}</label> </div> - <div class="col-sm-3"> - <input class="form-control" name="bookmarkNames[]" type="text" value="" - placeholder="bwLehrpool" required> - </div> - <div class="col-sm-3"> - <input class="form-control" name="bookmarkUrls[]" type="text" value="" - placeholder="http://www.bwlehrpool.de/" pattern=".*://.*" required> - </div> - <div class="col-sm-1"> + <div class="col-sm-7"> <button type="button" class="btn btn-success" onclick="addBookmark()"> <span class="glyphicon glyphicon-plus"></span> </button> @@ -189,6 +181,39 @@ </p> </div> </div> + <div class="row" style="margin-top: 1em;" id="bookmarkRow" hidden> + <div class="col-sm-3 col-sm-offset-3"> + <input class="form-control" name="bookmarkNames[]" type="text" value="" + placeholder="bwLehrpool"> + </div> + <div class="col-sm-3"> + <input class="form-control" name="bookmarkUrls[]" type="text" value="" + placeholder="http://www.bwlehrpool.de/" pattern=".*://.*"> + </div> + <div class="col-sm-1"> + <button type="button" class="btn btn-danger" onclick="this.closest('.row').remove()"> + <span class="glyphicon glyphicon-minus"></span> + </button> + </div> + </div> + + {{#bookmarks}} + <div class="row" style="margin-top: 1em;"> + <div class="col-sm-3 col-sm-offset-3"> + <input class="form-control" name="bookmarkNames[]" type="text" value="{{name}}" + placeholder="bwLehrpool" required> + </div> + <div class="col-sm-3"> + <input class="form-control" name="bookmarkUrls[]" type="text" value="{{url}}" + placeholder="http://www.bwlehrpool.de/" pattern=".*://.*" required> + </div> + <div class="col-sm-1"> + <button type="button" class="btn btn-danger" onclick="this.closest('.row').remove()"> + <span class="glyphicon glyphicon-minus"></span> + </button> + </div> + </div> + {{/bookmarks}} </div> </div> @@ -205,16 +230,12 @@ <script type="text/javascript"><!-- -var bookmarkCount = 0; - document.addEventListener("DOMContentLoaded", function () { // Initialize fancy tooltips $('p.helptext').tooltip(); // load value to dropdown menus $('#browser option[value="{{browser}}"]').attr("selected", "selected"); browserChange(); - // load bookmark fields - getBookmarks(); }); // Hide interactive-input if slx-browser is selected @@ -230,41 +251,14 @@ function browserChange() { // Add another bookmark input field to the form function addBookmark() { - bookmarkCount += 1; - $('#bookmarks').append('<div style="margin-top: 1em;" class="row" id="bookmark' + bookmarkCount + '">' + - '<div class="col-sm-3 col-sm-offset-3">' + - '<input class="form-control" name="bookmarkNames[]" type="text" value="" placeholder="bwLehrpool" required>' + - '</div>' + - '<div class="col-sm-3">' + - '<input class="form-control" name="bookmarkUrls[]" type="text" value="" placeholder="http://www.bwlehrpool.de/" pattern=".*://.*" required>' + - '</div>' + - '<div class="col-sm-1">' + - '<button type="button" class="btn btn-danger" onclick="deleteBookmark(' + bookmarkCount + ')">' + - '<span class="glyphicon glyphicon-minus"></span>' + - '</button>' + - '</div>' + - '</div>'); -} - -// Remove the corresponding bookmark -function deleteBookmark(num) { - $('#bookmark' + num).remove(); - bookmarkCount -= 1; -} - -// Load bookmarks from database and add to form -function getBookmarks() { - var bookmarks = "{{bookmarks}}".split(" "); - if (bookmarks[0] === "") return; - for (var i = 0; i < bookmarks.length; i++) { - var bookmark = bookmarks[i].split(','); - var name = decodeURIComponent(bookmark[0]); - var url = decodeURIComponent(bookmark[1]); - if (i !== 0) addBookmark(); - var bookmarkJquery = $('#bookmark' + bookmarkCount); - bookmarkJquery.find("input[name='bookmarkNames[]']").val(name); - bookmarkJquery.find("input[name='bookmarkUrls[]']").val(url); - } + var rowCopy = $('#bookmarkRow').clone(); + rowCopy.attr('id', ''); + rowCopy.show(); + rowCopy.find('input').each(function() { + $( this ).val(''); + $( this ).prop('required', true); + }); + $('#bookmarks').append(rowCopy); } //--></script> diff --git a/modules-available/minilinux/inc/minilinux.inc.php b/modules-available/minilinux/inc/minilinux.inc.php index 54536096..ca81eafa 100644 --- a/modules-available/minilinux/inc/minilinux.inc.php +++ b/modules-available/minilinux/inc/minilinux.inc.php @@ -71,11 +71,9 @@ class MiniLinux WHERE sourceid = :sourceid AND taskid = :taskid", ['sourceid' => $sourceid, 'taskid' => $taskId]); // Clean up -- delete orphaned versions that are not installed - $orphaned = Database::queryColumnArray('SELECT versionid FROM minilinux_version WHERE orphan > 4 AND installed = 0'); - if (!empty($orphaned)) { - Database::exec('DELETE FROM minilinux_version WHERE versionid IN (:list)', ['list' => $orphaned]); - } - Database::exec('DELETE FROM minilinux_branch', [], true); + Database::exec('DELETE FROM minilinux_version WHERE orphan > 4 AND installed = 0'); + // FKC makes sure we only delete orphaned ones + Database::exec('DELETE IGNORE FROM minilinux_branch WHERE 1', [], true); } private static function addBranches($sourceid, $systems) diff --git a/modules-available/serversetup-bwlp-ipxe/inc/bootentry.inc.php b/modules-available/serversetup-bwlp-ipxe/inc/bootentry.inc.php index dec70528..e89380ce 100644 --- a/modules-available/serversetup-bwlp-ipxe/inc/bootentry.inc.php +++ b/modules-available/serversetup-bwlp-ipxe/inc/bootentry.inc.php @@ -308,13 +308,17 @@ class StandardBootEntry extends BootEntry $script .= "-r "; } $script .= $entry->executable; - if (empty($initrds)) { - $rdBase = ''; - } else { - $rdBase = " initrd=" . implode(',', $initrds); + if (!empty($initrds)) { + if ($mode === BootEntry::BIOS) { + $script .= " initrd=" . implode(',', $initrds); + } else { + foreach ($initrds as $initrd) { + $script .= " initrd=$initrd"; + } + } } if (!empty($entry->commandLine)) { - $script .= "$rdBase {$entry->commandLine}"; + $script .= ' ' . $entry->commandLine; } $script .= " || goto $failLabel\n"; if ($entry->resetConsole) { diff --git a/modules-available/sysconfig/inc/configtgz.inc.php b/modules-available/sysconfig/inc/configtgz.inc.php index cf9bf041..c1df2c93 100644 --- a/modules-available/sysconfig/inc/configtgz.inc.php +++ b/modules-available/sysconfig/inc/configtgz.inc.php @@ -135,9 +135,8 @@ class ConfigTgz { if ($this->configId === 0) Util::traceError('ConfigTgz::delete called with invalid config id!'); - $ret = Database::exec("DELETE FROM configtgz WHERE configid = :configid LIMIT 1", array( - 'configid' => $this->configId - ), true) !== false; + $ret = Database::exec("DELETE FROM configtgz WHERE configid = :configid LIMIT 1", + ['configid' => $this->configId], true); if ($ret !== false) { if ($this->file !== false) Taskmanager::submit('DeleteFile', array('file' => $this->file), true); @@ -145,7 +144,7 @@ class ConfigTgz $this->modules = false; $this->file = false; } - return $ret; + return $ret !== false; } public function markOutdated() diff --git a/modules-available/sysconfig/lang/de/messages.json b/modules-available/sysconfig/lang/de/messages.json index 5bceb2f0..6bc2f2e5 100644 --- a/modules-available/sysconfig/lang/de/messages.json +++ b/modules-available/sysconfig/lang/de/messages.json @@ -1,5 +1,5 @@ { - "config-activated": "Konfiguration {{0}} wurde aktiviert", + "config-delete-error": "Datenbankfehler: {{0}}", "config-deleted": "Konfiguration {{0}} wurde gel\u00f6scht", "config-invalid": "Konfiguration mit ID {{0}} existiert nicht", "could-not-determine-binddn": "Konnte Bind-DN nicht ermitteln ({{0}})", @@ -9,7 +9,6 @@ "module-added": "Modul erfolgreich hinzugef\u00fcgt", "module-deleted": "Modul {{0}} wurde gel\u00f6scht", "module-edited": "Modul wurde aktualisiert", - "module-in-use": "Modul {{0}} wird noch durch Konfiguration {{1}} verwendet", "module-rebuild-failed": "Neubau des Moduls fehlgeschlagen", "module-rebuilding": "Modul wird neu generiert", "module-rebuilt": "Modul wurde neu generiert", diff --git a/modules-available/sysconfig/lang/en/messages.json b/modules-available/sysconfig/lang/en/messages.json index 6e50b80c..d34e4bfa 100644 --- a/modules-available/sysconfig/lang/en/messages.json +++ b/modules-available/sysconfig/lang/en/messages.json @@ -1,5 +1,5 @@ { - "config-activated": "Configuration {{0}} has been activated", + "config-delete-error": "Database error: {{0}}", "config-deleted": "Deleted configuration {{0}}", "config-invalid": "Configuration with id {{0}} does not exist", "could-not-determine-binddn": "Could not determine bind dn ({{0}})", @@ -9,7 +9,6 @@ "module-added": "Module successfully added", "module-deleted": "Module {{0}} was deleted", "module-edited": "Module has been edited", - "module-in-use": "Module {{0}} is still used by Configuration {{1}}", "module-rebuild-failed": "Rebuilding module failed", "module-rebuilding": "Module is rebuilding...", "module-rebuilt": "Module was rebuilt", diff --git a/modules-available/sysconfig/page.inc.php b/modules-available/sysconfig/page.inc.php index 320030f9..b64c7a5c 100644 --- a/modules-available/sysconfig/page.inc.php +++ b/modules-available/sysconfig/page.inc.php @@ -481,7 +481,9 @@ class Page_SysConfig extends Page Message::addError('config-invalid', $configid); Util::redirect('?do=sysconfig&locationid=' . $this->currentLoc); } - if ($config->delete() !== false) { + if ($config->delete() === false) { + Message::addError('config-delete-error', Database::lastError()); + } else { Message::addSuccess('config-deleted', $config->title()); } Util::redirect('?do=sysconfig&locationid=' . $this->currentLoc); |