mirror of
https://github.com/openstf/stf
synced 2025-10-05 19:42:01 +02:00
Added Auto-route language support for documentation.
This commit is contained in:
parent
241b711c31
commit
d8bf7449d1
8 changed files with 125 additions and 35 deletions
7
res/app/components/stf/language/index.js
Normal file
7
res/app/components/stf/language/index.js
Normal file
|
@ -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'))
|
65
res/app/components/stf/language/language-provider.js
Normal file
65
res/app/components/stf/language/language-provider.js
Normal file
|
@ -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
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//}
|
|
@ -1,4 +1,4 @@
|
||||||
var supportedLanguages = require('./../../../common/lang/langs.json')
|
var supportedLanguages = require('./../../../../common/lang/langs.json')
|
||||||
|
|
||||||
module.exports = function LanguageServiceFactory(
|
module.exports = function LanguageServiceFactory(
|
||||||
SettingsService
|
SettingsService
|
|
@ -2,7 +2,7 @@
|
||||||
.heading
|
.heading
|
||||||
i.fa.fa-bug
|
i.fa.fa-bug
|
||||||
span(translate) Remote debug
|
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')
|
i.fa.fa-question-circle(tooltip='{{remoteDebugTooltip | translate}}', tooltip-placement='left')
|
||||||
.widget-content.padded
|
.widget-content.padded
|
||||||
.form-inline
|
.form-inline
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
span(translate) Shell
|
span(translate) Shell
|
||||||
clear-button(ng-click='clear()', ng-disabled='!command && !data').btn-xs
|
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
|
i.fa.fa-book
|
||||||
.widget-content.padded
|
.widget-content.padded
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
module.exports = function DocsCtrl($rootScope, $scope, $window, $location) {
|
module.exports =
|
||||||
|
function DocsCtrl($rootScope, $scope, $window, $location) {
|
||||||
|
|
||||||
$scope.goBack = function () {
|
$scope.goBack = function () {
|
||||||
$window.history.back()
|
$window.history.back()
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.goHome = function () {
|
$scope.goHome = function () {
|
||||||
$location.path('/docs/en/index')
|
$location.path('/docs/index')
|
||||||
}
|
}
|
||||||
|
|
||||||
$rootScope.$on("$routeChangeError",
|
$rootScope.$on("$routeChangeError",
|
||||||
|
@ -14,6 +15,5 @@ module.exports = function DocsCtrl($rootScope, $scope, $window, $location) {
|
||||||
console.log('event', event)
|
console.log('event', event)
|
||||||
console.log('current', current)
|
console.log('current', current)
|
||||||
console.log('previous', previous)
|
console.log('previous', previous)
|
||||||
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,34 @@
|
||||||
require('./docs.css')
|
require('./docs.css')
|
||||||
|
|
||||||
module.exports = angular.module('stf.help.docs', [])
|
module.exports = angular.module('stf.help.docs', [
|
||||||
.config(['$routeProvider', function ($routeProvider) {
|
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*', {
|
$routeProvider
|
||||||
|
.when('/docs/:document*', {
|
||||||
templateUrl: function (params) {
|
templateUrl: function (params) {
|
||||||
|
var lang = languageProvider.$get().selectedLanguage
|
||||||
var document = params.document.replace('.md', '')
|
var document = params.document.replace('.md', '')
|
||||||
return '/static/docs/' + params.lang + '/' + document
|
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'))
|
.controller('DocsCtrl', require('./docs-controller'))
|
||||||
|
|
|
@ -1,12 +1,10 @@
|
||||||
module.exports = angular.module('stf-ui-language', [
|
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(
|
$templateCache.put(
|
||||||
'settings/language/language.jade'
|
'settings/language/language.jade', require('./language.jade')
|
||||||
, require('./language.jade')
|
|
||||||
)
|
)
|
||||||
}])
|
}])
|
||||||
.factory('LanguageService', require('./language-service'))
|
|
||||||
.controller('LanguageCtrl', require('./language-controller'))
|
.controller('LanguageCtrl', require('./language-controller'))
|
||||||
//.provider('language', require('./language-service'))
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue