diff --git a/res/app/components/stf/language/index.js b/res/app/components/stf/language/index.js new file mode 100644 index 00000000..a039fbb8 --- /dev/null +++ b/res/app/components/stf/language/index.js @@ -0,0 +1,7 @@ +module.exports = angular.module('stf-language', [ + require('stf/settings').name, + require('gettext').name, + require('stf/app-state').name +]) + .factory('LanguageService', require('./language-service')) + .provider('language', require('./language-provider')) diff --git a/res/app/components/stf/language/language-provider.js b/res/app/components/stf/language/language-provider.js new file mode 100644 index 00000000..7da909ae --- /dev/null +++ b/res/app/components/stf/language/language-provider.js @@ -0,0 +1,65 @@ +//var supportedLanguages = require('./../../../../common/lang/langs.json') + +module.exports = function LanguageProvider(AppStateProvider) { + var provider = { + selectedLanguage: 'en' + } + + var a = AppStateProvider.$get() + if (a && a.user && a.user.settings && a.user.settings && + a.user.settings.selectedLanguage) { + provider.selectedLanguage = a.user.settings.selectedLanguage + } + + return { + $get: function () { + return provider + } + } +} + +//module.exports = function LanguageProvider() { +// var LanguageService = {} +// +// function detectLanguage() { +// return (navigator.language || navigator.userLanguage || 'en-US') +// .substring(0, 2) +// } +// +// function isSupported(lang) { +// return !!supportedLanguages[lang] +// } +// +// function onlySupported(lang, defaultValue) { +// return isSupported(lang) ? lang : defaultValue +// } +// +// LanguageService.settingKey = 'selectedLanguage' +// LanguageService.supportedLanguages = supportedLanguages +// LanguageService.defaultLanguage = 'en' +// LanguageService.detectedLanguage = +// onlySupported(detectLanguage(), LanguageService.defaultLanguage) +// +// return { +// set: function (constants) { +// angular.extend(LanguageService, constants) +// }, +// $get: function (SettingsService, gettextCatalog) { +// SettingsService.sync( +// LanguageService, { +// target: LanguageService.settingKey, +// source: LanguageService.settingKey, +// defaultValue: LanguageService.detectedLanguage +// }, updateLanguage +// ) +// +// function updateLanguage() { +// gettextCatalog.setCurrentLanguage(LanguageService.selectedLanguage) +// } +// +// LanguageService.updateLanguage = updateLanguage +// +// return LanguageService +// } +// } +//} diff --git a/res/app/settings/language/language-service.js b/res/app/components/stf/language/language-service.js similarity index 94% rename from res/app/settings/language/language-service.js rename to res/app/components/stf/language/language-service.js index 510ea25f..edad797f 100644 --- a/res/app/settings/language/language-service.js +++ b/res/app/components/stf/language/language-service.js @@ -1,4 +1,4 @@ -var supportedLanguages = require('./../../../common/lang/langs.json') +var supportedLanguages = require('./../../../../common/lang/langs.json') module.exports = function LanguageServiceFactory( SettingsService diff --git a/res/app/control-panes/dashboard/remote-debug/remote-debug.jade b/res/app/control-panes/dashboard/remote-debug/remote-debug.jade index a3e7f295..a99e7b1e 100644 --- a/res/app/control-panes/dashboard/remote-debug/remote-debug.jade +++ b/res/app/control-panes/dashboard/remote-debug/remote-debug.jade @@ -2,7 +2,7 @@ .heading i.fa.fa-bug span(translate) Remote debug - a(ng-href='/#!/docs/en/remote-debug').pull-right + a(ng-href='/#!/docs/remote-debug').pull-right i.fa.fa-question-circle(tooltip='{{remoteDebugTooltip | translate}}', tooltip-placement='left') .widget-content.padded .form-inline diff --git a/res/app/control-panes/dashboard/shell/shell.jade b/res/app/control-panes/dashboard/shell/shell.jade index 49fedfe8..7f22117a 100644 --- a/res/app/control-panes/dashboard/shell/shell.jade +++ b/res/app/control-panes/dashboard/shell/shell.jade @@ -4,7 +4,7 @@ span(translate) Shell clear-button(ng-click='clear()', ng-disabled='!command && !data').btn-xs - a(ng-href='/#!/docs/ja/remote-shell').btn.btn-xs.btn-primary-outline.pull-right.transparent-border + a(ng-href='/#!/docs/remote-shell').btn.btn-xs.btn-primary-outline.pull-right.transparent-border i.fa.fa-book .widget-content.padded diff --git a/res/app/docs/docs-controller.js b/res/app/docs/docs-controller.js index c78bc8b3..f53e1415 100644 --- a/res/app/docs/docs-controller.js +++ b/res/app/docs/docs-controller.js @@ -1,19 +1,19 @@ -module.exports = function DocsCtrl($rootScope, $scope, $window, $location) { +module.exports = + function DocsCtrl($rootScope, $scope, $window, $location) { - $scope.goBack = function () { - $window.history.back() + $scope.goBack = function () { + $window.history.back() + } + + $scope.goHome = function () { + $location.path('/docs/index') + } + + $rootScope.$on("$routeChangeError", + function (event, current, previous, rejection) { + console.log("ROUTE CHANGE ERROR: " + rejection) + console.log('event', event) + console.log('current', current) + console.log('previous', previous) + }) } - - $scope.goHome = function () { - $location.path('/docs/en/index') - } - - $rootScope.$on("$routeChangeError", - function (event, current, previous, rejection) { - console.log("ROUTE CHANGE ERROR: " + rejection) - console.log('event', event) - console.log('current', current) - console.log('previous', previous) - - }) -} diff --git a/res/app/docs/index.js b/res/app/docs/index.js index 4406ed57..69dfe6dd 100644 --- a/res/app/docs/index.js +++ b/res/app/docs/index.js @@ -1,14 +1,34 @@ require('./docs.css') -module.exports = angular.module('stf.help.docs', []) - .config(['$routeProvider', function ($routeProvider) { +module.exports = angular.module('stf.help.docs', [ + require('stf/language').name +]) + .config(function ($routeProvider, languageProvider) { + // TODO: Solutions to the lang problem + // + // 1) Use $route inside a controller instead of $routeProvider + // 2) Use $routeProvider along with languageProvider + // In this case languageProvider depends on Settings and gettext + // which are not providers + // 3) Easiest way is to use AppState + // 4) It needs a fallback if the language doesn't exists, it can be made + // in Express side. - $routeProvider.when('/docs/:lang/:document*', { - templateUrl: function (params) { - var document = params.document.replace('.md', '') - return '/static/docs/' + params.lang + '/' + document - } - }) + $routeProvider + .when('/docs/:document*', { + templateUrl: function (params) { + var lang = languageProvider.$get().selectedLanguage + var document = params.document.replace('.md', '') + return '/static/docs/' + lang + '/' + document + } + }) + //.when('/docs/:lang/:document*', { + // templateUrl: function (params) { + // var lang = params.lang + // var document = params.document.replace('.md', '') + // return '/static/docs/' + lang + '/' + document + // } + //}) - }]) + }) .controller('DocsCtrl', require('./docs-controller')) diff --git a/res/app/settings/language/index.js b/res/app/settings/language/index.js index dc575e02..e1a23027 100644 --- a/res/app/settings/language/index.js +++ b/res/app/settings/language/index.js @@ -1,12 +1,10 @@ module.exports = angular.module('stf-ui-language', [ - require('stf/settings').name + require('stf/settings').name, + require('stf/language').name ]) - .run(["$templateCache", function($templateCache) { + .run(["$templateCache", function ($templateCache) { $templateCache.put( - 'settings/language/language.jade' - , require('./language.jade') + 'settings/language/language.jade', require('./language.jade') ) }]) - .factory('LanguageService', require('./language-service')) .controller('LanguageCtrl', require('./language-controller')) - //.provider('language', require('./language-service'))