[PATCH v2 0/4] Host Repository Management Support

Add host repositories management in this patch set. Please apply the following patch first: * [UI] Grid Enhancement - "title" Attribute for Long Values Know issues: * Editing a repository will always fails because back-end responds an error: KCHAPI0004E: Parameters is_mirror are not allowed to be updated in repository v1 -> v2: 2a) Removed "Repository" in column names (Adam King's comment) 2b) Adjust column name sequence (Adam King's comment) 2c) Enabled is_mirror radio button in edit window (Adam King's comment) Hongliang Wang (4): Add i18n Strings for Repositories Management Add API Support for Repositories Management Add/Edit Repository Support Integrate Repositories Management into Host Tab po/POTFILES.in | 2 + ui/css/theme-default/host.css | 40 ++++++++++ ui/css/theme-default/repository-add.css | 39 ++++++++++ ui/css/theme-default/repository-edit.css | 69 +++++++++++++++++ ui/js/src/kimchi.api.js | 61 +++++++++++++++ ui/js/src/kimchi.host.js | 123 +++++++++++++++++++++++++++++++ ui/js/src/kimchi.repository_add_main.js | 84 +++++++++++++++++++++ ui/js/src/kimchi.repository_edit_main.js | 85 +++++++++++++++++++++ ui/pages/i18n.html.tmpl | 18 +++++ ui/pages/repository-add.html.tmpl | 104 ++++++++++++++++++++++++++ ui/pages/repository-edit.html.tmpl | 121 ++++++++++++++++++++++++++++++ ui/pages/tabs/host.html.tmpl | 13 ++++ 12 files changed, 759 insertions(+) create mode 100644 ui/css/theme-default/repository-add.css create mode 100644 ui/css/theme-default/repository-edit.css create mode 100644 ui/js/src/kimchi.repository_add_main.js create mode 100644 ui/js/src/kimchi.repository_edit_main.js create mode 100644 ui/pages/repository-add.html.tmpl create mode 100644 ui/pages/repository-edit.html.tmpl -- 1.8.1.4

i18n translation strings. Signed-off-by: Hongliang Wang <hlwang@linux.vnet.ibm.com> --- ui/pages/i18n.html.tmpl | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/ui/pages/i18n.html.tmpl b/ui/pages/i18n.html.tmpl index bf8a0d7..7aee7ea 100644 --- a/ui/pages/i18n.html.tmpl +++ b/ui/pages/i18n.html.tmpl @@ -76,6 +76,24 @@ var i18n = { 'KCHHOST6007M': "$_("Sent")", 'KCHHOST6008M': "$_("Shutting down or restarting host will cause unsaved work lost. Continue to shut down/restarting?")", + + 'KCHREPO6001M': "$_("Confirm")", + 'KCHREPO6002M': "$_("Repository will be removed permanently and can't be recovered. Do you want to continue?")", + 'KCHREPO6003M': "$_("Repositories")", + 'KCHREPO6004M': "$_("ID")", + 'KCHREPO6005M': "$_("Name")", + 'KCHREPO6006M': "$_("Base URL")", + 'KCHREPO6007M': "$_("Is Mirror")", + 'KCHREPO6008M': "$_("URL Args")", + 'KCHREPO6009M': "$_("Enabled")", + 'KCHREPO6010M': "$_("GPG Check")", + 'KCHREPO6011M': "$_("GPG Key")", + 'KCHREPO6012M': "$_("Add")", + 'KCHREPO6013M': "$_("Edit")", + 'KCHREPO6014M': "$_("Remove")", + 'KCHREPO6015M': "$_("Failed.")", + + 'KCHDR6001M': "$_("Debug report will be removed permanently and can't be recovered. Do you want to continue?")", 'KCHDR6002M': "$_("Debug Reports")", 'KCHDR6003M': "$_("Name")", -- 1.8.1.4

Add API calling in kimchi.api.js. Signed-off-by: Hongliang Wang <hlwang@linux.vnet.ibm.com> --- ui/js/src/kimchi.api.js | 61 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/ui/js/src/kimchi.api.js b/ui/js/src/kimchi.api.js index 02137fb..939b7fe 100644 --- a/ui/js/src/kimchi.api.js +++ b/ui/js/src/kimchi.api.js @@ -803,5 +803,66 @@ var kimchi = { success : suc, error : err }); + }, + + createRepository : function(settings, suc, err) { + kimchi.requestJSON({ + url : "host/repositories", + type : "POST", + contentType : "application/json", + data : JSON.stringify(settings), + dataType : "json", + success: suc, + error: err + }); + }, + + retrieveRepository : function(repository, suc, err) { + var reposID = encodeURIComponent(repository); + kimchi.requestJSON({ + url : kimchi.url + "host/repositories/" + reposID, + type : 'GET', + contentType : 'application/json', + dataType : 'json', + success : suc, + error : err + }); + }, + + updateRepository : function(name, settings, suc, err) { + var reposID = encodeURIComponent(name); + $.ajax({ + url : kimchi.url + "host/repositories/" + reposID, + type : 'PUT', + contentType : 'application/json', + data : JSON.stringify(settings), + dataType : 'json', + success : suc, + error : err + }); + }, + + deleteRepository : function(repository, suc, err) { + var reposID = encodeURIComponent(repository); + kimchi.requestJSON({ + url : kimchi.url + 'host/repositories/' + reposID, + type : 'DELETE', + contentType : 'application/json', + dataType : 'json', + success : suc, + error : err + }); + }, + + listRepositories : function(suc, err) { + kimchi.requestJSON({ + url : kimchi.url + 'host/repositories', + type : 'GET', + contentType : 'application/json', + dataType : 'json', + resend: true, + success : suc, + error : err + }); } }; -- 1.8.1.4

