fix #1192 Cannot disable option "Require status checks to pass before merging"

This commit is contained in:
nazoking
2016-05-23 15:31:39 +09:00
parent 59f063627c
commit d61ab632f1
2 changed files with 21 additions and 16 deletions

View File

@@ -14,7 +14,7 @@ object ApiBranchProtection{
def apply(info: ProtectedBranchService.ProtectedBranchInfo): ApiBranchProtection = ApiBranchProtection( def apply(info: ProtectedBranchService.ProtectedBranchInfo): ApiBranchProtection = ApiBranchProtection(
enabled = info.enabled, enabled = info.enabled,
required_status_checks = Some(Status(EnforcementLevel(info.enabled, info.includeAdministrators), info.contexts))) required_status_checks = Some(Status(EnforcementLevel(info.enabled && info.contexts.nonEmpty, info.includeAdministrators), info.contexts)))
val statusNone = Status(Off, Seq.empty) val statusNone = Status(Off, Seq.empty)
case class Status(enforcement_level: EnforcementLevel, contexts: Seq[String]) case class Status(enforcement_level: EnforcementLevel, contexts: Seq[String])
sealed class EnforcementLevel(val name: String) sealed class EnforcementLevel(val name: String)
@@ -44,4 +44,3 @@ object ApiBranchProtection{
} }
)) ))
} }

View File

@@ -26,23 +26,19 @@
</div> </div>
<div class="checkbox js-enabled" style="display:none"> <div class="checkbox js-enabled" style="display:none">
<label> <label>
<input type="checkbox" name="has_required_statuses" onclick="update()" @check(protection.status.enforcement_level.name!="off")> <input type="checkbox" name="has_required_statuses" onclick="update()" @check(protection.status.enforcement_level.name!="off") @if(knownContexts.isEmpty){disabled }>
<span class="strong">Require status checks to pass before merging</span> <span class="strong">Require status checks to pass before merging</span>
</label> </label>
<p class="help-block">Choose which status checks must pass before branches can be merged into test. <p class="help-block">When enabled, commits must first be pushed to another branch, then merged or pushed directly to <b>@branch</b> after status checks have passed.</p>
When enabled, commits must first be pushed to another branch, then merged or pushed directly to test after status checks have passed.</p> @if( knownContexts.isEmpty ){
<div class="alert alert-warning">
<div class="js-has_required_statuses" style="display:none"> Sorry, we couldnt find any status checks in the last week for this repository.<br />
<div class="checkbox"> Please create a commit status by API (<a href="https://developer.github.com/v3/repos/statuses/">Learn more about status checks on GitHub</a>)
<label>
<input type="checkbox" name="enforce_for_admins" onclick="update()" @check(protection.status.enforcement_level.name=="everyone")>
<span class="strong">Include administrators</span>
</label>
<p class="help-block">Enforce required status checks for repository administrators.</p>
</div> </div>
}else{
<div class="js-has_required_statuses" style="display:none">
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading">Status checks found in the last week for this repository</div> <div class="panel-heading">Choose which status checks must pass before branches can be merged into <b>@branch</b>.</div>
<div class="panel-body"> <div class="panel-body">
@knownContexts.map { context => @knownContexts.map { context =>
<div class="checkbox"> <div class="checkbox">
@@ -54,9 +50,18 @@
} }
</div> </div>
</div> </div>
<div class="checkbox">
<label>
<input type="checkbox" name="enforce_for_admins" onclick="update()" @check(protection.status.enforcement_level.name=="everyone")>
<span class="strong">Include administrators</span>
</label>
<p class="help-block">Enforce required status checks for repository administrators.</p>
</div> </div>
</div> </div>
<input class="btn btn-success" type="submit" value="Save changes" /> }
</div>
<input class="btn btn-success js-submit-btn" type="submit" value="Save changes" />
</div> </div>
</div> </div>
</form> </form>
@@ -94,6 +99,7 @@ function getValue(){
function updateView(protection){ function updateView(protection){
$('.js-enabled').toggle(protection.enabled); $('.js-enabled').toggle(protection.enabled);
$('.js-has_required_statuses').toggle(protection.required_status_checks.enforcement_level != 'off'); $('.js-has_required_statuses').toggle(protection.required_status_checks.enforcement_level != 'off');
$('.js-submit-btn').attr('disabled',protection.required_status_checks.enforcement_level != 'off' && protection.required_status_checks.contexts.length == 0);
} }
function update(){ function update(){
var protection = getValue(); var protection = getValue();