Skip to content

Commit 67e01d4

Browse files
committed
option to make settings read-only in web UI
1 parent d32163b commit 67e01d4

File tree

3 files changed

+40
-21
lines changed

3 files changed

+40
-21
lines changed

cls/SourceControl/Git/Settings.cls

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ Property pullEventClass As %String(MAXLEN = 255) [ InitialExpression = {##class(
2020
/// Character to replace % symbol when importing %-classes into the file systems
2121
Property percentClassReplace As %String [ InitialExpression = {##class(SourceControl.Git.Utils).PercentClassReplace()} ];
2222

23+
/// Git project settings are read-only in the web user interface
24+
Property settingsUIReadOnly As %Boolean [ InitialExpression = {##class(SourceControl.Git.Utils).SettingsUIReadOnly()} ];
25+
2326
/// Attribution: Git username for user ${username}
2427
Property gitUserName As %String(MAXLEN = 255) [ InitialExpression = {##class(SourceControl.Git.Utils).GitUserName()} ];
2528

@@ -72,6 +75,7 @@ Method %Save() As %Status
7275
set @storage@("settings","ssh","privateKeyFile") = ..privateKeyFile
7376
set @storage@("settings","pullEventClass") = ..pullEventClass
7477
set @storage@("settings","percentClassReplace") = ..percentClassReplace
78+
set @storage@("settings","settingsUIReadOnly") = ..settingsUIReadOnly
7579

7680
kill @##class(SourceControl.Git.Utils).MappingsNode()
7781
merge @##class(SourceControl.Git.Utils).MappingsNode() = ..Mappings
@@ -168,3 +172,4 @@ Method OnAfterConfigure() As %Boolean
168172
}
169173

170174
}
175+

cls/SourceControl/Git/Utils.cls

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,11 @@ ClassMethod PercentClassReplace() As %Status [ CodeMode = expression ]
6767
$Get(@..#Storage@("settings","percentClassReplace"), "")
6868
}
6969

70+
ClassMethod SettingsUIReadOnly() As %Status [ CodeMode = expression ]
71+
{
72+
$Get(@..#Storage@("settings","settingsUIReadOnly"), 0)
73+
}
74+
7075
/// Returns the current (or previous) value of the flag.
7176
ClassMethod Locked(newFlagValue As %Boolean) As %Boolean
7277
{
@@ -1983,3 +1988,4 @@ ClassMethod BuildCEInstallationPackage(ByRef destination As %String) As %Status
19831988
}
19841989

19851990
}
1991+

csp/gitprojectsettings.csp

Lines changed: 29 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -62,34 +62,35 @@ body {
6262
set webuiURL = ##class(SourceControl.Git.WebUIDriver).GetURLPrefix(%request, webuiURL)
6363

6464
set settings = ##class(SourceControl.Git.Settings).%New()
65-
66-
if $Data(%request.Data("gitsettings",1)) {
67-
for param="gitBinPath","namespaceTemp","privateKeyFile","pullEventClass","percentClassReplace","gitUserName","gitUserEmail"{
68-
set $Property(settings,param) = $Get(%request.Data(param,1))
69-
}
70-
set i = 1
71-
set param = "NoFolders"
72-
kill settings.Mappings
73-
74-
while ( $Get(%request.Data("MappingsExt",i)) '= "" ){
75-
if ($Get(%request.Data(param,i)) = "NoFolders"){
76-
set settings.Mappings($Get(%request.Data("MappingsExt",i)), $Get(%request.Data("MappingsCov",i)), $Get(%request.Data(param,i))) = 1
65+
if ('settings.settingsUIReadOnly) {
66+
if $Data(%request.Data("gitsettings",1)) {
67+
for param="gitBinPath","namespaceTemp","privateKeyFile","pullEventClass","percentClassReplace","gitUserName","gitUserEmail"{
68+
set $Property(settings,param) = $Get(%request.Data(param,1))
69+
}
70+
set i = 1
71+
set param = "NoFolders"
72+
kill settings.Mappings
73+
74+
while ( $Get(%request.Data("MappingsExt",i)) '= "" ){
75+
if ($Get(%request.Data(param,i)) = "NoFolders"){
76+
set settings.Mappings($Get(%request.Data("MappingsExt",i)), $Get(%request.Data("MappingsCov",i)), $Get(%request.Data(param,i))) = 1
77+
}
78+
set settings.Mappings($Get(%request.Data("MappingsExt",i)), $Get(%request.Data("MappingsCov",i))) = $Get(%request.Data("MappingsPath",i))
79+
set i = i+1
7780
}
78-
set settings.Mappings($Get(%request.Data("MappingsExt",i)), $Get(%request.Data("MappingsCov",i))) = $Get(%request.Data("MappingsPath",i))
79-
set i = i+1
81+
do settings.%Save()
8082
}
81-
do settings.%Save()
8283
}
8384
</server>
8485
<div class = 'container'>
85-
<form method='post'>
86+
<form id="settingsForm" method='post'>
8687
<input type="hidden" name="Namespace" value="#(..EscapeHTML(namespace))#" />
8788
<input type="hidden" name="gitsettings" value="1" />
8889
<div class="col-sm-12"><br></div>
8990
<div class="row">
9091
<div class="col-sm-1"></div>
9192
<div class="col-sm-8">
92-
<h1>Git Project Settings</h1>
93+
<h1>Git Project Settings #($select(settings.settingsUIReadOnly:"(Read-Only)",1:""))#</h1>
9394
</div>
9495
<div class="col-sm-2">
9596
<button class="btn btn-lg btn-outline-dark" id="goToWebUI">Go to WebUI
@@ -367,11 +368,13 @@ body {
367368

368369
<br/>
369370

370-
<div class="form-group row mb-3">
371-
<div class="col-sm-12 text-center">
372-
<input type='submit' class="btn-lg btn-primary" value = 'Save'/>
371+
<csp:if condition="'settings.settingsUIReadOnly">
372+
<div class="form-group row mb-3">
373+
<div class="col-sm-12 text-center">
374+
<input type='submit' class="btn-lg btn-primary" value = 'Save'/>
375+
</div>
373376
</div>
374-
</div>
377+
</csp:if>
375378

376379
</form>
377380
<csp:if condition='$D(%request.Data("gitsettings",1)) && (##class(SourceControl.Git.Utils).NeedSettings() = 0)'>
@@ -435,6 +438,11 @@ $(function () {
435438
});
436439
$(function()
437440
{
441+
if (#(settings.settingsUIReadOnly)#) {
442+
$(document).ready( function() {
443+
$("#settingsForm input, select").attr("disabled",true);
444+
})
445+
}
438446
$(document).on('click', '.btn-add', function(e)
439447
{
440448
e.preventDefault();

0 commit comments

Comments
 (0)