# HG changeset patch # User Dan # Date 1205698019 14400 # Node ID bc8e0e9ee01d66625a42fdce533defbb1e926089 # Parent f205f4b201edb81044722b8d2b77c9393ac7609a Added support for embedding language data into plugins; updated all version numbers on plugin files diff -r f205f4b201ed -r bc8e0e9ee01d includes/clientside/static/editor.js --- a/includes/clientside/static/editor.js Sat Mar 15 14:19:18 2008 -0400 +++ b/includes/clientside/static/editor.js Sun Mar 16 16:06:59 2008 -0400 @@ -275,6 +275,8 @@ var button = new templateParser(response.toolbar_templates.toolbar_button); var tail = new templateParser(response.toolbar_templates.toolbar_end); + toolbar += head.run(); + button.assign_bool({ show_title: true }); @@ -286,6 +288,7 @@ FLAGS: 'href="#" onclick="ajaxReset(true); return false;"' }); toolbar += button.run(); + toolbar += tail.run(); } else { diff -r f205f4b201ed -r bc8e0e9ee01d includes/clientside/static/misc.js --- a/includes/clientside/static/misc.js Sat Mar 15 14:19:18 2008 -0400 +++ b/includes/clientside/static/misc.js Sun Mar 16 16:06:59 2008 -0400 @@ -398,7 +398,7 @@ function validateEmail(email) { - return ( email.match(/^(?:[\w\d_-]+\.?)+@((?:(?:[\w\d_-]\-?)+\.)+\w{2,4}|localhost)$/) ) ? true : false; + return ( email.match(/^(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*@[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*|(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]*(?:(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]*)*<[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:@[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*(?:,[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*@[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*)*:[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)?(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*@[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*>)$/) ) ? true : false; } /** diff -r f205f4b201ed -r bc8e0e9ee01d includes/clientside/static/pwstrength.js --- a/includes/clientside/static/pwstrength.js Sat Mar 15 14:19:18 2008 -0400 +++ b/includes/clientside/static/pwstrength.js Sun Mar 16 16:06:59 2008 -0400 @@ -211,7 +211,7 @@ // some colors are from the Gmail sign-up form if ( score >= 10 ) { - var color = '#000000'; + var color = '#010101'; var fgcolor = '#666666'; var str = $lang.get('usercp_pwstrength_score_verystrong', { score: score }); } @@ -239,11 +239,12 @@ var fgcolor = '#FF6060'; var str = $lang.get('usercp_pwstrength_score_weak', { score: score }); } - return { + var ret = { color: color, fgcolor: fgcolor, str: str }; + return ret; } function password_score_field(field) diff -r f205f4b201ed -r bc8e0e9ee01d includes/constants.php --- a/includes/constants.php Sat Mar 15 14:19:18 2008 -0400 +++ b/includes/constants.php Sun Mar 16 16:06:59 2008 -0400 @@ -104,6 +104,10 @@ define('PROTECT_FULL', 1); define('PROTECT_SEMI', 2); +// Special comments - plugin blocks +define('PLUGIN_METABLOCK_LANGUAGE_START', '/**!language**'); +define('PLUGIN_METABLOCK_LANGUAGE_END', '**!*/'); + // // Enano versions progress // diff -r f205f4b201ed -r bc8e0e9ee01d includes/functions.php --- a/includes/functions.php Sat Mar 15 14:19:18 2008 -0400 +++ b/includes/functions.php Sun Mar 16 16:06:59 2008 -0400 @@ -3132,6 +3132,18 @@ return $return; } +/** + * Validates an e-mail address. Uses a compacted version of the regular expression generated by the scripts at . + * @param string E-mail address + * @return bool + */ + +function check_email_address($email) +{ + static $regexp = '(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*@[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*|(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]*(?:(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]*)*<[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:@[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*(?:,[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*@[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*)*:[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)?(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*@[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*>)'; + return ( preg_match("/^$regexp$/", $email) ) ? true : false; +} + function password_score_len($password) { if ( !is_string($password) ) diff -r f205f4b201ed -r bc8e0e9ee01d includes/lang.php --- a/includes/lang.php Sat Mar 15 14:19:18 2008 -0400 +++ b/includes/lang.php Sun Mar 16 16:06:59 2008 -0400 @@ -60,6 +60,14 @@ var $strings = array(); /** + * Switch for debug mode. If true, will show an asterisk after localized strings. This + * can be useful if you're localizing a component and need to see what's already done. + * @var bool + */ + + var $debug = false; + + /** * Constructor. * @param int|string Language ID or code to load. */ @@ -338,6 +346,94 @@ $db->_die('lang.php - invalid or non-well-formed language file'); } + return $this->import_array($langdata); + } + + /** + * Imports a JSON-format language file into the database and merges with current strings. + * @param string Path to plugin file + */ + + function import_plugin($file) + { + global $db, $session, $paths, $template, $plugins; // Common objects + + if ( !file_exists($file) ) + $db->_die('lang.php - can\'t import language file: string file doesn\'t exist'); + + if ( $this->lang_id == 0 ) + $db->_die('lang.php - BUG: trying to perform import when $lang->lang_id == 0'); + + $contents = trim(@file_get_contents($file)); + + if ( empty($contents) ) + $db->_die('lang.php - can\'t load the contents of the language file'); + + // If there isn't a specially formed comment block, bail out quietly. + if ( !strpos($contents, PLUGIN_METABLOCK_LANGUAGE_START) || !strpos($contents, PLUGIN_METABLOCK_LANGUAGE_END) ) + return null; + + // Get all data in the language block + $block_start = strpos($contents, PLUGIN_METABLOCK_LANGUAGE_START) + strlen(PLUGIN_METABLOCK_LANGUAGE_START); + $block_end = strpos($contents, PLUGIN_METABLOCK_LANGUAGE_END); + $block_len = $block_end - $block_start; + if ( $block_len < 1 ) + $db->_die('lang.php - plugin file contains corrupt language data'); + + $contents = substr($contents, $block_start, $block_len); + + // Trim off all text before and after the starting and ending braces + $contents = preg_replace('/^([^{]+)\{/', '{', $contents); + $contents = preg_replace('/\}([^}]+)$/', '}', $contents); + + // Correct syntax to be nice to the json parser + $contents = enano_clean_json($contents); + + try + { + $langdata = enano_json_decode($contents); + } + catch(Zend_Json_Exception $e) + { + $db->_die('lang.php - Exception caught by JSON parser

