Index: CHANGELOG
===================================================================
--- CHANGELOG	(revision 3636)
+++ CHANGELOG	(revision 3639)
@@ -10,4 +10,5 @@
 * Update CKEditor from 4.6.2 to 4.7.3
 * Update CodeMirror from 5.25.1 to 5.32.1
+* Add required attribute for mandatory fields
 * Fix: Avoid horizontal scrolling table when longest comment's usernames in list of comments
 * Fix: Cope with MySQLi connection via socket
Index: admin/_charte.php
===================================================================
--- admin/_charte.php	(revision 3499)
+++ admin/_charte.php	(revision 3639)
@@ -244,5 +244,5 @@
 							<p class="form-note">p class="form-note".</p>
 							<p><label for="ex4" class="classic">Label class="classic" + input text :</label> <input id="ex4" type="text" /></p>
-							<p><label for="ex2" class="required"><abbr title="'.__('Required field').'">*</abbr> Label class="required" :</label> <input id="ex2" type="text" /><span class="form-note">span class="form-note"</span></p>
+							<p><label for="ex2" class="required"><abbr title="Champ obligatoire">*</abbr> Label class="required" :</label> <input id="ex2" type="text" required placeholder="exemple" /><span class="form-note">span class="form-note"</span></p>
 							<p><label for="ex11" class="bold">Label class="bold" :</label> <input id="ex11" type="text" /></p>
 							<p class="form-note">La class="bold" est bien sûr à écrire en minuscules.</p>
Index: admin/blog.php
===================================================================
--- admin/blog.php	(revision 2852)
+++ admin/blog.php	(revision 3639)
@@ -81,13 +81,13 @@
 	'<div>'.$core->formNonce().'</div>'.
 	'<p><label class="required" for="blog_id"><abbr title="'.__('Required field').'">*</abbr> '.__('Blog ID:').'</label> '.
-	form::field('blog_id',30,32,html::escapeHTML($blog_id)).'</p>'.
+	form::field('blog_id',30,32,html::escapeHTML($blog_id),'','',false,'required placeholder="'.__('Blog ID').'"').'</p>'.
 	'<p class="form-note">'.__('At least 2 characters using letters, numbers or symbols.').'</p> ';
 
 	echo
 	'<p><label class="required" for="blog_name"><abbr title="'.__('Required field').'">*</abbr> '.__('Blog name:').'</label> '.
-	form::field('blog_name',30,255,html::escapeHTML($blog_name)).'</p>'.
+	form::field('blog_name',30,255,html::escapeHTML($blog_name),'','',false,'required placeholder="'.__('Blog name').'"').'</p>'.
 
 	'<p><label class="required" for="blog_url"><abbr title="'.__('Required field').'">*</abbr> '.__('Blog URL:').'</label> '.
-	form::field('blog_url',30,255,html::escapeHTML($blog_url)).'</p>'.
+	form::field('blog_url',30,255,html::escapeHTML($blog_url),'','',false,'required placeholder="'.__('Blog URL').'"').'</p>'.
 
 	'<p class="area"><label for="blog_desc">'.__('Blog description:').'</label> '.
Index: admin/blog_pref.php
===================================================================
--- admin/blog_pref.php	(revision 3560)
+++ admin/blog_pref.php	(revision 3639)
@@ -368,5 +368,5 @@
 	echo
 	'<p><label for="blog_name" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Blog name:').'</label>'.
-	form::field('blog_name',30,255,html::escapeHTML($blog_name)).'</p>';
+	form::field('blog_name',30,255,html::escapeHTML($blog_name),'','',false,'required placeholder="'.__('Blog name').'"').'</p>';
 
 	echo
@@ -582,5 +582,5 @@
 		echo
 		'<p><label for="blog_id" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Blog ID:').'</label>'.
