--- /dev/null
+/**
+ * Create a new ElggUser
+ *
+ * @param {Object} o
+ * @extends ElggEntity
+ * @class Represents an ElggUser
+ * @property {string} name
+ * @property {string} username
+ */
+elgg.ElggUser = function(o) {
+ //elgg.ElggEntity.call(this, o);
+ this = o;
+};
+
+//elgg.inherit(elgg.ElggUser, elgg.ElggEntity);
+
+/**
+ * @return {boolean} Whether the user is an admin
+ */
+elgg.ElggUser.prototype.isAdmin = function() {
+ return this.admin === 'yes';
+};
\ No newline at end of file
}\r
};\r
\r
+/**\r
+ * Inherit the prototype methods from one constructor into another.\r
+ * \r
+ * @example\r
+ * <pre>\r
+ * function ParentClass(a, b) { }\r
+ * \r
+ * ParentClass.prototype.foo = function(a) { alert(a); }\r
+ *\r
+ * function ChildClass(a, b, c) {\r
+ * //equivalent of parent::__construct(a, b); in PHP\r
+ * ParentClass.call(this, a, b);\r
+ * }\r
+ *\r
+ * elgg.inherit(ChildClass, ParentClass);\r
+ *\r
+ * var child = new ChildClass('a', 'b', 'see');\r
+ * child.foo('boo!'); // alert('boo!');\r
+ * </pre>\r
+ *\r
+ * @param {Function} childCtor Child class.\r
+ * @param {Function} parentCtor Parent class.\r
+ */\r
+elgg.inherit = function(Child, Parent) {\r
+ Child.prototype = Parent;\r
+};\r
+\r
/**\r
* Prepend elgg.config.wwwroot to a url if the url doesn't already have it.\r
* \r
+ '<p>' + msgs.join('</p><p>') + '</p>'\r
+ '</div>';\r
\r
- $(messages_html).insertAfter('#layout_header').click(function () {\r
- $(this).stop().fadeOut('slow');\r
- return false;\r
- }).show().animate({opacity:'1.0'},delay).fadeOut('slow');\r
+ $(messages_html).appendTo('#elgg_system_messages').show().animate({opacity:'1.0'},delay).fadeOut('slow');\r
};\r
\r
/**\r
--- /dev/null
+/**\r
+ * Provides language-related functionality\r
+ */\r
+elgg.provide('elgg.config.translations');\r
+\r
+elgg.config.language = 'en';\r
+\r
+elgg.config.translations.init = function() {\r
+ elgg.reload_all_translations();\r
+};\r
+\r
+elgg.add_translation = function(lang, translations) {\r
+ elgg.provide('elgg.config.translations.' + lang);\r
+ \r
+ var t = elgg.config.translations;\r
+ \r
+ t[lang] = $.extend(t[lang], translations);\r
+}\r
+\r
+/**\r
+ * Load the translations for the given language.\r
+ * \r
+ * If no language is specified, the default language is used.\r
+ * @param {string} language\r
+ * @return {XMLHttpRequest}\r
+ */\r
+elgg.reload_all_translations = function(language) {\r
+ var lang = language || elgg.get_language();\r
+ elgg.getJSON('_css/js.php', {\r
+ data: {\r
+ 'js': 'languages/'+lang,\r
+ 'viewtype': 'default',\r
+ 'lastcache': elgg.config.lastcache\r
+ },\r
+ success: function(json) {\r
+ elgg.add_translation(lang, json);\r
+ }\r
+ });\r
+};\r
+\r
+/**\r
+ * @deprecated Use elgg.reload_all_translations\r
+ */\r
+elgg.config.translations.load = elgg.reload_all_translations;\r
+\r
+/**\r
+ * Get the current language\r
+ * @return {String}\r
+ */\r
+elgg.get_language = function() {\r
+ var user = elgg.get_loggedin_user();\r
+ \r
+ if (user && user.language) {\r
+ return user.language;\r
+ }\r
+ \r
+ return elgg.config.language;\r
+};\r
+\r
+/**\r
+ * Translates a string\r
+ * \r
+ * @param {String} key The string to translate\r
+ * @param {String} language The language to display it in\r
+ * @return {String} The translation\r
+ */\r
+elgg.echo = function(key, language) {\r
+ var translations,\r
+ dlang = elgg.get_language();\r
+ \r
+ language = language || dlang;\r
+ \r
+ translations = elgg.config.translations[language];\r
+ if (translations && translations[key]) {\r
+ return translations[key];\r
+ }\r
+ \r
+ if (language == dlang) {\r
+ return undefined;\r
+ }\r
+ \r
+ translations = elgg.config.translations[dlang];\r
+ if (translations && translations[key]) {\r
+ return translations[key];\r
+ }\r
+ \r
+ return undefined;\r
+};\r
+\r
+$(function() {\r
+ elgg.config.translations.init();\r
+});
\ No newline at end of file
document.cookie = cookies.join('; ');\r
};\r
\r
+/**\r
+ * @return {ElggUser} The logged in user\r
+ */\r
+elgg.get_loggedin_user = function() {\r
+ return elgg.session.user;\r
+};\r
+\r
+/**\r
+ * @return {number} The GUID of the logged in user\r
+ */\r
+elgg.get_loggedin_userid = function() {\r
+ var user = elgg.get_loggedin_user();\r
+ return user ? user.guid : 0;\r
+};\r
+\r
+/**\r
+ * @return {boolean} Whether there is a user logged in\r
+ */\r
+elgg.isloggedin = function() {\r
+ return (elgg.get_loggedin_user() instanceof elgg.ElggUser);\r
+};\r
+\r
+/**\r
+ * @return {boolean} Whether there is an admin logged in\r
+ */\r
+elgg.isadminloggedin = function() {\r
+ var user = elgg.get_loggedin_user();\r
+ return (user instanceof ElggUser) && user.isAdmin();\r
+};\r
+\r
/**\r
* @deprecated Use elgg.session.cookie instead\r
*/\r
--- /dev/null
+ElggLanguagesTest = TestCase("ElggLanguagesTest");\r
+\r
+ElggLanguagesTest.prototype.setUp = function() {\r
+ this.ajax = $.ajax;\r
+ \r
+ //Immediately execute some dummy "returned" javascript instead of sending\r
+ //an actual ajax request\r
+ $.ajax = function(settings) {\r
+ var lang = settings.data.js.split('/')[1];\r
+ elgg.config.translations[lang] = {'language':lang};\r
+ };\r
+};\r
+\r
+ElggLanguagesTest.prototype.tearDown = function() {\r
+ $.ajax = this.ajax;\r
+ \r
+ //clear translations\r
+ elgg.config.translations['en'] = undefined;\r
+ elgg.config.translations['aa'] = undefined;\r
+};\r
+\r
+ElggLanguagesTest.prototype.testLoadTranslations = function() {\r
+ assertUndefined(elgg.config.translations['en']);\r
+ assertUndefined(elgg.config.translations['aa']);\r
+ \r
+ elgg.reload_all_translations();\r
+ elgg.reload_all_translations('aa');\r
+ \r
+ assertNotUndefined(elgg.config.translations['en']['language']);\r
+ assertNotUndefined(elgg.config.translations['aa']['language']);\r
+};\r
+\r
+ElggLanguagesTest.prototype.testElggEchoTranslates = function() {\r
+ elgg.reload_all_translations('en');\r
+ elgg.reload_all_translations('aa');\r
+ \r
+ assertEquals('en', elgg.echo('language'));\r
+ assertEquals('aa', elgg.echo('language', 'aa'));\r
+};\r
+\r
+ElggLanguagesTest.prototype.testElggEchoFallsBackToDefaultLanguage = function() {\r
+ elgg.reload_all_translations('en');\r
+ assertEquals('en', elgg.echo('language', 'aa'));\r
+};\r
+\r