mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
Allow committer details to be set per-user
This commit is contained in:
@@ -68,7 +68,7 @@
|
||||
console.log(msg);
|
||||
var project = RED.projects.getActiveProject();
|
||||
var message = {
|
||||
"change-branch":"Change to local branch '"+project.branches.local+"'",
|
||||
"change-branch":"Change to local branch '"+project.git.branches.local+"'",
|
||||
"abort-merge":"Git merge aborted",
|
||||
"loaded":"Project '"+msg.project+"' loaded",
|
||||
"updated":"Project '"+msg.project+"' updated",
|
||||
|
@@ -75,7 +75,7 @@
|
||||
addLabel = 'add';
|
||||
}
|
||||
}
|
||||
$('<a href="#" class="editor-button editor-button-small" style="margin-top: 4px;"><i class="fa fa-plus"></i> '+addLabel+'</a>')
|
||||
$('<a href="#" class="editor-button editor-button-small red-ui-editableList-addButton" style="margin-top: 4px;"><i class="fa fa-plus"></i> '+addLabel+'</a>')
|
||||
.appendTo(this.topContainer)
|
||||
.click(function(evt) {
|
||||
evt.preventDefault();
|
||||
|
@@ -60,6 +60,7 @@ RED.projects.settings = (function() {
|
||||
},
|
||||
open: function(tray) {
|
||||
var project = RED.projects.getActiveProject();
|
||||
|
||||
var trayBody = tray.find('.editor-tray-body');
|
||||
var settingsContent = $('<div></div>').appendTo(trayBody);
|
||||
var tabContainer = $('<div></div>',{id:"user-settings-tabs-container"}).appendTo(settingsContent);
|
||||
@@ -148,7 +149,12 @@ RED.projects.settings = (function() {
|
||||
}
|
||||
function updateProjectDescription(activeProject, container) {
|
||||
container.empty();
|
||||
var desc = marked(activeProject.description||"");
|
||||
var desc;
|
||||
if (activeProject.description) {
|
||||
desc = marked(activeProject.description);
|
||||
} else {
|
||||
desc = '<span class="node-info-none">'+'No description available'+'</span>';
|
||||
}
|
||||
var description = addTargetToExternalLinks($('<span class="bidiAware" dir=\"'+RED.text.bidi.resolveBaseTextDir(desc)+'">'+desc+'</span>')).appendTo(container);
|
||||
description.find(".bidiAware").contents().filter(function() { return this.nodeType === 3 && this.textContent.trim() !== "" }).wrap( "<span></span>" );
|
||||
}
|
||||
@@ -280,7 +286,7 @@ RED.projects.settings = (function() {
|
||||
}
|
||||
}
|
||||
if (unknownCount > 0) {
|
||||
depsList.editableList('addItem',{index:1, label:"Unknown Dependencies"}); // TODO: nls
|
||||
depsList.editableList('addItem',{index:1, label:"Unlisted dependencies"}); // TODO: nls
|
||||
}
|
||||
if (unusedCount > 0) {
|
||||
depsList.editableList('addItem',{index:3, label:"Unused dependencies"}); // TODO: nls
|
||||
@@ -418,15 +424,18 @@ RED.projects.settings = (function() {
|
||||
|
||||
}
|
||||
|
||||
function showProjectFileListing(row,activeProject,current,done) {
|
||||
function showProjectFileListing(row,activeProject,current,filter,done) {
|
||||
var dialog;
|
||||
var dialogBody;
|
||||
var filesList;
|
||||
var selected;
|
||||
var container = $('<div class="project-file-listing-container"></div>',{style:"position: relative; min-height: 175px; height: 175px;"}).hide().appendTo(row);
|
||||
var spinner = utils.addSpinnerOverlay(container);
|
||||
$.getJSON("/projects/"+activeProject.name+"/files",function(result) {
|
||||
$.getJSON("projects/"+activeProject.name+"/files",function(result) {
|
||||
var fileNames = Object.keys(result);
|
||||
fileNames = fileNames.filter(function(fn) {
|
||||
return !result[fn].status || !/D/.test(result[fn].status);
|
||||
})
|
||||
var files = {};
|
||||
fileNames.sort();
|
||||
fileNames.forEach(function(file) {
|
||||
@@ -459,13 +468,13 @@ RED.projects.settings = (function() {
|
||||
return result;
|
||||
}
|
||||
var files = sortFiles("",files,"");
|
||||
createFileSubList(container,files.children,current,done,"height: 175px");
|
||||
createFileSubList(container,files.children,current,filter,done,"height: 175px");
|
||||
spinner.remove();
|
||||
});
|
||||
return container;
|
||||
}
|
||||
|
||||
function createFileSubList(container, files, current, onselect, style) {
|
||||
function createFileSubList(container, files, current, filter, onselect, style) {
|
||||
style = style || "";
|
||||
var list = $('<ol>',{class:"projects-dialog-file-list", style:style}).appendTo(container).editableList({
|
||||
addButton: false,
|
||||
@@ -481,7 +490,7 @@ RED.projects.settings = (function() {
|
||||
} else {
|
||||
children.hide();
|
||||
}
|
||||
createFileSubList(children,entry.children,current,onselect);
|
||||
createFileSubList(children,entry.children,current,filter,onselect);
|
||||
header.addClass("selectable");
|
||||
header.click(function(e) {
|
||||
if ($(this).hasClass("expanded")) {
|
||||
@@ -507,19 +516,23 @@ RED.projects.settings = (function() {
|
||||
header.addClass("projects-dialog-file-list-entry-file-type-git");
|
||||
}
|
||||
$('<span class="projects-dialog-file-list-entry-file"> <i class="fa '+fileIcon+'"></i></span>').appendTo(header);
|
||||
header.addClass("selectable");
|
||||
if (entry.path === current) {
|
||||
header.addClass("selected");
|
||||
if (filter.test(entry.name)) {
|
||||
header.addClass("selectable");
|
||||
if (entry.path === current) {
|
||||
header.addClass("selected");
|
||||
}
|
||||
header.click(function(e) {
|
||||
$(".projects-dialog-file-list-entry.selected").removeClass("selected");
|
||||
$(this).addClass("selected");
|
||||
onselect(entry.path);
|
||||
})
|
||||
header.dblclick(function(e) {
|
||||
e.preventDefault();
|
||||
onselect(entry.path,true);
|
||||
})
|
||||
} else {
|
||||
header.addClass("unselectable");
|
||||
}
|
||||
header.click(function(e) {
|
||||
$(".projects-dialog-file-list-entry.selected").removeClass("selected");
|
||||
$(this).addClass("selected");
|
||||
onselect(entry.path);
|
||||
})
|
||||
header.dblclick(function(e) {
|
||||
e.preventDefault();
|
||||
onselect(entry.path,true);
|
||||
})
|
||||
}
|
||||
$('<span class="projects-dialog-file-list-entry-name" style=""></span>').text(entry.name).appendTo(header);
|
||||
}
|
||||
@@ -657,7 +670,7 @@ RED.projects.settings = (function() {
|
||||
} else {
|
||||
$(this).addClass('selected');
|
||||
flowFileLabel.css('color','inherit');
|
||||
var fileList = showProjectFileListing(flowFileLabel,activeProject,flowFileInput.val(),function(result,isDblClick) {
|
||||
var fileList = showProjectFileListing(flowFileLabel,activeProject,flowFileInput.val(), /.*\.json$/,function(result,isDblClick) {
|
||||
if (result) {
|
||||
flowFileInput.val(result);
|
||||
}
|
||||
@@ -887,7 +900,6 @@ RED.projects.settings = (function() {
|
||||
},
|
||||
200: function(data) {
|
||||
activeProject = data;
|
||||
console.log("updating form");
|
||||
updateForm();
|
||||
done();
|
||||
},
|
||||
@@ -935,191 +947,218 @@ RED.projects.settings = (function() {
|
||||
updateForm();
|
||||
}
|
||||
|
||||
function createLocalRepositorySection(activeProject,pane) {
|
||||
var title = $('<h3></h3>').text("Local Repository").appendTo(pane);
|
||||
var repoContainer = $('<div class="user-settings-section"></div>').appendTo(pane);
|
||||
var editRepoButton = $('<button class="editor-button editor-button-small" style="float: right;">edit</button>')
|
||||
.appendTo(title)
|
||||
.click(function(evt) {
|
||||
editRepoButton.hide();
|
||||
localRepoSearch.show();
|
||||
formButtons.show();
|
||||
});
|
||||
|
||||
var row = $('<div class="user-settings-row"></div>').appendTo(repoContainer);
|
||||
$('<label for=""></label>').text('Branch').appendTo(row);
|
||||
var localRepoLabel = $('<div class="uneditable-input" style="padding:0">').appendTo(row);
|
||||
|
||||
var hideLocalRepoBranchList = function() {
|
||||
localRepoSearch.removeClass('selected');
|
||||
localRepoLabel.css('height','');
|
||||
localRepoBranchListRow.slideUp(100);
|
||||
}
|
||||
var localRepoText = $('<span style="display:inline-block; padding: 6px">').text(activeProject.branches.local).appendTo(localRepoLabel);
|
||||
var localRepoSearch = $('<button class="editor-button" style="border-top-right-radius: 4px; border-bottom-right-radius: 4px; width: 36px; height: 34px; position: absolute; top: -1px; right: -1px;"><i class="fa fa-code-fork"></i></button>')
|
||||
.hide()
|
||||
.appendTo(localRepoLabel)
|
||||
.click(function(e) {
|
||||
e.preventDefault();
|
||||
if ($(this).hasClass('selected')) {
|
||||
hideLocalRepoBranchList();
|
||||
} else {
|
||||
$(this).addClass('selected');
|
||||
localRepoLabel.css('height','auto');
|
||||
localRepoBranchListRow.slideDown(100);
|
||||
localRepoBranchList.refresh("/projects/"+activeProject.name+"/branches");
|
||||
localRepoBranchList.focus();
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
var localRepoBranchListRow = $('<div>').hide().appendTo(localRepoLabel);
|
||||
var localRepoBranchList = utils.createBranchList({
|
||||
current: function() {
|
||||
return activeProject.branches.local
|
||||
},
|
||||
placeholder: "Find or create a branch",
|
||||
container: localRepoBranchListRow,
|
||||
onselect: function(body) {
|
||||
localRepoText.text(body.name);
|
||||
hideLocalRepoBranchList();
|
||||
}
|
||||
})
|
||||
|
||||
var hideEditForm = function() {
|
||||
editRepoButton.show();
|
||||
localRepoSearch.hide();
|
||||
formButtons.hide();
|
||||
localRepoBranchListRow.slideUp(100);
|
||||
localRepoSearch.removeClass('selected');
|
||||
|
||||
}
|
||||
|
||||
var formButtons = $('<span class="button-group" style="position: relative; float: right; margin-right:0;"></span>').hide().appendTo(repoContainer);
|
||||
$('<button class="editor-button">Cancel</button>')
|
||||
.appendTo(formButtons)
|
||||
.click(function(evt) {
|
||||
evt.preventDefault();
|
||||
hideEditForm();
|
||||
});
|
||||
var saveButton = $('<button class="editor-button">Save</button>')
|
||||
.appendTo(formButtons)
|
||||
.click(function(evt) {
|
||||
evt.preventDefault();
|
||||
hideEditForm();
|
||||
});
|
||||
var updateForm = function() {
|
||||
// if (activeProject.settings.credentialSecretInvalid) {
|
||||
// credentialStateLabel.find(".user-settings-credentials-state-icon").removeClass().addClass("user-settings-credentials-state-icon fa fa-warning");
|
||||
// credentialStateLabel.find(".user-settings-credentials-state").text("Invalid encryption key");
|
||||
// } else if (activeProject.settings.credentialsEncrypted) {
|
||||
// credentialStateLabel.find(".user-settings-credentials-state-icon").removeClass().addClass("user-settings-credentials-state-icon fa fa-lock");
|
||||
// credentialStateLabel.find(".user-settings-credentials-state").text("Encryption enabled");
|
||||
// } else {
|
||||
// credentialStateLabel.find(".user-settings-credentials-state-icon").removeClass().addClass("user-settings-credentials-state-icon fa fa-unlock");
|
||||
// credentialStateLabel.find(".user-settings-credentials-state").text("Encryption disabled");
|
||||
// }
|
||||
// credentialSecretResetButton.toggleClass('disabled',!activeProject.settings.credentialsEncrypted);
|
||||
// credentialSecretResetButton.prop('disabled',!activeProject.settings.credentialsEncrypted);
|
||||
}
|
||||
}
|
||||
|
||||
function createRemoteRepositorySection(activeProject,pane) {
|
||||
var title = $('<h3></h3>').text("Git Remotes").appendTo(pane);
|
||||
var repoContainer = $('<div class="user-settings-section"></div>').appendTo(pane);
|
||||
var title = $('<h3></h3>').text("Version Control").appendTo(pane);
|
||||
var editRepoButton = $('<button class="editor-button editor-button-small" style="float: right;">edit</button>')
|
||||
.appendTo(title)
|
||||
.click(function(evt) {
|
||||
editRepoButton.hide();
|
||||
formButtons.show();
|
||||
|
||||
$('.projects-dialog-remote-list-entry-delete').show();
|
||||
remoteListAddButton.show();
|
||||
|
||||
gitUsernameLabel.hide();
|
||||
gitUsernameInput.show();
|
||||
gitEmailLabel.hide();
|
||||
gitEmailInput.show();
|
||||
});
|
||||
|
||||
var repoContainer = $('<div class="user-settings-section"></div>').appendTo(pane);
|
||||
var subtitle = $('<h4></h4>').text("Committer Details").appendTo(repoContainer);
|
||||
$('<div style="display: inline-block; margin-left: 20px;"><small style="color:#aaa;"></small></div>').appendTo(subtitle).find('small').text("Leave blank to use system default");
|
||||
|
||||
var row = $('<div class="user-settings-row"></div>').appendTo(repoContainer);
|
||||
$('<label for=""></label>').text('Username').appendTo(row);
|
||||
var gitUsernameLabel = $('<div class="uneditable-input">').appendTo(row);
|
||||
var gitUsernameInput = $('<input type="text">').hide().appendTo(row);
|
||||
|
||||
row = $('<div class="user-settings-row"></div>').appendTo(repoContainer);
|
||||
$('<label for=""></label>').text('Email').appendTo(row);
|
||||
var gitEmailLabel = $('<div class="uneditable-input">').appendTo(row);
|
||||
var gitEmailInput = $('<input type="text">').hide().appendTo(row);
|
||||
|
||||
if (activeProject.git.user) {
|
||||
gitUsernameLabel.text(activeProject.git.user.name);
|
||||
gitUsernameInput.val(activeProject.git.user.name);
|
||||
|
||||
gitEmailLabel.text(activeProject.git.user.email);
|
||||
gitEmailInput.val(activeProject.git.user.email);
|
||||
}
|
||||
|
||||
|
||||
var remotesList = $("<ol>",{style:"height: 320px"}).appendTo(row);
|
||||
var grTitle = $('<h4></h4>').text("Git remotes").appendTo(repoContainer);
|
||||
|
||||
|
||||
row = $('<div class="user-settings-row projects-dialog-remote-list"></div>').appendTo(repoContainer);
|
||||
var remotesList = $('<ol>').appendTo(row);
|
||||
remotesList.editableList({
|
||||
addButton: "remote",
|
||||
addButton: 'add remote repository',
|
||||
height: 'auto',
|
||||
addItem: function(outer,index,entry) {
|
||||
var row = $('<div class="user-settings-row"></div>').appendTo(outer);
|
||||
$('<label for=""></label>').text('Name').appendTo(row);
|
||||
$('<div class="uneditable-input">').text(entry.name).appendTo(row);
|
||||
row = $('<div class="user-settings-row"></div>').appendTo(outer);
|
||||
$('<label for=""></label>').text('Fetch URL').appendTo(row);
|
||||
$('<div class="uneditable-input">').text(entry.urls.fetch).appendTo(row);
|
||||
row = $('<div class="user-settings-row"></div>').appendTo(outer);
|
||||
$('<label for=""></label>').text('Push URL').appendTo(row);
|
||||
$('<div class="uneditable-input">').text(entry.urls.push).appendTo(row);
|
||||
|
||||
var header = $('<div class="projects-dialog-remote-list-entry-header"></div>').appendTo(outer);
|
||||
entry.header = $('<span>').text(entry.name||"Add new remote").appendTo(header);
|
||||
var body = $('<div>').appendTo(outer);
|
||||
entry.body = body;
|
||||
if (entry.name) {
|
||||
entry.removeButton = $('<button class="editor-button editor-button-small projects-dialog-remote-list-entry-delete">remove</button>')
|
||||
.hide()
|
||||
.appendTo(header)
|
||||
.click(function(e) {
|
||||
entry.removed = true;
|
||||
body.fadeOut(100);
|
||||
entry.header.css("text-decoration","line-through")
|
||||
entry.header.css("font-style","italic")
|
||||
$(this).hide();
|
||||
});
|
||||
if (entry.urls.fetch === entry.urls.push) {
|
||||
row = $('<div class="user-settings-row"></div>').appendTo(body);
|
||||
$('<label for=""></label>').text('URL').appendTo(row);
|
||||
$('<div class="uneditable-input">').text(entry.urls.fetch).appendTo(row);
|
||||
} else {
|
||||
row = $('<div class="user-settings-row"></div>').appendTo(body);
|
||||
$('<label for=""></label>').text('Fetch URL').appendTo(row);
|
||||
$('<div class="uneditable-input">').text(entry.urls.fetch).appendTo(row);
|
||||
row = $('<div class="user-settings-row"></div>').appendTo(body);
|
||||
$('<label for=""></label>').text('Push URL').appendTo(row);
|
||||
$('<div class="uneditable-input">').text(entry.urls.push).appendTo(row);
|
||||
}
|
||||
} else {
|
||||
row = $('<div class="user-settings-row"></div>').appendTo(body);
|
||||
$('<label for=""></label>').text('Remote name').appendTo(row);
|
||||
entry.nameInput = $('<input type="text">').appendTo(row);
|
||||
|
||||
row = $('<div class="user-settings-row"></div>').appendTo(body);
|
||||
var fetchLabel = $('<label for=""></label>').text('URL').appendTo(row);
|
||||
entry.urlInput = $('<input type="text">').appendTo(row);
|
||||
}
|
||||
}
|
||||
});
|
||||
if (activeProject.hasOwnProperty('remotes')) {
|
||||
for (var name in activeProject.remotes) {
|
||||
if (activeProject.remotes.hasOwnProperty(name)) {
|
||||
remotesList.editableList('addItem',{name:name,urls:activeProject.remotes[name]});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// row = $('<div class="user-settings-row"></div>').appendTo(repoContainer);
|
||||
|
||||
// if (activeProject.hasOwnProperty('remotes')) {
|
||||
// $('<label for=""></label>').text('URL').appendTo(row);
|
||||
// for (var name in activeProject.remotes) {
|
||||
// if (activeProject.remotes.hasOwnProperty(name)) {
|
||||
// var repos = activeProject.remotes[name];
|
||||
// if (repos.fetch === repos.push) {
|
||||
// $('<div class="uneditable-input">').text(repos.fetch).appendTo(row);
|
||||
// $('<div class="projects-edit-form-sublabel"><small></small></div>').appendTo(row).find('small').text(name+" fetch/push");
|
||||
// } else {
|
||||
// $('<div class="uneditable-input">').text(repos.fetch).appendTo(row);
|
||||
// $('<div class="projects-edit-form-sublabel"><small></small></div>').appendTo(row).find('small').text(name+" fetch");
|
||||
// $('<label for=""></label>').appendTo(row);
|
||||
// $('<div class="uneditable-input">').text(repos.push).appendTo(row);
|
||||
// $('<div class="projects-edit-form-sublabel"><small></small></div>').appendTo(row).find('small').text(name+" push");
|
||||
// // $('<span>').text(repos.fetch+" (fetch)").appendTo(repoRow);
|
||||
// // $('<span>').text(repos.push+" (push)").appendTo(repoRow);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// if (activeProject.branches.hasOwnProperty('remote')) {
|
||||
// row = $('<div class="user-settings-row"></div>').appendTo(repoContainer);
|
||||
// $('<label for="" style="text-align: right;box-sizing: border-box; padding-right: 25px;">Branch</label>').appendTo(row);
|
||||
// $('<div class="uneditable-input">').text(activeProject.branches.remote).appendTo(row);
|
||||
//
|
||||
// row = $('<div class="user-settings-row"></div>').appendTo(repoContainer);
|
||||
// $('<label for="" style="text-align: right;box-sizing: border-box; padding-right: 25px;">Username</label>').appendTo(row);
|
||||
// $('<div class="uneditable-input">').appendTo(row);
|
||||
//
|
||||
// row = $('<div class="user-settings-row"></div>').appendTo(repoContainer);
|
||||
// $('<label for="" style="text-align: right;box-sizing: border-box; padding-right: 25px;">Password</label>').appendTo(row);
|
||||
// $('<div class="uneditable-input">').html("• • • • • • • •").appendTo(row);
|
||||
// }
|
||||
// } else {
|
||||
//
|
||||
//
|
||||
// }
|
||||
var remoteListAddButton = row.find(".red-ui-editableList-addButton").hide();
|
||||
|
||||
var hideEditForm = function() {
|
||||
editRepoButton.show();
|
||||
formButtons.hide();
|
||||
$('.projects-dialog-remote-list-entry-delete').hide();
|
||||
remoteListAddButton.hide();
|
||||
|
||||
gitUsernameLabel.show();
|
||||
gitUsernameInput.hide();
|
||||
gitEmailLabel.show();
|
||||
gitEmailInput.hide();
|
||||
|
||||
}
|
||||
|
||||
var formButtons = $('<span class="button-group" style="position: relative; float: right; margin-right:0;"></span>').hide().appendTo(repoContainer);
|
||||
var formButtons = $('<span class="button-group" style="position: relative; float: right; margin-right:0;"></span>')
|
||||
.hide().appendTo(repoContainer);
|
||||
$('<button class="editor-button">Cancel</button>')
|
||||
.appendTo(formButtons)
|
||||
.click(function(evt) {
|
||||
evt.preventDefault();
|
||||
|
||||
var items = remotesList.editableList('items');
|
||||
items.each(function() {
|
||||
var data = $(this).data('data');
|
||||
if (!data.name) {
|
||||
remotesList.editableList('removeItem',data);
|
||||
} else if (data.removed) {
|
||||
delete data.removed;
|
||||
data.body.show();
|
||||
data.header.css("text-decoration","");
|
||||
data.header.css("font-style","");
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
hideEditForm();
|
||||
});
|
||||
var saveButton = $('<button class="editor-button">Save</button>')
|
||||
.appendTo(formButtons)
|
||||
.click(function(evt) {
|
||||
evt.preventDefault();
|
||||
hideEditForm();
|
||||
var spinner = utils.addSpinnerOverlay(repoContainer);
|
||||
|
||||
var body = {
|
||||
user: {
|
||||
name: gitUsernameInput.val(),
|
||||
email: gitEmailInput.val()
|
||||
},
|
||||
remotes: {}
|
||||
}
|
||||
|
||||
var items = remotesList.editableList('items');
|
||||
items.each(function() {
|
||||
var data = $(this).data('data');
|
||||
if (!data.name) {
|
||||
body.remotes[data.nameInput.val()] = {
|
||||
url: data.urlInput.val()
|
||||
};
|
||||
remotesList.editableList('removeItem',data);
|
||||
} else if (data.removed) {
|
||||
body.remotes[data.name] = {
|
||||
removed: true
|
||||
};
|
||||
delete data.removed;
|
||||
data.body.show();
|
||||
data.header.css("text-decoration","");
|
||||
data.header.css("font-style","");
|
||||
}
|
||||
})
|
||||
|
||||
var done = function(err) {
|
||||
spinner.remove();
|
||||
if (err) {
|
||||
console.log(err);
|
||||
return;
|
||||
}
|
||||
hideEditForm();
|
||||
}
|
||||
var payload = { git: body };
|
||||
|
||||
// console.log(JSON.stringify(payload,null,4));
|
||||
RED.deploy.setDeployInflight(true);
|
||||
utils.sendRequest({
|
||||
url: "projects/"+activeProject.name,
|
||||
type: "PUT",
|
||||
responses: {
|
||||
0: function(error) {
|
||||
done(error);
|
||||
},
|
||||
200: function(data) {
|
||||
activeProject.git.remotes = data.git.remotes;
|
||||
activeProject.git.user = data.git.user;
|
||||
if (activeProject.git.user) {
|
||||
gitUsernameLabel.text(activeProject.git.user.name);
|
||||
gitUsernameInput.val(activeProject.git.user.name);
|
||||
gitEmailLabel.text(activeProject.git.user.email);
|
||||
gitEmailInput.val(activeProject.git.user.email);
|
||||
}
|
||||
|
||||
updateForm();
|
||||
done();
|
||||
},
|
||||
400: {
|
||||
'unexpected_error': function(error) {
|
||||
console.log(error);
|
||||
done(error);
|
||||
}
|
||||
},
|
||||
}
|
||||
},payload);
|
||||
});
|
||||
var updateForm = function() { }
|
||||
var updateForm = function() {
|
||||
remotesList.editableList('empty');
|
||||
if (activeProject.git.hasOwnProperty('remotes')) {
|
||||
for (var name in activeProject.git.remotes) {
|
||||
if (activeProject.git.remotes.hasOwnProperty(name)) {
|
||||
remotesList.editableList('addItem',{name:name,urls:activeProject.git.remotes[name]});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
updateForm();
|
||||
}
|
||||
|
||||
|
||||
|
@@ -397,12 +397,14 @@ RED.projects = (function() {
|
||||
projectData.copy = copyProject.name;
|
||||
} else if (projectType === 'clone') {
|
||||
// projectData.credentialSecret = projectSecretInput.val();
|
||||
projectData.remote = {
|
||||
// name: projectRepoRemoteName.val()||'origin',
|
||||
// branch: projectRepoBranch.val()||'master',
|
||||
url: projectRepoInput.val(),
|
||||
username: projectRepoUserInput.val(),
|
||||
password: projectRepoPasswordInput.val()
|
||||
projectData.git = {
|
||||
remotes: {
|
||||
'origin': {
|
||||
url: projectRepoInput.val(),
|
||||
username: projectRepoUserInput.val(),
|
||||
password: projectRepoPasswordInput.val()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -632,7 +634,7 @@ RED.projects = (function() {
|
||||
|
||||
function sendRequest(options,body) {
|
||||
// dialogBody.hide();
|
||||
console.log(options.url);
|
||||
console.log(options.url,body);
|
||||
|
||||
if (options.requireCleanWorkspace && RED.nodes.dirty()) {
|
||||
var message = 'You have undeployed changes that will be lost. Do you want to continue?';
|
||||
@@ -698,7 +700,7 @@ RED.projects = (function() {
|
||||
resultCallbackArgs = {error:responses.statusText};
|
||||
return;
|
||||
} else if (options.handleAuthFail !== false && xhr.responseJSON.error === 'git_auth_failed') {
|
||||
var url = activeProject.remotes.origin.fetch;
|
||||
var url = activeProject.git.remotes.origin.fetch;
|
||||
var message = $('<div>'+
|
||||
'<div class="form-row">Authentication required for repository:</div>'+
|
||||
'<div class="form-row"><div style="margin-left: 20px;">'+url+'</div></div>'+
|
||||
@@ -723,6 +725,11 @@ RED.projects = (function() {
|
||||
var username = $('#projects-user-auth-username').val();
|
||||
var password = $('#projects-user-auth-password').val();
|
||||
body = body || {};
|
||||
var authBody = {git:{remotes:{}}};
|
||||
authBody.git.remotes[options.remote||'origin'] = {
|
||||
username: username,
|
||||
password: password
|
||||
};
|
||||
var done = function(err) {
|
||||
if (err) {
|
||||
console.log("Failed to update auth");
|
||||
@@ -749,14 +756,7 @@ RED.projects = (function() {
|
||||
}
|
||||
},
|
||||
}
|
||||
},{
|
||||
remote: {
|
||||
origin: {
|
||||
username: username,
|
||||
password: password
|
||||
}
|
||||
}
|
||||
});
|
||||
},authBody);
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -858,7 +858,17 @@ RED.projects = (function() {
|
||||
},
|
||||
filter: function(data) {
|
||||
var isCreateEntry = (typeof data !=="string");
|
||||
return (isCreateEntry && (branchFilterTerm !== "" && branches.indexOf(branchPrefix+branchFilterTerm) === -1) ) || (!isCreateEntry && data.indexOf(branchPrefix+branchFilterTerm) !== -1);
|
||||
return (
|
||||
isCreateEntry &&
|
||||
(
|
||||
branchFilterTerm !== "" &&
|
||||
branches.indexOf(branchPrefix+branchFilterTerm) === -1
|
||||
)
|
||||
) ||
|
||||
(
|
||||
!isCreateEntry &&
|
||||
data.indexOf(branchFilterTerm) !== -1
|
||||
);
|
||||
}
|
||||
});
|
||||
return {
|
||||
|
@@ -226,7 +226,7 @@ RED.sidebar.versionControl = (function() {
|
||||
stagedChangesList.editableList('empty');
|
||||
unmergedChangesList.editableList('empty');
|
||||
|
||||
$.getJSON("/projects/"+activeProject.name+"/status",function(result) {
|
||||
$.getJSON("projects/"+activeProject.name+"/status",function(result) {
|
||||
refreshFiles(result);
|
||||
});
|
||||
}
|
||||
@@ -471,7 +471,7 @@ RED.sidebar.versionControl = (function() {
|
||||
localCommitListShade.show();
|
||||
$(this).addClass('selected');
|
||||
var activeProject = RED.projects.getActiveProject();
|
||||
localBranchList.refresh("/projects/"+activeProject.name+"/branches");
|
||||
localBranchList.refresh("projects/"+activeProject.name+"/branches");
|
||||
localBranchBox.show();
|
||||
setTimeout(function() {
|
||||
localBranchBox.css("height","215px");
|
||||
@@ -523,7 +523,7 @@ RED.sidebar.versionControl = (function() {
|
||||
row.click(function(e) {
|
||||
var activeProject = RED.projects.getActiveProject();
|
||||
if (activeProject) {
|
||||
$.getJSON("/projects/"+activeProject.name+"/commits/"+entry.sha,function(result) {
|
||||
$.getJSON("projects/"+activeProject.name+"/commits/"+entry.sha,function(result) {
|
||||
result.project = activeProject;
|
||||
result.parents = entry.parents;
|
||||
result.oldRev = entry.sha+"~1";
|
||||
@@ -572,7 +572,7 @@ RED.sidebar.versionControl = (function() {
|
||||
|
||||
var localBranchList = utils.createBranchList({
|
||||
current: function() {
|
||||
return RED.projects.getActiveProject().branches.local
|
||||
return RED.projects.getActiveProject().git.branches.local
|
||||
},
|
||||
placeholder: "Find or create a branch",
|
||||
container: localBranchBox,
|
||||
@@ -653,7 +653,7 @@ RED.sidebar.versionControl = (function() {
|
||||
} else {
|
||||
$(this).addClass('selected');
|
||||
var activeProject = RED.projects.getActiveProject();
|
||||
remoteBranchList.refresh("/projects/"+activeProject.name+"/branches/remote");
|
||||
remoteBranchList.refresh("projects/"+activeProject.name+"/branches/remote");
|
||||
remoteBranchSubRow.show();
|
||||
setTimeout(function() {
|
||||
remoteBranchSubRow.height(180);
|
||||
@@ -676,7 +676,7 @@ RED.sidebar.versionControl = (function() {
|
||||
var activeProject = RED.projects.getActiveProject();
|
||||
var spinner = utils.addSpinnerOverlay(remoteBox).addClass("projects-dialog-spinner-contain");
|
||||
utils.sendRequest({
|
||||
url: "/projects/"+activeProject.name+"/branches/remote",
|
||||
url: "projects/"+activeProject.name+"/branches/remote",
|
||||
type: "GET",
|
||||
responses: {
|
||||
0: function(error) {
|
||||
@@ -706,13 +706,13 @@ RED.sidebar.versionControl = (function() {
|
||||
var remoteBranchSubRow = $('<div style="height: 0;overflow:hidden; transition: height 0.2s ease-in-out;"></div>').hide().appendTo(remoteBranchRow);
|
||||
var remoteBranchList = utils.createBranchList({
|
||||
current: function() {
|
||||
return RED.projects.getActiveProject().branches.remote
|
||||
return RED.projects.getActiveProject().git.branches.remote
|
||||
},
|
||||
placeholder: "Find or create a remote branch",
|
||||
currentLabel: "upstream",
|
||||
remote: function() {
|
||||
var project = RED.projects.getActiveProject();
|
||||
var remotes = Object.keys(project.remotes);
|
||||
var remotes = Object.keys(project.git.remotes);
|
||||
return remotes[0];
|
||||
},
|
||||
container: remoteBranchSubRow,
|
||||
@@ -721,12 +721,12 @@ RED.sidebar.versionControl = (function() {
|
||||
$("#sidebar-version-control-repo-toolbar-set-upstream").prop('disabled',false);
|
||||
$("#sidebar-version-control-remote-branch").text(body.name+(body.create?" *":""));
|
||||
var activeProject = RED.projects.getActiveProject();
|
||||
if (activeProject.branches.remote === body.name) {
|
||||
delete activeProject.branches.remoteAlt;
|
||||
if (activeProject.git.branches.remote === body.name) {
|
||||
delete activeProject.git.branches.remoteAlt;
|
||||
} else {
|
||||
activeProject.branches.remoteAlt = body.name;
|
||||
activeProject.git.branches.remoteAlt = body.name;
|
||||
}
|
||||
$("#sidebar-version-control-repo-toolbar-set-upstream-row").toggle(!!activeProject.branches.remoteAlt);
|
||||
$("#sidebar-version-control-repo-toolbar-set-upstream-row").toggle(!!activeProject.git.branches.remoteAlt);
|
||||
closeRemoteBranchBox(function() {
|
||||
if (!body.create) {
|
||||
var start = Date.now();
|
||||
@@ -738,7 +738,7 @@ RED.sidebar.versionControl = (function() {
|
||||
},Math.max(400-(Date.now() - start),0));
|
||||
})
|
||||
} else {
|
||||
if (!activeProject.branches.remote) {
|
||||
if (!activeProject.git.branches.remote) {
|
||||
$('#sidebar-version-control-repo-toolbar-message').text("The created branch will be set as the tracked upstream branch.");
|
||||
$("#sidebar-version-control-repo-toolbar-set-upstream").prop('checked',true);
|
||||
$("#sidebar-version-control-repo-toolbar-set-upstream").prop('disabled',true);
|
||||
@@ -762,8 +762,8 @@ RED.sidebar.versionControl = (function() {
|
||||
var spinner = utils.addSpinnerOverlay(remoteBox).addClass("projects-dialog-spinner-contain");
|
||||
var activeProject = RED.projects.getActiveProject();
|
||||
var url = "projects/"+activeProject.name+"/push";
|
||||
if (activeProject.branches.remoteAlt) {
|
||||
url+="/"+activeProject.branches.remoteAlt;
|
||||
if (activeProject.git.branches.remoteAlt) {
|
||||
url+="/"+activeProject.git.branches.remoteAlt;
|
||||
}
|
||||
if ($("#sidebar-version-control-repo-toolbar-set-upstream").prop('checked')) {
|
||||
url+="?u=true"
|
||||
@@ -803,8 +803,8 @@ RED.sidebar.versionControl = (function() {
|
||||
var spinner = utils.addSpinnerOverlay(remoteBox).addClass("projects-dialog-spinner-contain");
|
||||
var activeProject = RED.projects.getActiveProject();
|
||||
var url = "projects/"+activeProject.name+"/pull";
|
||||
if (activeProject.branches.remoteAlt) {
|
||||
url+="/"+activeProject.branches.remoteAlt;
|
||||
if (activeProject.git.branches.remoteAlt) {
|
||||
url+="/"+activeProject.git.branches.remoteAlt;
|
||||
}
|
||||
if ($("#sidebar-version-control-repo-toolbar-set-upstream").prop('checked')) {
|
||||
url+="?u=true"
|
||||
@@ -965,7 +965,7 @@ RED.sidebar.versionControl = (function() {
|
||||
localCommitList.editableList('empty');
|
||||
var activeProject = RED.projects.getActiveProject();
|
||||
if (activeProject) {
|
||||
getCommits("/projects/"+activeProject.name+"/commits",localCommitList,localCommitList.parent());
|
||||
getCommits("projects/"+activeProject.name+"/commits",localCommitList,localCommitList.parent());
|
||||
}
|
||||
}
|
||||
// function refreshRemoteCommits() {
|
||||
@@ -973,7 +973,7 @@ RED.sidebar.versionControl = (function() {
|
||||
// var spinner = utils.addSpinnerOverlay(remoteCommitList);
|
||||
// var activeProject = RED.projects.getActiveProject();
|
||||
// if (activeProject) {
|
||||
// getCommits("/projects/"+activeProject.name+"/commits/origin",remoteCommitList,remoteCommitList.parent());
|
||||
// getCommits("projects/"+activeProject.name+"/commits/origin",remoteCommitList,remoteCommitList.parent());
|
||||
// }
|
||||
// }
|
||||
|
||||
@@ -1127,7 +1127,7 @@ RED.sidebar.versionControl = (function() {
|
||||
|
||||
var activeProject = RED.projects.getActiveProject();
|
||||
if (activeProject) {
|
||||
$.getJSON("/projects/"+activeProject.name+"/status",function(result) {
|
||||
$.getJSON("projects/"+activeProject.name+"/status",function(result) {
|
||||
refreshFiles(result);
|
||||
|
||||
$('#sidebar-version-control-local-branch').text(result.branches.local);
|
||||
@@ -1136,7 +1136,7 @@ RED.sidebar.versionControl = (function() {
|
||||
var commitsAhead = result.commits.ahead || 0;
|
||||
var commitsBehind = result.commits.behind || 0;
|
||||
|
||||
if (activeProject.hasOwnProperty('remotes')) {
|
||||
if (activeProject.git.hasOwnProperty('remotes')) {
|
||||
if (result.branches.hasOwnProperty("remoteError")) {
|
||||
$("#sidebar-version-control-repo-status-auth-issue").show();
|
||||
$("#sidebar-version-control-repo-status-stats").hide();
|
||||
|
@@ -2766,7 +2766,7 @@ RED.view = (function() {
|
||||
if (v === undefined) {
|
||||
return gridSize;
|
||||
} else {
|
||||
gridSize = v;
|
||||
gridSize = Math.max(5,v);
|
||||
updateGrid();
|
||||
}
|
||||
}
|
||||
|
@@ -79,6 +79,7 @@
|
||||
font-size: 14px;
|
||||
padding: 6px 14px;
|
||||
margin-right: 8px;
|
||||
border-radius: 2px;
|
||||
color: $editor-button-color;
|
||||
background: $editor-button-background;
|
||||
|
||||
|
@@ -180,7 +180,6 @@
|
||||
border-right-color: #aaa;
|
||||
}
|
||||
}
|
||||
|
||||
i {
|
||||
color: #ccc;
|
||||
font-size: 2em;
|
||||
@@ -592,6 +591,9 @@
|
||||
border-right-color:#999;
|
||||
}
|
||||
}
|
||||
&.unselectable {
|
||||
color: #ccc;
|
||||
}
|
||||
|
||||
i {
|
||||
color: #999;
|
||||
@@ -627,3 +629,47 @@
|
||||
}
|
||||
}
|
||||
.projects-dialog-file-list-entry-file-type-git { color: #999 }
|
||||
|
||||
.projects-dialog-remote-list {
|
||||
.red-ui-editableList-container {
|
||||
padding: 0;
|
||||
li {
|
||||
padding: 0;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.projects-dialog-remote-list-entry-header {
|
||||
padding: 8px 10px;
|
||||
background: #f6f6f6;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.projects-dialog-remote-list-entry-delete {
|
||||
float: right;
|
||||
}
|
||||
|
||||
/*
|
||||
.expandable-list-entry {
|
||||
.exandable-list-entry-header {
|
||||
padding: 15px 0;
|
||||
cursor: pointer;
|
||||
&:hover {
|
||||
background: #f3f3f3;
|
||||
}
|
||||
i {
|
||||
width: 16px;
|
||||
text-align: center;
|
||||
}
|
||||
.fa-angle-right {
|
||||
color: #333;
|
||||
transition: all 0.2s ease-in-out;
|
||||
}
|
||||
}
|
||||
&.expanded .fa-angle-right {
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
@@ -54,6 +54,10 @@
|
||||
input[type='number'] {
|
||||
width: 60px;
|
||||
}
|
||||
h4 {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
#user-settings-tab-view {
|
||||
|
Reference in New Issue
Block a user