-		form::field('blog_id',30,32,html::escapeHTML($blog_id)).'</p>'.
+		form::field('blog_id',30,32,html::escapeHTML($blog_id),'','',false,'required placeholder="'.__('Blog ID').'"').'</p>'.
 		'<p class="form-note">'.__('At least 2 characters using letters, numbers or symbols.').'</p> '.
 		'<p class="form-note warn">'.__('Please note that changing your blog ID may require changes in your public index.php file.').'</p>';
@@ -588,5 +588,5 @@
 		echo
 		'<p><label for="blog_url" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Blog URL:').'</label>'.
-		form::field('blog_url',50,255,html::escapeHTML($blog_url)).'</p>'.
+		form::field('blog_url',50,255,html::escapeHTML($blog_url),'','',false,'required placeholder="'.__('Blog URL').'"').'</p>'.
 
 		'<p><label for="url_scan">'.__('URL scan method:').'</label>'.
Index: admin/category.php
===================================================================
--- admin/category.php	(revision 3606)
+++ admin/category.php	(revision 3639)
@@ -196,5 +196,5 @@
 '<h3>'.__('Category information').'</h3>'.
 '<p><label class="required" for="cat_title"><abbr title="'.__('Required field').'">*</abbr> '.__('Name:').'</label> '.
-form::field('cat_title',40,255,html::escapeHTML($cat_title)).
+form::field('cat_title',40,255,html::escapeHTML($cat_title),'','',false,'required placeholder="'.__('Name').'"').
 '</p>';
 if (!$cat_id)
Index: admin/comment.php
===================================================================
--- admin/comment.php	(revision 3024)
+++ admin/comment.php	(revision 3639)
@@ -31,5 +31,5 @@
 $status_combo = dcAdminCombos::getCommentStatusescombo();
 
-# Adding comment
+# Adding comment (comming from post form, comments tab)
 if (!empty($_POST['add']) && !empty($_POST['post_id']))
 {
@@ -59,8 +59,8 @@
 
 		dcPage::addSuccessNotice(__('Comment has been successfully created.'));
-		http::redirect($core->getPostAdminURL($rs->post_type,$rs->post_id,false).'&co=1');
 	} catch (Exception $e) {
 		$core->error->add($e->getMessage());
 	}
+	http::redirect($core->getPostAdminURL($rs->post_type,$rs->post_id,false).'&co=1');
 }
 
@@ -218,5 +218,5 @@
 	'<h3>'.__('Comment submitted').'</h3>'.
 	'<p><label for="comment_author" class="required"><abbr title="'.__('Required field').'">*</abbr>'.__('Author:').'</label>'.
-	form::field('comment_author',30,255,html::escapeHTML($comment_author)).
+	form::field('comment_author',30,255,html::escapeHTML($comment_author),'','',false,'required placeholder="'.__('Author').'"').
 	'</p>'.
 
Index: admin/index.php
===================================================================
--- admin/index.php	(revision 3614)
+++ admin/index.php	(revision 3639)
@@ -299,9 +299,9 @@
 		'<h4>'.__('New entry').'</h4>'.
 		'<p class="col"><label for="post_title" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').'</label>'.
-		form::field('post_title',20,255,'','maximal').
+		form::field('post_title',20,255,'','maximal','',false,'required placeholder="'.__('Title').'"').
 		'</p>'.
 		'<p class="area"><label class="required" '.
 		'for="post_content"><abbr title="'.__('Required field').'">*</abbr> '.__('Content:').'</label> '.
-		form::textarea('post_content',50,10).
+		form::textarea('post_content',50,10,'','','',false,'required placeholder="'.__('Content').'"').
 		'</p>'.
 		'<p><label for="cat_id" class="classic">'.__('Category:').'</label> '.
Index: admin/install/index.php
===================================================================
--- admin/install/index.php	(revision 3599)
+++ admin/install/index.php	(revision 3639)
@@ -346,9 +346,9 @@
 	'<fieldset><legend>'.__('Username and password').'</legend>'.
 	'<p><label for="u_login" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Username:').' '.
