diff --git a/editor/js/main.js b/editor/js/main.js index dadf1a8d6..542e857bc 100644 --- a/editor/js/main.js +++ b/editor/js/main.js @@ -136,7 +136,7 @@ "pull":"Project '"+msg.project+"' reloaded", "revert": "Project '"+msg.project+"' reloaded" }[msg.action]; - RED.notify(message); + RED.notify("
"+message+"
"); RED.sidebar.info.refresh() }); }); @@ -144,7 +144,8 @@ } if (msg.text) { - var text = RED._(msg.text,{default:msg.text}); + msg.default = msg.text; + var text = RED._(msg.text,msg); var options = { type: msg.type, fixed: msg.timeout === undefined, diff --git a/red/api/editor/locales/en-US/editor.json b/red/api/editor/locales/en-US/editor.json index 2bec5a26f..5a4b8c81b 100644 --- a/red/api/editor/locales/en-US/editor.json +++ b/red/api/editor/locales/en-US/editor.json @@ -92,7 +92,8 @@ "restartRequired": "Node-RED must be restarted to enable upgraded modules", "credentials_load_failed": "Flows stopped as the credentials could not be decrypted.
The flow credential file is encrypted, but the project's encryption key is missing or invalid.
", "missing_flow_file": "Project flow file not found.
The project is not configured with a flow file.
", - "project_empty": "The project is empty.
Do you want to create a default set of project files?
Otherwise, you will have to manually add files to the project outside of the editor.
The project is empty.
Do you want to create a default set of project files?
Otherwise, you will have to manually add files to the project outside of the editor.
Project '__project__' not found.
" }, "error": "Error: __message__", diff --git a/red/runtime/locales/en-US/runtime.json b/red/runtime/locales/en-US/runtime.json index 00d63d39b..d2435b482 100644 --- a/red/runtime/locales/en-US/runtime.json +++ b/red/runtime/locales/en-US/runtime.json @@ -143,6 +143,7 @@ "projects": { "changing-project": "Setting active project : __project__", "active-project": "Active project : __project__", + "project-not-found": "Project not found : __project__", "no-active-project": "No active project : using default flows file", "disabled": "Projects disabled : editorTheme.projects.enabled=false", "disabledNoFlag": "Projects disabled : set editorTheme.projects.enabled=true to enable", diff --git a/red/runtime/nodes/flows/index.js b/red/runtime/nodes/flows/index.js index 5fdb2ef35..a8cea3822 100644 --- a/red/runtime/nodes/flows/index.js +++ b/red/runtime/nodes/flows/index.js @@ -78,8 +78,12 @@ function loadFlows() { }); }).catch(function(err) { activeConfig = null; - events.emit("runtime-event",{id:"runtime-state",payload:{type:"warning",error:err.code,text:"notification.warnings."+err.code},retain:true}); - log.warn(log._("nodes.flows.error",{message:err.toString()})); + events.emit("runtime-event",{id:"runtime-state",payload:{type:"warning",error:err.code,project:err.project,text:"notification.warnings."+err.code},retain:true}); + if (err.code === "project_not_found") { + log.warn(log._("storage.localfilesystem.projects.project-not-found",{project:err.project})); + } else { + log.warn(log._("nodes.flows.error",{message:err.toString()})); + } throw err; }); } diff --git a/red/runtime/storage/localfilesystem/projects/Project.js b/red/runtime/storage/localfilesystem/projects/Project.js index 77c7e828f..1d4b67b44 100644 --- a/red/runtime/storage/localfilesystem/projects/Project.js +++ b/red/runtime/storage/localfilesystem/projects/Project.js @@ -741,8 +741,9 @@ function checkProjectExists(project) { var projectPath = fspath.join(projectsDir,project); return fs.pathExists(projectPath).then(function(exists) { if (!exists) { - var e = new Error("NLS: project not found"); + var e = new Error("Project not found: "+project); e.code = "project_not_found"; + e.project = project; throw e; } }); diff --git a/red/runtime/storage/localfilesystem/projects/index.js b/red/runtime/storage/localfilesystem/projects/index.js index c9edfe884..0ed25d254 100644 --- a/red/runtime/storage/localfilesystem/projects/index.js +++ b/red/runtime/storage/localfilesystem/projects/index.js @@ -437,6 +437,8 @@ function getFlows() { initialFlowLoadComplete = true; log.info(log._("storage.localfilesystem.user-dir",{path:settings.userDir})); if (activeProject) { + // At this point activeProject will be a string, so go load it and + // swap in an instance of Project return loadProject(activeProject).then(function() { log.info(log._("storage.localfilesystem.projects.active-project",{project:activeProject.name||"none"})); log.info(log._("storage.localfilesystem.flows-file",{path:flowsFullPath}));