mirror of
https://github.com/neocities/neocities.git
synced 2025-04-24 17:22:35 +02:00
event deleting
This commit is contained in:
parent
6277a94a5b
commit
a4a2b5165b
14 changed files with 105 additions and 31 deletions
17
app.rb
17
app.rb
|
@ -870,7 +870,7 @@ post '/event/:event_id/comment' do |event_id|
|
|||
content_type :json
|
||||
event = Event[id: event_id]
|
||||
event.add_site_comment current_site, params[:message]
|
||||
{result: 'ok'}.to_json
|
||||
{result: 'success'}.to_json
|
||||
end
|
||||
|
||||
post '/event/:event_id/update_profile_comment' do |event_id|
|
||||
|
@ -880,7 +880,20 @@ post '/event/:event_id/update_profile_comment' do |event_id|
|
|||
return {result: 'error'}.to_json unless current_site.id == event.profile_comment.actioning_site_id
|
||||
|
||||
event.profile_comment.update message: params[:message]
|
||||
return {result: 'ok'}.to_json
|
||||
return {result: 'success'}.to_json
|
||||
end
|
||||
|
||||
post '/event/:event_id/delete' do |event_id|
|
||||
require_login
|
||||
content_type :json
|
||||
event = Event[id: event_id]
|
||||
|
||||
if event.site_id == current_site.id || event.owned_by?(current_site)
|
||||
event.delete
|
||||
return {result: 'success'}.to_json
|
||||
end
|
||||
|
||||
return {result: 'error'}.to_json
|
||||
end
|
||||
|
||||
def require_admin
|
||||
|
|
|
@ -12,6 +12,8 @@ require 'zip'
|
|||
Bundler.require
|
||||
Bundler.require :development if ENV['RACK_ENV'] == 'development'
|
||||
|
||||
Dir['./ext/**/*.rb'].each {|f| require f}
|
||||
|
||||
if ENV['TRAVIS']
|
||||
$config = YAML.load_file File.join(DIR_ROOT, 'config.yml.travis')
|
||||
else
|
||||
|
@ -91,29 +93,3 @@ Sinatra::Application.set :erb, escape_html: true
|
|||
|
||||
# Session fix for Internet Fucking Explorer https://github.com/rkh/rack-protection/issues/11
|
||||
Sinatra::Application.set :protection, except: :session_hijacking
|
||||
|
||||
class Sinatra::Base
|
||||
alias_method :render_original, :render
|
||||
def render(engine, data, options = {}, locals = {}, &block)
|
||||
options.merge!(pretty: self.class.development?) if engine == :slim && options[:pretty].nil?
|
||||
render_original engine, data, options, locals, &block
|
||||
end
|
||||
end
|
||||
|
||||
class Numeric
|
||||
def roundup(nearest=10)
|
||||
self % nearest == 0 ? self : self + nearest - (self % nearest)
|
||||
end
|
||||
|
||||
def rounddown(nearest=10)
|
||||
self % nearest == 0 ? self : self - (self % nearest)
|
||||
end
|
||||
end
|
||||
|
||||
class Time
|
||||
alias_method :ago_original, :ago
|
||||
|
||||
def ago
|
||||
ago_original.downcase.gsub('right now, this very moment.', 'just now')
|
||||
end
|
||||
end
|
9
ext/numeric.rb
Normal file
9
ext/numeric.rb
Normal file
|
@ -0,0 +1,9 @@
|
|||
class Numeric
|
||||
def roundup(nearest=10)
|
||||
self % nearest == 0 ? self : self + nearest - (self % nearest)
|
||||
end
|
||||
|
||||
def rounddown(nearest=10)
|
||||
self % nearest == 0 ? self : self - (self % nearest)
|
||||
end
|
||||
end
|
32
ext/sequel/paranoid_delete.rb
Normal file
32
ext/sequel/paranoid_delete.rb
Normal file
|
@ -0,0 +1,32 @@
|
|||
module Sequel
|
||||
module ParanoidDelete
|
||||
|
||||
def self.included(base)
|
||||
base.extend(ClassMethods)
|
||||
end
|
||||
|
||||
# Instead of actually deleting, we just set is_deleted to true,
|
||||
# and look for it with our default dataset filter.
|
||||
def delete
|
||||
self.is_deleted = true
|
||||
save :validate => false
|
||||
true
|
||||
end
|
||||
|
||||
module ClassMethods
|
||||
|
||||
# There's no hook for setting default filters after inheritance (that I'm aware of),
|
||||
# so this adds the filter for the first time the class' dataset is accessed for the new model.
|
||||
def dataset
|
||||
if @_is_deleted_filter_set.nil?
|
||||
@dataset.filter! is_deleted: false
|
||||
@_is_deleted_filter_set = true
|
||||
end
|
||||
super
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
# Model.include ParanoidDelete
|
||||
end
|
7
ext/sinatra/base.rb
Normal file
7
ext/sinatra/base.rb
Normal file
|
@ -0,0 +1,7 @@
|
|||
class Sinatra::Base
|
||||
alias_method :render_original, :render
|
||||
def render(engine, data, options = {}, locals = {}, &block)
|
||||
options.merge!(pretty: self.class.development?) if engine == :slim && options[:pretty].nil?
|
||||
render_original engine, data, options, locals, &block
|
||||
end
|
||||
end
|
7
ext/time.rb
Normal file
7
ext/time.rb
Normal file
|
@ -0,0 +1,7 @@
|
|||
class Time
|
||||
alias_method :ago_original, :ago
|
||||
|
||||
def ago
|
||||
ago_original.downcase.gsub('right now, this very moment.', 'just now')
|
||||
end
|
||||
end
|
9
migrations/024_add_paranoid_site_delete.rb
Normal file
9
migrations/024_add_paranoid_site_delete.rb
Normal file
|
@ -0,0 +1,9 @@
|
|||
Sequel.migration do
|
||||
up {
|
||||
DB.add_column :sites, :is_deleted, :boolean, default: false
|
||||
}
|
||||
|
||||
down {
|
||||
DB.drop_column :sites, :is_deleted
|
||||
}
|
||||
end
|
9
migrations/025_add_event_paranoid_delete.rb
Normal file
9
migrations/025_add_event_paranoid_delete.rb
Normal file
|
@ -0,0 +1,9 @@
|
|||
Sequel.migration do
|
||||
up {
|
||||
DB.add_column :events, :is_deleted, :boolean, default: false
|
||||
}
|
||||
|
||||
down {
|
||||
DB.drop_column :events, :is_deleted
|
||||
}
|
||||
end
|
|
@ -1,4 +1,6 @@
|
|||
class Event < Sequel::Model
|
||||
include Sequel::ParanoidDelete
|
||||
|
||||
many_to_one :site
|
||||
one_to_one :follow
|
||||
one_to_one :tip
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
require 'tilt'
|
||||
|
||||
class Site < Sequel::Model
|
||||
# We might need to include fonts in here..
|
||||
include Sequel::ParanoidDelete
|
||||
|
||||
VALID_MIME_TYPES = %w{
|
||||
text/plain
|
||||
text/html
|
||||
|
|
7
public/assets/scripts/news/event.js
Normal file
7
public/assets/scripts/news/event.js
Normal file
|
@ -0,0 +1,7 @@
|
|||
var Event = {
|
||||
delete: function(eventId, csrfToken) {
|
||||
$.post('/event/'+eventId+'/delete', {csrf_token: csrfToken}, function(res) {
|
||||
location.reload()
|
||||
})
|
||||
}
|
||||
}
|
1
public/assets/scripts/underscore-min.map
Normal file
1
public/assets/scripts/underscore-min.map
Normal file
File diff suppressed because one or more lines are too long
|
@ -2,6 +2,7 @@
|
|||
<script src="/assets/scripts/news/like.js"></script>
|
||||
<script src="/assets/scripts/news/comment.js"></script>
|
||||
<script src="/assets/scripts/news/profile_comment.js"></script>
|
||||
<script src="/assets/scripts/news/event.js"></script>
|
||||
<% events.each do |event| %>
|
||||
<% if event.profile_comment_id %>
|
||||
<div class="news-item comment for-me" id="event_<%= event.id %>">
|
||||
|
|
|
@ -16,6 +16,6 @@
|
|||
<% end %>
|
||||
<% end %>
|
||||
<% if event.created_by?(current_site) || event.site_id == current_site.id %>
|
||||
<a href="#">Delete</a>
|
||||
<a href="#" onclick="Event.delete(<%= event.id %>, '<%= csrf_token %>'); return false">Delete</a>
|
||||
<% end %>
|
||||
</div>
|
Loading…
Add table
Reference in a new issue