Repositories management support: 1) Add a repository 2) Edit a repository Signed-off-by: Hongliang Wang <hlwang@linux.vnet.ibm.com> --- po/POTFILES.in | 2 + ui/css/theme-default/repository-add.css | 39 ++++++++++ ui/css/theme-default/repository-edit.css | 69 ++++++++++++++++++ ui/js/src/kimchi.repository_add_main.js | 84 +++++++++++++++++++++ ui/js/src/kimchi.repository_edit_main.js | 85 ++++++++++++++++++++++ ui/pages/repository-add.html.tmpl | 104 ++++++++++++++++++++++++++ ui/pages/repository-edit.html.tmpl | 121 +++++++++++++++++++++++++++++++ 7 files changed, 504 insertions(+) create mode 100644 ui/css/theme-default/repository-add.css create mode 100644 ui/css/theme-default/repository-edit.css create mode 100644 ui/js/src/kimchi.repository_add_main.js create mode 100644 ui/js/src/kimchi.repository_edit_main.js create mode 100644 ui/pages/repository-add.html.tmpl create mode 100644 ui/pages/repository-edit.html.tmpl diff --git a/po/POTFILES.in b/po/POTFILES.in index 4ff7eaa..955a675 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -7,6 +7,8 @@ ui/pages/i18n.html.tmpl ui/pages/kimchi-ui.html.tmpl ui/pages/login-window.html.tmpl ui/pages/report-add.html.tmpl +ui/pages/repository-add.html.tmpl +ui/pages/repository-edit.html.tmpl ui/pages/storagepool-add.html.tmpl ui/pages/tabs/guests.html.tmpl ui/pages/tabs/host.html.tmpl diff --git a/ui/css/theme-default/repository-add.css b/ui/css/theme-default/repository-add.css new file mode 100644 index 0000000..2434efd --- /dev/null +++ b/ui/css/theme-default/repository-add.css @@ -0,0 +1,39 @@ +/* + * Project Kimchi + * + * Copyright IBM, Corp. 2013 + * + * Authors: + * Hongliang Wang <hlwang@linux.vnet.ibm.com> + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#repository-add-window { + height: 680px; + width: 1000px; +} + +#repository-add-window .required { + color: red; + padding-left: 5px; + vertical-align: top; +} + +#repository-add-window .textbox-wrapper input[type="text"] { + box-sizing: border-box; + width: 100%; +} + +#repository-add-window .textbox-wrapper label { + vertical-align: middle; +} diff --git a/ui/css/theme-default/repository-edit.css b/ui/css/theme-default/repository-edit.css new file mode 100644 index 0000000..ee6ad2e --- /dev/null +++ b/ui/css/theme-default/repository-edit.css @@ -0,0 +1,69 @@ +/* + * Project Kimchi + * + * Copyright IBM, Corp. 2013 + * + * Authors: + * Hongliang Wang <hlwang@linux.vnet.ibm.com> + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#repository-edit-window { + height: 420px; + width: 1000px; +} + +.repository-edit-fieldset { + float: left; + padding: 1em; +} + +.repository-edit-wrapper-label, .repository-edit-wrapper-controls { + display: inline-block; + height: 38px; + line-height: 38px; + margin-top: 5px; + vertical-align: top; +} + +.repository-edit-wrapper-label { + width: 150px; +} + +.repository-edit-wrapper-controls label { + vertical-align: middle; +} + +.repository-edit-wrapper-controls { + width: 300px; +} + +.repository-edit-wrapper-controls input[type="text"] { + font-size: 16px; + height: 38px; + line-height: 38px; + background: #fff; + -webkit-border-radius: 5px; + border-radius: 5px; + box-shadow: 2px 2px 2px #eee inset; + border-top: 1px solid #bbb; + border-left: 1px solid #bbb; + padding: 0 10px; + width: 250px; +} + +.repository-edit-wrapper-controls input[type="text"][disabled] { + color: #bbb; + background-color: #fafafa; + cursor: not-allowed; +} diff --git a/ui/js/src/kimchi.repository_add_main.js b/ui/js/src/kimchi.repository_add_main.js new file mode 100644 index 0000000..75b785e --- /dev/null +++ b/ui/js/src/kimchi.repository_add_main.js @@ -0,0 +1,84 @@ +/* + * Project Kimchi + * + * Copyright IBM, Corp. 2013 + * + * Authors: + * Hongliang Wang <hlwang@linux.vnet.ibm.com> + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +kimchi.repository_add_main = function() { + + var addForm = $('#form-repository-add'); + var addButton = $('#button-repository-add'); + + var nameBox = $('input[name="repo_id"]', addForm); + var urlBox = $('input[name="baseurl"]', addForm); + var isMirrorButton = $('input[name="is_mirror"]', addForm); + var urlArgsBox = $('input[name="url_args"]', addForm); + var gpgkeyBox = $('input[name="gpgkey"]', addForm); + + var validateForm = function(event) { + var valid = $(urlBox).val() !== ''; + $(addButton).prop('disabled', !valid); + return valid; + }; + + $(urlBox).on('input propertychange', validateForm); + + var booleanFields = ['is_mirror']; + + var addRepository = function(event) { + var valid = validateForm(); + if(!valid) { + return false; + } + + var formData = $(addForm).serializeObject(); + for(var p in formData) { + if(formData[p] == '') { + delete formData[p]; + } + } + + $(booleanFields).each(function(i, f) { + switch(formData[f]) { + case 'true': + formData[f] = true; + break; + case 'false': + formData[f] = false; + break; + default: + delete formData[f]; + break; + } + }); + + kimchi.createRepository(formData, function() { + kimchi.topic('kimchi/repositoryAdded').publish(); + kimchi.window.close(); + }, function(jqXHR, textStatus, errorThrown) { + var reason = jqXHR && + jqXHR['responseJSON'] && + jqXHR['responseJSON']['reason']; + reason = reason ? ': ' + reason : ''; + kimchi.message.error(i18n['KCHREPO6015M'] + reason); + }); + + return false; + }; + + $(addForm).on('submit', addRepository); +}; diff --git a/ui/js/src/kimchi.repository_edit_main.js b/ui/js/src/kimchi.repository_edit_main.js new file mode 100644 index 0000000..0ab008e --- /dev/null +++ b/ui/js/src/kimchi.repository_edit_main.js @@ -0,0 +1,85 @@ +/* + * Project Kimchi + * + * Copyright IBM, Corp. 2013 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +kimchi.repository_edit_main = function() { + + var editForm = $('#form-repository-edit'); + var saveButton = $('#repository-edit-button-save'); + + kimchi.retrieveRepository(kimchi.selectedRepository, function(repository) { + for(var prop in repository) { + var control = $('input[name="' + prop + '"]', editForm); + switch($(control).attr('type')) { + case 'text': + $(control).val(repository[prop]); + break; + case 'radio': + case 'checkbox': + $(control).each(function(i, c) { + var matched = ('' + repository[prop]) == $(c).val(); + $(c).prop('checked', matched); + }); + break; + default: + break; + } + + } + + $('input', editForm).on('input propertychange', function(event) { + if($(this).val() !== '') { + $(saveButton).prop('disabled', false); + } + }); + }); + + var booleanFields = ['is_mirror', 'gpgcheck']; + + var editRepository = function(event) { + var formData = $(editForm).serializeObject(); + + $(booleanFields).each(function(i, f) { + switch(formData[f]) { + case 'true': + formData[f] = true; + break; + case 'false': + formData[f] = false; + break; + default: + delete formData[f]; + break; + } + }); + + kimchi.updateRepository(kimchi.selectedRepository, formData, function() { + kimchi.topic('kimchi/repositoryUpdated').publish(); + kimchi.window.close(); + }, function(jqXHR, textStatus, errorThrown) { + var reason = jqXHR && + jqXHR['responseJSON'] && + jqXHR['responseJSON']['reason']; + reason = reason ? ': ' + reason : ''; + kimchi.message.error(i18n['KCHREPO6015M'] + reason); + }); + + return false; + }; + + $(editForm).on('submit', editRepository); + $(saveButton).on('click', editRepository); +}; diff --git a/ui/pages/repository-add.html.tmpl b/ui/pages/repository-add.html.tmpl new file mode 100644 index 0000000..a170f1d --- /dev/null +++ b/ui/pages/repository-add.html.tmpl @@ -0,0 +1,104 @@ +#* + * Project Kimchi + * + * Copyright IBM, Corp. 2013 + * + * Authors: + * Hongliang Wang <hlwang@linux.vnet.ibm.com> + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *# +#unicode UTF-8 +#import gettext +#from kimchi.cachebust import href +#silent t = gettext.translation($lang.domain, $lang.localedir, languages=$lang.lang) +#silent _ = t.gettext +#silent _t = t.gettext +<div id="repository-add-window" class="window"> + <form id="form-repository-add"> + <header class="window-header"> + <h1 class="title">$_("Add a Repository")</h1> + <div class="close">X</div> + </header> + <div class="content"> + <section class="form-section"> + <h2>1. $_("Name")</h2> + <div class="field"> + <p class="text-help"> + $_("Unique repository name for each repository, one word.") + </p> + <div class="textbox-wrapper"> + <input type="text" class="text" name="repo_id" /> + </div> + </div> + </section> + <section class="form-section"> + <h2>2. $_("Base URL")<span class="required" role="presentation" title="$_("Required Field")">*</span></h2> + <div class="field"> + <p class="text-help"> + $_("URL to the repodata directory when \"is_mirror\" is false. Otherwise, it can be URL to the mirror system for YUM. Can be an http://, ftp:// or file:// URL.") + </p> + <div class="textbox-wrapper"> + <input type="text" class="text" name="baseurl" /> + </div> + </div> + </section> + <section class="form-section"> + <h2>3. $_("Is Mirror")</h2> + <div class="field"> + <p class="text-help"> + $_("Set the given URI of baseurl as a mirror list, instead of use baseurl in repository configuration.") + </p> + <div class="textbox-wrapper"> + <input type="radio" id="isMirrorRadioTrue" name="is_mirror" value="true" /> + <label for="isMirrorRadioTrue">$_("Yes")</label> + <input type="radio" id="isMirrorRadioFalse" name="is_mirror" value="false" /> + <label for="isMirrorRadioFalse">$_("No")</label> + </div> + </div> + </section> + <section class="form-section"> + <h2>4. $_("URL Args")</h2> + <div class="field"> + <p class="text-help"> + $_("Arguments to be passed to baseurl, like the list of APT repositories provided by the same baseurl.") + </p> + <div class="textbox-wrapper"> + <input type="text" class="text" name="url_args" /> + </div> + </div> + </section> + <section class="form-section"> + <h2>5. $_("GPG Key")</h2> + <div class="field"> + <p class="text-help"> + $_("URL pointing to the ASCII-armored GPG key file for the repository. This option is used if yum needs a public key to verify a package and the required key hasn't been imported into the RPM database.") + </p> + <div class="textbox-wrapper"> + <input type="text" class="text" name="gpgkey" /> + </div> + </div> + </section> + </div> + <footer> + <div class="btn-group"> + <button type="submit" id="button-repository-add" class="btn-normal" disabled="disabled"> + <span class="text">$_("Add")</span> + </button> + </div> + </footer> + </form> +</div> +<script> + kimchi.repository_add_main(); +</script> diff --git a/ui/pages/repository-edit.html.tmpl b/ui/pages/repository-edit.html.tmpl new file mode 100644 index 0000000..9adf0a1 --- /dev/null +++ b/ui/pages/repository-edit.html.tmpl @@ -0,0 +1,121 @@ +#* + * Project Kimchi + * + * Copyright IBM, Corp. 2013 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *# +#unicode UTF-8 +#import gettext +#from kimchi.cachebust import href +#silent t = gettext.translation($lang.domain, $lang.localedir, languages=$lang.lang) +#silent _ = t.gettext +#silent _t = t.gettext + +<div id="repository-edit-window" class="window"> + <header> + <h1 class="title">$_("Edit Repository")</h1> + <div class="close">X</div> + </header> + <div class="content"> + <form id="form-repository-edit"> + <fieldset class="repository-edit-fieldset"> + <div> + <div class="repository-edit-wrapper-label"> + <label for="repository-edit-id-textbox">$_("ID")</label> + </div> + <div class="repository-edit-wrapper-controls"> + <input id="repository-edit-id-textbox" name="repo_id" type="text" /> + </div> + </div> + <div> + <div class="repository-edit-wrapper-label"> + <label for="repository-edit-name-textbox">$_("Name")</label> + </div> + <div class="repository-edit-wrapper-controls"> + <input id="repository-edit-name-textbox" name="repo_name" type="text" /> + </div> + </div> + <div> + <div class="repository-edit-wrapper-label"> + <label>$_("Enabled")</label> + </div> + <div class="repository-edit-wrapper-controls"> + <input id="repository-edit-enabled-radio-true" name="enabled" type="radio" value="true" disabled="disabled" /> + <label for="repository-edit-enabled-radio-true">$_("Yes")</label> + <input id="repository-edit-enabled-radio-false" name="enabled" type="radio" value="false" disabled="disabled" /> + <label for="repository-edit-enabled-radio-false">$_("No")</label> + </div> + </div> + <div> + <div class="repository-edit-wrapper-label"> + <label for="repository-edit-baseurl-textbox">$_("Base URL")</label> + </div> + <div class="repository-edit-wrapper-controls"> + <input id="repository-edit-baseurl-textbox" name="baseurl" type="text" /> + </div> + </div> + </fieldset> + <fieldset class="repository-edit-fieldset"> + <div> + <div class="repository-edit-wrapper-label"> + <label for="repository-edit-urlargs-textbox">$_("URL Args")</label> + </div> + <div class="repository-edit-wrapper-controls"> + <input id="repository-edit-urlargs-textbox" name="url_args" type="text" /> + </div> + </div> + <div> + <div class="repository-edit-wrapper-label"> + <label>$_("Is Mirror")</label> + </div> + <div class="repository-edit-wrapper-controls"> + <input id="repository-edit-ismirror-radio-true" name="is_mirror" type="radio" value="true" /> + <label for="repository-edit-ismirror-radio-true">$_("Yes")</label> + <input id="repository-edit-ismirror-radio-false" name="is_mirror" type="radio" value="false" /> + <label for="repository-edit-ismirror-radio-false">$_("No")</label> + </div> + </div> + <div> + <div class="repository-edit-wrapper-label"> + <label>$_("GPG Check")</label> + </div> + <div class="repository-edit-wrapper-controls"> + <input id="repository-edit-gpgcheck-radio-true" name="gpgcheck" type="radio" value="true" /> + <label for="repository-edit-gpgcheck-radio-true">$_("Yes")</label> + <input id="repository-edit-gpgcheck-radio-false" name="gpgcheck" type="radio" value="false" /> + <label for="repository-edit-gpgcheck-radio-false">$_("No")</label> + </div> + </div> + <div> + <div class="repository-edit-wrapper-label"> + <label for="repository-edit-gpgkey-textbox">$_("GPG Key")</label> + </div> + <div class="repository-edit-wrapper-controls"> + <input id="repository-edit-gpgkey-textbox" name="gpgkey" type="text" /> + </div> + </div> + </fieldset> + </form> + </div> + <footer> + <div class="btn-group"> + <button id="repository-edit-button-save" class="btn-normal"> + <span class="text">$_("Save")</span> + </button> + </div> + </footer> +</div> +<script type="text/javascript"> + kimchi.repository_edit_main(); +</script> -- 1.8.1.4

Integrate repositories management into host tab. Signed-off-by: Hongliang Wang <hlwang@linux.vnet.ibm.com> --- ui/css/theme-default/host.css | 40 ++++++++++++++ ui/js/src/kimchi.host.js | 123 ++++++++++++++++++++++++++++++++++++++++++ ui/pages/tabs/host.html.tmpl | 13 +++++ 3 files changed, 176 insertions(+) diff --git a/ui/css/theme-default/host.css b/ui/css/theme-default/host.css index 470ed1b..d304b13 100644 --- a/ui/css/theme-default/host.css +++ b/ui/css/theme-default/host.css @@ -224,3 +224,43 @@ width: 300px; } /* End of Debug Report */ + +/* Repository */ +.host-panel #repositories-grid { + border-color: #ddd; + height: 300px; + width: 850px; +} + +.repository-id { + width: 70px; +} + +.repository-name { + width: 180px; +} + +.repository-baseurl { + width: 300px; +} + +.repository-ismirror { + width: 60px; +} + +.repository-urlargs { + width: 70px; +} + +.repository-enabled { + width: 60px; +} + +.repository-gpgcheck { + width: 60px; +} + +.repository-gpgkey { + width: 300px; +} +/* End of Repository */ diff --git a/ui/js/src/kimchi.host.js b/ui/js/src/kimchi.host.js index 7974054..34a6948 100644 --- a/ui/js/src/kimchi.host.js +++ b/ui/js/src/kimchi.host.js @@ -133,6 +133,126 @@ kimchi.host_main = function() { }); }; + var repositoriesGridID = 'repositories-grid'; + var repositoriesGrid = null; + var initRepositoriesGrid = function(repositories) { + repositoriesGrid = new kimchi.widget.Grid({ + container: 'repositories-grid-container', + id: repositoriesGridID, + title: i18n['KCHREPO6003M'], + toolbarButtons: [{ + id: repositoriesGridID + '-add-button', + label: i18n['KCHREPO6012M'], + onClick: function(event) { + kimchi.window.open('repository-add.html'); + } + }, { + id: repositoriesGridID + '-edit-button', + label: i18n['KCHREPO6013M'], + disabled: true, + onClick: function(event) { + var repository = repositoriesGrid.getSelected(); + if(!repository) { + return; + } + kimchi.selectedRepository = repository['repo_id']; + kimchi.window.open('repository-edit.html'); + } + }, { + id: repositoriesGridID + '-remove-button', + label: i18n['KCHREPO6014M'], + disabled: true, + onClick: function(event) { + var repository = repositoriesGrid.getSelected(); + if(!repository) { + return; + } + + var settings = { + title : i18n['KCHREPO6001M'], + content : i18n['KCHREPO6002M'], + confirm : i18n['KCHAPI6004M'], + cancel : i18n['KCHAPI6003M'] + }; + + kimchi.confirm(settings, function() { + kimchi.deleteRepository( + repository['repo_id'], + function(result) { + kimchi.topic('kimchi/repositoryDeleted').publish(result); + }, function(error) { + } + ); + }); + } + }], + onRowSelected: function(row) { + $('#' + repositoriesGridID + '-remove-button') + .prop('disabled', false); + $('#' + repositoriesGridID + '-edit-button') + .prop('disabled', false); + }, + frozenFields: [], + fields: [{ + name: 'repo_id', + label: i18n['KCHREPO6004M'], + 'class': 'repository-id' + }, { + name: 'repo_name', + label: i18n['KCHREPO6005M'], + 'class': 'repository-name' + }, { + name: 'enabled', + label: i18n['KCHREPO6009M'], + 'class': 'repository-enabled' + }, { + name: 'baseurl', + label: i18n['KCHREPO6006M'], + makeTitle: true, + 'class': 'repository-baseurl' + }, { + name: 'url_args', + label: i18n['KCHREPO6008M'], + 'class': 'repository-urlargs' + }, { + name: 'is_mirror', + label: i18n['KCHREPO6007M'], + 'class': 'repository-ismirror' + }, { + name: 'gpgcheck', + label: i18n['KCHREPO6010M'], + 'class': 'repository-gpgcheck' + }, { + name: 'gpgkey', + label: i18n['KCHREPO6011M'], + 'class': 'repository-gpgkey' + }], + data: repositories + }); + kimchi.topic('kimchi/repositoryAdded').subscribe(listRepositories); + kimchi.topic('kimchi/repositoryUpdated').subscribe(listRepositories); + kimchi.topic('kimchi/repositoryDeleted').subscribe(listRepositories); + }; + + var listRepositories = function() { + kimchi.listRepositories(function(repositories) { + $.each(repositories, function(i, item) { + repositories[i]['rowno'] = i + 1; + }); + if(repositoriesGrid) { + repositoriesGrid.setData(repositories); + } + else { + initRepositoriesGrid(repositories); + } + }); + + $('#' + repositoriesGridID + '-remove-button') + .prop('disabled', true); + $('#' + repositoriesGridID + '-edit-button') + .prop('disabled', true); + }; + var shutdownButtonID = '#host-button-shutdown'; var restartButtonID = '#host-button-restart'; var shutdownHost = function(params) { @@ -198,6 +318,8 @@ kimchi.host_main = function() { $('#debug-report-section').removeClass('hidden'); listDebugReports(); }); + + listRepositories(); }; kimchi.topic('kimchi/debugReportAdded').subscribe(function(params) { @@ -469,5 +591,6 @@ kimchi.host_main = function() { delete kimchi.hostTimer; } reportGrid && reportGrid.destroy(); + repositoriesGrid && repositoriesGrid.destroy(); }); }; diff --git a/ui/pages/tabs/host.html.tmpl b/ui/pages/tabs/host.html.tmpl index 52f849b..9acb68a 100644 --- a/ui/pages/tabs/host.html.tmpl +++ b/ui/pages/tabs/host.html.tmpl @@ -120,6 +120,19 @@ </div> </div> </div> + <div id="repositories-section" class="host-section"> + <h3 class="section-header" + aria-controls="content-repositories"> + $_("Repositories") + </h3> + <div id="content-repositories" class="section-content"> + <div class="section-row"> + <div class="section-value"> + <div id="repositories-grid-container"></div> + </div> + </div> + </div> + </div> <div id="debug-report-section" class="host-section hidden"> <h3 class="section-header" aria-controls="content-sys-reports"> -- 1.8.1.4

