Index: branches/2.8.x/CHANGELOG
===================================================================
--- branches/2.8.x/CHANGELOG	(revision 1910)
+++ branches/2.8.x/CHANGELOG	(revision 1911)
@@ -12,6 +12,8 @@
 ===============================================================================
 
 
+07 Jun-2013 Build 1911 Dietmar Woellbrink (Luisehahne)
+! modules/menu_link/save.php coding new sql logic to replace adding an empty table row in add.php
 07 Jun-2013 Build 1910 Dietmar Woellbrink (Luisehahne)
 ! modules/wysiwyg/save.php use new methode in class.wb to replace absolute MediaUrl
 07 Jun-2013 Build 1909 Dietmar Woellbrink (Luisehahne)
Index: branches/2.8.x/wb/admin/interface/version.php
===================================================================
--- branches/2.8.x/wb/admin/interface/version.php	(revision 1910)
+++ branches/2.8.x/wb/admin/interface/version.php	(revision 1911)
@@ -51,5 +51,5 @@
 
 // check if defined to avoid errors during installation (redirect to admin panel fails if PHP error/warnings are enabled)
 if(!defined('VERSION')) define('VERSION', '2.8.3');
-if(!defined('REVISION')) define('REVISION', '1910');
+if(!defined('REVISION')) define('REVISION', '1911');
 if(!defined('SP')) define('SP', '');
Index: branches/2.8.x/wb/modules/menu_link/save.php
===================================================================
--- branches/2.8.x/wb/modules/menu_link/save.php	(revision 1910)
+++ branches/2.8.x/wb/modules/menu_link/save.php	(revision 1911)
@@ -4,13 +4,13 @@
  * @category        modules
  * @package         menu_link
  * @author          WebsiteBaker Project
- * @copyright       2009-2011, Website Baker Org. e.V.
- * @link			http://www.websitebaker2.org/
+ * @copyright       2009-2013, WebsiteBaker Org. e.V.
+ * @link            http://www.websitebaker.org/
  * @license         http://www.gnu.org/licenses/gpl.html
- * @platform        WebsiteBaker 2.8.x
+ * @platform        WebsiteBaker 2.8.4
  * @requirements    PHP 5.2.2 and higher
  * @version         $Id$
- * @filesource		$HeadURL$
+ * @filesource      $HeadURL$
  * @lastmodified    $Date$
  *
 */
@@ -32,12 +32,12 @@
 
 // Update id, anchor and target
 if(isset($_POST['menu_link'])) {
-	$foreign_page_id = $admin->add_slashes($_POST['menu_link']);
-	$page_target = $admin->add_slashes($_POST['page_target']);
-	$url_target = $admin->add_slashes($_POST['target']);
-	$r_type = $admin->add_slashes($_POST['r_type']);
+	$foreign_page_id = intval($_POST['menu_link']);
+	$url_target = $admin->StripCodeFromText($_POST['target']);
+	$r_type = intval($_POST['r_type']);
+	$page_target = $admin->StripCodeFromText($_POST['page_target']);
 	if(isset($_POST['extern']))
-		$extern = $admin->add_slashes($_POST['extern']);
+		$extern = $admin->StripCodeFromText($_POST['extern']);
 	else
 		$extern='';
 
@@ -44,14 +44,32 @@
 	$table_pages = TABLE_PREFIX.'pages';
 	$table_mod = TABLE_PREFIX.'mod_menu_link';
 	$database->query("UPDATE `$table_pages` SET `target` = '$url_target' WHERE `page_id` = '$page_id'");
-	$database->query("UPDATE `$table_mod` SET `target_page_id` = '$foreign_page_id', `anchor` = '$page_target', `extern` = '$extern', `redirect_type` = '$r_type' WHERE `page_id` = '$page_id'");
+//	$database->query("UPDATE `$table_mod` SET `target_page_id` = '$foreign_page_id', `anchor` = '$page_target', `extern` = '$extern', `redirect_type` = '$r_type' WHERE `page_id` = '$page_id'");
+
+	// Check that it doesn't already exist
+	$sqlwhere = 'WHERE `page_id`='.$page_id.'';
+	$sqlOne  = 'SELECT COUNT(*) FROM `'.TABLE_PREFIX.'mod_menu_link` '.$sqlwhere;
+	if( $database->get_one($sqlOne) ) {
+		$sql  = 'UPDATE `'.TABLE_PREFIX.'mod_menu_link`  SET';
+	}else{
+		// Load into DB
+		$sql  = 'INSERT INTO `'.TABLE_PREFIX.'mod_menu_link`  SET ';
+		$sqlwhere = '';
+		$sql .= '`section_id`='.$section_id.', '
+		      . '`page_id`='.$page_id.', ';
+	}
+	$sql .= '`target_page_id` = \''.$foreign_page_id.'\', '
+	      . '`anchor` =  \''.$database->escapeString($page_target).'\', '
+	      . '`extern` = \''.$database->escapeString($extern).'\', '
+	      . '`redirect_type` = \''.$r_type.'\' '
+	      . $sqlwhere;
 }
 
 // Check if there is a database error, otherwise say successful
-if($database->is_error()) {
+if($database->query($sql)) {
+	$admin->print_success($MESSAGE['PAGES_SAVED'],$backlink );
+} else {
 	$admin->print_error($database->get_error(), $js_back);
-} else {
-	$admin->print_success($MESSAGE['PAGES']['SAVED'],$backlink );
 }
 
 // Print admin footer
