26 elgg.nullFunction =
function() {};
35 elgg.abstractMethod =
function() {
36 throw new Error(
"Oops... you forgot to implement an abstract method!");
42 elgg.extend = jQuery.extend;
53 elgg.isArray = jQuery.isArray;
64 elgg.isFunction = jQuery.isFunction;
75 elgg.isPlainObject = jQuery.isPlainObject;
84 elgg.isString =
function(val) {
85 return typeof val ===
'string';
95 elgg.isNumber =
function(val) {
96 return typeof val ===
'number';
109 elgg.isObject =
function(val) {
110 return typeof val ===
'object';
120 elgg.isUndefined =
function(val) {
121 return val === undefined;
142 elgg.isNullOrUndefined =
function(val) {
152 if (typeof val !==
type) {
153 throw new TypeError(
"Expecting param of " +
154 arguments.caller +
"to be a(n) " +
type +
"." +
155 " Was actually a(n) " + typeof val +
".");
165 elgg.assertTypeOf(
'string', pkg);
167 var parts = pkg.split(
'.'),
171 for (i = 0; i < parts.length; i += 1) {
174 if (
elgg.isUndefined(cur)) {
175 throw new Error(
"Missing package: " + pkg);
199 elgg.provide =
function(pkg, opt_context) {
200 elgg.assertTypeOf(
'string', pkg);
202 var parts = pkg.split(
'.'),
203 context = opt_context ||
elgg.global,
207 for (i = 0; i < parts.length; i += 1) {
209 context[part] = context[part] || {};
210 context = context[part];
237 elgg.inherit =
function(Child, Parent) {
238 Child.prototype =
new Parent();
239 Child.prototype.constructor = Child;
257 elgg.assertTypeOf(
'string',
url);
259 function validate(
url) {
262 url.scheme =
url.scheme.toLowerCase();
264 if (
url.scheme ==
'http' ||
url.scheme ==
'https') {
269 if (!(
new RegExp(
"^([a-zA-Z0-9][a-zA-Z0-9\\-\\.]*)$",
"i")).test(
url.host) ||
url.host.charAt(-1) ==
'.') {
274 if (!
url.scheme || !
url.host &&
url.scheme !=
'mailto' &&
url.scheme !=
'news' &&
url.scheme !=
'file') {
281 if (
url.indexOf(
'http:') === 0 ||
282 url.indexOf(
'https:') === 0 ||
283 url.indexOf(
'javascript:') === 0 ||
284 url.indexOf(
'mailto:') === 0 ) {
289 else if (validate(
url)) {
295 else if ((
new RegExp(
"^(\\#|\\?|//)",
"i")).test(
url)) {
303 else if ((
new RegExp(
"^[^\/]*\\.php(\\?.*)?$",
"i")).test(
url)) {
304 return elgg.config.wwwroot +
url.ltrim(
'/');
308 else if ((
new RegExp(
"^[^/]*\\.",
"i")).test(
url)) {
309 return 'http://' +
url;
316 return elgg.config.wwwroot +
url.ltrim(
'/');
328 elgg.system_messages =
function(msgs, delay,
type) {
329 if (
elgg.isUndefined(msgs)) {
333 var classes = [
'elgg-message'],
335 appendMessage =
function(msg) {
336 messages_html.push(
'<li class="' + classes.join(
' ') +
'"><p>' + msg +
'</p></li>');
338 systemMessages = $(
'ul.elgg-system-messages'),
342 delay = parseInt(delay || 6000, 10);
343 if (isNaN(delay) || delay <= 0) {
348 if (!
elgg.isArray(msgs)) {
352 if (
type ===
'error') {
353 classes.push(
'elgg-state-error');
355 classes.push(
'elgg-state-success');
358 msgs.forEach(appendMessage);
360 if (
type !=
'error') {
361 $(messages_html.join(
'')).appendTo(systemMessages)
362 .animate({opacity:
'1.0'}, delay).fadeOut(
'slow');
364 $(messages_html.join(
'')).appendTo(systemMessages);
373 elgg.system_message =
function(msgs, delay) {
374 elgg.system_messages(msgs, delay,
"message");
382 elgg.register_error =
function(errors, delay) {
383 elgg.system_messages(errors, delay,
"error");
393 elgg.deprecated_notice =
function(msg, dep_version) {
394 if (
elgg.is_admin_logged_in()) {
395 msg =
"Deprecated in Elgg " + dep_version +
": " + msg;
396 if (typeof console !==
"undefined") {
409 location.href =
elgg.normalize_url(
url);
421 elgg.parse_url =
function(
url, component, expand) {
425 expand = expand ||
false;
426 component = component ||
false;
430 '^(?:(?![^:@]+:[^:@/]*@)([^:/?#.]+):)?(?://)?' 432 +
'((?:(([^:@]*)(?::([^:@]*))?)?@)?' 434 +
'([^:/?#]*)(?::(\\d*))?)' 436 +
'(((/(?:[^?#](?![^?#/]*\\.[^?#/.]+(?:[?#]|$)))*/?)?([^?#/]*))' 453 if (
url.indexOf(
'mailto:') === 0) {
454 results[
'scheme'] =
'mailto';
455 results[
'path'] =
url.replace(
'mailto:',
'');
459 if (
url.indexOf(
'javascript:') === 0) {
460 results[
'scheme'] =
'javascript';
461 results[
'path'] =
url.replace(
'javascript:',
'');
465 var re =
new RegExp(re_str);
466 var matches = re.exec(
url);
468 for (var
i in keys) {
470 results[keys[
i]] = matches[
i];
474 if (expand && typeof(results[
'query']) !=
'undefined') {
475 results[
'query'] =
elgg.parse_str(results[
'query']);
479 if (typeof(results[component]) !=
'undefined') {
480 return results[component];
494 elgg.parse_str =
function(string) {
499 re = /([^&=]+)=?([^&]*)/g,
503 while (result = re.exec(
string)) {
504 key = decodeURIComponent(result[1].replace(/\+/g,
' '));
505 value = decodeURIComponent(result[2].replace(/\+/g,
' '));
508 key = key.replace(re2,
'');
512 params[key].push(value);
533 elgg.getSelectorFromUrlFragment =
function(
url) {
534 var fragment =
url.split(
'#')[1];
538 if (fragment.indexOf(
'.') > -1) {
544 return '#' + fragment;
557 elgg.push_to_object_array =
function(object, parent, value) {
558 elgg.assertTypeOf(
'object',
object);
559 elgg.assertTypeOf(
'string', parent);
561 if (!(
object[parent] instanceof Array)) {
565 if ($.inArray(value,
object[parent]) < 0) {
566 return object[parent].push(value);
579 elgg.is_in_object_array =
function(object, parent, value) {
580 elgg.assertTypeOf(
'object',
object);
581 elgg.assertTypeOf(
'string', parent);
583 return typeof(
object[parent]) !=
'undefined' && $.inArray(value,
object[parent]) >= 0;
if(!$site) if(!($site instanceof ElggSite)) $site url