diff --git a/app/assets/javascripts/content.js b/app/assets/javascripts/content.js index a5e7dc4e..3068018f 100644 --- a/app/assets/javascripts/content.js +++ b/app/assets/javascripts/content.js @@ -77,9 +77,13 @@ $(document).ready(function () { toggle.attr('data-tooltip', 'Unfavorite this page'); } - $.ajax({ + post_url = (content_class == 'documents' + ? '/documents/' + content_id + '/toggle_favorite' + : "/plan/" + content_class + "/" + content_id + "/toggle_favorite"); + + $.ajax({ type: "POST", - url: "/plan/" + content_class + "/" + content_id + "/toggle_favorite", + url: post_url, data: { id: content_id }, success: function () { // console.log("success!"); diff --git a/app/controllers/documents_controller.rb b/app/controllers/documents_controller.rb index 690bb022..e2ee46bf 100644 --- a/app/controllers/documents_controller.rb +++ b/app/controllers/documents_controller.rb @@ -172,6 +172,17 @@ class DocumentsController < ApplicationController end end + def toggle_favorite + document = Document.with_deleted.find_or_initialize_by(id: params[:id]) + + unless document.updatable_by?(current_user) + flash[:notice] = "You don't have permission to edit that!" + return redirect_back fallback_location: document + end + + document.update!(favorite: !document.favorite) + end + def destroy if current_user.can_delete?(@document) @document.destroy diff --git a/app/views/content/list/_cards.html.erb b/app/views/content/list/_cards.html.erb index d76a71b4..17032215 100644 --- a/app/views/content/list/_cards.html.erb +++ b/app/views/content/list/_cards.html.erb @@ -27,10 +27,12 @@
<%= link_to edit_polymorphic_path(content), class: 'green-text right', target: content.is_a?(Document) ? '_new' : '_self' do %> - <%= content_type.icon %> Edit + <%= content_type.icon %> + Edit <% end %> <%= link_to polymorphic_path(content), class: 'blue-text text-lighten-1' do %> - <%= content_type.icon %> View + <%= content_type.icon %> + View <% end %>
diff --git a/config/routes.rb b/config/routes.rb index 9f391ff4..9023df68 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -27,9 +27,12 @@ Rails.application.routes.draw do get '/queue_analysis', to: 'documents#queue_analysis', on: :member post '/link_entity', to: 'documents#link_entity', on: :collection + post :toggle_favorite, on: :member + # todo these routes don't belong here and make for awfully weird urls (/documents/:analysis_id/destroy, etc) get '/destroy_analysis', to: 'documents#destroy_analysis', on: :member get '/destroy_entity', to: 'documents#destroy_document_entity', on: :member + end scope '/my' do diff --git a/db/migrate/20200128174509_add_favorite_flag_to_documents.rb b/db/migrate/20200128174509_add_favorite_flag_to_documents.rb new file mode 100644 index 00000000..35bc46a0 --- /dev/null +++ b/db/migrate/20200128174509_add_favorite_flag_to_documents.rb @@ -0,0 +1,5 @@ +class AddFavoriteFlagToDocuments < ActiveRecord::Migration[6.0] + def change + add_column :documents, :favorite, :boolean + end +end diff --git a/db/schema.rb b/db/schema.rb index da34e01f..d6883732 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2020_01_28_161646) do +ActiveRecord::Schema.define(version: 2020_01_28_174509) do create_table "active_storage_attachments", force: :cascade do |t| t.string "name", null: false @@ -914,6 +914,7 @@ ActiveRecord::Schema.define(version: 2020_01_28_161646) do t.text "synopsis" t.datetime "deleted_at" t.integer "universe_id" + t.boolean "favorite" t.index ["universe_id", "deleted_at"], name: "index_documents_on_universe_id_and_deleted_at" t.index ["universe_id"], name: "index_documents_on_universe_id" t.index ["user_id"], name: "index_documents_on_user_id"