Skip to content

Commit 061d6d7

Browse files
authored
Merge pull request #281 from isc-pbarton/hide-settings
Added configurable flag to make settings UI read-only
2 parents 3477f86 + cd87590 commit 061d6d7

File tree

4 files changed

+38
-14
lines changed

4 files changed

+38
-14
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99

1010
### Added
1111
- Web UI includes a "Push Branch" button for local branches that are ahead of upstream
12+
- Support for making the Settings UI read-only through `##class(SourceControl.Git.API).Configure()` (#258)
1213
- Stash option in the Web UI now includes untracked files
1314
- Added "Status" menu item to editor menu (#285)
1415

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

@@ -76,6 +79,7 @@ Method %Save() As %Status
7679
set @storage@("settings","ssh","privateKeyFile") = ..privateKeyFile
7780
set @storage@("settings","pullEventClass") = ..pullEventClass
7881
set @storage@("settings","percentClassReplace") = ..percentClassReplace
82+
set @storage@("settings","settingsUIReadOnly") = ..settingsUIReadOnly
7983

8084
kill @##class(SourceControl.Git.Utils).MappingsNode()
8185
merge @##class(SourceControl.Git.Utils).MappingsNode() = ..Mappings
@@ -173,3 +177,4 @@ Method OnAfterConfigure() As %Boolean
173177
}
174178

175179
}
180+

cls/SourceControl/Git/Utils.cls

Lines changed: 5 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
{

csp/gitprojectsettings.csp

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

6464
set settings = ##class(SourceControl.Git.Settings).%New()
65-
6665
if $Data(%request.Data("gitsettings",1)) {
67-
for param="gitBinPath","namespaceTemp","privateKeyFile","pullEventClass","percentClassReplace","gitUserName","gitUserEmail"{
66+
for param="gitUserName","gitUserEmail" {
6867
set $Property(settings,param) = $Get(%request.Data(param,1))
6968
}
70-
set i = 1
71-
set param = "NoFolders"
72-
kill settings.Mappings
73-
74-
while ( $Data(%request.Data("MappingsExt",i)) ){
69+
if ('settings.settingsUIReadOnly) {
70+
for param="gitBinPath","namespaceTemp","privateKeyFile","pullEventClass","percentClassReplace" {
71+
set $Property(settings,param) = $Get(%request.Data(param,1))
72+
}
73+
set i = 1
74+
set param = "NoFolders"
75+
kill settings.Mappings
76+
77+
while ( $Data(%request.Data("MappingsExt",i)) ){
7578
if ($get(%request.Data("MappingsExt",i)) '= "") {
76-
if ($Get(%request.Data(param,i)) = "NoFolders"){
77-
set settings.Mappings($Get(%request.Data("MappingsExt",i)), $Get(%request.Data("MappingsCov",i)), $Get(%request.Data(param,i))) = 1
78-
}
79-
set settings.Mappings($Get(%request.Data("MappingsExt",i)), $Get(%request.Data("MappingsCov",i))) = $Get(%request.Data("MappingsPath",i))
79+
if ($Get(%request.Data(param,i)) = "NoFolders"){
80+
set settings.Mappings($Get(%request.Data("MappingsExt",i)), $Get(%request.Data("MappingsCov",i)), $Get(%request.Data(param,i))) = 1
81+
}
82+
set settings.Mappings($Get(%request.Data("MappingsExt",i)), $Get(%request.Data("MappingsCov",i))) = $Get(%request.Data("MappingsPath",i))
83+
}
84+
set i = i+1
8085
}
81-
set i = i+1
8286
}
8387
do settings.%Save()
8488
}
8589
</server>
8690
<div class = 'container'>
87-
<form method='post'>
91+
<form id="settingsForm" method='post'>
8892
<input type="hidden" name="Namespace" value="#(..EscapeHTML(namespace))#" />
8993
<input type="hidden" name="gitsettings" value="1" />
9094
<div class="col-sm-12"><br></div>
@@ -108,10 +112,11 @@ body {
108112
<div class="row">
109113
<div class="col-sm-1"></div>
110114
<div class="col-sm-11">
111-
<h3>Settings for namespace #(..EscapeHTML(namespace))#</h3><br/>
115+
<h3>Settings for namespace #(..EscapeHTML(namespace))# #($select(settings.settingsUIReadOnly:"(read-only)",1:""))#</h3><br/>
112116
</div>
113117
</div>
114118

119+
<fieldset id="namespaceSettings">
115120
<div class="form-group row mb-3">
116121
<div class="col-sm-1"></div>
117122
<label for="gitBinPath" class="col-sm-3 col-form-label" data-toggle="tooltip" data-placement="top" title="Absolute path to the Git executable">Path to git.exe</label>
@@ -342,6 +347,7 @@ body {
342347
}
343348
</script>
344349
</div>
350+
</fieldset>
345351

346352
<br/>
347353
<div class="row">
@@ -360,6 +366,7 @@ body {
360366

361367
<br/>
362368

369+
<fieldset id="userSettings">
363370
<div class="form-group row mb-3">
364371
<div class="col-sm-1"></div>
365372
<label for="gitUserName" class="col-sm-3 col-form-label" data-toggle="tooltip" data-placement="top" title="Firstname Lastname">Git Committer Name </label>
@@ -377,6 +384,7 @@ body {
377384
</div>
378385

379386
<br/>
387+
</fieldset>
380388

381389
<div class="form-group row mb-3">
382390
<div class="col-sm-12 text-center">
@@ -446,6 +454,11 @@ $(function () {
446454
});
447455
$(function()
448456
{
457+
if (#(settings.settingsUIReadOnly)#) {
458+
$(document).ready( function() {
459+
$("#namespaceSettings input, select").attr("disabled",true);
460+
})
461+
}
449462
$(document).on('click', '.btn-add', function(e)
450463
{
451464
e.preventDefault();

0 commit comments

Comments
 (0)