Index: trunk/bin/module_maker/skel/admin.php
===================================================================
--- trunk/bin/module_maker/skel/admin.php	(revision 766)
+++ trunk/bin/module_maker/skel/admin.php	(revision 767)
@@ -203,5 +203,5 @@
 ********************************************************************/
 
-$nav->set('body_id', '%NAME_PLURAL%');
+$nav->set('id', '%NAME_PLURAL%');
 
 include 'header.ihtml';
Index: trunk/docs/coding_standards.txt
===================================================================
--- trunk/docs/coding_standards.txt	(revision 766)
+++ trunk/docs/coding_standards.txt	(revision 767)
@@ -11,4 +11,17 @@
 Essential reading:
 http://pear.php.net/manual/en/standards.php
+
+
+=====================================================================
+General guidelines
+=====================================================================
+
+- Respect these coding styles.
+- Don't add npm dependencies if you can avoid it. If a new dependency is unavoidable, be mindful of its size, freshness and added value.
+- Use Svelte for all UI needs.
+- Try to not shoehorn your code into existing functions or components.
+- Simple is better. OOP is not inevitable. Simple functions often work as well, if not better.
+- If you must use OOP, avoid inheritance as much as possible, no one likes digging several layers of abstraction.
+- Comment the code. What, why, how, just make your intent clear.
 
 
@@ -45,5 +58,5 @@
 
 Use an indent of 4 spaces, with no tabs. Code and especially comments should
-usually be wrapped <= 80 characters. Exceptions are made in the case where 
+usually be wrapped <= 80 characters. Exceptions are made in the case where
 code readability is significantly improved with longer lines.
 
@@ -224,5 +237,5 @@
     {
 		$app =& App::getInstance();
-    
+
         // If an array, check values recursively.
         if (is_array($email)) {
@@ -284,5 +297,5 @@
 All code should work with register_globals = Off. This means using
 $_REQUEST, $_GET, $_POST, $_COOKIE, $_SESSION, $_SERVER, and $_ENV
-to access all request, get, post, cookie, session, server, and 
+to access all request, get, post, cookie, session, server, and
 environment data, respectively.
 
Index: trunk/lib/App.inc.php
===================================================================
--- trunk/lib/App.inc.php	(revision 766)
+++ trunk/lib/App.inc.php	(revision 767)
@@ -88,4 +88,5 @@
         'site_version' => '', // Version of this application (set automatically during start() if site_version_file is used).
         'site_version_file' => 'docs/version.txt', // File containing version number of this app, relative to the include path.
+        'template_ext' => 'ihtml', // Legacy template file send in .ihtml, newer sites use .inc.html or .inc.php.
 
         // The location the user will go if the system doesn't know where else to send them.
Index: trunk/lib/Email.inc.php
===================================================================
--- trunk/lib/Email.inc.php	(revision 766)
+++ trunk/lib/Email.inc.php	(revision 767)
@@ -37,5 +37,5 @@
     'subject' => 'Your account has been activated',
 ));
