Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
This commit is contained in:
parent
93e3a48004
commit
b38dea0597
25901 changed files with 9982925 additions and 369 deletions
97
gaia/apps/settings/js/panels/languages/languages.js
Executable file
97
gaia/apps/settings/js/panels/languages/languages.js
Executable file
|
|
@ -0,0 +1,97 @@
|
|||
define(function(require) {
|
||||
'use strict';
|
||||
|
||||
// AMD modules
|
||||
var SettingsCache = require('modules/settings_cache');
|
||||
var KeyboardHelper = require('shared/keyboard_helper');
|
||||
var LanguageList = require('shared/language_list');
|
||||
// import this to update time format while laungage changed
|
||||
require('modules/date_time');
|
||||
|
||||
var Languages = function() {};
|
||||
|
||||
Languages.prototype = {
|
||||
buildList: function() {
|
||||
LanguageList.get(function fillList(languages, currentLang) {
|
||||
var options = document.createDocumentFragment();
|
||||
for (var lang in languages) {
|
||||
var isCurrent = (lang === currentLang);
|
||||
var option = document.createElement('option');
|
||||
option.value = lang;
|
||||
option.innerHTML = LanguageList.wrapBidi(lang, languages[lang]);
|
||||
option.selected = isCurrent;
|
||||
options.appendChild(option);
|
||||
}
|
||||
this.elements.langSel.innerHTML = '';
|
||||
this.elements.langSel.appendChild(options);
|
||||
}.bind(this));
|
||||
},
|
||||
updateDateTime: function() {
|
||||
// update the date and time samples in the 'languages' panel
|
||||
if (this.panel.children.length) {
|
||||
var d = new Date();
|
||||
var dateString = d.toLocaleString(navigator.languages, {
|
||||
weekday: 'long',
|
||||
day: 'numeric',
|
||||
month: 'long',
|
||||
year: 'numeric'
|
||||
});
|
||||
var timeString = d.toLocaleString(navigator.languages, {
|
||||
hour12: navigator.mozHour12,
|
||||
hour: 'numeric',
|
||||
minute: 'numeric'
|
||||
});
|
||||
this.panel.querySelector('#region-date').textContent = dateString;
|
||||
this.panel.querySelector('#region-time').textContent = timeString;
|
||||
}
|
||||
},
|
||||
showMoreLanguages: function() {
|
||||
this.elements.moreLanguages.blur();
|
||||
SettingsCache.getSettings(function(result) {
|
||||
var version = result['langpack.channel'];
|
||||
/* jshint nonew: false */
|
||||
new window.MozActivity({
|
||||
name: 'marketplace-category',
|
||||
data: {
|
||||
slug: 'langpacks',
|
||||
// Marketplace expects major.minor
|
||||
fxos_version: version.split('.').slice(0, 2).join('.')
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
onInit: function(panel, elements) {
|
||||
this.panel = panel;
|
||||
this.elements = elements;
|
||||
|
||||
// Installing additional languages is only available on phones for now;
|
||||
// see https://bugzil.la/1124098. On other device types the link to the
|
||||
// Marketpace is hidden. Don't set the handler if it's display: none.
|
||||
if (this.elements.moreLanguages.offsetParent) {
|
||||
this.elements.moreLanguages.addEventListener('click',
|
||||
this.showMoreLanguages.bind(this));
|
||||
}
|
||||
this.elements.langSel.addEventListener('blur',
|
||||
this.buildList.bind(this));
|
||||
this.elements.langSel.addEventListener('change', function() {
|
||||
var lang = this.elements.langSel.value;
|
||||
navigator.mozSettings.createLock().set({'language.current': lang});
|
||||
if (navigator.mozL10n && navigator.mozL10n.language) {
|
||||
navigator.mozL10n.language.code = lang;
|
||||
}
|
||||
}.bind(this));
|
||||
},
|
||||
onLocalized: function() {
|
||||
// update keyboard layout
|
||||
var lang = document.documentElement.lang;
|
||||
KeyboardHelper.changeDefaultLayouts(lang);
|
||||
|
||||
// update the format example UI
|
||||
this.updateDateTime();
|
||||
}
|
||||
};
|
||||
|
||||
return function ctor_languages() {
|
||||
return new Languages();
|
||||
};
|
||||
});
|
||||
38
gaia/apps/settings/js/panels/languages/panel.js
Executable file
38
gaia/apps/settings/js/panels/languages/panel.js
Executable file
|
|
@ -0,0 +1,38 @@
|
|||
'use strict';
|
||||
|
||||
define(function(require) {
|
||||
var SettingsPanel = require('modules/settings_panel');
|
||||
var Languages = require('panels/languages/languages');
|
||||
|
||||
return function ctor_languages_panel() {
|
||||
var languages = Languages();
|
||||
var onLocalized = languages.onLocalized.bind(languages);
|
||||
var onAdditionalLanguagesChange = languages.buildList.bind(languages);
|
||||
|
||||
return SettingsPanel({
|
||||
onBeforeShow: function() {
|
||||
languages.buildList();
|
||||
languages.updateDateTime();
|
||||
document.addEventListener('DOMRetranslated', onLocalized);
|
||||
navigator.mozSettings.addObserver(
|
||||
'accessibility.screenreader', onAdditionalLanguagesChange);
|
||||
document.addEventListener(
|
||||
'additionallanguageschange', onAdditionalLanguagesChange);
|
||||
},
|
||||
onBeforeHide: function() {
|
||||
document.removeEventListener('DOMRetranslated', onLocalized);
|
||||
navigator.mozSettings.removeObserver(
|
||||
'accessibility.screenreader', onAdditionalLanguagesChange);
|
||||
document.removeEventListener(
|
||||
'additionallanguageschange', onAdditionalLanguagesChange);
|
||||
},
|
||||
onInit: function(panel) {
|
||||
var elements = {
|
||||
moreLanguages: panel.querySelector('.menuItem-more-languages'),
|
||||
langSel: panel.querySelector('select[name="language.current"]')
|
||||
};
|
||||
languages.onInit(panel, elements);
|
||||
}
|
||||
});
|
||||
};
|
||||
});
|
||||
Loading…
Reference in a new issue