-	form::field('u_login',30,32,html::escapeHTML($u_login)).'</label></p>'.
+	form::field('u_login',30,32,html::escapeHTML($u_login),'','',false,'required placeholder="'.__('Username').'"').'</label></p>'.
 	'<div class="pw-table">'.
 		'<p class="pw-cell">'.
 			'<label for="u_pwd" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('New password:').'</label>'.
-			form::password('u_pwd',30,255,'','','',false,' data-indicator="pwindicator" ').
+			form::password('u_pwd',30,255,'','','',false,' data-indicator="pwindicator" required placeholder="'.__('Password').'"').
 		'</p>'.
 		'<div id="pwindicator">'.
@@ -358,5 +358,5 @@
 	'</div>'.
 	'<p><label for="u_pwd2" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Confirm password:').' '.
-	form::password('u_pwd2',30,255).'</label></p>'.
+	form::password('u_pwd2',30,255,'','','',false,'required placeholder="'.__('Password').'"').'</label></p>'.
 	'</fieldset>'.
 
Index: admin/install/wizard.php
===================================================================
--- admin/install/wizard.php	(revision 3565)
+++ admin/install/wizard.php	(revision 3639)
@@ -201,5 +201,11 @@
 '<form action="wizard.php" method="post">'.
 '<p><label class="required" for="DBDRIVER"><abbr title="'.__('Required field').'">*</abbr> '.__('Database type:').'</label> '.
-    form::combo('DBDRIVER',array(__('MySQL (deprecated)')=>'mysql',__('MySQLi')=>'mysqli',__('MySQLi (full UTF-8)')=>'mysqlimb4',__('PostgreSQL')=>'pgsql',__('SQLite')=>'sqlite'),$DBDRIVER).'</p>'.
+    form::combo('DBDRIVER',array(
+    	__('MySQL (deprecated)')	=> 'mysql',
+    	__('MySQLi')				=> 'mysqli',
+    	__('MySQLi (full UTF-8)')	=> 'mysqlimb4',
+    	__('PostgreSQL')			=> 'pgsql',
+    	__('SQLite')				=> 'sqlite'),
+    	$DBDRIVER,'','',false,'required placeholder="'.__('Driver').'"').'</p>'.
 '<p><label for="DBHOST">'.__('Database Host Name:').'</label> '.
 form::field('DBHOST',30,255,html::escapeHTML($DBHOST)).'</p>'.
@@ -211,5 +217,5 @@
 form::password('DBPASSWORD',30,255).'</p>'.
 '<p><label for="DBPREFIX" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Database Tables Prefix:').'</label> '.
-form::field('DBPREFIX',30,255,html::escapeHTML($DBPREFIX)).'</p>'.
+form::field('DBPREFIX',30,255,html::escapeHTML($DBPREFIX),'','',false,'required placeholder="'.__('Prefix').'"').'</p>'.
 '<p><label for="ADMINMAILFROM">'.__('Master Email: (used as sender for password recovery)').'</label> '.
 form::field('ADMINMAILFROM',30,255,html::escapeHTML($ADMINMAILFROM)).'</p>'.
Index: admin/langs.php
===================================================================
--- admin/langs.php	(revision 3627)
+++ admin/langs.php	(revision 3639)
@@ -271,5 +271,5 @@
 	form::combo(array('pkg_url'),$dc_langs_combo).'</p>'.
 	'<p class="field"><label for="your_pwd1" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Your password:').'</label> '.
-	form::password(array('your_pwd','your_pwd1'),20,255).'</p>'.
+	form::password(array('your_pwd','your_pwd1'),20,255,'','','',false,'required placeholder="'.__('Password').'"').'</p>'.
 	'<p><input type="submit" value="'.__('Install language').'" />'.
 	$core->formNonce().
@@ -286,7 +286,7 @@
 	'<p>'.__('You can install languages by uploading zip files.').'</p>'.
 	'<p class="field"><label for="pkg_file" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Language zip file:').'</label> '.
