Skip to content

Commit c4cbb64

Browse files
committed
fix: settings page remote url displays properly after update, and errors are better reported
1 parent 74e1578 commit c4cbb64

File tree

1 file changed

+83
-77
lines changed

1 file changed

+83
-77
lines changed

csp/gitprojectsettings.csp

Lines changed: 83 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
<style type='text/css'>
1212
.error {
1313
color: red;
14+
padding: 20px;
1415
}
1516

1617
body {
@@ -101,97 +102,102 @@ body {
101102
set homeURL = ##class(SourceControl.Git.WebUIDriver).GetHomeURL()
102103

103104
set settings = ##class(SourceControl.Git.Settings).%New()
104-
set remote = ##class(SourceControl.Git.Utils).GetRedactedRemote()
105-
/// After Save
106-
if (%request.Method="POST") && $Data(%request.Data("gitsettings",1)) {
107-
for param="gitUserName","gitUserEmail" {
108-
set $Property(settings,param) = $Get(%request.Data(param,1))
109-
}
110-
if ('settings.settingsUIReadOnly) {
111-
for param="gitBinPath","namespaceTemp","privateKeyFile","pullEventClass","percentClassReplace", "defaultMergeBranch","environmentName" {
105+
try {
106+
/// After Save
107+
if (%request.Method="POST") && $Data(%request.Data("gitsettings",1)) {
108+
for param="gitUserName","gitUserEmail" {
112109
set $Property(settings,param) = $Get(%request.Data(param,1))
113110
}
111+
if ('settings.settingsUIReadOnly) {
112+
for param="gitBinPath","namespaceTemp","privateKeyFile","pullEventClass","percentClassReplace", "defaultMergeBranch","environmentName" {
113+
set $Property(settings,param) = $Get(%request.Data(param,1))
114+
}
114115

115-
if ($Get(%request.Data("mappedItemsReadOnly", 1)) = 1) {
116-
set settings.mappedItemsReadOnly = 1
117-
} else {
118-
set settings.mappedItemsReadOnly = 0
119-
}
116+
if ($Get(%request.Data("mappedItemsReadOnly", 1)) = 1) {
117+
set settings.mappedItemsReadOnly = 1
118+
} else {
119+
set settings.mappedItemsReadOnly = 0
120+
}
120121

121-
set newRemote = $Get(%request.Data("remoteRepo",1))
122-
// If entry was modified, set new remote repo
123-
if (newRemote '= ##class(SourceControl.Git.Utils).GetRedactedRemote()) {
124-
do ##class(SourceControl.Git.Utils).SetConfiguredRemote(newRemote)
125-
}
122+
set newRemote = $Get(%request.Data("remoteRepo",1))
123+
// If entry was modified, set new remote repo
124+
if (newRemote '= ##class(SourceControl.Git.Utils).GetRedactedRemote()) {
125+
do ##class(SourceControl.Git.Utils).SetConfiguredRemote(newRemote)
126+
}
126127

127-
set settings.compileOnImport = ($Get(%request.Data("compileOnImport", 1)) = 1)
128-
set settings.decomposeProductions = ($Get(%request.Data("decomposeProductions", 1)) = 1)
129-
set settings.decomposeProdAllowIDE = ($Get(%request.Data("decomposeProdAllowIDE", 1)) = 1)
130-
set settings.lockBranch = ($Get(%request.Data("lockBranch", 1)) = 1)
131-
132-
if ($Get(%request.Data("basicMode", 1)) = 1) {
133-
set settings.basicMode = 1
134-
} elseif ($Get(%request.Data("basicMode", 1)) = "system"){
135-
set settings.basicMode = "system"
136-
} else {
137-
set settings.basicMode = 0
138-
}
128+
set settings.compileOnImport = ($Get(%request.Data("compileOnImport", 1)) = 1)
129+
set settings.decomposeProductions = ($Get(%request.Data("decomposeProductions", 1)) = 1)
130+
set settings.decomposeProdAllowIDE = ($Get(%request.Data("decomposeProdAllowIDE", 1)) = 1)
131+
set settings.lockBranch = ($Get(%request.Data("lockBranch", 1)) = 1)
132+
133+
if ($Get(%request.Data("basicMode", 1)) = 1) {
134+
set settings.basicMode = 1
135+
} elseif ($Get(%request.Data("basicMode", 1)) = "system"){
136+
set settings.basicMode = "system"
137+
} else {
138+
set settings.basicMode = 0
139+
}
139140

140-
if ($Get(%request.Data("systemBasicMode", 1)) = 1) {
141-
set settings.systemBasicMode = 1
142-
} else {
143-
set settings.systemBasicMode = 0
144-
}
145-
set i = 1
146-
set param = "NoFolders"
147-
kill settings.Mappings
148-
149-
while ( $Data(%request.Data("MappingsExt",i)) ){
150-
if ($get(%request.Data("MappingsExt",i)) '= "") {
151-
if ($Get(%request.Data(param,i)) = "NoFolders"){
152-
set settings.Mappings($Get(%request.Data("MappingsExt",i)), $Get(%request.Data("MappingsCov",i)), $Get(%request.Data(param,i))) = 1
153-
}
154-
set settings.Mappings($Get(%request.Data("MappingsExt",i)), $Get(%request.Data("MappingsCov",i))) = $Get(%request.Data("MappingsPath",i))
155-
}
156-
set i = i+1
157-
}
141+
if ($Get(%request.Data("systemBasicMode", 1)) = 1) {
142+
set settings.systemBasicMode = 1
143+
} else {
144+
set settings.systemBasicMode = 0
145+
}
146+
set i = 1
147+
set param = "NoFolders"
148+
kill settings.Mappings
149+
150+
while ( $Data(%request.Data("MappingsExt",i)) ){
151+
if ($get(%request.Data("MappingsExt",i)) '= "") {
152+
if ($Get(%request.Data(param,i)) = "NoFolders"){
153+
set settings.Mappings($Get(%request.Data("MappingsExt",i)), $Get(%request.Data("MappingsCov",i)), $Get(%request.Data(param,i))) = 1
154+
}
155+
set settings.Mappings($Get(%request.Data("MappingsExt",i)), $Get(%request.Data("MappingsCov",i))) = $Get(%request.Data("MappingsPath",i))
156+
}
157+
set i = i+1
158+
}
158159

159-
set i = 1
160-
set contexts = []
160+
set i = 1
161+
set contexts = []
161162

162-
while ( $Data(%request.Data("favNamespace",i)) ){
163-
if ($Get(%request.Data("favNamespace",i)) '= "") {
164-
do contexts.%Push($Get(%request.Data("favNamespace",i)))
165-
}
166-
set i = i+1
167-
}
163+
while ( $Data(%request.Data("favNamespace",i)) ){
164+
if ($Get(%request.Data("favNamespace",i)) '= "") {
165+
do contexts.%Push($Get(%request.Data("favNamespace",i)))
166+
}
167+
set i = i+1
168+
}
168169

169-
set settings.favoriteNamespaces = contexts
170+
set settings.favoriteNamespaces = contexts
170171

171-
if ($get(%request.Data("proxySubmitButton",1)) = "saveDefaults") {
172-
do settings.SaveDefaults()
172+
if ($get(%request.Data("proxySubmitButton",1)) = "saveDefaults") {
173+
do settings.SaveDefaults()
174+
}
173175
}
174-
}
175-
set err = ""
176-
try {
177-
set buffer = ##class(SourceControl.Git.Util.Buffer).%New()
178-
do buffer.BeginCaptureOutput()
179-
$$$ThrowOnError(settings.SaveWithSourceControl())
180-
do buffer.EndCaptureOutput(.out)
181-
if (out '= "") {
182-
&html<<div class="alert alert-primary">
183-
<div>#(..EscapeHTML(out))#</div>
184-
</div>>
176+
set err = ""
177+
try {
178+
set buffer = ##class(SourceControl.Git.Util.Buffer).%New()
179+
do buffer.BeginCaptureOutput()
180+
$$$ThrowOnError(settings.SaveWithSourceControl())
181+
do buffer.EndCaptureOutput(.out)
182+
if (out '= "") {
183+
&html<<div class="alert alert-primary">
184+
<div>#(..EscapeHTML(out))#</div>
185+
</div>>
186+
}
187+
} catch err {
188+
kill buffer
189+
throw err
185190
}
186-
} catch err {
187-
kill buffer
188-
do err.Log()
189-
&html<<div class="alert alert-danger">An error occurred and has been logged to the application error log.</div>>
191+
set successfullySavedSettings = 1
190192
}
193+
set remote = ##class(SourceControl.Git.Utils).GetRedactedRemote()
194+
} catch err {
195+
do err.Log()
196+
&html<<div class="error alert-danger">An error occurred and has been logged to the application error log.</div>>
191197
}
192198
</server>
193199
<div class = 'container'>
194-
<csp:if condition='$D(%request.Data("gitsettings",1)) && (##class(SourceControl.Git.Utils).NeedSettings() = 0)'>
200+
<csp:if condition='$get(successfullySavedSettings) && (##class(SourceControl.Git.Utils).NeedSettings() = 0)'>
195201
<div class = "alert">
196202
<span class="closebtn" onclick="this.parentElement.style.display='none';">&times;</span>
197203
<strong>Success!</strong> Your changes have been saved.
@@ -416,9 +422,9 @@ body {
416422
</div>
417423

418424
<div class="form-group row mb-3">
419-
<label for="remoteRepo" class="offset-sm-1 col-sm-3 col-form-label" data-toggle="tooltip" data-placement="top" title="Url to Remote repository"><b>Remote Repository</b></label>
425+
<label for="remoteRepo" class="offset-sm-1 col-sm-3 col-form-label" data-toggle="tooltip" data-placement="top" title="Url to Remote repository (origin)"><b>Remote Repository</b></label>
420426
<div class="col-sm-7">
421-
<input type="text" class="form-control" id="remoteRepo" name="remoteRepo" value='#(..EscapeHTML(remote))#' placeholder="ex. git@github.com:User/UserRepo.git"/>
427+
<input type="text" class="form-control" id="remoteRepo" name="remoteRepo" value='#(..EscapeHTML($get(remote)))#' placeholder="ex. git@github.com:User/UserRepo.git"/>
422428
<div class = "neutral-feedback">
423429
(Username is redacted)
424430
</div>

0 commit comments

Comments
 (0)