This patch addendum addresses the remaining issues with Repository management UI except providing the ability to enable/disable a repository. Reviewing API.md I found that "enabled" is not a valid parameter as input to the PUT method of a repository. We need to add enable/disable actions to the menu, and invoke the appropriate POST action on the selected repo. Signed-off-by: Adam King <rak@linux.vnet.ibm.com> --- ui/js/src/kimchi.grid.js | 2 +- ui/js/src/kimchi.repository_add_main.js | 3 ++- ui/js/src/kimchi.repository_edit_main.js | 17 ++--------------- ui/pages/repository-add.html.tmpl | 2 +- ui/pages/repository-edit.html.tmpl | 22 ---------------------- 5 files changed, 6 insertions(+), 40 deletions(-) diff --git a/ui/js/src/kimchi.grid.js b/ui/js/src/kimchi.grid.js index 215d6ea..4cc7807 100644 --- a/ui/js/src/kimchi.grid.js +++ b/ui/js/src/kimchi.grid.js @@ -158,7 +158,7 @@ kimchi.widget.Grid = function(params) { var rowNode = $('<tr></tr>').appendTo(tbody); $.each(fields, function(fi, field) { var fieldName = field['name']; - var value = row[fieldName]; + var value = row[fieldName]==null ? '' : row[fieldName]; $('<td><div class="cell-text-wrapper"' + (field['makeTitle'] === true ? ' title="' + value + '"' diff --git a/ui/js/src/kimchi.repository_add_main.js b/ui/js/src/kimchi.repository_add_main.js index 75b785e..1e57214 100644 --- a/ui/js/src/kimchi.repository_add_main.js +++ b/ui/js/src/kimchi.repository_add_main.js @@ -47,7 +47,7 @@ kimchi.repository_add_main = function() { var formData = $(addForm).serializeObject(); for(var p in formData) { - if(formData[p] == '') { + if((formData[p] == '') || (formData[p] == null)) { delete formData[p]; } } @@ -61,6 +61,7 @@ kimchi.repository_add_main = function() { formData[f] = false; break; default: + formData[f] = false; delete formData[f]; break; } diff --git a/ui/js/src/kimchi.repository_edit_main.js b/ui/js/src/kimchi.repository_edit_main.js index 0ab008e..6083327 100644 --- a/ui/js/src/kimchi.repository_edit_main.js +++ b/ui/js/src/kimchi.repository_edit_main.js @@ -47,24 +47,11 @@ kimchi.repository_edit_main = function() { }); }); - var booleanFields = ['is_mirror', 'gpgcheck']; - var editRepository = function(event) { var formData = $(editForm).serializeObject(); - $(booleanFields).each(function(i, f) { - switch(formData[f]) { - case 'true': - formData[f] = true; - break; - case 'false': - formData[f] = false; - break; - default: - delete formData[f]; - break; - } - }); + formData["is_mirror"] = (formData["is_mirror"]=="true") ? true : false; + formData["gpgcheck"] = (formData["gpgkey"])? true : false; kimchi.updateRepository(kimchi.selectedRepository, formData, function() { kimchi.topic('kimchi/repositoryUpdated').publish(); diff --git a/ui/pages/repository-add.html.tmpl b/ui/pages/repository-add.html.tmpl index a170f1d..4a97fd3 100644 --- a/ui/pages/repository-add.html.tmpl +++ b/ui/pages/repository-add.html.tmpl @@ -62,7 +62,7 @@ <div class="textbox-wrapper"> <input type="radio" id="isMirrorRadioTrue" name="is_mirror" value="true" /> <label for="isMirrorRadioTrue">$_("Yes")</label> - <input type="radio" id="isMirrorRadioFalse" name="is_mirror" value="false" /> + <input type="radio" id="isMirrorRadioFalse" checked="checked" name="is_mirror" value="false" /> <label for="isMirrorRadioFalse">$_("No")</label> </div> </div> diff --git a/ui/pages/repository-edit.html.tmpl b/ui/pages/repository-edit.html.tmpl index 9adf0a1..d6baf2f 100644 --- a/ui/pages/repository-edit.html.tmpl +++ b/ui/pages/repository-edit.html.tmpl @@ -48,17 +48,6 @@ </div> <div> <div class="repository-edit-wrapper-label"> - <label>$_("Enabled")</label> - </div> - <div class="repository-edit-wrapper-controls"> - <input id="repository-edit-enabled-radio-true" name="enabled" type="radio" value="true" disabled="disabled" /> - <label for="repository-edit-enabled-radio-true">$_("Yes")</label> - <input id="repository-edit-enabled-radio-false" name="enabled" type="radio" value="false" disabled="disabled" /> - <label for="repository-edit-enabled-radio-false">$_("No")</label> - </div> - </div> - <div> - <div class="repository-edit-wrapper-label"> <label for="repository-edit-baseurl-textbox">$_("Base URL")</label> </div> <div class="repository-edit-wrapper-controls"> @@ -88,17 +77,6 @@ </div> <div> <div class="repository-edit-wrapper-label"> - <label>$_("GPG Check")</label> - </div> - <div class="repository-edit-wrapper-controls"> - <input id="repository-edit-gpgcheck-radio-true" name="gpgcheck" type="radio" value="true" /> - <label for="repository-edit-gpgcheck-radio-true">$_("Yes")</label> - <input id="repository-edit-gpgcheck-radio-false" name="gpgcheck" type="radio" value="false" /> - <label for="repository-edit-gpgcheck-radio-false">$_("No")</label> - </div> - </div> - <div> - <div class="repository-edit-wrapper-label"> <label for="repository-edit-gpgkey-textbox">$_("GPG Key")</label> </div> <div class="repository-edit-wrapper-controls"> -- 1.8.1.4

On 03/13/2014 07:53 AM, Adam King wrote:
This patch addendum addresses the remaining issues with Repository management UI except providing the ability to enable/disable a repository. Reviewing API.md I found that "enabled" is not a valid parameter as input to the PUT method of a repository. We need to add enable/disable actions to the menu, and invoke the appropriate POST action on the selected repo. Yes. I believe enable/disable a repository is one of the basic requirements for repository management. @Aline & Paulo, please take a look at it.
Signed-off-by: Adam King <rak@linux.vnet.ibm.com> --- ui/js/src/kimchi.grid.js | 2 +- ui/js/src/kimchi.repository_add_main.js | 3 ++- ui/js/src/kimchi.repository_edit_main.js | 17 ++--------------- ui/pages/repository-add.html.tmpl | 2 +- ui/pages/repository-edit.html.tmpl | 22 ---------------------- 5 files changed, 6 insertions(+), 40 deletions(-)
diff --git a/ui/js/src/kimchi.grid.js b/ui/js/src/kimchi.grid.js index 215d6ea..4cc7807 100644 --- a/ui/js/src/kimchi.grid.js +++ b/ui/js/src/kimchi.grid.js @@ -158,7 +158,7 @@ kimchi.widget.Grid = function(params) { var rowNode = $('<tr></tr>').appendTo(tbody); $.each(fields, function(fi, field) { var fieldName = field['name']; - var value = row[fieldName]; + var value = row[fieldName]==null ? '' : row[fieldName]; $('<td><div class="cell-text-wrapper"' + (field['makeTitle'] === true ? ' title="' + value + '"' diff --git a/ui/js/src/kimchi.repository_add_main.js b/ui/js/src/kimchi.repository_add_main.js index 75b785e..1e57214 100644 --- a/ui/js/src/kimchi.repository_add_main.js +++ b/ui/js/src/kimchi.repository_add_main.js @@ -47,7 +47,7 @@ kimchi.repository_add_main = function() {
var formData = $(addForm).serializeObject(); for(var p in formData) { - if(formData[p] == '') { + if((formData[p] == '') || (formData[p] == null)) { delete formData[p]; } } @@ -61,6 +61,7 @@ kimchi.repository_add_main = function() { formData[f] = false; break; default: + formData[f] = false; delete formData[f]; break; } diff --git a/ui/js/src/kimchi.repository_edit_main.js b/ui/js/src/kimchi.repository_edit_main.js index 0ab008e..6083327 100644 --- a/ui/js/src/kimchi.repository_edit_main.js +++ b/ui/js/src/kimchi.repository_edit_main.js @@ -47,24 +47,11 @@ kimchi.repository_edit_main = function() { }); });
- var booleanFields = ['is_mirror', 'gpgcheck']; - var editRepository = function(event) { var formData = $(editForm).serializeObject();
- $(booleanFields).each(function(i, f) { - switch(formData[f]) { - case 'true': - formData[f] = true; - break; - case 'false': - formData[f] = false; - break; - default: - delete formData[f]; - break; - } - }); + formData["is_mirror"] = (formData["is_mirror"]=="true") ? true : false; + formData["gpgcheck"] = (formData["gpgkey"])? true : false;
kimchi.updateRepository(kimchi.selectedRepository, formData, function() { kimchi.topic('kimchi/repositoryUpdated').publish(); diff --git a/ui/pages/repository-add.html.tmpl b/ui/pages/repository-add.html.tmpl index a170f1d..4a97fd3 100644 --- a/ui/pages/repository-add.html.tmpl +++ b/ui/pages/repository-add.html.tmpl @@ -62,7 +62,7 @@ <div class="textbox-wrapper"> <input type="radio" id="isMirrorRadioTrue" name="is_mirror" value="true" /> <label for="isMirrorRadioTrue">$_("Yes")</label> - <input type="radio" id="isMirrorRadioFalse" name="is_mirror" value="false" /> + <input type="radio" id="isMirrorRadioFalse" checked="checked" name="is_mirror" value="false" /> <label for="isMirrorRadioFalse">$_("No")</label> </div> </div> diff --git a/ui/pages/repository-edit.html.tmpl b/ui/pages/repository-edit.html.tmpl index 9adf0a1..d6baf2f 100644 --- a/ui/pages/repository-edit.html.tmpl +++ b/ui/pages/repository-edit.html.tmpl @@ -48,17 +48,6 @@ </div> <div> <div class="repository-edit-wrapper-label"> - <label>$_("Enabled")</label> - </div> - <div class="repository-edit-wrapper-controls"> - <input id="repository-edit-enabled-radio-true" name="enabled" type="radio" value="true" disabled="disabled" /> - <label for="repository-edit-enabled-radio-true">$_("Yes")</label> - <input id="repository-edit-enabled-radio-false" name="enabled" type="radio" value="false" disabled="disabled" /> - <label for="repository-edit-enabled-radio-false">$_("No")</label> - </div> - </div> - <div> - <div class="repository-edit-wrapper-label"> <label for="repository-edit-baseurl-textbox">$_("Base URL")</label> </div> <div class="repository-edit-wrapper-controls"> @@ -88,17 +77,6 @@ </div> <div> <div class="repository-edit-wrapper-label"> - <label>$_("GPG Check")</label> - </div> - <div class="repository-edit-wrapper-controls"> - <input id="repository-edit-gpgcheck-radio-true" name="gpgcheck" type="radio" value="true" /> - <label for="repository-edit-gpgcheck-radio-true">$_("Yes")</label> - <input id="repository-edit-gpgcheck-radio-false" name="gpgcheck" type="radio" value="false" /> - <label for="repository-edit-gpgcheck-radio-false">$_("No")</label> - </div> - </div> - <div> - <div class="repository-edit-wrapper-label"> <label for="repository-edit-gpgkey-textbox">$_("GPG Key")</label> </div> <div class="repository-edit-wrapper-controls">

On 03/13/2014 10:35 AM, Hongliang Wang wrote:
On 03/13/2014 07:53 AM, Adam King wrote:
This patch addendum addresses the remaining issues with Repository management UI except providing the ability to enable/disable a repository. Reviewing API.md I found that "enabled" is not a valid parameter as input to the PUT method of a repository. We need to add enable/disable actions to the menu, and invoke the appropriate POST action on the selected repo. Yes. I believe enable/disable a repository is one of the basic requirements for repository management. @Aline & Paulo, please take a look at it. Adam just told me to try POST, so please ignore my last mail :)
Signed-off-by: Adam King <rak@linux.vnet.ibm.com> --- ui/js/src/kimchi.grid.js | 2 +- ui/js/src/kimchi.repository_add_main.js | 3 ++- ui/js/src/kimchi.repository_edit_main.js | 17 ++--------------- ui/pages/repository-add.html.tmpl | 2 +- ui/pages/repository-edit.html.tmpl | 22 ---------------------- 5 files changed, 6 insertions(+), 40 deletions(-)
diff --git a/ui/js/src/kimchi.grid.js b/ui/js/src/kimchi.grid.js index 215d6ea..4cc7807 100644 --- a/ui/js/src/kimchi.grid.js +++ b/ui/js/src/kimchi.grid.js @@ -158,7 +158,7 @@ kimchi.widget.Grid = function(params) { var rowNode = $('<tr></tr>').appendTo(tbody); $.each(fields, function(fi, field) { var fieldName = field['name']; - var value = row[fieldName]; + var value = row[fieldName]==null ? '' : row[fieldName]; $('<td><div class="cell-text-wrapper"' + (field['makeTitle'] === true ? ' title="' + value + '"' diff --git a/ui/js/src/kimchi.repository_add_main.js b/ui/js/src/kimchi.repository_add_main.js index 75b785e..1e57214 100644 --- a/ui/js/src/kimchi.repository_add_main.js +++ b/ui/js/src/kimchi.repository_add_main.js @@ -47,7 +47,7 @@ kimchi.repository_add_main = function() {
var formData = $(addForm).serializeObject(); for(var p in formData) { - if(formData[p] == '') { + if((formData[p] == '') || (formData[p] == null)) { delete formData[p]; } } @@ -61,6 +61,7 @@ kimchi.repository_add_main = function() { formData[f] = false; break; default: + formData[f] = false; delete formData[f]; break; } diff --git a/ui/js/src/kimchi.repository_edit_main.js b/ui/js/src/kimchi.repository_edit_main.js index 0ab008e..6083327 100644 --- a/ui/js/src/kimchi.repository_edit_main.js +++ b/ui/js/src/kimchi.repository_edit_main.js @@ -47,24 +47,11 @@ kimchi.repository_edit_main = function() { }); });
- var booleanFields = ['is_mirror', 'gpgcheck']; - var editRepository = function(event) { var formData = $(editForm).serializeObject();
- $(booleanFields).each(function(i, f) { - switch(formData[f]) { - case 'true': - formData[f] = true; - break; - case 'false': - formData[f] = false; - break; - default: - delete formData[f]; - break; - } - }); + formData["is_mirror"] = (formData["is_mirror"]=="true") ? true : false; + formData["gpgcheck"] = (formData["gpgkey"])? true : false;
kimchi.updateRepository(kimchi.selectedRepository, formData, function() { kimchi.topic('kimchi/repositoryUpdated').publish(); diff --git a/ui/pages/repository-add.html.tmpl b/ui/pages/repository-add.html.tmpl index a170f1d..4a97fd3 100644 --- a/ui/pages/repository-add.html.tmpl +++ b/ui/pages/repository-add.html.tmpl @@ -62,7 +62,7 @@ <div class="textbox-wrapper"> <input type="radio" id="isMirrorRadioTrue" name="is_mirror" value="true" /> <label for="isMirrorRadioTrue">$_("Yes")</label> - <input type="radio" id="isMirrorRadioFalse" name="is_mirror" value="false" /> + <input type="radio" id="isMirrorRadioFalse" checked="checked" name="is_mirror" value="false" /> <label for="isMirrorRadioFalse">$_("No")</label> </div> </div> diff --git a/ui/pages/repository-edit.html.tmpl b/ui/pages/repository-edit.html.tmpl index 9adf0a1..d6baf2f 100644 --- a/ui/pages/repository-edit.html.tmpl +++ b/ui/pages/repository-edit.html.tmpl @@ -48,17 +48,6 @@ </div> <div> <div class="repository-edit-wrapper-label"> - <label>$_("Enabled")</label> - </div> - <div class="repository-edit-wrapper-controls"> - <input id="repository-edit-enabled-radio-true" name="enabled" type="radio" value="true" disabled="disabled" /> - <label for="repository-edit-enabled-radio-true">$_("Yes")</label> - <input id="repository-edit-enabled-radio-false" name="enabled" type="radio" value="false" disabled="disabled" /> - <label for="repository-edit-enabled-radio-false">$_("No")</label> - </div> - </div> - <div> - <div class="repository-edit-wrapper-label"> <label for="repository-edit-baseurl-textbox">$_("Base URL")</label> </div> <div class="repository-edit-wrapper-controls"> @@ -88,17 +77,6 @@ </div> <div> <div class="repository-edit-wrapper-label"> - <label>$_("GPG Check")</label> - </div> - <div class="repository-edit-wrapper-controls"> - <input id="repository-edit-gpgcheck-radio-true" name="gpgcheck" type="radio" value="true" /> - <label for="repository-edit-gpgcheck-radio-true">$_("Yes")</label> - <input id="repository-edit-gpgcheck-radio-false" name="gpgcheck" type="radio" value="false" /> - <label for="repository-edit-gpgcheck-radio-false">$_("No")</label> - </div> - </div> - <div> - <div class="repository-edit-wrapper-label"> <label for="repository-edit-gpgkey-textbox">$_("GPG Key")</label> </div> <div class="repository-edit-wrapper-controls">
_______________________________________________ Kimchi-devel mailing list Kimchi-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/kimchi-devel

This patch addendum addresses the remaining issues with Repository management UI except providing the ability to enable/disable a repository. Reviewing API.md I found that "enabled" is not a valid parameter as input to the PUT method of a repository. We need to add enable/disable actions to the menu, and invoke the appropriate POST action on the selected repo.
Signed-off-by: Adam King <rak@linux.vnet.ibm.com> --- ui/js/src/kimchi.grid.js | 2 +- ui/js/src/kimchi.repository_add_main.js | 3 ++- ui/js/src/kimchi.repository_edit_main.js | 17 ++--------------- ui/pages/repository-add.html.tmpl | 2 +- ui/pages/repository-edit.html.tmpl | 22 ---------------------- 5 files changed, 6 insertions(+), 40 deletions(-)
diff --git a/ui/js/src/kimchi.grid.js b/ui/js/src/kimchi.grid.js index 215d6ea..4cc7807 100644 --- a/ui/js/src/kimchi.grid.js +++ b/ui/js/src/kimchi.grid.js @@ -158,7 +158,7 @@ kimchi.widget.Grid = function(params) { var rowNode = $('<tr></tr>').appendTo(tbody); $.each(fields, function(fi, field) { var fieldName = field['name']; - var value = row[fieldName]; + var value = row[fieldName]==null ? '' : row[fieldName]; $('<td><div class="cell-text-wrapper"' + (field['makeTitle'] === true ? ' title="' + value + '"' diff --git a/ui/js/src/kimchi.repository_add_main.js b/ui/js/src/kimchi.repository_add_main.js index 75b785e..1e57214 100644 --- a/ui/js/src/kimchi.repository_add_main.js +++ b/ui/js/src/kimchi.repository_add_main.js @@ -47,7 +47,7 @@ kimchi.repository_add_main = function() {
var formData = $(addForm).serializeObject(); for(var p in formData) { - if(formData[p] == '') { + if((formData[p] == '') || (formData[p] == null)) { Value of <input type="text"> will *always be* the empty string '', other
On 03/13/2014 07:53 AM, Adam King wrote: than null. Checking for null is unnecessary here.
delete formData[p]; } } @@ -61,6 +61,7 @@ kimchi.repository_add_main = function() { formData[f] = false; break; default:
+ formData[f] = false; What's the purpose? This field is to be deleted in next line. delete formData[f]; break; } diff --git a/ui/js/src/kimchi.repository_edit_main.js b/ui/js/src/kimchi.repository_edit_main.js index 0ab008e..6083327 100644 --- a/ui/js/src/kimchi.repository_edit_main.js +++ b/ui/js/src/kimchi.repository_edit_main.js @@ -47,24 +47,11 @@ kimchi.repository_edit_main = function() { }); });
- var booleanFields = ['is_mirror', 'gpgcheck']; - var editRepository = function(event) { var formData = $(editForm).serializeObject();
- $(booleanFields).each(function(i, f) { - switch(formData[f]) { - case 'true': - formData[f] = true; - break; - case 'false': - formData[f] = false; - break; - default: - delete formData[f]; - break; - } - });
+ formData["is_mirror"] = (formData["is_mirror"]=="true") ? true : false; + formData["gpgcheck"] = (formData["gpgkey"])? true : false; Leave it as it was. Unnecessary to change. If there are new Boolean fields added, we can simply add the field names in the array an no need to write new lines.
kimchi.updateRepository(kimchi.selectedRepository, formData, function() { kimchi.topic('kimchi/repositoryUpdated').publish(); diff --git a/ui/pages/repository-add.html.tmpl b/ui/pages/repository-add.html.tmpl index a170f1d..4a97fd3 100644 --- a/ui/pages/repository-add.html.tmpl +++ b/ui/pages/repository-add.html.tmpl @@ -62,7 +62,7 @@ <div class="textbox-wrapper"> <input type="radio" id="isMirrorRadioTrue" name="is_mirror" value="true" /> <label for="isMirrorRadioTrue">$_("Yes")</label> - <input type="radio" id="isMirrorRadioFalse" name="is_mirror" value="false" /> + <input type="radio" id="isMirrorRadioFalse" checked="checked" name="is_mirror" value="false" /> <label for="isMirrorRadioFalse">$_("No")</label> </div> </div> diff --git a/ui/pages/repository-edit.html.tmpl b/ui/pages/repository-edit.html.tmpl index 9adf0a1..d6baf2f 100644 --- a/ui/pages/repository-edit.html.tmpl +++ b/ui/pages/repository-edit.html.tmpl @@ -48,17 +48,6 @@ </div> <div> <div class="repository-edit-wrapper-label"> - <label>$_("Enabled")</label> - </div> - <div class="repository-edit-wrapper-controls"> - <input id="repository-edit-enabled-radio-true" name="enabled" type="radio" value="true" disabled="disabled" /> - <label for="repository-edit-enabled-radio-true">$_("Yes")</label> - <input id="repository-edit-enabled-radio-false" name="enabled" type="radio" value="false" disabled="disabled" /> - <label for="repository-edit-enabled-radio-false">$_("No")</label> - </div> - </div> - <div> - <div class="repository-edit-wrapper-label"> <label for="repository-edit-baseurl-textbox">$_("Base URL")</label> </div> <div class="repository-edit-wrapper-controls"> @@ -88,17 +77,6 @@ </div> <div> <div class="repository-edit-wrapper-label"> - <label>$_("GPG Check")</label> - </div> - <div class="repository-edit-wrapper-controls"> - <input id="repository-edit-gpgcheck-radio-true" name="gpgcheck" type="radio" value="true" /> - <label for="repository-edit-gpgcheck-radio-true">$_("Yes")</label> - <input id="repository-edit-gpgcheck-radio-false" name="gpgcheck" type="radio" value="false" /> - <label for="repository-edit-gpgcheck-radio-false">$_("No")</label> - </div> - </div> - <div> - <div class="repository-edit-wrapper-label"> <label for="repository-edit-gpgkey-textbox">$_("GPG Key")</label> </div> <div class="repository-edit-wrapper-controls">

On 03/12/2014 11:24 PM, Hongliang Wang wrote:
On 03/13/2014 07:53 AM, Adam King wrote:
This patch addendum addresses the remaining issues with Repository management UI except providing the ability to enable/disable a repository. Reviewing API.md I found that "enabled" is not a valid parameter as input to the PUT method of a repository. We need to add enable/disable actions to the menu, and invoke the appropriate POST action on the selected repo.
Signed-off-by: Adam King<rak@linux.vnet.ibm.com> --- ui/js/src/kimchi.grid.js | 2 +- ui/js/src/kimchi.repository_add_main.js | 3 ++- ui/js/src/kimchi.repository_edit_main.js | 17 ++--------------- ui/pages/repository-add.html.tmpl | 2 +- ui/pages/repository-edit.html.tmpl | 22 ---------------------- 5 files changed, 6 insertions(+), 40 deletions(-)
diff --git a/ui/js/src/kimchi.grid.js b/ui/js/src/kimchi.grid.js index 215d6ea..4cc7807 100644 --- a/ui/js/src/kimchi.grid.js +++ b/ui/js/src/kimchi.grid.js @@ -158,7 +158,7 @@ kimchi.widget.Grid = function(params) { var rowNode = $('<tr></tr>').appendTo(tbody); $.each(fields, function(fi, field) { var fieldName = field['name']; - var value = row[fieldName]; + var value = row[fieldName]==null ? '' : row[fieldName]; $('<td><div class="cell-text-wrapper"' + (field['makeTitle'] === true ? ' title="' + value + '"' diff --git a/ui/js/src/kimchi.repository_add_main.js b/ui/js/src/kimchi.repository_add_main.js index 75b785e..1e57214 100644 --- a/ui/js/src/kimchi.repository_add_main.js +++ b/ui/js/src/kimchi.repository_add_main.js @@ -47,7 +47,7 @@ kimchi.repository_add_main = function() {
var formData = $(addForm).serializeObject(); for(var p in formData) { - if(formData[p] == '') { + if((formData[p] == '') || (formData[p] == null)) { Value of <input type="text"> will *always be* the empty string '', other than null. Checking for null is unnecessary here. I was trying to get rid of some nulls that were appearing in the object. Turned out they were coming form the backend, and I forgot to come back and clean up. Fixed in v2 of the addendum. delete formData[p]; } } @@ -61,6 +61,7 @@ kimchi.repository_add_main = function() { formData[f] = false; break; default:
+ formData[f] = false; What's the purpose? This field is to be deleted in next line. Same as above: I was trying to get rid of some nulls that were appearing in the object. Turned out they were coming form the backend, and I forgot to come back and clean up. Fixed in v2 of the addendum. delete formData[f]; break; } diff --git a/ui/js/src/kimchi.repository_edit_main.js b/ui/js/src/kimchi.repository_edit_main.js index 0ab008e..6083327 100644 --- a/ui/js/src/kimchi.repository_edit_main.js +++ b/ui/js/src/kimchi.repository_edit_main.js @@ -47,24 +47,11 @@ kimchi.repository_edit_main = function() { }); });
- var booleanFields = ['is_mirror', 'gpgcheck']; - var editRepository = function(event) { var formData = $(editForm).serializeObject();
- $(booleanFields).each(function(i, f) { - switch(formData[f]) { - case 'true': - formData[f] = true; - break; - case 'false': - formData[f] = false; - break; - default: - delete formData[f]; - break; - } - });
+ formData["is_mirror"] = (formData["is_mirror"]=="true") ? true : false; + formData["gpgcheck"] = (formData["gpgkey"])? true : false; Leave it as it was. Unnecessary to change. If there are new Boolean fields added, we can simply add the field names in the array an no need to write new lines. This is actually intentional. gpgcheck is now calculated based on gpgkey. Its not simply read from the form input anymore. kimchi.updateRepository(kimchi.selectedRepository, formData, function() { kimchi.topic('kimchi/repositoryUpdated').publish(); diff --git a/ui/pages/repository-add.html.tmpl b/ui/pages/repository-add.html.tmpl index a170f1d..4a97fd3 100644 --- a/ui/pages/repository-add.html.tmpl +++ b/ui/pages/repository-add.html.tmpl @@ -62,7 +62,7 @@ <div class="textbox-wrapper"> <input type="radio" id="isMirrorRadioTrue" name="is_mirror" value="true" /> <label for="isMirrorRadioTrue">$_("Yes")</label> - <input type="radio" id="isMirrorRadioFalse" name="is_mirror" value="false" /> + <input type="radio" id="isMirrorRadioFalse" checked="checked" name="is_mirror" value="false" /> <label for="isMirrorRadioFalse">$_("No")</label> </div> </div> diff --git a/ui/pages/repository-edit.html.tmpl b/ui/pages/repository-edit.html.tmpl index 9adf0a1..d6baf2f 100644 --- a/ui/pages/repository-edit.html.tmpl +++ b/ui/pages/repository-edit.html.tmpl @@ -48,17 +48,6 @@ </div> <div> <div class="repository-edit-wrapper-label"> - <label>$_("Enabled")</label> - </div> - <div class="repository-edit-wrapper-controls"> - <input id="repository-edit-enabled-radio-true" name="enabled" type="radio" value="true" disabled="disabled" /> - <label for="repository-edit-enabled-radio-true">$_("Yes")</label> - <input id="repository-edit-enabled-radio-false" name="enabled" type="radio" value="false" disabled="disabled" /> - <label for="repository-edit-enabled-radio-false">$_("No")</label> - </div> - </div> - <div> - <div class="repository-edit-wrapper-label"> <label for="repository-edit-baseurl-textbox">$_("Base URL")</label> </div> <div class="repository-edit-wrapper-controls"> @@ -88,17 +77,6 @@ </div> <div> <div class="repository-edit-wrapper-label"> - <label>$_("GPG Check")</label> - </div> - <div class="repository-edit-wrapper-controls"> - <input id="repository-edit-gpgcheck-radio-true" name="gpgcheck" type="radio" value="true" /> - <label for="repository-edit-gpgcheck-radio-true">$_("Yes")</label> - <input id="repository-edit-gpgcheck-radio-false" name="gpgcheck" type="radio" value="false" /> - <label for="repository-edit-gpgcheck-radio-false">$_("No")</label> - </div> - </div> - <div> - <div class="repository-edit-wrapper-label"> <label for="repository-edit-gpgkey-textbox">$_("GPG Key")</label> </div> <div class="repository-edit-wrapper-controls">
-- Adam King <rak@linux.vnet.ibm.com> IBM CSI

On 03/13/2014 12:14 PM, Adam King wrote:
On 03/12/2014 11:24 PM, Hongliang Wang wrote:
On 03/13/2014 07:53 AM, Adam King wrote:
This patch addendum addresses the remaining issues with Repository management UI except providing the ability to enable/disable a repository. Reviewing API.md I found that "enabled" is not a valid parameter as input to the PUT method of a repository. We need to add enable/disable actions to the menu, and invoke the appropriate POST action on the selected repo.
Signed-off-by: Adam King<rak@linux.vnet.ibm.com> --- ui/js/src/kimchi.grid.js | 2 +- ui/js/src/kimchi.repository_add_main.js | 3 ++- ui/js/src/kimchi.repository_edit_main.js | 17 ++--------------- ui/pages/repository-add.html.tmpl | 2 +- ui/pages/repository-edit.html.tmpl | 22 ---------------------- 5 files changed, 6 insertions(+), 40 deletions(-)
diff --git a/ui/js/src/kimchi.grid.js b/ui/js/src/kimchi.grid.js index 215d6ea..4cc7807 100644 --- a/ui/js/src/kimchi.grid.js +++ b/ui/js/src/kimchi.grid.js @@ -158,7 +158,7 @@ kimchi.widget.Grid = function(params) { var rowNode = $('<tr></tr>').appendTo(tbody); $.each(fields, function(fi, field) { var fieldName = field['name']; - var value = row[fieldName]; + var value = row[fieldName]==null ? '' : row[fieldName]; $('<td><div class="cell-text-wrapper"' + (field['makeTitle'] === true ? ' title="' + value + '"' diff --git a/ui/js/src/kimchi.repository_add_main.js b/ui/js/src/kimchi.repository_add_main.js index 75b785e..1e57214 100644 --- a/ui/js/src/kimchi.repository_add_main.js +++ b/ui/js/src/kimchi.repository_add_main.js @@ -47,7 +47,7 @@ kimchi.repository_add_main = function() {
var formData = $(addForm).serializeObject(); for(var p in formData) { - if(formData[p] == '') { + if((formData[p] == '') || (formData[p] == null)) { Value of <input type="text"> will *always be* the empty string '', other than null. Checking for null is unnecessary here. I was trying to get rid of some nulls that were appearing in the object. Turned out they were coming form the backend, and I forgot to come back and clean up. Fixed in v2 of the addendum. OK delete formData[p]; } } @@ -61,6 +61,7 @@ kimchi.repository_add_main = function() { formData[f] = false; break; default:
+ formData[f] = false; What's the purpose? This field is to be deleted in next line. Same as above: I was trying to get rid of some nulls that were appearing in the object. Turned out they were coming form the backend, and I forgot to come back and clean up. Fixed in v2 of the addendum. OK delete formData[f]; break; } diff --git a/ui/js/src/kimchi.repository_edit_main.js b/ui/js/src/kimchi.repository_edit_main.js index 0ab008e..6083327 100644 --- a/ui/js/src/kimchi.repository_edit_main.js +++ b/ui/js/src/kimchi.repository_edit_main.js @@ -47,24 +47,11 @@ kimchi.repository_edit_main = function() { }); });
- var booleanFields = ['is_mirror', 'gpgcheck']; - var editRepository = function(event) { var formData = $(editForm).serializeObject();
- $(booleanFields).each(function(i, f) { - switch(formData[f]) { - case 'true': - formData[f] = true; - break; - case 'false': - formData[f] = false; - break; - default: - delete formData[f]; - break; - } - });
+ formData["is_mirror"] = (formData["is_mirror"]=="true") ? true : false; + formData["gpgcheck"] = (formData["gpgkey"])? true : false; Leave it as it was. Unnecessary to change. If there are new Boolean fields added, we can simply add the field names in the array an no need to write new lines. This is actually intentional. gpgcheck is now calculated based on gpgkey. Its not simply read from the form input anymore. As we discussed last time, these 2 fields seem mean different things. GPGCheck is for signature, and GPGKey is for public key. @Paulo & Aline, could you make a detailed explanation of the 2 fields about their relationship? kimchi.updateRepository(kimchi.selectedRepository, formData, function() { kimchi.topic('kimchi/repositoryUpdated').publish(); diff --git a/ui/pages/repository-add.html.tmpl b/ui/pages/repository-add.html.tmpl index a170f1d..4a97fd3 100644 --- a/ui/pages/repository-add.html.tmpl +++ b/ui/pages/repository-add.html.tmpl @@ -62,7 +62,7 @@ <div class="textbox-wrapper"> <input type="radio" id="isMirrorRadioTrue" name="is_mirror" value="true" /> <label for="isMirrorRadioTrue">$_("Yes")</label> - <input type="radio" id="isMirrorRadioFalse" name="is_mirror" value="false" /> + <input type="radio" id="isMirrorRadioFalse" checked="checked" name="is_mirror" value="false" /> <label for="isMirrorRadioFalse">$_("No")</label> </div> </div> diff --git a/ui/pages/repository-edit.html.tmpl b/ui/pages/repository-edit.html.tmpl index 9adf0a1..d6baf2f 100644 --- a/ui/pages/repository-edit.html.tmpl +++ b/ui/pages/repository-edit.html.tmpl @@ -48,17 +48,6 @@ </div> <div> <div class="repository-edit-wrapper-label"> - <label>$_("Enabled")</label> - </div> - <div class="repository-edit-wrapper-controls"> - <input id="repository-edit-enabled-radio-true" name="enabled" type="radio" value="true" disabled="disabled" /> - <label for="repository-edit-enabled-radio-true">$_("Yes")</label> - <input id="repository-edit-enabled-radio-false" name="enabled" type="radio" value="false" disabled="disabled" /> - <label for="repository-edit-enabled-radio-false">$_("No")</label> - </div> - </div> - <div> - <div class="repository-edit-wrapper-label"> <label for="repository-edit-baseurl-textbox">$_("Base URL")</label> </div> <div class="repository-edit-wrapper-controls"> @@ -88,17 +77,6 @@ </div> <div> <div class="repository-edit-wrapper-label"> - <label>$_("GPG Check")</label> - </div> - <div class="repository-edit-wrapper-controls"> - <input id="repository-edit-gpgcheck-radio-true" name="gpgcheck" type="radio" value="true" /> - <label for="repository-edit-gpgcheck-radio-true">$_("Yes")</label> - <input id="repository-edit-gpgcheck-radio-false" name="gpgcheck" type="radio" value="false" /> - <label for="repository-edit-gpgcheck-radio-false">$_("No")</label> - </div> - </div> - <div> - <div class="repository-edit-wrapper-label"> <label for="repository-edit-gpgkey-textbox">$_("GPG Key")</label> </div> <div class="repository-edit-wrapper-controls">
-- Adam King<rak@linux.vnet.ibm.com> IBM CSI

This patch addendum addresses the remaining issues with Repository management UI except providing the ability to enable/disable a repository. Reviewing API.md I found that "enabled" is not a valid parameter as input to the PUT method of a repository. We need to add enable/disable actions to the menu, and invoke the appropriate POST action on the selected repo. Signed-off-by: Adam King <rak@linux.vnet.ibm.com> --- ui/js/src/kimchi.grid.js | 2 +- ui/js/src/kimchi.repository_edit_main.js | 17 ++--------------- ui/pages/repository-add.html.tmpl | 2 +- ui/pages/repository-edit.html.tmpl | 22 ---------------------- 4 files changed, 4 insertions(+), 39 deletions(-) diff --git a/ui/js/src/kimchi.grid.js b/ui/js/src/kimchi.grid.js index 215d6ea..4cc7807 100644 --- a/ui/js/src/kimchi.grid.js +++ b/ui/js/src/kimchi.grid.js @@ -158,7 +158,7 @@ kimchi.widget.Grid = function(params) { var rowNode = $('<tr></tr>').appendTo(tbody); $.each(fields, function(fi, field) { var fieldName = field['name']; - var value = row[fieldName]; + var value = row[fieldName]==null ? '' : row[fieldName]; $('<td><div class="cell-text-wrapper"' + (field['makeTitle'] === true ? ' title="' + value + '"' diff --git a/ui/js/src/kimchi.repository_edit_main.js b/ui/js/src/kimchi.repository_edit_main.js index 0ab008e..6083327 100644 --- a/ui/js/src/kimchi.repository_edit_main.js +++ b/ui/js/src/kimchi.repository_edit_main.js @@ -47,24 +47,11 @@ kimchi.repository_edit_main = function() { }); }); - var booleanFields = ['is_mirror', 'gpgcheck']; - var editRepository = function(event) { var formData = $(editForm).serializeObject(); - $(booleanFields).each(function(i, f) { - switch(formData[f]) { - case 'true': - formData[f] = true; - break; - case 'false': - formData[f] = false; - break; - default: - delete formData[f]; - break; - } - }); + formData["is_mirror"] = (formData["is_mirror"]=="true") ? true : false; + formData["gpgcheck"] = (formData["gpgkey"])? true : false; kimchi.updateRepository(kimchi.selectedRepository, formData, function() { kimchi.topic('kimchi/repositoryUpdated').publish(); diff --git a/ui/pages/repository-add.html.tmpl b/ui/pages/repository-add.html.tmpl index a170f1d..4a97fd3 100644 --- a/ui/pages/repository-add.html.tmpl +++ b/ui/pages/repository-add.html.tmpl @@ -62,7 +62,7 @@ <div class="textbox-wrapper"> <input type="radio" id="isMirrorRadioTrue" name="is_mirror" value="true" /> <label for="isMirrorRadioTrue">$_("Yes")</label> - <input type="radio" id="isMirrorRadioFalse" name="is_mirror" value="false" /> + <input type="radio" id="isMirrorRadioFalse" checked="checked" name="is_mirror" value="false" /> <label for="isMirrorRadioFalse">$_("No")</label> </div> </div> diff --git a/ui/pages/repository-edit.html.tmpl b/ui/pages/repository-edit.html.tmpl index 9adf0a1..d6baf2f 100644 --- a/ui/pages/repository-edit.html.tmpl +++ b/ui/pages/repository-edit.html.tmpl @@ -48,17 +48,6 @@ </div> <div> <div class="repository-edit-wrapper-label"> - <label>$_("Enabled")</label> - </div> - <div class="repository-edit-wrapper-controls"> - <input id="repository-edit-enabled-radio-true" name="enabled" type="radio" value="true" disabled="disabled" /> - <label for="repository-edit-enabled-radio-true">$_("Yes")</label> - <input id="repository-edit-enabled-radio-false" name="enabled" type="radio" value="false" disabled="disabled" /> - <label for="repository-edit-enabled-radio-false">$_("No")</label> - </div> - </div> - <div> - <div class="repository-edit-wrapper-label"> <label for="repository-edit-baseurl-textbox">$_("Base URL")</label> </div> <div class="repository-edit-wrapper-controls"> @@ -88,17 +77,6 @@ </div> <div> <div class="repository-edit-wrapper-label"> - <label>$_("GPG Check")</label> - </div> - <div class="repository-edit-wrapper-controls"> - <input id="repository-edit-gpgcheck-radio-true" name="gpgcheck" type="radio" value="true" /> - <label for="repository-edit-gpgcheck-radio-true">$_("Yes")</label> - <input id="repository-edit-gpgcheck-radio-false" name="gpgcheck" type="radio" value="false" /> - <label for="repository-edit-gpgcheck-radio-false">$_("No")</label> - </div> - </div> - <div> - <div class="repository-edit-wrapper-label"> <label for="repository-edit-gpgkey-textbox">$_("GPG Key")</label> </div> <div class="repository-edit-wrapper-controls"> -- 1.8.1.4

On 03/13/2014 12:11 PM, Adam King wrote:
This patch addendum addresses the remaining issues with Repository management UI except providing the ability to enable/disable a repository. Reviewing API.md I found that "enabled" is not a valid parameter as input to the PUT method of a repository. We need to add enable/disable actions to the menu, and invoke the appropriate POST action on the selected repo.
Signed-off-by: Adam King <rak@linux.vnet.ibm.com> --- ui/js/src/kimchi.grid.js | 2 +- ui/js/src/kimchi.repository_edit_main.js | 17 ++--------------- ui/pages/repository-add.html.tmpl | 2 +- ui/pages/repository-edit.html.tmpl | 22 ---------------------- 4 files changed, 4 insertions(+), 39 deletions(-)
diff --git a/ui/js/src/kimchi.grid.js b/ui/js/src/kimchi.grid.js index 215d6ea..4cc7807 100644 --- a/ui/js/src/kimchi.grid.js +++ b/ui/js/src/kimchi.grid.js @@ -158,7 +158,7 @@ kimchi.widget.Grid = function(params) { var rowNode = $('<tr></tr>').appendTo(tbody); $.each(fields, function(fi, field) { var fieldName = field['name']; - var value = row[fieldName]; + var value = row[fieldName]==null ? '' : row[fieldName]; Cleanup $('<td><div class="cell-text-wrapper"' + (field['makeTitle'] === true ? ' title="' + value + '"' diff --git a/ui/js/src/kimchi.repository_edit_main.js b/ui/js/src/kimchi.repository_edit_main.js index 0ab008e..6083327 100644 --- a/ui/js/src/kimchi.repository_edit_main.js +++ b/ui/js/src/kimchi.repository_edit_main.js @@ -47,24 +47,11 @@ kimchi.repository_edit_main = function() { }); });
- var booleanFields = ['is_mirror', 'gpgcheck']; - var editRepository = function(event) { var formData = $(editForm).serializeObject();
- $(booleanFields).each(function(i, f) { - switch(formData[f]) { - case 'true': - formData[f] = true; - break; - case 'false': - formData[f] = false; - break; - default: - delete formData[f]; - break; - } - }); + formData["is_mirror"] = (formData["is_mirror"]=="true") ? true : false; + formData["gpgcheck"] = (formData["gpgkey"])? true : false;
kimchi.updateRepository(kimchi.selectedRepository, formData, function() { kimchi.topic('kimchi/repositoryUpdated').publish(); diff --git a/ui/pages/repository-add.html.tmpl b/ui/pages/repository-add.html.tmpl index a170f1d..4a97fd3 100644 --- a/ui/pages/repository-add.html.tmpl +++ b/ui/pages/repository-add.html.tmpl @@ -62,7 +62,7 @@ <div class="textbox-wrapper"> <input type="radio" id="isMirrorRadioTrue" name="is_mirror" value="true" /> <label for="isMirrorRadioTrue">$_("Yes")</label>
- <input type="radio" id="isMirrorRadioFalse" name="is_mirror" value="false" /> + <input type="radio" id="isMirrorRadioFalse" checked="checked" name="is_mirror" value="false" Regarding to API.md, this is_mirror field is optional so I checked neither of them by default to provide an "untouched" option for the user. /> <label for="isMirrorRadioFalse">$_("No")</label> </div> </div> diff --git a/ui/pages/repository-edit.html.tmpl b/ui/pages/repository-edit.html.tmpl index 9adf0a1..d6baf2f 100644 --- a/ui/pages/repository-edit.html.tmpl +++ b/ui/pages/repository-edit.html.tmpl @@ -48,17 +48,6 @@ </div> <div> <div class="repository-edit-wrapper-label"> - <label>$_("Enabled")</label> - </div> - <div class="repository-edit-wrapper-controls"> - <input id="repository-edit-enabled-radio-true" name="enabled" type="radio" value="true" disabled="disabled" /> - <label for="repository-edit-enabled-radio-true">$_("Yes")</label> - <input id="repository-edit-enabled-radio-false" name="enabled" type="radio" value="false" disabled="disabled" /> - <label for="repository-edit-enabled-radio-false">$_("No")</label> - </div> - </div> - <div> - <div class="repository-edit-wrapper-label"> OK. I'll include "enable/disable" in the grid. <label for="repository-edit-baseurl-textbox">$_("Base URL")</label> </div> <div class="repository-edit-wrapper-controls"> @@ -88,17 +77,6 @@ </div> <div> <div class="repository-edit-wrapper-label"> - <label>$_("GPG Check")</label> - </div> - <div class="repository-edit-wrapper-controls"> - <input id="repository-edit-gpgcheck-radio-true" name="gpgcheck" type="radio" value="true" /> - <label for="repository-edit-gpgcheck-radio-true">$_("Yes")</label> - <input id="repository-edit-gpgcheck-radio-false" name="gpgcheck" type="radio" value="false" /> - <label for="repository-edit-gpgcheck-radio-false">$_("No")</label> - </div> - </div> - <div> - <div class="repository-edit-wrapper-label"> @Paulo & Aline, the relationship between GPGCheck and GPGKey. <label for="repository-edit-gpgkey-textbox">$_("GPG Key")</label> </div> <div class="repository-edit-wrapper-controls">

On 03/13/2014 02:02 AM, Hongliang Wang wrote:
On 03/13/2014 12:11 PM, Adam King wrote:
This patch addendum addresses the remaining issues with Repository management UI except providing the ability to enable/disable a repository. Reviewing API.md I found that "enabled" is not a valid parameter as input to the PUT method of a repository. We need to add enable/disable actions to the menu, and invoke the appropriate POST action on the selected repo.
Signed-off-by: Adam King <rak@linux.vnet.ibm.com> --- ui/js/src/kimchi.grid.js | 2 +- ui/js/src/kimchi.repository_edit_main.js | 17 ++--------------- ui/pages/repository-add.html.tmpl | 2 +- ui/pages/repository-edit.html.tmpl | 22 ---------------------- 4 files changed, 4 insertions(+), 39 deletions(-)
diff --git a/ui/js/src/kimchi.grid.js b/ui/js/src/kimchi.grid.js index 215d6ea..4cc7807 100644 --- a/ui/js/src/kimchi.grid.js +++ b/ui/js/src/kimchi.grid.js @@ -158,7 +158,7 @@ kimchi.widget.Grid = function(params) { var rowNode = $('<tr></tr>').appendTo(tbody); $.each(fields, function(fi, field) { var fieldName = field['name']; - var value = row[fieldName]; + var value = row[fieldName]==null ? '' : row[fieldName]; Cleanup $('<td><div class="cell-text-wrapper"' + (field['makeTitle'] === true ? ' title="' + value + '"' diff --git a/ui/js/src/kimchi.repository_edit_main.js b/ui/js/src/kimchi.repository_edit_main.js index 0ab008e..6083327 100644 --- a/ui/js/src/kimchi.repository_edit_main.js +++ b/ui/js/src/kimchi.repository_edit_main.js @@ -47,24 +47,11 @@ kimchi.repository_edit_main = function() { }); });
- var booleanFields = ['is_mirror', 'gpgcheck']; - var editRepository = function(event) { var formData = $(editForm).serializeObject();
- $(booleanFields).each(function(i, f) { - switch(formData[f]) { - case 'true': - formData[f] = true; - break; - case 'false': - formData[f] = false; - break; - default: - delete formData[f]; - break; - } - }); + formData["is_mirror"] = (formData["is_mirror"]=="true") ? true : false; + formData["gpgcheck"] = (formData["gpgkey"])? true : false;
kimchi.updateRepository(kimchi.selectedRepository, formData, function() { kimchi.topic('kimchi/repositoryUpdated').publish(); diff --git a/ui/pages/repository-add.html.tmpl b/ui/pages/repository-add.html.tmpl index a170f1d..4a97fd3 100644 --- a/ui/pages/repository-add.html.tmpl +++ b/ui/pages/repository-add.html.tmpl @@ -62,7 +62,7 @@ <div class="textbox-wrapper"> <input type="radio" id="isMirrorRadioTrue" name="is_mirror" value="true" /> <label for="isMirrorRadioTrue">$_("Yes")</label>
- <input type="radio" id="isMirrorRadioFalse" name="is_mirror" value="false" /> + <input type="radio" id="isMirrorRadioFalse" checked="checked" name="is_mirror" value="false" Regarding to API.md, this is_mirror field is optional so I checked neither of them by default to provide an "untouched" option for the user. /> <label for="isMirrorRadioFalse">$_("No")</label> </div> </div> diff --git a/ui/pages/repository-edit.html.tmpl b/ui/pages/repository-edit.html.tmpl index 9adf0a1..d6baf2f 100644 --- a/ui/pages/repository-edit.html.tmpl +++ b/ui/pages/repository-edit.html.tmpl @@ -48,17 +48,6 @@ </div> <div> <div class="repository-edit-wrapper-label"> - <label>$_("Enabled")</label> - </div> - <div class="repository-edit-wrapper-controls"> - <input id="repository-edit-enabled-radio-true" name="enabled" type="radio" value="true" disabled="disabled" /> - <label for="repository-edit-enabled-radio-true">$_("Yes")</label> - <input id="repository-edit-enabled-radio-false" name="enabled" type="radio" value="false" disabled="disabled" /> - <label for="repository-edit-enabled-radio-false">$_("No")</label> - </div> - </div> - <div> - <div class="repository-edit-wrapper-label"> OK. I'll include "enable/disable" in the grid. <label for="repository-edit-baseurl-textbox">$_("Base URL")</label> </div> <div class="repository-edit-wrapper-controls"> @@ -88,17 +77,6 @@ </div> <div> <div class="repository-edit-wrapper-label"> - <label>$_("GPG Check")</label> - </div> - <div class="repository-edit-wrapper-controls"> - <input id="repository-edit-gpgcheck-radio-true" name="gpgcheck" type="radio" value="true" /> - <label for="repository-edit-gpgcheck-radio-true">$_("Yes")</label> - <input id="repository-edit-gpgcheck-radio-false" name="gpgcheck" type="radio" value="false" /> - <label for="repository-edit-gpgcheck-radio-false">$_("No")</label> - </div> - </div> - <div> - <div class="repository-edit-wrapper-label"> @Paulo & Aline, the relationship between GPGCheck and GPGKey.
From rpm doc: /|gpgcheck|/ It can be '1 'or '0'. This tells yum whether or not to perform a GPG signature verification on packages obtained from this repository. /|gpgkey|/ A URL that points to a file containing ASCII GPG key for the repository. This option is used if yum needs a public key to verify the packages and the required key has not been imported into the RPM database. If this option is placed yum will automatically import the key specified by the URL. yum will ask for confirmation before installing the key unless you specify /|assumeyes|/. Also you can list multiple URLs in the same way as it was done for baseurl. (http://docs.fedoraproject.org/en-US/Fedora/14/html/Software_Management_Guide...) So yes, they are different things. We can not associate one with other.
<label for="repository-edit-gpgkey-textbox">$_("GPG Key")</label> </div> <div class="repository-edit-wrapper-controls">
_______________________________________________ Kimchi-devel mailing list Kimchi-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/kimchi-devel

On 03/13/2014 04:28 PM, Aline Manera wrote:
On 03/13/2014 02:02 AM, Hongliang Wang wrote:
On 03/13/2014 12:11 PM, Adam King wrote:
This patch addendum addresses the remaining issues with Repository management UI except providing the ability to enable/disable a repository. Reviewing API.md I found that "enabled" is not a valid parameter as input to the PUT method of a repository. We need to add enable/disable actions to the menu, and invoke the appropriate POST action on the selected repo.
Signed-off-by: Adam King <rak@linux.vnet.ibm.com> --- ui/js/src/kimchi.grid.js | 2 +- ui/js/src/kimchi.repository_edit_main.js | 17 ++--------------- ui/pages/repository-add.html.tmpl | 2 +- ui/pages/repository-edit.html.tmpl | 22 ---------------------- 4 files changed, 4 insertions(+), 39 deletions(-)
diff --git a/ui/js/src/kimchi.grid.js b/ui/js/src/kimchi.grid.js index 215d6ea..4cc7807 100644 --- a/ui/js/src/kimchi.grid.js +++ b/ui/js/src/kimchi.grid.js @@ -158,7 +158,7 @@ kimchi.widget.Grid = function(params) { var rowNode = $('<tr></tr>').appendTo(tbody); $.each(fields, function(fi, field) { var fieldName = field['name']; - var value = row[fieldName]; + var value = row[fieldName]==null ? '' : row[fieldName]; Cleanup $('<td><div class="cell-text-wrapper"' + (field['makeTitle'] === true ? ' title="' + value + '"' diff --git a/ui/js/src/kimchi.repository_edit_main.js b/ui/js/src/kimchi.repository_edit_main.js index 0ab008e..6083327 100644 --- a/ui/js/src/kimchi.repository_edit_main.js +++ b/ui/js/src/kimchi.repository_edit_main.js @@ -47,24 +47,11 @@ kimchi.repository_edit_main = function() { }); });
- var booleanFields = ['is_mirror', 'gpgcheck']; - var editRepository = function(event) { var formData = $(editForm).serializeObject();
- $(booleanFields).each(function(i, f) { - switch(formData[f]) { - case 'true': - formData[f] = true; - break; - case 'false': - formData[f] = false; - break; - default: - delete formData[f]; - break; - } - }); + formData["is_mirror"] = (formData["is_mirror"]=="true") ? true : false; + formData["gpgcheck"] = (formData["gpgkey"])? true : false;
kimchi.updateRepository(kimchi.selectedRepository, formData, function() { kimchi.topic('kimchi/repositoryUpdated').publish(); diff --git a/ui/pages/repository-add.html.tmpl b/ui/pages/repository-add.html.tmpl index a170f1d..4a97fd3 100644 --- a/ui/pages/repository-add.html.tmpl +++ b/ui/pages/repository-add.html.tmpl @@ -62,7 +62,7 @@ <div class="textbox-wrapper"> <input type="radio" id="isMirrorRadioTrue" name="is_mirror" value="true" /> <label for="isMirrorRadioTrue">$_("Yes")</label>
- <input type="radio" id="isMirrorRadioFalse" name="is_mirror" value="false" /> + <input type="radio" id="isMirrorRadioFalse" checked="checked" name="is_mirror" value="false" Regarding to API.md, this is_mirror field is optional so I checked neither of them by default to provide an "untouched" option for the user. /> <label for="isMirrorRadioFalse">$_("No")</label> </div> </div> diff --git a/ui/pages/repository-edit.html.tmpl b/ui/pages/repository-edit.html.tmpl index 9adf0a1..d6baf2f 100644 --- a/ui/pages/repository-edit.html.tmpl +++ b/ui/pages/repository-edit.html.tmpl @@ -48,17 +48,6 @@ </div> <div> <div class="repository-edit-wrapper-label"> - <label>$_("Enabled")</label> - </div> - <div class="repository-edit-wrapper-controls"> - <input id="repository-edit-enabled-radio-true" name="enabled" type="radio" value="true" disabled="disabled" /> - <label for="repository-edit-enabled-radio-true">$_("Yes")</label> - <input id="repository-edit-enabled-radio-false" name="enabled" type="radio" value="false" disabled="disabled" /> - <label for="repository-edit-enabled-radio-false">$_("No")</label> - </div> - </div> - <div> - <div class="repository-edit-wrapper-label"> OK. I'll include "enable/disable" in the grid. <label for="repository-edit-baseurl-textbox">$_("Base URL")</label> </div> <div class="repository-edit-wrapper-controls"> @@ -88,17 +77,6 @@ </div> <div> <div class="repository-edit-wrapper-label"> - <label>$_("GPG Check")</label> - </div> - <div class="repository-edit-wrapper-controls"> - <input id="repository-edit-gpgcheck-radio-true" name="gpgcheck" type="radio" value="true" /> - <label for="repository-edit-gpgcheck-radio-true">$_("Yes")</label> - <input id="repository-edit-gpgcheck-radio-false" name="gpgcheck" type="radio" value="false" /> - <label for="repository-edit-gpgcheck-radio-false">$_("No")</label> - </div> - </div> - <div> - <div class="repository-edit-wrapper-label"> @Paulo & Aline, the relationship between GPGCheck and GPGKey.
From rpm doc:
/|gpgcheck|/ It can be '1 'or '0'. This tells yum whether or not to perform a GPG signature verification on packages obtained from this repository.
/|gpgkey|/ A URL that points to a file containing ASCII GPG key for the repository. This option is used if yum needs a public key to verify the packages and the required key has not been imported into the RPM database. If this option is placed yum will automatically import the key specified by the URL. yum will ask for confirmation before installing the key unless you specify /|assumeyes|/. Also you can list multiple URLs in the same way as it was done for baseurl.
(http://docs.fedoraproject.org/en-US/Fedora/14/html/Software_Management_Guide...)
So yes, they are different things. We can not associate one with other.
Reading the doc you pasted, I am thinking we need friendlier words than gpgcheck and gpgkey
<label for="repository-edit-gpgkey-textbox">$_("GPG Key")</label> </div> <div class="repository-edit-wrapper-controls">
_______________________________________________ Kimchi-devel mailing list Kimchi-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/kimchi-devel
-- Adam King <rak@linux.vnet.ibm.com> IBM CSI

v2 dropped the default radio button check from the add repo panel. Adding it again. Signed-off-by: Adam King <rak@linux.vnet.ibm.com> --- ui/pages/repository-add.html.tmpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/pages/repository-add.html.tmpl b/ui/pages/repository-add.html.tmpl index a170f1d..4a97fd3 100644 --- a/ui/pages/repository-add.html.tmpl +++ b/ui/pages/repository-add.html.tmpl @@ -62,7 +62,7 @@ <div class="textbox-wrapper"> <input type="radio" id="isMirrorRadioTrue" name="is_mirror" value="true" /> <label for="isMirrorRadioTrue">$_("Yes")</label> - <input type="radio" id="isMirrorRadioFalse" name="is_mirror" value="false" /> + <input type="radio" id="isMirrorRadioFalse" checked="checked" name="is_mirror" value="false" /> <label for="isMirrorRadioFalse">$_("No")</label> </div> </div> -- 1.8.1.4

I meant to send this as an addendum to v3. Please ignore this one. I resent with revised commit text and corrected In Reply To Adam On 03/13/2014 03:06 PM, Adam King wrote:
v2 dropped the default radio button check from the add repo panel. Adding it again.
Signed-off-by: Adam King <rak@linux.vnet.ibm.com> --- ui/pages/repository-add.html.tmpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ui/pages/repository-add.html.tmpl b/ui/pages/repository-add.html.tmpl index a170f1d..4a97fd3 100644 --- a/ui/pages/repository-add.html.tmpl +++ b/ui/pages/repository-add.html.tmpl @@ -62,7 +62,7 @@ <div class="textbox-wrapper"> <input type="radio" id="isMirrorRadioTrue" name="is_mirror" value="true" /> <label for="isMirrorRadioTrue">$_("Yes")</label> - <input type="radio" id="isMirrorRadioFalse" name="is_mirror" value="false" /> + <input type="radio" id="isMirrorRadioFalse" checked="checked" name="is_mirror" value="false" /> <label for="isMirrorRadioFalse">$_("No")</label> </div> </div>
-- Adam King <rak@linux.vnet.ibm.com> IBM CSI
participants (3)
-
Adam King
-
Aline Manera
-
Hongliang Wang