From: Florent Bruneau Date: Wed, 16 Feb 2011 21:17:19 +0000 (+0100) Subject: Merge remote branch 'origin/core/1.1.2/maint' into core/master X-Git-Tag: core/1.1.3~17 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=96dd0b0fbaaedf7d274cc919268fd717275d605f;hp=ed4f7de016bb136fae9f72256c827ef09d4ea863;p=platal.git Merge remote branch 'origin/core/1.1.2/maint' into core/master --- diff --git a/classes/plpage.php b/classes/plpage.php index 516378b..56b0c8a 100644 --- a/classes/plpage.php +++ b/classes/plpage.php @@ -132,7 +132,7 @@ abstract class PlPage extends Smarty } elseif ($display == 'raw') { $this->_page_type = NO_SKIN; } elseif ($display == 'full') { - $this->_page_typ = SKINNED; + $this->_page_type = SKINNED; } if ($this->_page_type == SIMPLE) { diff --git a/classes/plsession.php b/classes/plsession.php index f19c457..94665c6 100644 --- a/classes/plsession.php +++ b/classes/plsession.php @@ -52,7 +52,7 @@ abstract class PlSession /** Build the session structure with system fields. */ - private function fillSession() + protected function fillSession() { S::bootstrap('user', null); S::bootstrap('auth', AUTH_PUBLIC); diff --git a/htdocs/javascript/core.js b/htdocs/javascript/core.js index bc9463e..ea6ccf7 100644 --- a/htdocs/javascript/core.js +++ b/htdocs/javascript/core.js @@ -24,7 +24,7 @@ // {{{ jQuery object extension (function($) { - function assert(condition, text) { + var assert = function(condition, text) { if ($.isFunction(condition)) { condition = condition(); } @@ -36,11 +36,32 @@ } else { throw "Assertion failed: " + text; } - } + }; /* Add new functions to jQuery namesapce */ $.extend({ + plURL: (function() { + var base; + return function(url) { + if (url.startsWith('http', true)) { + return url; + } + if (typeof base === 'undefined') { + base = $('head base'); + if (base.length > 0) { + base = base.attr('href'); + if (!base.endsWith('/')) { + base += '/'; + } + } else { + base = ''; + } + } + return base + url; + }; + }()), + /* The goal of the following functions is to provide an AJAX API that * take a different callback in case of HTTP success code (2XX) and in * other cases. @@ -54,17 +75,17 @@ onSuccess = data; data = null; } - if (onError != null && !$.isFunction(onError)) { + if (onError && !$.isFunction(onError)) { type = type || onError; onError = null; } function ajaxHandler(data, textStatus, xhr) { - if (textStatus == 'success') { + if (textStatus === 'success') { if (onSuccess) { onSuccess(data, textStatus, xhr); } - } else if (textStatus == 'error') { + } else if (textStatus === 'error') { if (onError) { onError(data, textStatus, xhr); } else { @@ -74,7 +95,7 @@ } } return $.ajax({ - url: source, + url: $.plURL(source), type: method, success: ajaxHandler, data : data, @@ -104,7 +125,7 @@ closeOnEsc: function() { return $(window).keydown(function (e) { - if (e.keyCode == 27) { + if (e.keyCode === 27) { window.close(); } }); @@ -112,22 +133,27 @@ dynPost: function(action, key, value) { var values; + var k; + var form; + if (!$.isArray(key)) { values = { }; values[key] = value; } else { values = key; } - var form = $('
', { + form = $('', { action: action, method: 'post' }); - for (var k in values) { - $('', { - type: 'hidden', - name: k, - value: values[k] - }).appendTo(form); + for (k in values) { + if (values.hasOwnProperty(k)) { + $('', { + type: 'hidden', + name: k, + value: values[k] + }).appendTo(form); + } } $('body').appendTo(form); form.submit(); @@ -173,7 +199,7 @@ }, wiki: function(text, withTitle) { - if (text == '') { + if (!text) { return this.html(''); } var url = 'wiki_preview'; @@ -202,13 +228,13 @@ assertLength: function(len) { return this.assert(function() { - return $(this).length == len; + return $(this).length === len; }); }, assertId: function(id) { return this.assert(function() { - return $(this).attr('id') == id; + return $(this).attr('id') === id; }); }, @@ -218,7 +244,7 @@ }); } }); -})(jQuery); +}(jQuery)); // }}} // {{{ function RegExp.escape() @@ -235,36 +261,93 @@ RegExp.escape = function(text) { ); } return text.replace(arguments.callee.sRE, '\\$1'); -} +}; + +// }}} +// {{{ String extension + +String.prototype.startsWith = function(str, caseInsensitive) { + var cmp = this; + + if (str.length > this.length) { + return false; + } + if (caseInsensitive) { + str = str.toLowerCase(); + cmp = cmp.toLowerCase(); + } + return cmp.substr(0, str.length) === str; +}; + +String.prototype.endsWith = function(str, caseInsensitive) { + var cmp = this; + + if (str.length > this.length) { + return false; + } + if (caseInsensitive) { + str = str.toLowerCase(); + cmp = cmp.toLowerCase(); + } + return cmp.substr(cmp.length - str.length, str.length) === str; +}; + +String.prototype.htmlEntities = function() { + return this.replace(/&/g,'&') + .replace(new RegExp('<','g'),'<') + .replace(/>/g,'>'); +}; + +String.prototype.contains = function(str, caseInsensitive) { + var cmp = this; + if (str.length > this.length) { + return false; + } + if (caseInsensitive) { + str = str.toLowerCase(); + cmp = cmp.toLowerCase(); + } + return cmp.indexOf(str) >= 0; +}; // }}} // {{{ PmWiki decoding Nix = { map: null, + convert: function(a) { - Nix.init(); var s = ''; + Nix.init(); for (i = 0; i < a.length ; i++) { var b = a.charAt(i); s += ((b >= 'A' && b <= 'Z') || (b >= 'a' && b <= 'z') ? Nix.map[b] : b); } return s; }, + init: function() { - if (Nix.map != null) + var map; + var s; + + if (Nix.map !== null) { return; - var map = new Array(); - var s='abcdefghijklmnopqrstuvwxyz'; - for (i = 0; i < s.length; i++) - map[s.charAt(i)] = s.charAt((i+13)%26); - for (i=0; i {/foreach} {/if} - {if t($pl_js)} {foreach from=$pl_js item=js}