-$email->setTemplate('email_registration_confirm.ihtml');
+$email->setTemplate('email_registration_confirm.eml');
 // $email->setString('Or you can pass your message body as a string, also with {VARIABLES}.');
 $email->replace(array(
Index: trunk/lib/Validator.inc.php
===================================================================
--- trunk/lib/Validator.inc.php	(revision 766)
+++ trunk/lib/Validator.inc.php	(revision 767)
@@ -404,6 +404,5 @@
         }
 
-        $timestamp = strtotime($val);
-        if (!$timestamp || $timestamp < 1) {
+        if (false === strtotime($val)) {
             $app->logMsg(sprintf('%s (line %s) failed: %s', __METHOD__, __LINE__, getDump($val)), $type, $file, $line);
             return false;
Index: trunk/services/admins.php
===================================================================
--- trunk/services/admins.php	(revision 766)
+++ trunk/services/admins.php	(revision 767)
@@ -208,10 +208,10 @@
  *****************************************************************************/
 
-$nav->set('body_id', 'admins');
-
-include 'header.ihtml';
+$nav->set('id', 'admins');
+
+include 'header.' . $app->getParam('template_ext');
 $app->carryQuery($locally_carried_queries);
 include 'codebase/services/templates/' . $main_template;
-include 'footer.ihtml';
+include 'footer.' . $app->getParam('template_ext');
 
 /********************************************************************
Index: trunk/services/lock.php
===================================================================
--- trunk/services/lock.php	(revision 766)
+++ trunk/services/lock.php	(revision 767)
@@ -71,7 +71,7 @@
 
 // Templates.
-include 'header.ihtml';
+include 'header.' . $app->getParam('template_ext');
 // $lock->printErrorHTML();
 include 'lock.ihtml';
-include 'footer.ihtml';
+include 'footer.' . $app->getParam('template_ext');
 
Index: trunk/services/login.php
===================================================================
--- trunk/services/login.php	(revision 766)
+++ trunk/services/login.php	(revision 767)
@@ -70,16 +70,16 @@
         }
     } else {
-        $app->raiseMsg(_("Login failed, please try again."), MSG_NOTICE, __FILE__, __LINE__);
-        $app->logMsg(sprintf('User %s failed login (encrypted password: %s)', $frm['username'], $auth->encryptPassword($frm['password'])), LOG_NOTICE, __FILE__, __LINE__);
+        $app->raiseMsg(_("Log in failed, please try again."), MSG_NOTICE, __FILE__, __LINE__);
+        $app->logMsg(sprintf('User %s failed log in (encrypted password: %s)', $frm['username'], $auth->encryptPassword($frm['password'])), LOG_NOTICE, __FILE__, __LINE__);
     }
 }
 
 // Titles and navigation header.
-$nav->add(_("Login"));
+$nav->add(_("Log in"));
 $nav->set('id', 'login');
 
 // Templates.
-include 'header.ihtml';
+include 'header.' . $app->getParam('template_ext');
 include 'login_form.ihtml';
-include 'footer.ihtml';
+include 'footer.' . $app->getParam('template_ext');
 
Index: trunk/services/logs.php
===================================================================
--- trunk/services/logs.php	(revision 766)
+++ trunk/services/logs.php	(revision 767)
@@ -148,5 +148,5 @@
 $page->calculate();
 
-include 'header.ihtml';
+include 'header.' . $app->getParam('template_ext');
 if ('output' == $main_template) {
     printLog($tmp_prefs->get('log_file'));
@@ -154,5 +154,5 @@
     include $main_template;
 }
-include 'footer.ihtml';
+include 'footer.' . $app->getParam('template_ext');
 
 
Index: trunk/services/password.php
===================================================================
--- trunk/services/password.php	(revision 766)
+++ trunk/services/password.php	(revision 767)
@@ -90,6 +90,6 @@
 
 // Templates.
-include 'header.ihtml';
+include 'header.' . $app->getParam('template_ext');
 include 'password.ihtml';
-include 'footer.ihtml';
+include 'footer.' . $app->getParam('template_ext');
 
Index: trunk/services/reset_password.php
===================================================================
--- trunk/services/reset_password.php	(revision 766)
+++ trunk/services/reset_password.php	(revision 767)
@@ -90,6 +90,6 @@
 $nav->set('id', 'reset_password');
 
-include 'header.ihtml';
+include 'header.' . $app->getParam('template_ext');
 include 'reset_password.ihtml';
-include 'footer.ihtml';
+include 'footer.' . $app->getParam('template_ext');
 
Index: trunk/services/versions.php
===================================================================
--- trunk/services/versions.php	(revision 766)
+++ trunk/services/versions.php	(revision 767)
@@ -142,6 +142,6 @@
  *****************************************************************************/
 
-include 'header.ihtml';
+include 'header.' . $app->getParam('template_ext');
 include 'codebase/services/templates/' . $main_template;
-include 'footer.ihtml';
+include 'footer.' . $app->getParam('template_ext');
 
