From 4a2721032e5adb4ad2460befd9af77be4996d2a0 Mon Sep 17 00:00:00 2001 From: ewinslow Date: Mon, 1 Nov 2010 22:11:20 +0000 Subject: Refs #2538: Added some models, inheritance, more bootstrapping code git-svn-id: http://code.elgg.org/elgg/trunk@7183 36083f99-b078-4883-b0ff-0f9b5a30f544 --- actions/security/refreshtoken.php | 5 ++ engine/js/classes/ElggEntity.js | 20 +++++ engine/js/classes/ElggUser.js | 12 +-- engine/js/lib/elgglib.js | 29 +++++--- engine/js/lib/languages.js | 4 +- engine/js/tests/ElggLibTest.js | 11 +++ jsTestDriver.conf | 1 + views/default/js/initialise_elgg.php | 93 +++++++++++++----------- views/default/js/languages.php | 9 +++ views/default/js/languages/en.php | 2 + views/default/page_elements/html_begin.php | 2 +- views/default/page_elements/html_begin_admin.php | 2 + views/default/scripts/initialize_elgg.php | 45 ++++++++++++ 13 files changed, 165 insertions(+), 70 deletions(-) create mode 100644 actions/security/refreshtoken.php create mode 100644 engine/js/classes/ElggEntity.js create mode 100644 views/default/js/languages.php create mode 100644 views/default/js/languages/en.php create mode 100644 views/default/scripts/initialize_elgg.php diff --git a/actions/security/refreshtoken.php b/actions/security/refreshtoken.php new file mode 100644 index 000000000..74a72c4af --- /dev/null +++ b/actions/security/refreshtoken.php @@ -0,0 +1,5 @@ + $ts, '__elgg_token' => $token)); \ No newline at end of file diff --git a/engine/js/classes/ElggEntity.js b/engine/js/classes/ElggEntity.js new file mode 100644 index 000000000..9461a463f --- /dev/null +++ b/engine/js/classes/ElggEntity.js @@ -0,0 +1,20 @@ +/** + * Create a new ElggEntity + * + * @class Represents an ElggEntity + * @property {number} guid + * @property {string} type + * @property {string} subtype + * @property {number} owner_guid + * @property {number} site_guid + * @property {number} container_guid + * @property {number} access_id + * @property {number} time_created + * @property {number} time_updated + * @property {number} last_action + * @property {string} enabled + * + */ +elgg.ElggEntity = function(o) { + $.extend(this, o); +}; \ No newline at end of file diff --git a/engine/js/classes/ElggUser.js b/engine/js/classes/ElggUser.js index dec7431de..8a7a8b7eb 100644 --- a/engine/js/classes/ElggUser.js +++ b/engine/js/classes/ElggUser.js @@ -8,15 +8,7 @@ * @property {string} username */ elgg.ElggUser = function(o) { - //elgg.ElggEntity.call(this, o); - this = o; + elgg.ElggEntity.call(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 +elgg.inherit(elgg.ElggUser, elgg.ElggEntity); \ No newline at end of file diff --git a/engine/js/lib/elgglib.js b/engine/js/lib/elgglib.js index 28cae8f8f..208c02716 100644 --- a/engine/js/lib/elgglib.js +++ b/engine/js/lib/elgglib.js @@ -92,7 +92,8 @@ elgg.provide = function(pkg) { * @param {Function} parentCtor Parent class. */ elgg.inherit = function(Child, Parent) { - Child.prototype = Parent; + Child.prototype = new Parent(); + Child.prototype.constructor = Child; }; /** @@ -130,9 +131,9 @@ elgg.system_messages = function(msgs, delay, type) { delay = 6000; } - var messages_class = 'messages'; + classes = ['elgg_system_message', 'radius8']; if (type == 'error') { - messages_class = 'messages_error'; + classes.push('messages_error'); } //Handle non-arrays @@ -140,16 +141,20 @@ elgg.system_messages = function(msgs, delay, type) { msgs = [msgs]; } - var messages_html = '
' - + '' - + '' - + elgg.echo('systemmessages:dismiss') - + '' - + '' - + '

' + msgs.join('

') + '

' - + '
'; + var messages_html = []; - $(messages_html).appendTo('#elgg_system_messages').show().animate({opacity:'1.0'},delay).fadeOut('slow'); + for (var i in msgs) { + messages_html.push('
' + + '' + + '' + + elgg.echo('systemmessages:dismiss') + + '' + + '' + + '

' + msgs[i] + '

