diff --git a/app/assets/javascripts/application-legacy.js b/app/assets/javascripts/application-legacy.js
index d8317b3f1..3a0ef897e 100644
--- a/app/assets/javascripts/application-legacy.js
+++ b/app/assets/javascripts/application-legacy.js
@@ -1226,12 +1226,12 @@ $(document).ready(function(){
     var jstBlock = tab.parents('.jstBlock');
 
     var element = encodeURIComponent(jstBlock.find('.wiki-edit').val());
-    var attachments = form.find('.attachments_fields input').serialize();
+    var params = form.find('.attachments_fields input, [data-preview-param]').serialize();
 
     $.ajax({
       url: url,
       type: 'post',
-      data: "text=" + element + '&' + attachments,
+      data: "text=" + element + '&' + params,
       success: function(data){
         jstBlock.find('.wiki-preview').html(data);
       }
diff --git a/app/controllers/previews_controller.rb b/app/controllers/previews_controller.rb
index 744daa7c8..7c7b3f172 100644
--- a/app/controllers/previews_controller.rb
+++ b/app/controllers/previews_controller.rb
@@ -47,7 +47,7 @@ class PreviewsController < ApplicationController
 
   def find_project
     project_id = (params[:issue] && params[:issue][:project_id]) || params[:project_id]
-    @project = Project.find(project_id)
+    @project = Project.find(project_id) if project_id.present?
   rescue ActiveRecord::RecordNotFound
     render_404
   end
diff --git a/app/views/news/_form.html.erb b/app/views/news/_form.html.erb
index 3e2ebe6a8..ca9784311 100644
--- a/app/views/news/_form.html.erb
+++ b/app/views/news/_form.html.erb
@@ -4,7 +4,7 @@
 <% if @project.nil? %>
   <p>
     <label><%= l(:field_project) %> <span class="required">*</span></label>
-    <%= select_tag :project_id, options_for_select(project_tree_options_for_select(Project.allowed_to(:manage_news).to_a), Project.allowed_to(:manage_news).first), {:required => true} %>
+    <%= select_tag :project_id, options_for_select(project_tree_options_for_select(Project.allowed_to(:manage_news).to_a), Project.allowed_to(:manage_news).first), {:required => true, :data => {:preview_param => true}} %>
     <%= hidden_field_tag :cross_project, 1, id: nil %>
   </p>
 <% end %>
diff --git a/test/functional/previews_controller_test.rb b/test/functional/previews_controller_test.rb
index 0dc537ccf..de66778a9 100644
--- a/test/functional/previews_controller_test.rb
+++ b/test/functional/previews_controller_test.rb
@@ -109,6 +109,55 @@ class PreviewsControllerTest < Redmine::ControllerTest
     assert_select 'p', :text => /News description/
   end
 
+  def test_preview_new_news_without_project_should_be_successful
+    @request.session[:user_id] = 2
+    post(
+      :news,
+      :params => {
+        :text => 'News description',
+      }
+    )
+    assert_response :success
+    assert_select 'p', :text => /News description/
+  end
+
+  def test_preview_news_with_invalid_project_should_return_404
+    @request.session[:user_id] = 2
+    post(
+      :news,
+      :params => {
+        :project_id => 'invalid',
+        :text => 'News description',
+      }
+    )
+    assert_response :not_found
+  end
+
+  def test_preview_new_news_should_render_project_scoped_syntax
+    @request.session[:user_id] = 2
+    post(
+      :news,
+      :params => {
+        :project_id => '1',
+        :text => '[[CookBook documentation]]'
+      }
+    )
+    assert_response :success
+    assert_select 'a.wiki-page[href=?]', '/projects/ecookbook/wiki/CookBook_documentation'
+  end
+
+  def test_preview_new_news_without_project_should_not_render_project_scoped_syntax
+    @request.session[:user_id] = 2
+    post(
+      :news,
+      :params => {
+        :text => '[[CookBook documentation]]'
+      }
+    )
+    assert_response :success
+    assert_select 'a.wiki-page', :count => 0
+  end
+
   def test_preview_existing_news
     get(
       :news,