-	'<input type="file" id="pkg_file" name="pkg_file" /></p>'.
+	'<input type="file" id="pkg_file" name="pkg_file" required /></p>'.
 	'<p class="field"><label for="your_pwd2" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Your password:').'</label> '.
-	form::password(array('your_pwd','your_pwd2'),20,255).'</p>'.
+	form::password(array('your_pwd','your_pwd2'),20,255,'','','',false,'required placeholder="'.__('Password').'"').'</p>'.
 	'<p><input type="submit" name="upload_pkg" value="'.__('Upload language').'" />'.
 	$core->formNonce().
Index: admin/popup_link.php
===================================================================
--- admin/popup_link.php	(revision 3445)
+++ admin/popup_link.php	(revision 3639)
@@ -31,5 +31,5 @@
 '<form id="link-insert-form" action="#" method="get">'.
 '<p><label class="required" for="href"><abbr title="'.__('Required field').'">*</abbr> '.__('Link URL:').'</label> '.
-form::field('href',35,512,html::escapeHTML($href)).'</p>'.
+form::field('href',35,512,html::escapeHTML($href),'','',false,'required placeholder="'.__('URL').'"').'</p>'.
 '<p><label for="title">'.__('Link title:').'</label> '.
 form::field('title',35,512,html::escapeHTML($title)).'</p>'.
Index: admin/post.php
===================================================================
--- admin/post.php	(revision 3627)
+++ admin/post.php	(revision 3639)
@@ -649,5 +649,5 @@
 			'<p class="col">'.
 			'<label class="required no-margin bold" for="post_title"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').'</label>'.
-			form::field('post_title',20,255,html::escapeHTML($post_title),'maximal').
+			form::field('post_title',20,255,html::escapeHTML($post_title),'maximal','',false,'required placeholder="'.__('Title').'"').
 			'</p>',
 
@@ -661,5 +661,6 @@
 			'<p class="area" id="content-area"><label class="required bold" '.
 			'for="post_content"><abbr title="'.__('Required field').'">*</abbr> '.__('Content:').'</label> '.
-			form::textarea('post_content',50,$core->auth->getOption('edit_size'),html::escapeHTML($post_content)).
+			form::textarea('post_content',50,$core->auth->getOption('edit_size'),html::escapeHTML($post_content),
+				'','',false,'required placeholder="'.__('Content').'"').
 			'</p>',
 
@@ -789,5 +790,6 @@
 	'<div class="constrained">'.
 	'<p><label for="comment_author" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Name:').'</label>'.
-	form::field('comment_author',30,255,html::escapeHTML($core->auth->getInfo('user_cn'))).
+	form::field('comment_author',30,255,html::escapeHTML($core->auth->getInfo('user_cn')),
+		'','',false,'required placeholder="'.__('Author').'"').
 	'</p>'.
 
@@ -802,5 +804,5 @@
 	'<p class="area"><label for="comment_content" class="required"><abbr title="'.__('Required field').'">*</abbr> '.
 	__('Comment:').'</label> '.
-	form::textarea('comment_content',50,8,html::escapeHTML('')).
+	form::textarea('comment_content',50,8,html::escapeHTML(''),'','',false,'required placeholder="'.__('Comment').'"').
 	'</p>'.
 
Index: admin/style/default.css
===================================================================
--- admin/style/default.css	(revision 3638)
+++ admin/style/default.css	(revision 3639)
@@ -1042,8 +1042,23 @@
   width: 99%; }
 
