diff options
| author | Sujith H <sujith.h@gmail.com> | 2016-06-22 10:10:41 +0100 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-07-08 09:57:27 +0100 |
| commit | dabb49be869c5cbd220d30f18323ed12ed54e381 (patch) | |
| tree | 7a98d020831e3986e0f337513c4ef88e167d8b9b /bitbake/lib | |
| parent | be00eb29f3a66684bc9fadb278b5cf59947166fc (diff) | |
| download | poky-dabb49be869c5cbd220d30f18323ed12ed54e381.tar.gz | |
bitbake: toaster: fix validation checks for DL_DIR and SSTATE_DIR
Validation logic on the project configuration page
prevented a user from adding ${variable} to these paths.
Update validation so a user can see a better message
when they type characters into the text inputs.
Two types of validation are implemented.
Either:
* The value should start with a "/", to allow absolute paths.
or
* The value should start with a "$", to allow bitbake
variables like ${TOPDIR}.
[YOCTO #9646]
(Bitbake rev: fca50153caef62a473d1812fd59ec7effe09f8c5)
Signed-off-by: Sujith H <sujith.h@gmail.com>
Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib')
| -rw-r--r-- | bitbake/lib/toaster/toastergui/templates/projectconf.html | 71 |
1 files changed, 49 insertions, 22 deletions
diff --git a/bitbake/lib/toaster/toastergui/templates/projectconf.html b/bitbake/lib/toaster/toastergui/templates/projectconf.html index 9a8b841037..c3ed216194 100644 --- a/bitbake/lib/toaster/toastergui/templates/projectconf.html +++ b/bitbake/lib/toaster/toastergui/templates/projectconf.html | |||
| @@ -41,7 +41,8 @@ | |||
| 41 | </div> | 41 | </div> |
| 42 | <button id="apply-change-dl_dir" class="btn btn-default" type="button">Save</button> | 42 | <button id="apply-change-dl_dir" class="btn btn-default" type="button">Save</button> |
| 43 | <button id="cancel-change-dl_dir" type="button" class="btn btn-link">Cancel</button> | 43 | <button id="cancel-change-dl_dir" type="button" class="btn btn-link">Cancel</button> |
| 44 | <p class="help-block" id="hintError-dl_dir">A valid directory cannot include spaces or any of these characters: . \ ? % * : | " " < ></p> | 44 | <p class="help-block" id="hintError-dl_dir" style="display:none;">The directory path cannot include spaces or any of these characters: . \ ? % * : | " " < ></p> |
| 45 | <p class="help-block" id="hintError-initialChar-dl_dir" style="display:none;">The directory path should either start with a /, e.g. /home/toaster/downloads; or with a variable, e.g. ${TOPDIR}/downloads.</p> | ||
| 45 | </form> | 46 | </form> |
| 46 | </dd> | 47 | </dd> |
| 47 | {% endif %} | 48 | {% endif %} |
| @@ -88,7 +89,7 @@ | |||
| 88 | <input type="text" class="form-control" id="new-image_install" placeholder="Type one or more package names"> | 89 | <input type="text" class="form-control" id="new-image_install" placeholder="Type one or more package names"> |
| 89 | </div> | 90 | </div> |
| 90 | <button id="apply-change-image_install" class="btn btn-default" type="button">Save</button> | 91 | <button id="apply-change-image_install" class="btn btn-default" type="button">Save</button> |
| 91 | <button id="cancel-change-image_install" type="button" class="btn btn-link">Cancel</button> | 92 | <button id="cancel-change-image_install" type="button" class="btn btn-link">Cancel</button> |
| 92 | </form> | 93 | </form> |
| 93 | </dd> | 94 | </dd> |
| 94 | {% endif %} | 95 | {% endif %} |
| @@ -149,7 +150,8 @@ | |||
| 149 | </div> | 150 | </div> |
| 150 | <button id="apply-change-sstate_dir" class="btn btn-default" type="button">Save</button> | 151 | <button id="apply-change-sstate_dir" class="btn btn-default" type="button">Save</button> |
| 151 | <button id="cancel-change-sstate_dir" type="button" class="btn btn-link">Cancel</button> | 152 | <button id="cancel-change-sstate_dir" type="button" class="btn btn-link">Cancel</button> |
| 152 | <p class="help-block" id="hintError-sstate_dir">A valid directory cannot include spaces or any of these characters: . \ ? % * : | " " < ></p> | 153 | <p class="help-block" id="hintError-sstate_dir" style="display:none;">The directory path cannot include spaces or any of these characters: . \ ? % * : | " " < ></p> |
| 154 | <p class="help-block" id="hintError-initialChar-sstate_dir" style="display:none;">The directory path should either start with a /, e.g. /home/toaster/sstate-cache; or with a variable, e.g. ${TOPDIR}/sstate-cache.</p> | ||
| 153 | </form> | 155 | </form> |
| 154 | </dd> | 156 | </dd> |
| 155 | {% endif %} | 157 | {% endif %} |
| @@ -368,8 +370,8 @@ function setEventHandlersForDynamicElements() { | |||
| 368 | $("#new-config_var_"+pk).val(current_val); | 370 | $("#new-config_var_"+pk).val(current_val); |
| 369 | if ( $("#new-config_var_"+pk).val().length ) { | 371 | if ( $("#new-config_var_"+pk).val().length ) { |
| 370 | $("#apply-change-config_var_"+pk).removeAttr("disabled"); | 372 | $("#apply-change-config_var_"+pk).removeAttr("disabled"); |
| 371 | } | 373 | } |
| 372 | else { | 374 | else { |
| 373 | $("#apply-change-config_var_"+pk).attr("disabled"); | 375 | $("#apply-change-config_var_"+pk).attr("disabled"); |
| 374 | } | 376 | } |
| 375 | }); | 377 | }); |
| @@ -409,7 +411,7 @@ function setEventHandlersForDynamicElements() { | |||
| 409 | var pk = $(this).attr("x-data"); | 411 | var pk = $(this).attr("x-data"); |
| 410 | 412 | ||
| 411 | // fade out the variable+value div, then refresh the variable list | 413 | // fade out the variable+value div, then refresh the variable list |
| 412 | $(this).fadeOut(); | 414 | $(this).fadeOut(); |
| 413 | $(this).tooltip("hide"); | 415 | $(this).tooltip("hide"); |
| 414 | $("config_var_entry_"+pk).fadeOut(); | 416 | $("config_var_entry_"+pk).fadeOut(); |
| 415 | $('#config_var_value_'+pk).parent("dd").fadeOut(); | 417 | $('#config_var_value_'+pk).parent("dd").fadeOut(); |
| @@ -552,7 +554,6 @@ $(document).ready(function() { | |||
| 552 | 554 | ||
| 553 | // change DL_DIR variable | 555 | // change DL_DIR variable |
| 554 | $('#change-dl_dir-icon').click(function() { | 556 | $('#change-dl_dir-icon').click(function() { |
| 555 | $('#hintError-dl_dir').hide(); | ||
| 556 | $('#change-dl_dir-form').removeClass('has-error'); | 557 | $('#change-dl_dir-form').removeClass('has-error'); |
| 557 | // preset the edit value | 558 | // preset the edit value |
| 558 | var current_val = $("#dl_dir").text().trim(); | 559 | var current_val = $("#dl_dir").text().trim(); |
| @@ -574,6 +575,8 @@ $(document).ready(function() { | |||
| 574 | }); | 575 | }); |
| 575 | 576 | ||
| 576 | $('#cancel-change-dl_dir').click(function(){ | 577 | $('#cancel-change-dl_dir').click(function(){ |
| 578 | $("#hintError-dl_dir").hide(); | ||
| 579 | $("#hintError-initialChar-dl_dir").hide(); | ||
| 577 | $("#change-dl_dir-form").slideUp(function() { | 580 | $("#change-dl_dir-form").slideUp(function() { |
| 578 | $('#dl_dir, #change-dl_dir-icon').show(); | 581 | $('#dl_dir, #change-dl_dir-icon').show(); |
| 579 | }); | 582 | }); |
| @@ -582,20 +585,31 @@ $(document).ready(function() { | |||
| 582 | $("#new-dl_dir").on('input', function(){ | 585 | $("#new-dl_dir").on('input', function(){ |
| 583 | if ($(this).val().trim().length == 0) { | 586 | if ($(this).val().trim().length == 0) { |
| 584 | $("#apply-change-dl_dir").attr("disabled","disabled"); | 587 | $("#apply-change-dl_dir").attr("disabled","disabled"); |
| 588 | $('#change-dl_dir-form').addClass('has-error'); | ||
| 589 | $('#hintError-dl_dir').hide(); | ||
| 590 | $('#hintError-initialChar-dl_dir').hide(); | ||
| 585 | } | 591 | } |
| 586 | else { | 592 | else { |
| 587 | var input = $(this); | 593 | var input = $(this); |
| 588 | var re = /^\/([^ <>\\|":\.%\?\*]+)$/; | 594 | var reBeginWithSlash = /^\//; |
| 595 | var reCheckVariable = /^\$/; | ||
| 596 | var re = /([ <>\\|":\.%\?\*]+)/; | ||
| 589 | var invalidDir = re.test(input.val()); | 597 | var invalidDir = re.test(input.val()); |
| 590 | console.log(invalidDir); | 598 | var invalidSlash = reBeginWithSlash.test(input.val()); |
| 591 | if ( invalidDir ) { | 599 | var invalidVar = reCheckVariable.test(input.val()); |
| 592 | $('#change-dl_dir-form').removeClass('has-error'); | 600 | if (!invalidSlash && !invalidVar) { |
| 593 | $("#apply-change-dl_dir").removeAttr("disabled"); | 601 | $('#change-dl_dir-form').addClass('has-error'); |
| 594 | $('#hintError-dl_dir').hide(); | 602 | $("#apply-change-dl_dir").attr("disabled","disabled"); |
| 595 | } else { | 603 | $('#hintError-initialChar-dl_dir').show(); |
| 604 | } else if (invalidDir) { | ||
| 596 | $('#change-dl_dir-form').addClass('has-error'); | 605 | $('#change-dl_dir-form').addClass('has-error'); |
| 597 | $("#apply-change-dl_dir").attr("disabled","disabled"); | 606 | $("#apply-change-dl_dir").attr("disabled","disabled"); |
| 598 | $('#hintError-dl_dir').show(); | 607 | $('#hintError-dl_dir').show(); |
| 608 | } else { | ||
| 609 | $('#change-dl_dir-form').removeClass('has-error'); | ||
| 610 | $("#apply-change-dl_dir").removeAttr("disabled"); | ||
| 611 | $('#hintError-dl_dir').hide(); | ||
| 612 | $('#hintError-initialChar-dl_dir').hide(); | ||
| 599 | } | 613 | } |
| 600 | } | 614 | } |
| 601 | }); | 615 | }); |
| @@ -904,7 +918,7 @@ $(document).ready(function() { | |||
| 904 | 918 | ||
| 905 | // change SSTATE_DIR variable | 919 | // change SSTATE_DIR variable |
| 906 | $('#change-sstate_dir-icon').click(function() { | 920 | $('#change-sstate_dir-icon').click(function() { |
| 907 | $('#hintError-sstate_dir').hide(); | 921 | $('#change-sstate_dir-form').removeClass('has-error'); |
| 908 | // preset the edit value | 922 | // preset the edit value |
| 909 | var current_val = $("span#sstate_dir").text().trim(); | 923 | var current_val = $("span#sstate_dir").text().trim(); |
| 910 | if (current_val == "Not set") { | 924 | if (current_val == "Not set") { |
| @@ -926,6 +940,8 @@ $(document).ready(function() { | |||
| 926 | }); | 940 | }); |
| 927 | 941 | ||
| 928 | $('#cancel-change-sstate_dir').click(function(){ | 942 | $('#cancel-change-sstate_dir').click(function(){ |
| 943 | $("#hintError-sstate_dir").hide(); | ||
| 944 | $("#hintError-initialChar-sstate_dir").hide(); | ||
| 929 | $("#change-sstate_dir-form").slideUp(function() { | 945 | $("#change-sstate_dir-form").slideUp(function() { |
| 930 | $('#sstate_dir, #change-sstate_dir-icon').show(); | 946 | $('#sstate_dir, #change-sstate_dir-icon').show(); |
| 931 | }); | 947 | }); |
| @@ -934,20 +950,31 @@ $(document).ready(function() { | |||
| 934 | $("#new-sstate_dir").on('input', function(){ | 950 | $("#new-sstate_dir").on('input', function(){ |
| 935 | if ($(this).val().trim().length == 0) { | 951 | if ($(this).val().trim().length == 0) { |
| 936 | $("#apply-change-sstate_dir").attr("disabled","disabled"); | 952 | $("#apply-change-sstate_dir").attr("disabled","disabled"); |
| 953 | $('#change-sstate_dir-form').addClass('has-error'); | ||
| 954 | $('#hintError-sstate_dir').hide(); | ||
| 955 | $('#hintError-initialChar-sstate_dir').hide(); | ||
| 937 | } | 956 | } |
| 938 | else { | 957 | else { |
| 939 | var input = $(this); | 958 | var input = $(this); |
| 940 | var re = /^\/([^ <>\\|":\.%\?\*]+)$/; | 959 | var reBeginWithSlash = /^\//; |
| 960 | var reCheckVariable = /^\$/; | ||
| 961 | var re = /([ <>\\|":\.%\?\*]+)/; | ||
| 941 | var invalidDir = re.test(input.val()); | 962 | var invalidDir = re.test(input.val()); |
| 942 | console.log(invalidDir); | 963 | var invalidSlash = reBeginWithSlash.test(input.val()); |
| 943 | if ( invalidDir ) { | 964 | var invalidVar = reCheckVariable.test(input.val()); |
| 965 | if (!invalidSlash && !invalidVar) { | ||
| 966 | $('#change-sstate_dir-form').addClass('has-error'); | ||
| 967 | $("#apply-change-sstate_dir").attr("disabled","disabled"); | ||
| 968 | $('#hintError-initialChar-sstate_dir').show(); | ||
| 969 | } else if (invalidDir) { | ||
| 970 | $('#change-sstate_dir-form').addClass('has-error'); | ||
| 971 | $("#apply-change-sstate_dir").attr("disabled","disabled"); | ||
| 972 | $('#hintError-sstate_dir').show(); | ||
| 973 | } else { | ||
| 944 | $('#change-sstate_dir-form').removeClass('has-error'); | 974 | $('#change-sstate_dir-form').removeClass('has-error'); |
| 945 | $("#apply-change-sstate_dir").removeAttr("disabled"); | 975 | $("#apply-change-sstate_dir").removeAttr("disabled"); |
| 946 | $('#hintError-sstate_dir').hide(); | 976 | $('#hintError-sstate_dir').hide(); |
| 947 | } else { | 977 | $('#hintError-initialChar-sstate_dir').hide(); |
| 948 | $('#change-sstate_dir-form').addClass('has-error'); | ||
| 949 | $("#apply-change-sstate_dir").attr("disabled","disabled"); | ||
| 950 | $('#hintError-sstate_dir').show(); | ||
| 951 | } | 978 | } |
| 952 | } | 979 | } |
| 953 | }); | 980 | }); |