' . htmlspecialchars(print_r($e, true)) . '

'); + exit; + } + + if ( !is_array($langdata) ) + { + $db->_die('lang.php - invalid or non-well-formed language file'); + } + + // Does the plugin support the current language? + if ( isset($langdata[$this->lang_code]) ) + { + // Yes, import that + return $this->import_array($langdata[$this->lang_code]); + } + + // Just import the first language we run across. + $supported_langs = array_keys($langdata); + + if ( !isset($supported_langs[0]) ) + { + $db->_die('lang.php - plugin has an invalid or corrupt language block'); + } + + $first_lang = $supported_langs[0]; + + return $this->import_array($langdata[$first_lang]); + } + + /** + * Performs the actual import of string data. + * @param array Parsed JSON object, should be in the form of an array + * @access private + */ + + protected function import_array($langdata) + { + global $db, $session, $paths, $template, $plugins; // Common objects + if ( !isset($langdata['categories']) || !isset($langdata['strings']) ) $db->_die('lang.php - language file does not contain the proper items'); @@ -554,7 +650,7 @@ $subs[$key] = strval($value); $string = str_replace("%{$key}%", "{$subs[$key]}", $string); } - return $string; + return ( $this->debug ) ? "$string*" : $string; } } // class Language diff -r f205f4b201ed -r bc8e0e9ee01d includes/sessions.php --- a/includes/sessions.php Sat Mar 15 14:19:18 2008 -0400 +++ b/includes/sessions.php Sun Mar 16 16:06:59 2008 -0400 @@ -2269,8 +2269,7 @@ // E-mail addy if(is_string($email)) { - // I didn't write this regex. - if(!preg_match('/^(?:[\w\d]+\.?)+@((?:(?:[\w\d]\-?)+\.)+\w{2,4}|localhost)$/', $email)) + if(!check_email_address($email)) $errors[] = 'The e-mail address you entered is invalid.'; $strs[] = 'email=\''.$db->escape($email).'\''; } diff -r f205f4b201ed -r bc8e0e9ee01d language/english/admin.json --- a/language/english/admin.json Sat Mar 15 14:19:18 2008 -0400 +++ b/language/english/admin.json Sun Mar 16 16:06:59 2008 -0400 @@ -373,6 +373,9 @@ col_version: 'Version', btn_enable: 'Enable', btn_disable: 'Disable', + btn_reimport: 'Re-import', + btn_reimport_tip: 'Reloads all the language and meta data from this plugin file.', + msg_reimport_success: 'All language strings from this plugin have been re-imported.', btn_hide_system: 'Hide system plugins', btn_show_system: 'Show system plugins', lbl_system_plugin: '[System]', diff -r f205f4b201ed -r bc8e0e9ee01d language/english/core.json --- a/language/english/core.json Sat Mar 15 14:19:18 2008 -0400 +++ b/language/english/core.json Sun Mar 16 16:06:59 2008 -0400 @@ -537,6 +537,8 @@ specialuserfuncs_desc: 'Provides the pages Special:Login, Special:Logout, Special:Register, and Special:Preferences.', specialuserprefs_title: 'User control panel', specialuserprefs_desc: 'Provides the page Special:Preferences.', + specialrecentchanges_title: 'Recent changes interface', + specialrecentchanges_desc: 'Provides the page Special:RecentChanges, which is used to view recent modifications to pages on the site.', }, paginate: { lbl_page: 'Page:', diff -r f205f4b201ed -r bc8e0e9ee01d language/english/user.json --- a/language/english/user.json Sat Mar 15 14:19:18 2008 -0400 +++ b/language/english/user.json Sun Mar 16 16:06:59 2008 -0400 @@ -120,7 +120,7 @@ type_mod: 'Moderator', type_admin: 'Administrator', - msg_elev_timed_out: 'Your administrative session has timed out. Log in again', + msg_elev_timed_out: 'Your administrative session has timed out. Log in again', reg_err_captcha: 'The confirmation code you entered was incorrect.', reg_err_disabled_title: 'Registration disabled', diff -r f205f4b201ed -r bc8e0e9ee01d plugins/PrivateMessages.php --- a/plugins/PrivateMessages.php Sat Mar 15 14:19:18 2008 -0400 +++ b/plugins/PrivateMessages.php Sun Mar 16 16:06:59 2008 -0400 @@ -4,13 +4,13 @@ Plugin URI: http://enanocms.org/ Description: plugin_privatemessages_desc Author: Dan Fuhry -Version: 1.1.1 +Version: 1.1.3 Author URI: http://enanocms.org/ */ /* * Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between - * Version 1.1.2 (Caoineag alpha 2) + * Version 1.1.3 (Caoineag alpha 3) * Copyright (C) 2006-2007 Dan Fuhry * * This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License diff -r f205f4b201ed -r bc8e0e9ee01d plugins/SpecialAdmin.php --- a/plugins/SpecialAdmin.php Sat Mar 15 14:19:18 2008 -0400 +++ b/plugins/SpecialAdmin.php Sun Mar 16 16:06:59 2008 -0400 @@ -4,13 +4,13 @@ Plugin URI: http://enanocms.org/ Description: plugin_specialadmin_desc Author: Dan Fuhry -Version: 1.1.1 +Version: 1.1.3 Author URI: http://enanocms.org/ */ /* * Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between - * Version 1.1.2 (Caoineag alpha 2) + * Version 1.1.3 (Caoineag alpha 3) * Copyright (C) 2006-2007 Dan Fuhry * * This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License @@ -1199,6 +1199,15 @@

' . $lang->get('acppl_err_system_plugin') . '

'; } break; + case "reimport": + $plugin_id = substr($plugin, 0, -4); + if ( isset($plugins->loaded_plugins[$plugin_id]) ) + { + // plugin file is safe, call import + $lang->import_plugin( ENANO_ROOT . "/plugins/$plugin" ); + echo '
' . $lang->get('acppl_msg_reimport_success') . '
'; + } + break; } } } @@ -1293,12 +1302,14 @@ '.$this_plugin['desc'].' '.$this_plugin['auth'].' '.$this_plugin['vers'].' - '; + '; if ( !in_array($plugin_files[$i], $plugins->system_plugins) ) { if ( getConfig('plugin_'.$plugin_files[$i]) == '1' ) { echo '' . $lang->get('acppl_btn_disable') . ''; + echo ' | '; + echo '' . $lang->get('acppl_btn_reimport') . ''; } else { diff -r f205f4b201ed -r bc8e0e9ee01d plugins/SpecialCSS.php --- a/plugins/SpecialCSS.php Sat Mar 15 14:19:18 2008 -0400 +++ b/plugins/SpecialCSS.php Sun Mar 16 16:06:59 2008 -0400 @@ -4,13 +4,13 @@ Plugin URI: http://enanocms.org/ Description: plugin_specialcss_desc Author: Dan Fuhry -Version: 1.1.1 +Version: 1.1.3 Author URI: http://enanocms.org/ */ /* * Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between - * Version 1.1.2 (Caoineag alpha 2) + * Version 1.1.3 (Caoineag alpha 3) * Copyright (C) 2006-2007 Dan Fuhry * * This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License diff -r f205f4b201ed -r bc8e0e9ee01d plugins/SpecialGroups.php --- a/plugins/SpecialGroups.php Sat Mar 15 14:19:18 2008 -0400 +++ b/plugins/SpecialGroups.php Sun Mar 16 16:06:59 2008 -0400 @@ -4,13 +4,13 @@ Plugin URI: http://enanocms.org/ Description: plugin_specialgroups_desc Author: Dan Fuhry -Version: 1.1.1 +Version: 1.1.3 Author URI: http://enanocms.org/ */ /* * Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between - * Version 1.1.2 (Caoineag alpha 2) + * Version 1.1.3 (Caoineag alpha 3) * Copyright (C) 2007 Dan Fuhry * * This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License diff -r f205f4b201ed -r bc8e0e9ee01d plugins/SpecialPageFuncs.php --- a/plugins/SpecialPageFuncs.php Sat Mar 15 14:19:18 2008 -0400 +++ b/plugins/SpecialPageFuncs.php Sun Mar 16 16:06:59 2008 -0400 @@ -4,13 +4,13 @@ Plugin URI: http://enanocms.org/ Description: plugin_specialpagefuncs_desc Author: Dan Fuhry -Version: 1.1.1 +Version: 1.1.3 Author URI: http://enanocms.org/ */ /* * Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between - * Version 1.1.2 (Caoineag alpha 2) + * Version 1.1.3 (Caoineag alpha 3) * Copyright (C) 2006-2007 Dan Fuhry * * This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License diff -r f205f4b201ed -r bc8e0e9ee01d plugins/SpecialRecentChanges.php --- a/plugins/SpecialRecentChanges.php Sat Mar 15 14:19:18 2008 -0400 +++ b/plugins/SpecialRecentChanges.php Sun Mar 16 16:06:59 2008 -0400 @@ -4,13 +4,13 @@ Plugin URI: http://enanocms.org/ Description: plugin_specialrecentchanges_desc Author: Dan Fuhry -Version: 1.1.1 +Version: 1.1.3 Author URI: http://enanocms.org/ */ /* * Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between - * Version 1.1.2 (Caoineag alpha 2) + * Version 1.1.3 (Caoineag alpha 3) * Copyright (C) 2006-2007 Dan Fuhry * * This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License diff -r f205f4b201ed -r bc8e0e9ee01d plugins/SpecialSearch.php --- a/plugins/SpecialSearch.php Sat Mar 15 14:19:18 2008 -0400 +++ b/plugins/SpecialSearch.php Sun Mar 16 16:06:59 2008 -0400 @@ -4,13 +4,13 @@ Plugin URI: http://enanocms.org/ Description: plugin_specialsearch_desc Author: Dan Fuhry -Version: 1.1.1 +Version: 1.1.3 Author URI: http://enanocms.org/ */ /* * Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between - * Version 1.1.2 (Caoineag alpha 2) + * Version 1.1.3 (Caoineag alpha 3) * Copyright (C) 2006-2007 Dan Fuhry * * This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License diff -r f205f4b201ed -r bc8e0e9ee01d plugins/SpecialUpdownload.php --- a/plugins/SpecialUpdownload.php Sat Mar 15 14:19:18 2008 -0400 +++ b/plugins/SpecialUpdownload.php Sun Mar 16 16:06:59 2008 -0400 @@ -4,13 +4,13 @@ Plugin URI: http://enanocms.org/ Description: plugin_specialupdownload_desc Author: Dan Fuhry -Version: 1.1.1 +Version: 1.1.3 Author URI: http://enanocms.org/ */ /* * Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between - * Version 1.1.2 (Caoineag alpha 2) + * Version 1.1.3 (Caoineag alpha 3) * Copyright (C) 2006-2007 Dan Fuhry * SpecialUpdownload.php - handles uploading and downloading of user-uploaded files - possibly the most rigorously security-enforcing script in all of Enano, although sessions.php comes in a close second * diff -r f205f4b201ed -r bc8e0e9ee01d plugins/SpecialUserFuncs.php --- a/plugins/SpecialUserFuncs.php Sat Mar 15 14:19:18 2008 -0400 +++ b/plugins/SpecialUserFuncs.php Sun Mar 16 16:06:59 2008 -0400 @@ -4,13 +4,13 @@ Plugin URI: http://enanocms.org/ Description: plugin_specialuserfuncs_desc Author: Dan Fuhry -Version: 1.1.1 +Version: 1.1.3 Author URI: http://enanocms.org/ */ /* * Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between - * Version 1.1.2 (Caoineag alpha 2) + * Version 1.1.3 (Caoineag alpha 3) * Copyright (C) 2006-2007 Dan Fuhry * * This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License diff -r f205f4b201ed -r bc8e0e9ee01d plugins/SpecialUserPrefs.php --- a/plugins/SpecialUserPrefs.php Sat Mar 15 14:19:18 2008 -0400 +++ b/plugins/SpecialUserPrefs.php Sun Mar 16 16:06:59 2008 -0400 @@ -4,13 +4,13 @@ Plugin URI: http://enanocms.org/ Description: plugin_specialuserprefs_desc Author: Dan Fuhry -Version: 1.1.1 +Version: 1.1.3 Author URI: http://enanocms.org/ */ /* * Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between - * Version 1.1.2 (Caoineag alpha 2) + * Version 1.1.3 (Caoineag alpha 3) * Copyright (C) 2006-2007 Dan Fuhry * * This program is Free Software; you can redistribute it and/or modify it under the terms of the GNU General Public License diff -r f205f4b201ed -r bc8e0e9ee01d plugins/admin/GroupManager.php --- a/plugins/admin/GroupManager.php Sat Mar 15 14:19:18 2008 -0400 +++ b/plugins/admin/GroupManager.php Sun Mar 16 16:06:59 2008 -0400 @@ -2,7 +2,7 @@ /* * Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between - * Version 1.1.2 (Caoineag alpha 2) + * Version 1.1.3 (Caoineag alpha 3) * Copyright (C) 2006-2007 Dan Fuhry * * This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License diff -r f205f4b201ed -r bc8e0e9ee01d plugins/admin/LangManager.php --- a/plugins/admin/LangManager.php Sat Mar 15 14:19:18 2008 -0400 +++ b/plugins/admin/LangManager.php Sun Mar 16 16:06:59 2008 -0400 @@ -2,7 +2,7 @@ /* * Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between - * Version 1.1.2 (Caoineag alpha 2) + * Version 1.1.3 (Caoineag alpha 3) * Copyright (C) 2006-2007 Dan Fuhry * * This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License diff -r f205f4b201ed -r bc8e0e9ee01d plugins/admin/PageEditor.php --- a/plugins/admin/PageEditor.php Sat Mar 15 14:19:18 2008 -0400 +++ b/plugins/admin/PageEditor.php Sun Mar 16 16:06:59 2008 -0400 @@ -2,7 +2,7 @@ /* * Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between - * Version 1.1.2 (Caoineag alpha 2) + * Version 1.1.3 (Caoineag alpha 3) * Copyright (C) 2006-2007 Dan Fuhry * * This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License diff -r f205f4b201ed -r bc8e0e9ee01d plugins/admin/PageGroups.php --- a/plugins/admin/PageGroups.php Sat Mar 15 14:19:18 2008 -0400 +++ b/plugins/admin/PageGroups.php Sun Mar 16 16:06:59 2008 -0400 @@ -2,7 +2,7 @@ /* * Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between - * Version 1.1.2 (Caoineag alpha 2) + * Version 1.1.3 (Caoineag alpha 3) * Copyright (C) 2006-2007 Dan Fuhry * * This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License diff -r f205f4b201ed -r bc8e0e9ee01d plugins/admin/PageManager.php --- a/plugins/admin/PageManager.php Sat Mar 15 14:19:18 2008 -0400 +++ b/plugins/admin/PageManager.php Sun Mar 16 16:06:59 2008 -0400 @@ -2,7 +2,7 @@ /* * Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between - * Version 1.1.2 (Caoineag alpha 2) + * Version 1.1.3 (Caoineag alpha 3) * Copyright (C) 2006-2007 Dan Fuhry * * This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License diff -r f205f4b201ed -r bc8e0e9ee01d plugins/admin/SecurityLog.php --- a/plugins/admin/SecurityLog.php Sat Mar 15 14:19:18 2008 -0400 +++ b/plugins/admin/SecurityLog.php Sun Mar 16 16:06:59 2008 -0400 @@ -2,7 +2,7 @@ /* * Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between - * Version 1.1.2 (Caoineag alpha 2) + * Version 1.1.3 (Caoineag alpha 3) * Copyright (C) 2006-2007 Dan Fuhry * * This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License diff -r f205f4b201ed -r bc8e0e9ee01d plugins/admin/ThemeManager.php --- a/plugins/admin/ThemeManager.php Sat Mar 15 14:19:18 2008 -0400 +++ b/plugins/admin/ThemeManager.php Sun Mar 16 16:06:59 2008 -0400 @@ -2,7 +2,7 @@ /* * Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between - * Version 1.1.2 (Caoineag alpha 2) + * Version 1.1.3 (Caoineag alpha 3) * Copyright (C) 2006-2007 Dan Fuhry * * This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License diff -r f205f4b201ed -r bc8e0e9ee01d plugins/admin/UserManager.php --- a/plugins/admin/UserManager.php Sat Mar 15 14:19:18 2008 -0400 +++ b/plugins/admin/UserManager.php Sun Mar 16 16:06:59 2008 -0400 @@ -2,7 +2,7 @@ /* * Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between - * Version 1.1.2 (Caoineag alpha 2) + * Version 1.1.3 (Caoineag alpha 3) * Copyright (C) 2006-2007 Dan Fuhry * * This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License