+input.invalid,
+textarea.invalid,
+select.invalid,
+input:not([type=file]):invalid:not(:focus) {
+  color: #900;
+  box-shadow: 0 0 0 3px rgba(218, 62, 90, 0.3); }
+
+input.invalid,
+textarea.invalid,
+input:not([type=file]):invalid:not(:focus) {
+  border: 1px solid red;
+  background: #FFBABA; }
+
 input[type=text],
 input[type=password],
 textarea,
-select {
+select,
+input:not([type=file]):invalid,
+input:not([type=file]):invalid:placeholder-shown {
   color: #000;
   box-shadow: 1px 1px 2px #f3f3f3 inset;
@@ -1053,5 +1068,7 @@
 input[type=text],
 input[type=password],
-textarea {
+textarea,
+input:not([type=file]):invalid,
+input:not([type=file]):invalid:placeholder-shown {
   background: #fcfcfc;
   border-width: 1px;
@@ -1086,15 +1103,4 @@
 option.avail10n {
   background: transparent url(../images/check-on.png) no-repeat 0 50%; }
-
-input.invalid,
-textarea.invalid,
-select.invalid {
-  color: #900;
-  box-shadow: 0 0 0 3px rgba(218, 62, 90, 0.3); }
-
-input.invalid,
-textarea.invalid {
-  border: 1px solid red;
-  background: #FFBABA; }
 
 input[type=text],
Index: admin/style/scss/partials/_forms.scss
===================================================================
--- admin/style/scss/partials/_forms.scss	(revision 3633)
+++ admin/style/scss/partials/_forms.scss	(revision 3639)
@@ -65,8 +65,24 @@
 }
 
-input[type=text],
-input[type=password],
-textarea,
-select {
+input.invalid,
+textarea.invalid,
+select.invalid,
+input:not([type=file]):invalid:not(:focus) {
+	color: #900;
+	box-shadow: 0 0 0 3px rgba(218, 62, 90, 0.3);
+}
+input.invalid,
+textarea.invalid,
+input:not([type=file]):invalid:not(:focus) {
+	border: 1px solid red;
+	background: #FFBABA;
+}
+
+input[type=text],
+input[type=password],
+textarea,
+select,
+input:not([type=file]):invalid,
+input:not([type=file]):invalid:placeholder-shown {
 	color: #000;
 	box-shadow: 1px 1px 2px #f3f3f3 inset;
@@ -76,5 +92,7 @@
 input[type=text],
 input[type=password],
-textarea {
+textarea,
+input:not([type=file]):invalid,
+input:not([type=file]):invalid:placeholder-shown {
 	background: #fcfcfc;
 	border-width: 1px;
@@ -120,16 +138,4 @@
 }
 
-input.invalid,
-textarea.invalid,
-select.invalid {
-	color: #900;
-	box-shadow: 0 0 0 3px rgba(218, 62, 90, 0.3);
-}
-input.invalid,
-textarea.invalid {
-	border: 1px solid red;
-	background: #FFBABA;
-}
-
 input[type=text],
 input[type=password],
Index: admin/user.php
===================================================================
--- admin/user.php	(revision 3627)
+++ admin/user.php	(revision 3639)
@@ -206,5 +206,5 @@
 
 '<p><label for="user_id" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('User ID:').'</label> '.
-form::field('user_id',20,255,html::escapeHTML($user_id)).
+form::field('user_id',20,255,html::escapeHTML($user_id),'','',false,'required placeholder="'.__('Login').'"').
 '</p>'.
 '<p class="form-note info">'.__('At least 2 characters using letters, numbers or symbols.').'</p>';
@@ -222,5 +222,6 @@
 		($user_id != '' ? '' : '<abbr title="'.__('Required field').'">*</abbr> ').
 		($user_id != '' ? __('New password:') : __('Password:')).'</label>'.
-		form::password('new_pwd',20,255,'','','',false,' data-indicator="pwindicator" ').
+		form::password('new_pwd',20,255,'','','',false,' data-indicator="pwindicator" '.
+			($user_id != '' ? '' : 'required placeholder="'.__('Password').'"')).
 	'</p>'.
 	'<div id="pwindicator">'.
@@ -233,5 +234,5 @@
 '<p><label for="new_pwd_c" '.($user_id != '' ? '' : 'class="required"').'>'.
 ($user_id != '' ? '' : '<abbr title="'.__('Required field').'">*</abbr> ').__('Confirm password:').'</label> '.
-form::password('new_pwd_c',20,255).
+form::password('new_pwd_c',20,255,'','','',false,($user_id != '' ? '' : 'required placeholder="'.__('Password').'"')).
 '</p>';
 
@@ -308,5 +309,5 @@
 '<p class="clear vertical-separator"><label for="your_pwd" class="required">'.
 '<abbr title="'.__('Required field').'">*</abbr> '.__('Your password:').'</label>'.
-form::password('your_pwd',20,255).'</p>'.
+form::password('your_pwd',20,255,'','','',false,'required placeholder="'.__('Password').'"').'</p>'.
 '<p class="clear"><input type="submit" name="save" accesskey="s" value="'.__('Save').'" />'.
 ($user_id != '' ? '' : ' <input type="submit" name="saveplus" value="'.__('Save and create another').'" />').
Index: admin/users_actions.php
===================================================================
--- admin/users_actions.php	(revision 3627)
+++ admin/users_actions.php	(revision 3639)
@@ -312,5 +312,5 @@
 	'<h3>'.__('Validate permissions').'</h3>'.
 	'<p><label for="your_pwd" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Your password:').'</label>'.
-	form::password('your_pwd',20,255).'</p>'.
+	form::password('your_pwd',20,255,'','','',false,'required placeholder="'.__('Password').'"').'</p>'.
 	'<p><input type="submit" accesskey="s" value="'.__('Save').'" />'.
 	$hidden_fields.
Index: inc/admin/lib.dc.page.php
===================================================================
--- inc/admin/lib.dc.page.php	(revision 3637)
+++ inc/admin/lib.dc.page.php	(revision 3639)
@@ -180,6 +180,5 @@
 
 		$core->auth->user_prefs->addWorkspace('interface');
-		$user_ui_hide_std_favicon = $core->auth->user_prefs->interface->hide_std_favicon;
-		if (!$user_ui_hide_std_favicon) {
+		if (!$core->auth->user_prefs->interface->hide_std_favicon) {
 			echo
 			'<link rel="icon" type="image/png" href="images/favicon96-login.png" />'."\n".
Index: inc/admin/lib.moduleslist.php
===================================================================
--- inc/admin/lib.moduleslist.php	(revision 3627)
+++ inc/admin/lib.moduleslist.php	(revision 3639)
@@ -1312,7 +1312,7 @@
 		'<h4>'.__('Upload a zip file').'</h4>'.
 		'<p class="field"><label for="pkg_file" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Zip file path:').'</label> '.
-		'<input type="file" name="pkg_file" id="pkg_file" /></p>'.
+		'<input type="file" name="pkg_file" id="pkg_file" required /></p>'.
 		'<p class="field"><label for="your_pwd1" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Your password:').'</label> '.
-		form::password(array('your_pwd','your_pwd1'),20,255).'</p>'.
+		form::password(array('your_pwd','your_pwd1'),20,255,'','','',false,'required placeholder="'.__('Password').'"').'</p>'.
 		'<p><input type="submit" name="upload_pkg" value="'.__('Upload').'" />'.
 		$this->core->formNonce().'</p>'.
@@ -1324,7 +1324,7 @@
 		'<h4>'.__('Download a zip file').'</h4>'.
 		'<p class="field"><label for="pkg_url" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Zip file URL:').'</label> '.
-		form::field(array('pkg_url','pkg_url'),40,255).'</p>'.
+		form::field(array('pkg_url','pkg_url'),40,255,'','','',false,'required placeholder="'.__('URL').'"').'</p>'.
 		'<p class="field"><label for="your_pwd2" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Your password:').'</label> '.
-		form::password(array('your_pwd','your_pwd2'),20,255).'</p>'.
+		form::password(array('your_pwd','your_pwd2'),20,255,'','','',false,'required placeholder="'.__('Password').'"').'</p>'.
 		'<p><input type="submit" name="fetch_pkg" value="'.__('Download').'" />'.
 		$this->core->formNonce().'</p>'.
Index: plugins/blogroll/edit.php
===================================================================
--- plugins/blogroll/edit.php	(revision 3297)
+++ plugins/blogroll/edit.php	(revision 3639)
@@ -116,5 +116,5 @@
 
 	'<p><label for="link_desc" class="required classic"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').'</label> '.
-	form::field('link_desc',30,255,html::escapeHTML($link_desc)).
+	form::field('link_desc',30,255,html::escapeHTML($link_desc),'','',false,'required placeholder="'.__('Title').'"').
 
 	form::hidden('edit',1).
@@ -134,8 +134,8 @@
 
 	'<p><label for="link_title" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').'</label> '.
-	form::field('link_title',30,255,html::escapeHTML($link_title)).'</p>'.
+	form::field('link_title',30,255,html::escapeHTML($link_title),'','',false,'required placeholder="'.__('Title').'"').'</p>'.
 
 	'<p><label for="link_href" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('URL:').'</label> '.
-	form::field('link_href',30,255,html::escapeHTML($link_href)).'</p>'.
+	form::field('link_href',30,255,html::escapeHTML($link_href),'','',false,'required placeholder="'.__('URL').'"').'</p>'.
 
 	'<p><label for="link_desc">'.__('Description:').'</label> '.
Index: plugins/blogroll/index.php
===================================================================
--- plugins/blogroll/index.php	(revision 3297)
+++ plugins/blogroll/index.php	(revision 3639)
@@ -273,9 +273,9 @@
 '<h3>'.__('Add a new link').'</h3>'.
 '<p class="col"><label for="link_title" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').'</label> '.
-form::field('link_title',30,255,$link_title).
+form::field('link_title',30,255,$link_title,'','',false,'required placeholder="'.__('Title').'"').
 '</p>'.
 
 '<p class="col"><label for="link_href" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('URL:').'</label> '.
-form::field('link_href',30,255,$link_href).
+form::field('link_href',30,255,$link_href,'','',false,'required placeholder="'.__('URL').'"').
 '</p>'.
 
@@ -298,5 +298,5 @@
 '<h3>'.__('Add a new category').'</h3>'.
 '<p><label for="cat_title" class=" classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').'</label> '.
-form::field('cat_title',30,255,$cat_title).' '.
+form::field('cat_title',30,255,$cat_title,'','',false,'required placeholder="'.__('Title').'"').' '.
 form::hidden(array('p'),'blogroll').
 $core->formNonce().
@@ -312,5 +312,5 @@
 	'<h3>'.__('Import links').'</h3>'.
 	'<p><label for="links_file" class=" classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('OPML or XBEL File:').'</label> '.
-	'<input type="file" id="links_file" name="links_file" /></p>'.
+	'<input type="file" id="links_file" name="links_file" required /></p>'.
 	'<p>'.form::hidden(array('p'),'blogroll').
 	$core->formNonce().
Index: plugins/importExport/inc/class.dc.import.flat.php
===================================================================
--- plugins/importExport/inc/class.dc.import.flat.php	(revision 3627)
+++ plugins/importExport/inc/class.dc.import.flat.php	(revision 3639)
@@ -224,5 +224,5 @@
 			echo
 			'<p><label for="your_pwd" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Your password:').'</label>'.
