可以在开源社区添加帖子,并且添加了帖子的URL,即帖子来源
This commit is contained in:
parent
07b75924d8
commit
87c70909be
|
@ -8,6 +8,8 @@ class RelativeMemosController < ApplicationController
|
||||||
include NoUsesHelper
|
include NoUsesHelper
|
||||||
|
|
||||||
before_filter :find_memo, :except => [:new, :create]
|
before_filter :find_memo, :except => [:new, :create]
|
||||||
|
before_filter :find_osp, :only => [:create]
|
||||||
|
before_filter :require_login, :only => [:new, :create]
|
||||||
|
|
||||||
layout 'base_opensource_p'
|
layout 'base_opensource_p'
|
||||||
|
|
||||||
|
@ -88,15 +90,22 @@ class RelativeMemosController < ApplicationController
|
||||||
# POST /open_source_projects
|
# POST /open_source_projects
|
||||||
# POST /open_source_projects.json
|
# POST /open_source_projects.json
|
||||||
def create
|
def create
|
||||||
@open_source_project = OpenSourceProject.new(params[:open_source_project])
|
@memo = RelativeMemo.new(params[:relative_memo])
|
||||||
|
# @memo.url = "http://forge.trustie.net/open_source_projects"
|
||||||
|
@memo.osp_id = params[:open_source_project_id]
|
||||||
|
@memo.author_id = User.current.id
|
||||||
|
|
||||||
|
@memo.save_attachments(params[:attachments] || (params[:relative_memo] && params[:relative_memo][:uploads]))
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
if @open_source_project.save
|
if @memo.save
|
||||||
format.html { redirect_to @open_source_project, notice: 'Open source project was successfully created.'}
|
format.html { redirect_to back_memo_url, notice: "#{l :label_memo_create_succ}" }
|
||||||
format.json { render json: @open_source_project, status: :created, location: @open_source_project }
|
format.json { render json: @memo, status: :created, location: @memo }
|
||||||
else
|
else
|
||||||
format.html { render action: "new" }
|
flash[:error] = "#{l :label_memo_create_fail}: #{@memo.errors.full_messages[0]}"
|
||||||
format.json { render json: @open_source_project.errors, status: :unprocessable_entity }
|
# back_error_page = @memo.parent_id.nil? ? forum_path(@forum) : forum_memo_path(@forum, @memo.parent_id)
|
||||||
|
format.html { redirect_to back_memo_or_forum_url}#, error: "#{l :label_memo_create_fail}: #{@memo.errors.full_messages[0]}" }
|
||||||
|
format.json { render json: @memo.errors, status: :unprocessable_entity }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -145,4 +154,8 @@ class RelativeMemosController < ApplicationController
|
||||||
render_404
|
render_404
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def back_memo_url
|
||||||
|
open_source_project_relative_memo_path(@open_source_project, (@memo.parent_id.nil? ? @memo : @memo.parent_id))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -10,6 +10,7 @@ class RelativeMemo < ActiveRecord::Base
|
||||||
has_many :no_uses, :as => :no_use, :dependent => :delete_all
|
has_many :no_uses, :as => :no_use, :dependent => :delete_all
|
||||||
|
|
||||||
acts_as_taggable
|
acts_as_taggable
|
||||||
|
acts_as_attachable
|
||||||
|
|
||||||
validates_presence_of :osp_id, :subject
|
validates_presence_of :osp_id, :subject
|
||||||
#validates :content, presence: true
|
#validates :content, presence: true
|
||||||
|
@ -106,7 +107,7 @@ class RelativeMemo < ActiveRecord::Base
|
||||||
RelativeMemo.update_all({:last_reply_id => parent.children.maximum(:id)}, {:id => parent.id})
|
RelativeMemo.update_all({:last_reply_id => parent.children.maximum(:id)}, {:id => parent.id})
|
||||||
parent.update_attribute(:updated_at, Time.now)
|
parent.update_attribute(:updated_at, Time.now)
|
||||||
end
|
end
|
||||||
forum.reset_counters!
|
# forum.reset_counters!
|
||||||
end
|
end
|
||||||
|
|
||||||
def sticky?
|
def sticky?
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
<%= javascript_heads %>
|
<%= javascript_heads %>
|
||||||
<%= heads_for_theme %>
|
<%= heads_for_theme %>
|
||||||
<%= call_hook :view_layouts_base_html_head %>
|
<%= call_hook :view_layouts_base_html_head %>
|
||||||
|
<%= javascript_include_tag "ckeditor/ckeditor.js" %>
|
||||||
<!-- page specific tags -->
|
<!-- page specific tags -->
|
||||||
<%= yield :header_tags -%>
|
<%= yield :header_tags -%>
|
||||||
</head>
|
</head>
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
</span></td>
|
</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align="left" colspan="2" ><span class="font_lighter">帖子来源:<%= link_to @open_source_project.url, @open_source_project.url%> </span></td>
|
<td align="left" colspan="2" ><span class="font_lighter">帖子来源:<%= link_to topic.url, topic.url%> </span></td>
|
||||||
<td align="left"><%= no_use_link(topic, User.current) %> </td>
|
<td align="left"><%= no_use_link(topic, User.current) %> </td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<div id="add-memo" class='lz' style="display: none; padding: 20px;">
|
<div id="add-memo" class='lz' style="display: none; padding: 20px;">
|
||||||
<h3><%=l(:label_memo_new)%></h3>
|
<h3><%=l(:label_memo_new)%></h3>
|
||||||
<% if User.current.logged? %>
|
<% if User.current.logged? %>
|
||||||
<%#= labelled_form_for(@memo, :url => forum_memos_path(1), :html => {:multipart => true} ) do |f| %>
|
<%= labelled_form_for(@memo, :url => open_source_project_relative_memos_path(@open_source_project), :html => {:multipart => true} ) do |f| %>
|
||||||
<% if @memo.errors.any? %>
|
<% if @memo.errors.any? %>
|
||||||
<div id="error_explanation">
|
<div id="error_explanation">
|
||||||
<h2><%= pluralize(@memo.errors.count, "error") %> prohibited this memo from being saved:</h2>
|
<h2><%= pluralize(@memo.errors.count, "error") %> prohibited this memo from being saved:</h2>
|
||||||
|
@ -13,17 +13,17 @@
|
||||||
<% end %>
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<% #end %>
|
<% end %>
|
||||||
<div class="actions" style="max-width:680px">
|
<div class="actions" style="max-width:680px">
|
||||||
<p><%= f.text_field :subject, :required => true%></p>
|
<p><%= f.text_field :subject, :required => true%></p>
|
||||||
<p style="max-width:680px"><%= f.text_area :content, :required => true, :id => 'editor02' %></p>
|
<p style="max-width:680px"><%= f.text_area :content, :required => true, :id => 'editor02' %></p>
|
||||||
<script type="text/javascript">var ckeditor=CKEDITOR.replace('editor02');</script>
|
<script type="text/javascript">var ckeditor=CKEDITOR.replace('editor02');</script>
|
||||||
<br/>
|
<br/>
|
||||||
<p>
|
<p>
|
||||||
<%= l(:label_attachment_plural) %><br />
|
<%#= l(:label_attachment_plural) %><br />
|
||||||
<%= render :partial => 'attachments/form', :locals => {:container => @memo} %>
|
<%#= render :partial => 'attachments/form', :locals => {:container => @memo} %>
|
||||||
</p>
|
</p>
|
||||||
<%#= f.submit :value => l(:label_memo_create) %>
|
<%= f.submit :value => l(:label_memo_create) %>
|
||||||
<%= link_to l(:button_cancel), "#", :onclick => '$("#add-memo").hide(); return false;' %>
|
<%= link_to l(:button_cancel), "#", :onclick => '$("#add-memo").hide(); return false;' %>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
@ -32,7 +32,7 @@
|
||||||
<!--modified by huang-->
|
<!--modified by huang-->
|
||||||
<% #= link_to '发布帖子', new_forum_memo_path(@forum), :class => 'icon icon-add' %>
|
<% #= link_to '发布帖子', new_forum_memo_path(@forum), :class => 'icon icon-add' %>
|
||||||
<span>
|
<span>
|
||||||
<%#= link_to l(:label_memo_new_from_forum), new_forum_memo_path(@forum), :class => 'icon icon-add',
|
<%= link_to l(:label_memo_new_from_forum), new_open_source_project_relative_memo_path(@open_source_project), :class => 'icon icon-add',
|
||||||
:onclick => 'showAndScrollTo("add-memo", "memo_subject"); return false;' if User.current.logged? %>
|
:onclick => 'showAndScrollTo("add-memo", "memo_subject"); return false;' if User.current.logged? %>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
class AddUrlToRelativeMemos < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
add_column :relative_memos, :url, :string
|
||||||
|
end
|
||||||
|
end
|
77
db/schema.rb
77
db/schema.rb
|
@ -11,7 +11,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended to check this file into your version control system.
|
# It's strongly recommended to check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(:version => 20140411011700) do
|
ActiveRecord::Schema.define(:version => 20140428005537) do
|
||||||
|
|
||||||
create_table "activities", :force => true do |t|
|
create_table "activities", :force => true do |t|
|
||||||
t.integer "act_id", :null => false
|
t.integer "act_id", :null => false
|
||||||
|
@ -185,6 +185,38 @@ ActiveRecord::Schema.define(:version => 20140411011700) do
|
||||||
add_index "comments", ["author_id"], :name => "index_comments_on_author_id"
|
add_index "comments", ["author_id"], :name => "index_comments_on_author_id"
|
||||||
add_index "comments", ["commented_id", "commented_type"], :name => "index_comments_on_commented_id_and_commented_type"
|
add_index "comments", ["commented_id", "commented_type"], :name => "index_comments_on_commented_id_and_commented_type"
|
||||||
|
|
||||||
|
create_table "contesting_projects", :force => true do |t|
|
||||||
|
t.integer "project_id"
|
||||||
|
t.string "contest_id"
|
||||||
|
t.integer "user_id"
|
||||||
|
t.string "description"
|
||||||
|
t.datetime "created_at", :null => false
|
||||||
|
t.datetime "updated_at", :null => false
|
||||||
|
t.string "reward"
|
||||||
|
end
|
||||||
|
|
||||||
|
create_table "contesting_softapplications", :force => true do |t|
|
||||||
|
t.integer "softapplication_id"
|
||||||
|
t.integer "contest_id"
|
||||||
|
t.integer "user_id"
|
||||||
|
t.string "description"
|
||||||
|
t.datetime "created_at", :null => false
|
||||||
|
t.datetime "updated_at", :null => false
|
||||||
|
t.string "reward"
|
||||||
|
end
|
||||||
|
|
||||||
|
create_table "contests", :force => true do |t|
|
||||||
|
t.string "name"
|
||||||
|
t.string "budget", :default => ""
|
||||||
|
t.integer "author_id"
|
||||||
|
t.date "deadline"
|
||||||
|
t.string "description"
|
||||||
|
t.integer "commit"
|
||||||
|
t.string "password"
|
||||||
|
t.datetime "created_on", :null => false
|
||||||
|
t.datetime "updated_on", :null => false
|
||||||
|
end
|
||||||
|
|
||||||
create_table "courses", :force => true do |t|
|
create_table "courses", :force => true do |t|
|
||||||
t.integer "tea_id"
|
t.integer "tea_id"
|
||||||
t.string "name"
|
t.string "name"
|
||||||
|
@ -521,6 +553,13 @@ ActiveRecord::Schema.define(:version => 20140411011700) do
|
||||||
add_index "issues", ["status_id"], :name => "index_issues_on_status_id"
|
add_index "issues", ["status_id"], :name => "index_issues_on_status_id"
|
||||||
add_index "issues", ["tracker_id"], :name => "index_issues_on_tracker_id"
|
add_index "issues", ["tracker_id"], :name => "index_issues_on_tracker_id"
|
||||||
|
|
||||||
|
create_table "join_in_competitions", :force => true do |t|
|
||||||
|
t.integer "user_id"
|
||||||
|
t.integer "competition_id"
|
||||||
|
t.datetime "created_at", :null => false
|
||||||
|
t.datetime "updated_at", :null => false
|
||||||
|
end
|
||||||
|
|
||||||
create_table "join_in_contests", :force => true do |t|
|
create_table "join_in_contests", :force => true do |t|
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
t.integer "bid_id"
|
t.integer "bid_id"
|
||||||
|
@ -784,6 +823,7 @@ ActiveRecord::Schema.define(:version => 20140411011700) do
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at", :null => false
|
||||||
t.integer "viewed_count_crawl", :default => 0
|
t.integer "viewed_count_crawl", :default => 0
|
||||||
t.integer "viewed_count_local", :default => 0
|
t.integer "viewed_count_local", :default => 0
|
||||||
|
t.string "url"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "repositories", :force => true do |t|
|
create_table "repositories", :force => true do |t|
|
||||||
|
@ -812,8 +852,10 @@ ActiveRecord::Schema.define(:version => 20140411011700) do
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "schools", :force => true do |t|
|
create_table "schools", :force => true do |t|
|
||||||
t.string "name"
|
t.string "name"
|
||||||
t.string "province"
|
t.string "province"
|
||||||
|
t.datetime "created_at", :null => false
|
||||||
|
t.datetime "updated_at", :null => false
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "seems_rateable_cached_ratings", :force => true do |t|
|
create_table "seems_rateable_cached_ratings", :force => true do |t|
|
||||||
|
@ -856,6 +898,21 @@ ActiveRecord::Schema.define(:version => 20140411011700) do
|
||||||
t.string "description"
|
t.string "description"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "softapplications", :force => true do |t|
|
||||||
|
t.string "name"
|
||||||
|
t.string "description"
|
||||||
|
t.integer "app_type_id"
|
||||||
|
t.string "app_type_name"
|
||||||
|
t.string "android_min_version_available"
|
||||||
|
t.integer "user_id"
|
||||||
|
t.datetime "created_at", :null => false
|
||||||
|
t.datetime "updated_at", :null => false
|
||||||
|
t.integer "contest_id"
|
||||||
|
t.integer "softapplication_id"
|
||||||
|
t.integer "is_public"
|
||||||
|
t.string "application_developers"
|
||||||
|
end
|
||||||
|
|
||||||
create_table "students_for_courses", :force => true do |t|
|
create_table "students_for_courses", :force => true do |t|
|
||||||
t.integer "student_id"
|
t.integer "student_id"
|
||||||
t.integer "course_id"
|
t.integer "course_id"
|
||||||
|
@ -962,6 +1019,7 @@ ActiveRecord::Schema.define(:version => 20140411011700) do
|
||||||
t.string "teacher_realname"
|
t.string "teacher_realname"
|
||||||
t.string "student_realname"
|
t.string "student_realname"
|
||||||
t.string "location_city"
|
t.string "location_city"
|
||||||
|
t.integer "school_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "user_grades", :force => true do |t|
|
create_table "user_grades", :force => true do |t|
|
||||||
|
@ -985,6 +1043,19 @@ ActiveRecord::Schema.define(:version => 20140411011700) do
|
||||||
|
|
||||||
add_index "user_preferences", ["user_id"], :name => "index_user_preferences_on_user_id"
|
add_index "user_preferences", ["user_id"], :name => "index_user_preferences_on_user_id"
|
||||||
|
|
||||||
|
create_table "user_scores", :force => true do |t|
|
||||||
|
t.integer "user_id", :null => false
|
||||||
|
t.integer "collaboration"
|
||||||
|
t.integer "influence"
|
||||||
|
t.integer "skill"
|
||||||
|
t.integer "active"
|
||||||
|
t.datetime "created_at", :null => false
|
||||||
|
t.datetime "updated_at", :null => false
|
||||||
|
t.integer "level"
|
||||||
|
t.integer "file"
|
||||||
|
t.integer "issue"
|
||||||
|
end
|
||||||
|
|
||||||
create_table "user_statuses", :force => true do |t|
|
create_table "user_statuses", :force => true do |t|
|
||||||
t.integer "changesets_count"
|
t.integer "changesets_count"
|
||||||
t.integer "watchers_count"
|
t.integer "watchers_count"
|
||||||
|
|
Loading…
Reference in New Issue