mirror of
https://github.com/indentlabs/notebook.git
synced 2025-10-26 11:19:22 +00:00
piping to submit pages to collections
This commit is contained in:
parent
1d01009897
commit
59ecd296d9
@ -1,9 +1,10 @@
|
||||
class PageCollectionSubmissionsController < ApplicationController
|
||||
before_action :set_page_collection, only: [:index]
|
||||
before_action :set_page_collection_submission, only: [:show, :edit, :update, :destroy]
|
||||
|
||||
# GET /page_collection_submissions
|
||||
def index
|
||||
@page_collection_submissions = PageCollectionSubmission.all
|
||||
@page_collection_submissions = @page_collection.page_collection_submissions
|
||||
end
|
||||
|
||||
# GET /page_collection_submissions/1
|
||||
@ -24,9 +25,10 @@ class PageCollectionSubmissionsController < ApplicationController
|
||||
@page_collection_submission = PageCollectionSubmission.new(page_collection_submission_params)
|
||||
|
||||
if @page_collection_submission.save
|
||||
redirect_to @page_collection_submission, notice: 'Page collection submission was successfully created.'
|
||||
redirect_to @page_collection_submission.page_collection, notice: 'Page submitted!'
|
||||
else
|
||||
render :new
|
||||
raise "railsed create"
|
||||
# render :new
|
||||
end
|
||||
end
|
||||
|
||||
@ -35,7 +37,8 @@ class PageCollectionSubmissionsController < ApplicationController
|
||||
if @page_collection_submission.update(page_collection_submission_params)
|
||||
redirect_to @page_collection_submission, notice: 'Page collection submission was successfully updated.'
|
||||
else
|
||||
render :edit
|
||||
raise "failed edit"
|
||||
# render :edit
|
||||
end
|
||||
end
|
||||
|
||||
@ -47,6 +50,10 @@ class PageCollectionSubmissionsController < ApplicationController
|
||||
|
||||
private
|
||||
|
||||
def set_page_collection
|
||||
@page_collection = PageCollection.find(params[:page_collection_id])
|
||||
end
|
||||
|
||||
# Use callbacks to share common setup or constraints between actions.
|
||||
def set_page_collection_submission
|
||||
@page_collection_submission = PageCollectionSubmission.find(params[:id])
|
||||
@ -58,7 +65,8 @@ class PageCollectionSubmissionsController < ApplicationController
|
||||
content_type: params.require(:page_collection_submission).require(:content).split('-').first,
|
||||
content_id: params.require(:page_collection_submission).require(:content).split('-').second,
|
||||
user_id: current_user.id,
|
||||
submitted_at: DateTime.current
|
||||
submitted_at: DateTime.current,
|
||||
page_collection_id: params.require(:page_collection_submission).require(:page_collection_id)
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
@ -1,6 +1,20 @@
|
||||
class PageCollection < ApplicationRecord
|
||||
belongs_to :user
|
||||
|
||||
has_many :page_collection_submissions
|
||||
|
||||
def pending_submissions
|
||||
page_collection_submissions.where(accepted_at: nil)
|
||||
end
|
||||
|
||||
def accepted_submissions
|
||||
page_collection_submissions.where.not(accepted_at: nil)
|
||||
end
|
||||
|
||||
def contributors
|
||||
User.where(id: accepted_submissions.pluck(:user_id))
|
||||
end
|
||||
|
||||
serialize :page_types, Array
|
||||
|
||||
def self.color
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
class PageCollectionSubmission < ApplicationRecord
|
||||
belongs_to :content, polymorphic: true
|
||||
belongs_to :page_collection
|
||||
belongs_to :user
|
||||
end
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
class CharacterMagic < ApplicationRecord
|
||||
belongs_to :character
|
||||
belongs_to :magic
|
||||
belongs_to :user, optional: true, optional: true
|
||||
belongs_to :magic, optional: true
|
||||
belongs_to :user, optional: true
|
||||
end
|
||||
|
||||
@ -1,25 +1,57 @@
|
||||
<p id="notice"><%= notice %></p>
|
||||
<div class="row">
|
||||
<div class="col s12">
|
||||
<div class="card">
|
||||
<div class="card-content">
|
||||
<div class="card-title">Pending submissions</div>
|
||||
<p>
|
||||
Submitters will be notified if you accept their content.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h1>Page Collection Submissions</h1>
|
||||
<% @page_collection_submissions.each do |page_collection_submission| %>
|
||||
<div class="col s12 m12 l6">
|
||||
<% content = page_collection_submission.content %>
|
||||
<div class="horizontal card <%= content.class.color %> lighten-5">
|
||||
<div class="card-image">
|
||||
<%= link_to content do %>
|
||||
<%= image_tag content.random_public_image %>
|
||||
<% end %>
|
||||
</div>
|
||||
<div class="card-stacked">
|
||||
<div class="card-content">
|
||||
<div class="card-title">
|
||||
<i class="material-icons left <%= content.class.color %>-text"><%= content.class.icon %></i>
|
||||
<%= content.name %>
|
||||
</div>
|
||||
<div>
|
||||
Submitted by
|
||||
<%= link_to content.user, class: "#{User.color}-text" do %>
|
||||
<%= content.user.display_name %>
|
||||
<% end %>
|
||||
<br />
|
||||
<%= time_ago_in_words page_collection_submission.submitted_at %> ago
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-action">
|
||||
<%= link_to '#', class: 'green-text' do %>
|
||||
<i class="material-icons left">check</i>
|
||||
Approve
|
||||
<% end %>
|
||||
<%= link_to '#', class: 'red-text right' do %>
|
||||
<i class="material-icons left">close</i>
|
||||
Pass
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th colspan="3"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<% @page_collection_submissions.each do |page_collection_submission| %>
|
||||
<tr>
|
||||
<td><%= link_to 'Show', page_collection_submission %></td>
|
||||
<td><%= link_to 'Edit', edit_page_collection_submission_path(page_collection_submission) %></td>
|
||||
<td><%= link_to 'Destroy', page_collection_submission, method: :delete, data: { confirm: 'Are you sure?' } %></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<br>
|
||||
|
||||
<%= link_to 'New Page Collection Submission', new_page_collection_submission_path %>
|
||||
<div class="col s12">
|
||||
<p class="center">
|
||||
<%= link_to "Back to #{@page_collection.title}", @page_collection, class: "#{PageCollection.color}-text" %>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@ -30,6 +30,7 @@
|
||||
</div>
|
||||
<div class="collapsible-body white">
|
||||
<%= form_for PageCollectionSubmission.new do |f| %>
|
||||
<%= f.hidden_field :page_collection_id, value: @page_collection.id %>
|
||||
<div class="input-field">
|
||||
<%= f.select :content do %>
|
||||
<% @current_user_content.each do |content_type, content_list| %>
|
||||
@ -43,29 +44,52 @@
|
||||
<% end %>
|
||||
<label>Select a page to <%= @page_collection.user == current_user ? 'add' : 'submit' %></label>
|
||||
<div class="helper-text">
|
||||
Only pages you've marked "public" may be shared.
|
||||
Only pages you've marked "public" may be submitted.
|
||||
</div>
|
||||
</div>
|
||||
<%= f.submit (@page_collection.user == current_user ? 'Add' : 'Submit'), class: 'btn green white-text' %>
|
||||
<%= f.submit (@page_collection.user == current_user ? 'Add' : 'Submit'), class: "btn #{PageCollection.color} white-text" %>
|
||||
<% end %>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="card-panel">Collection description (editable)</div>
|
||||
<div class="card-panel">
|
||||
|
||||
<div class="grey-text uppercase">In this collection</div>
|
||||
<div class="collection">
|
||||
<% @page_collection.page_types.each do |pt| %>
|
||||
<% klass = pt.constantize %>
|
||||
<%= link_to '#' + pt do %>
|
||||
<span class="badge hoverable black-text <%= klass.color %> left"><%= pt.downcase %></span>
|
||||
<%= link_to('#' + pt, class: "collection-item #{klass.color} white-text") do %>
|
||||
<i class="material-icons left"><%= klass.icon %></i>
|
||||
<%= pt.pluralize %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</div>
|
||||
<div class="card-panel">
|
||||
Contributors
|
||||
|
||||
<div class="grey-text uppercase">Curator</div>
|
||||
<div>
|
||||
<%= link_to @page_collection.user, class: "#{User.color}-text" do %>
|
||||
<%= image_tag @page_collection.user.image_url(size=20), class: 'left circle', style: 'margin-right: 8px;' %>
|
||||
<%= @page_collection.user.display_name %>
|
||||
<% end %>
|
||||
</div>
|
||||
<br />
|
||||
|
||||
<% if @page_collection.contributors.any? %>
|
||||
<div class="grey-text uppercase">Contributors</div>
|
||||
<% @page_collection.contributors.each do |user| %>
|
||||
<div>
|
||||
<%= link_to user, class: "#{User.color}-text" do %>
|
||||
<%= image_tag user.image_url(size=20), class: 'left circle', style: 'margin-right: 8px;' %>
|
||||
<%= user.display_name %>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
<br />
|
||||
<% end %>
|
||||
|
||||
<ul>
|
||||
<li><%= link_to pluralize(0, 'pending submission'), '#' %></li>
|
||||
<li><%= link_to pluralize(@page_collection.pending_submissions.count, 'pending submission'), page_collection_pending_submissions_path(page_collection_id: @page_collection.id) %></li>
|
||||
<li><%= link_to 'Edit this collection', '#' %></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@ -8,6 +8,7 @@ Rails.application.routes.draw do
|
||||
end
|
||||
resources :page_collections, path: '/collections' do
|
||||
get '/explore', to: 'page_collections#explore', on: :collection
|
||||
get '/submissions', to: 'page_collection_submissions#index', as: 'pending_submissions'
|
||||
end
|
||||
resources :page_collection_submissions
|
||||
|
||||
|
||||
@ -5,6 +5,7 @@ class CreatePageCollectionSubmissions < ActiveRecord::Migration[6.0]
|
||||
t.references :user, null: false, foreign_key: true
|
||||
t.datetime :accepted_at
|
||||
t.datetime :submitted_at
|
||||
t.references :page_collection, null: false
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
|
||||
@ -2131,9 +2131,11 @@ ActiveRecord::Schema.define(version: 2020_05_02_021338) do
|
||||
t.integer "user_id", null: false
|
||||
t.datetime "accepted_at"
|
||||
t.datetime "submitted_at"
|
||||
t.integer "page_collection_id", null: false
|
||||
t.datetime "created_at", precision: 6, null: false
|
||||
t.datetime "updated_at", precision: 6, null: false
|
||||
t.index ["content_type", "content_id"], name: "polycontent_collection_index"
|
||||
t.index ["page_collection_id"], name: "index_page_collection_submissions_on_page_collection_id"
|
||||
t.index ["user_id"], name: "index_page_collection_submissions_on_user_id"
|
||||
end
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user