-			form::password('your_pwd',20,255).'</p>'.
+			form::password('your_pwd',20,255,'','','',false,'required placeholder="'.__('Password').'"').'</p>'.
 
 			'<p>'.
Index: plugins/pages/page.php
===================================================================
--- plugins/pages/page.php	(revision 3627)
+++ plugins/pages/page.php	(revision 3639)
@@ -487,5 +487,5 @@
 			'<p class="col">'.
 			'<label class="required no-margin bold" for="post_title"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').'</label>'.
-			form::field('post_title',20,255,html::escapeHTML($post_title),'maximal').
+			form::field('post_title',20,255,html::escapeHTML($post_title),'maximal','',false,'required placeholder="'.__('Title').'"').
 			'</p>',
 
@@ -499,5 +499,5 @@
 			'<p class="area" id="content-area"><label class="required bold" '.
 			'for="post_content"><abbr title="'.__('Required field').'">*</abbr> '.__('Content:').'</label> '.
-			form::textarea('post_content',50,$core->auth->getOption('edit_size'),html::escapeHTML($post_content)).
+			form::textarea('post_content',50,$core->auth->getOption('edit_size'),html::escapeHTML($post_content),'','',false,'required placeholder="'.__('Content').'"').
 			'</p>',
 
@@ -664,5 +664,5 @@
 	'<div class="constrained">'.
 	'<p><label for="comment_author" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Name:').'</label>'.
