~openteachermaintainers/openteacher/3.x

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
var crossroads = require('crossroads');
var hasher = require('hasher');

var translator = require('ot-translator');
var Event = require('ot-event');

//fixme
var PouchDB = require('pouchdb-browser');
$(["test", "test2", "anonymous"]).each(function (i, username) {
	new PouchDB("private_" + username).destroy();
	new PouchDB("shared_lists_" + username).destroy();
});

exports.session = {
	//other properties set when logged in are:
	//- username = "...";
	//- password = "...";
	//- userDbs = {
	//    private: new PouchDB('...'),
	//    shared_lists: new PouchDB('...'),
	//  }
	// - onUserDbChanges = {
	//    private: function (callback) {...; return function cancel() {...};},
	//    shared_lists: function (callback) {...; return function cancel() {...};},
	//  }
	//
	//when redirecting to the login page, you can set:
	//- next (with a url as accepted by hasher.setHash)
	languageChanged: new Event(),
	languageChangeDone: new Event(),
	loggedIn: false
};

$(function () {
	//translation
	exports.session.languageChanged.handle(function () {
		var otWeb = _("OpenTeacher Web");

		document.title = otWeb;
		$("#header-title").text(otWeb);

		$("#license-and-source-link").text(_("License information and source code"));
	});

	function translate() {
		//browserLanguage for IE
		lang = navigator.language || navigator.browserLanguage;
		translator(translationIndex, lang, function (tr) {
			// nicer than exporting and using 'main._' everywhere
			global._ = tr;
			exports.session.languageChanged.send();
			exports.session.languageChangeDone.send();
		});
	}
	translate();

	exports.session.languageChangeDone.handle(function () {
		//routing
		crossroads.ignoreState = true;
		function parseHash(newHash, oldHash) {
			crossroads.parse(newHash);
		}
		hasher.initialized.add(parseHash);
		hasher.changed.add(parseHash);

		//start listening
		if (!location.hash) {
			//when there's no hash path to specify otherwise, go to the
			//login page.
			hasher.replaceHash("login");
		}
		hasher.init();
	});
});