1
0
Fork 0
mirror of https://github.com/openstf/stf synced 2025-10-05 10:39:25 +02:00

Added Auto-route language support for documentation.

This commit is contained in:
Gunther Brunner 2014-09-01 16:19:23 +09:00
parent 241b711c31
commit d8bf7449d1
8 changed files with 125 additions and 35 deletions

View 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'))

View 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
// }
// }
//}

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -1,19 +1,19 @@
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 () {
$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)
})
}

View file

@ -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
templateUrl: function (params) { .when('/docs/:document*', {
var document = params.document.replace('.md', '') templateUrl: function (params) {
return '/static/docs/' + params.lang + '/' + document 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')) .controller('DocsCtrl', require('./docs-controller'))

View file

@ -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'))