diff --git a/blueocean-core-js/npm-shrinkwrap.json b/blueocean-core-js/npm-shrinkwrap.json index 299c8fcd29f..06a8ecb15ea 100644 --- a/blueocean-core-js/npm-shrinkwrap.json +++ b/blueocean-core-js/npm-shrinkwrap.json @@ -1,11 +1,11 @@ { "name": "@jenkins-cd/blueocean-core-js", - "version": "0.0.82", + "version": "0.0.85", "dependencies": { "@jenkins-cd/design-language": { - "version": "0.0.121", - "from": "@jenkins-cd/design-language@0.0.121", - "resolved": "https://registry.npmjs.org/@jenkins-cd/design-language/-/design-language-0.0.121.tgz" + "version": "0.0.122", + "from": "@jenkins-cd/design-language@0.0.122", + "resolved": "https://registry.npmjs.org/@jenkins-cd/design-language/-/design-language-0.0.122.tgz" }, "@jenkins-cd/eslint-config-jenkins": { "version": "0.0.2", @@ -3335,7 +3335,7 @@ }, "mkdirp": { "version": "0.5.1", - "from": "mkdirp@>=0.5.0 <0.6.0", + "from": "mkdirp@>=0.5.1 <0.6.0", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "dev": true }, @@ -3355,7 +3355,7 @@ }, "nopt": { "version": "3.0.6", - "from": "nopt@>=3.0.1 <3.1.0", + "from": "nopt@>=3.0.6 <3.1.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", "dev": true, "optional": true @@ -3435,7 +3435,7 @@ }, "rc": { "version": "1.1.6", - "from": "rc@>=1.1.0 <1.2.0", + "from": "rc@>=1.1.6 <1.2.0", "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz", "dev": true, "optional": true, @@ -3554,7 +3554,7 @@ }, "tar": { "version": "2.2.1", - "from": "tar@>=2.2.0 <2.3.0", + "from": "tar@>=2.2.1 <2.3.0", "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", "dev": true }, diff --git a/blueocean-core-js/package.json b/blueocean-core-js/package.json index b83d3ab528e..08f9b8c07a3 100644 --- a/blueocean-core-js/package.json +++ b/blueocean-core-js/package.json @@ -1,6 +1,6 @@ { "name": "@jenkins-cd/blueocean-core-js", - "version": "0.0.84", + "version": "0.0.86", "description": "Shared JavaScript libraries for use with Jenkins Blue Ocean", "main": "dist/js/index.js", "scripts": { @@ -29,7 +29,7 @@ "url": "https://github.com/jenkinsci/blueocean-plugin.git" }, "dependencies": { - "@jenkins-cd/design-language": "0.0.121", + "@jenkins-cd/design-language": "0.0.122", "@jenkins-cd/js-extensions": "0.0.33", "@jenkins-cd/js-modules": "0.0.8", "@jenkins-cd/logging": "0.0.6", diff --git a/blueocean-core-js/src/js/i18n/i18n.js b/blueocean-core-js/src/js/i18n/i18n.js index 54f5b0f835f..f8ce2ff81b2 100644 --- a/blueocean-core-js/src/js/i18n/i18n.js +++ b/blueocean-core-js/src/js/i18n/i18n.js @@ -164,7 +164,23 @@ export default function i18nTranslator(pluginName, namespace, onLoad) { logger.log('Translator instance created for "%s". Language detected as "%s".', translatorCacheKey, detectedLang); } - translator = I18n.getFixedT(detectedLang, namespace); + const fixedT = I18n.getFixedT(detectedLang, namespace); + translator = function (i18nKey, i18nParams) { + const normalizedKey = i18nKey.replace(/[\W]/g, '.'); + let passedParams = i18nParams; + if (normalizedKey !== i18nKey) { + if (!passedParams) { + passedParams = {}; + } + if (!passedParams.defaultValue) { + passedParams.defaultValue = i18nKey; + } + if (logger.isDebugEnabled()) { + logger.debug(`Normalized i18n key "${i18nKey}" to "${normalizedKey}".`); + } + } + return fixedT(normalizedKey, passedParams); + }; translatorCache[translatorCacheKey] = translator; } diff --git a/blueocean-dashboard/npm-shrinkwrap.json b/blueocean-dashboard/npm-shrinkwrap.json index 0e0f452f2da..b6fb276b412 100644 --- a/blueocean-dashboard/npm-shrinkwrap.json +++ b/blueocean-dashboard/npm-shrinkwrap.json @@ -3,14 +3,14 @@ "version": "0.0.1", "dependencies": { "@jenkins-cd/blueocean-core-js": { - "version": "0.0.84", - "from": "@jenkins-cd/blueocean-core-js@0.0.84", - "resolved": "https://registry.npmjs.org/@jenkins-cd/blueocean-core-js/-/blueocean-core-js-0.0.84.tgz" + "version": "0.0.86", + "from": "@jenkins-cd/blueocean-core-js@0.0.86", + "resolved": "https://registry.npmjs.org/@jenkins-cd/blueocean-core-js/-/blueocean-core-js-0.0.86.tgz" }, "@jenkins-cd/design-language": { - "version": "0.0.121", - "from": "@jenkins-cd/design-language@0.0.121", - "resolved": "https://registry.npmjs.org/@jenkins-cd/design-language/-/design-language-0.0.121.tgz" + "version": "0.0.122", + "from": "@jenkins-cd/design-language@0.0.122", + "resolved": "https://registry.npmjs.org/@jenkins-cd/design-language/-/design-language-0.0.122.tgz" }, "@jenkins-cd/eslint-config-jenkins": { "version": "0.0.2", @@ -4329,7 +4329,7 @@ }, "inherits": { "version": "2.0.3", - "from": "inherits@>=2.0.0 <3.0.0", + "from": "inherits@>=2.0.1 <2.1.0", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" }, "ini": { @@ -4703,7 +4703,7 @@ }, "js-yaml": { "version": "3.7.0", - "from": "js-yaml@>=3.6.0 <4.0.0", + "from": "js-yaml@>=3.5.1 <4.0.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz" }, "jsbn": { @@ -5621,7 +5621,7 @@ }, "minimatch": { "version": "3.0.3", - "from": "minimatch@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0", + "from": "minimatch@>=3.0.2 <4.0.0", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz" }, "minimist": { @@ -5707,7 +5707,7 @@ }, "ms": { "version": "0.7.2", - "from": "ms@>=0.7.1 <0.8.0", + "from": "ms@0.7.2", "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz" }, "multimatch": { @@ -5959,7 +5959,7 @@ }, "object-assign": { "version": "4.1.0", - "from": "object-assign@>=4.1.0 <5.0.0", + "from": "object-assign@>=4.0.1 <5.0.0", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" }, "object-inspect": { @@ -7668,7 +7668,7 @@ }, "through": { "version": "2.3.8", - "from": "through@>=2.3.4 <2.4.0", + "from": "through@>=2.3.6 <3.0.0", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" }, "through2": { @@ -8350,7 +8350,7 @@ }, "xtend": { "version": "4.0.1", - "from": "xtend@>=4.0.1 <5.0.0", + "from": "xtend@>=4.0.0 <5.0.0", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" }, "yargs": { diff --git a/blueocean-dashboard/package.json b/blueocean-dashboard/package.json index 498491037d3..13f695b87da 100644 --- a/blueocean-dashboard/package.json +++ b/blueocean-dashboard/package.json @@ -39,8 +39,8 @@ "skin-deep": "0.16.0" }, "dependencies": { - "@jenkins-cd/blueocean-core-js": "0.0.84", - "@jenkins-cd/design-language": "0.0.121", + "@jenkins-cd/blueocean-core-js": "0.0.86", + "@jenkins-cd/design-language": "0.0.122", "@jenkins-cd/js-extensions": "0.0.33", "@jenkins-cd/js-modules": "0.0.8", "@jenkins-cd/react-material-icons": "1.0.0", diff --git a/blueocean-personalization/npm-shrinkwrap.json b/blueocean-personalization/npm-shrinkwrap.json index 9a9fd692fc0..5b47d1f2073 100644 --- a/blueocean-personalization/npm-shrinkwrap.json +++ b/blueocean-personalization/npm-shrinkwrap.json @@ -3,14 +3,14 @@ "version": "0.0.2-unpublished", "dependencies": { "@jenkins-cd/blueocean-core-js": { - "version": "0.0.84", - "from": "@jenkins-cd/blueocean-core-js@0.0.84", - "resolved": "https://registry.npmjs.org/@jenkins-cd/blueocean-core-js/-/blueocean-core-js-0.0.84.tgz" + "version": "0.0.86", + "from": "@jenkins-cd/blueocean-core-js@0.0.86", + "resolved": "https://registry.npmjs.org/@jenkins-cd/blueocean-core-js/-/blueocean-core-js-0.0.86.tgz" }, "@jenkins-cd/design-language": { - "version": "0.0.121", - "from": "@jenkins-cd/design-language@0.0.121", - "resolved": "https://registry.npmjs.org/@jenkins-cd/design-language/-/design-language-0.0.121.tgz" + "version": "0.0.122", + "from": "@jenkins-cd/design-language@0.0.122", + "resolved": "https://registry.npmjs.org/@jenkins-cd/design-language/-/design-language-0.0.122.tgz" }, "@jenkins-cd/eslint-config-jenkins": { "version": "0.0.2", diff --git a/blueocean-personalization/package.json b/blueocean-personalization/package.json index 9d4a0be2208..c632ec43d13 100644 --- a/blueocean-personalization/package.json +++ b/blueocean-personalization/package.json @@ -35,8 +35,8 @@ "react-addons-test-utils": "15.3.2" }, "dependencies": { - "@jenkins-cd/blueocean-core-js": "0.0.84", - "@jenkins-cd/design-language": "0.0.121", + "@jenkins-cd/blueocean-core-js": "0.0.86", + "@jenkins-cd/design-language": "0.0.122", "@jenkins-cd/js-extensions": "0.0.33", "@jenkins-cd/js-modules": "0.0.8", "immutable": "3.8.1", diff --git a/blueocean-personalization/src/main/js/redux/FavoritesActions.jsx b/blueocean-personalization/src/main/js/redux/FavoritesActions.jsx index f11495e84f4..4ca74cfee13 100644 --- a/blueocean-personalization/src/main/js/redux/FavoritesActions.jsx +++ b/blueocean-personalization/src/main/js/redux/FavoritesActions.jsx @@ -2,11 +2,12 @@ * Created by cmeyers on 7/6/16. */ import { UrlConfig, Fetch } from '@jenkins-cd/blueocean-core-js'; -import { capabilityAugmenter as augmenter } from '@jenkins-cd/blueocean-core-js'; +import { capabilityAugmenter as augmenter, ToastService, i18nTranslator } from '@jenkins-cd/blueocean-core-js'; import { ACTION_TYPES } from './FavoritesStore'; import { cleanSlashes } from '../util/UrlUtils'; +const translator = i18nTranslator('blueocean-personalization'); const fetchFlags = { [ACTION_TYPES.SET_FAVORITES]: false, }; @@ -86,6 +87,15 @@ export const actions = { }); }) .catch((error) => { + const responseBody = error.responseBody; + if (responseBody && responseBody.code && responseBody.message) { + ToastService.newToast({ + style: 'error', + caption: translator('Favoriting Error'), + text: translator(responseBody.message), + }); + } + fetchFlags[actionType] = false; console.error(error); // eslint-disable-line no-console // call again with no payload so actions handle missing data diff --git a/blueocean-personalization/src/main/resources/jenkins/plugins/blueocean/personalization/Messages.properties b/blueocean-personalization/src/main/resources/jenkins/plugins/blueocean/personalization/Messages.properties index 378bd296df3..085898eebb5 100644 --- a/blueocean-personalization/src/main/resources/jenkins/plugins/blueocean/personalization/Messages.properties +++ b/blueocean-personalization/src/main/resources/jenkins/plugins/blueocean/personalization/Messages.properties @@ -1,2 +1,5 @@ dashboardCard.input.required=Input Required dashboardCard.input.favorite=Favorites + +Favoriting.Error=Favoriting Error +no.default.branch.to.favorite=No default branch (e.g. "master") to favorite diff --git a/blueocean-web/npm-shrinkwrap.json b/blueocean-web/npm-shrinkwrap.json index 9363b9f4f44..91d18745658 100644 --- a/blueocean-web/npm-shrinkwrap.json +++ b/blueocean-web/npm-shrinkwrap.json @@ -3,14 +3,14 @@ "version": "0.0.1", "dependencies": { "@jenkins-cd/blueocean-core-js": { - "version": "0.0.84", - "from": "@jenkins-cd/blueocean-core-js@0.0.84", - "resolved": "https://registry.npmjs.org/@jenkins-cd/blueocean-core-js/-/blueocean-core-js-0.0.84.tgz" + "version": "0.0.86", + "from": "@jenkins-cd/blueocean-core-js@0.0.86", + "resolved": "https://registry.npmjs.org/@jenkins-cd/blueocean-core-js/-/blueocean-core-js-0.0.86.tgz" }, "@jenkins-cd/design-language": { - "version": "0.0.121", - "from": "@jenkins-cd/design-language@0.0.121", - "resolved": "https://registry.npmjs.org/@jenkins-cd/design-language/-/design-language-0.0.121.tgz" + "version": "0.0.122", + "from": "@jenkins-cd/design-language@0.0.122", + "resolved": "https://registry.npmjs.org/@jenkins-cd/design-language/-/design-language-0.0.122.tgz" }, "@jenkins-cd/eslint-config-jenkins": { "version": "0.0.2", diff --git a/blueocean-web/package.json b/blueocean-web/package.json index 192ae7ed201..509320483d1 100644 --- a/blueocean-web/package.json +++ b/blueocean-web/package.json @@ -29,8 +29,8 @@ "zombie": "4.2.1" }, "dependencies": { - "@jenkins-cd/blueocean-core-js": "0.0.84", - "@jenkins-cd/design-language": "0.0.121", + "@jenkins-cd/blueocean-core-js": "0.0.86", + "@jenkins-cd/design-language": "0.0.122", "@jenkins-cd/js-extensions": "0.0.33", "@jenkins-cd/js-modules": "0.0.8", "history": "2.0.2",