-	form::field('comment_author',30,255,html::escapeHTML($core->auth->getInfo('user_cn'))).
+	form::field('comment_author',30,255,html::escapeHTML($core->auth->getInfo('user_cn')),'','',false,'required placeholder="'.__('Author').'"').
 	'</p>'.
 
@@ -677,5 +677,5 @@
 	'<p class="area"><label for="comment_content" class="required"><abbr title="'.__('Required field').'">*</abbr> '.
 	__('Comment:').'</label> '.
-	form::textarea('comment_content',50,8,html::escapeHTML('')).
+	form::textarea('comment_content',50,8,'','','',false,'required placeholder="'.__('Comment').'"').
 	'</p>'.
 
Index: plugins/simpleMenu/index.php
===================================================================
--- plugins/simpleMenu/index.php	(revision 3582)
+++ plugins/simpleMenu/index.php	(revision 3639)
@@ -230,7 +230,7 @@
 							'descr' => $item_descr,
 							'url' => $item_url,
-							'targetBlank'	=> $item_targetBlank 
+							'targetBlank'	=> $item_targetBlank
 						);
-						
+
 						// Save menu in blog settings
 						$core->blog->settings->system->put('simpleMenu',$menu);
@@ -480,9 +480,13 @@
 			echo '<fieldset><legend>'.$item_type_label.($item_select_label != '' ? ' ('.$item_select_label.')' : '').'</legend>';
 			echo '<p class="field"><label for="item_label" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.