' + + '
'); + } + + $(messages_html.join('')).appendTo('#elgg_system_messages').animate({opacity:'1.0'},delay).fadeOut('slow'); }; /** diff --git a/engine/js/lib/languages.js b/engine/js/lib/languages.js index 7bae74e6b..6ac83f350 100644 --- a/engine/js/lib/languages.js +++ b/engine/js/lib/languages.js @@ -12,9 +12,7 @@ elgg.config.translations.init = function() { elgg.add_translation = function(lang, translations) { elgg.provide('elgg.config.translations.' + lang); - var t = elgg.config.translations; - - t[lang] = $.extend(t[lang], translations); + $.extend(elgg.config.translations[lang], translations); } /** diff --git a/engine/js/tests/ElggLibTest.js b/engine/js/tests/ElggLibTest.js index d5474c605..920296408 100644 --- a/engine/js/tests/ElggLibTest.js +++ b/engine/js/tests/ElggLibTest.js @@ -33,6 +33,17 @@ ElggLibTest.prototype.testRequire = function() { assertNoException(function(){ elgg.require('elgg.security'); }); }; +ElggLibTest.prototype.testInherit = function() { + function Base() {} + function Child() {} + + elgg.inherit(Child, Base); + + + assertInstanceOf(Base, new Child()); + assertEquals(Child, Child.prototype.constructor); +}; + ElggLibTest.prototype.testExtendUrl = function() { var url; elgg.config.wwwroot = "http://www.elgg.org/"; diff --git a/jsTestDriver.conf b/jsTestDriver.conf index 347627dab..fc1fe0b8b 100644 --- a/jsTestDriver.conf +++ b/jsTestDriver.conf @@ -3,5 +3,6 @@ server: http://localhost:42442 load: - vendors/jquery/jquery-1.4.2.min.js - engine/js/lib/elgglib.js + - engine/js/classes/*.js - engine/js/lib/*.js - engine/js/tests/*.js \ No newline at end of file diff --git a/views/default/js/initialise_elgg.php b/views/default/js/initialise_elgg.php index 6b7a318e7..b6c3f7ecd 100644 --- a/views/default/js/initialise_elgg.php +++ b/views/default/js/initialise_elgg.php @@ -1,3 +1,50 @@ +path}engine/js/lib/$file.js"); +} + +//Include classes +$model_files = array( + 'ElggEntity', + + 'ElggUser', +); + +foreach($model_files as $file) { + include("{$CONFIG->path}engine/js/classes/$file.js"); +} + +/** + * Finally, set some values that are cacheable + */ +?> + +elgg.version = ''; +elgg.release = ''; +elgg.config.wwwroot = ''; +elgg.security.interval = 5 * 60 * 1000; + $(document).ready(function () { // COLLAPSABLE WIDGETS (on Dashboard? & Profile pages) @@ -79,6 +126,8 @@ $(document).ready(function () { $(this).next(".likes_list").animate({opacity: "toggle", top: topPosition}, 500); } }); + + elgg_system_message(); }); /* end document ready function */ @@ -196,50 +245,6 @@ function widget_moreinfo() { }); }; -// COOKIES -jQuery.cookie = function(name, value, options) { - if (typeof value != 'undefined') { // name and value given, set cookie - options = options || {}; - if (value === null) { - value = ''; - options.expires = -1; - } - var expires = ''; - if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) { - var date; - if (typeof options.expires == 'number') { - date = new Date(); - date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000)); - } else { - date = options.expires; - } - expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE - } - // CAUTION: Needed to parenthesize options.path and options.domain - // in the following expressions, otherwise they evaluate to undefined - // in the packed version for some reason. - var path = options.path ? '; path=' + (options.path) : ''; - var domain = options.domain ? '; domain=' + (options.domain) : ''; - var secure = options.secure ? '; secure' : ''; - document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join(''); - - } else { // only name given, get cookie - var cookieValue = null; - if (document.cookie && document.cookie != '') { - var cookies = document.cookie.split(';'); - for (var i = 0; i < cookies.length; i++) { - var cookie = jQuery.trim(cookies[i]); - // Does this cookie string begin with the name we want? - if (cookie.substring(0, name.length + 1) == (name + '=')) { - cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); - break; - } - } - } - return cookieValue; - } -}; - // ELGG DROP DOWN MENU $.fn.elgg_dropdownmenu = function(options) { diff --git a/views/default/js/languages.php b/views/default/js/languages.php new file mode 100644 index 000000000..34367aaf1 --- /dev/null +++ b/views/default/js/languages.php @@ -0,0 +1,9 @@ +translations[$language]); \ No newline at end of file diff --git a/views/default/js/languages/en.php b/views/default/js/languages/en.php new file mode 100644 index 000000000..afcf4bb7f --- /dev/null +++ b/views/default/js/languages/en.php @@ -0,0 +1,2 @@ + 'en')); \ No newline at end of file diff --git a/views/default/page_elements/html_begin.php b/views/default/page_elements/html_begin.php index 37a9999f0..9b4e79268 100644 --- a/views/default/page_elements/html_begin.php +++ b/views/default/page_elements/html_begin.php @@ -56,8 +56,8 @@ $release = get_version(true); _css/js.php?lastcache=lastcache; ?>&js=initialise_elgg&viewtype="> + \ No newline at end of file -- cgit v1.2.3