-				__('Label of item menu:').'</label>'.form::field('item_label',20,255,$item_label).'</p>';
+				__('Label of item menu:').'</label>'.
+				form::field('item_label',20,255,$item_label,'','',false,'required placeholder="'.__('Label').'"').
+				'</p>';
 			echo '<p class="field"><label for="item_descr" class="classic">'.
 				__('Description of item menu:').'</label>'.form::field('item_descr',30,255,$item_descr).'</p>';
 			echo '<p class="field"><label for="item_url" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.
-				__('URL of item menu:').'</label>'.form::field('item_url',40,255,$item_url).'</p>';
+				__('URL of item menu:').'</label>'.
+				form::field('item_url',40,255,$item_url,'','',false,'required placeholder="'.__('URL').'"').
+				'</p>';
 			echo form::hidden('item_type',$item_type).form::hidden('item_select',$item_select);
 			echo '<p class="field"><label for="item_descr" class="classic">'.
@@ -537,5 +541,5 @@
 	foreach ($menu as $i => $m) {
 		echo '<tr class="line" id="l_'.$i.'">';
-		
+
 		//because targetBlank can not exists. This value has been added after this plugin creation.
 		if((isset($m['targetBlank'])) && ($m['targetBlank'])) {
@@ -546,5 +550,5 @@
 			$targetBlankStr ='';
 		}
-		
+
 		if (!$step) {
 			$count++;
@@ -562,5 +566,5 @@
 			echo '<td class="nowrap">'.html::escapeHTML($m['url']).'</td>';
 			echo '<td class="nowrap">'.$targetBlankStr.'</td>';
- 
+
 		}
 		echo '</tr>';
