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
|
content_type :json
|
||||||
event = Event[id: event_id]
|
event = Event[id: event_id]
|
||||||
event.add_site_comment current_site, params[:message]
|
event.add_site_comment current_site, params[:message]
|
||||||
{result: 'ok'}.to_json
|
{result: 'success'}.to_json
|
||||||
end
|
end
|
||||||
|
|
||||||
post '/event/:event_id/update_profile_comment' do |event_id|
|
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
|
return {result: 'error'}.to_json unless current_site.id == event.profile_comment.actioning_site_id
|
||||||
|
|
||||||
event.profile_comment.update message: params[:message]
|
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
|
end
|
||||||
|
|
||||||
def require_admin
|
def require_admin
|
||||||
|
|
|
@ -12,6 +12,8 @@ require 'zip'
|
||||||
Bundler.require
|
Bundler.require
|
||||||
Bundler.require :development if ENV['RACK_ENV'] == 'development'
|
Bundler.require :development if ENV['RACK_ENV'] == 'development'
|
||||||
|
|
||||||
|
Dir['./ext/**/*.rb'].each {|f| require f}
|
||||||
|
|
||||||
if ENV['TRAVIS']
|
if ENV['TRAVIS']
|
||||||
$config = YAML.load_file File.join(DIR_ROOT, 'config.yml.travis')
|
$config = YAML.load_file File.join(DIR_ROOT, 'config.yml.travis')
|
||||||
else
|
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
|
# Session fix for Internet Fucking Explorer https://github.com/rkh/rack-protection/issues/11
|
||||||
Sinatra::Application.set :protection, except: :session_hijacking
|
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
|
class Event < Sequel::Model
|
||||||
|
include Sequel::ParanoidDelete
|
||||||
|
|
||||||
many_to_one :site
|
many_to_one :site
|
||||||
one_to_one :follow
|
one_to_one :follow
|
||||||
one_to_one :tip
|
one_to_one :tip
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
require 'tilt'
|
require 'tilt'
|
||||||
|
|
||||||
class Site < Sequel::Model
|
class Site < Sequel::Model
|
||||||
# We might need to include fonts in here..
|
include Sequel::ParanoidDelete
|
||||||
|
|
||||||
VALID_MIME_TYPES = %w{
|
VALID_MIME_TYPES = %w{
|
||||||
text/plain
|
text/plain
|
||||||
text/html
|
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/like.js"></script>
|
||||||
<script src="/assets/scripts/news/comment.js"></script>
|
<script src="/assets/scripts/news/comment.js"></script>
|
||||||
<script src="/assets/scripts/news/profile_comment.js"></script>
|
<script src="/assets/scripts/news/profile_comment.js"></script>
|
||||||
|
<script src="/assets/scripts/news/event.js"></script>
|
||||||
<% events.each do |event| %>
|
<% events.each do |event| %>
|
||||||
<% if event.profile_comment_id %>
|
<% if event.profile_comment_id %>
|
||||||
<div class="news-item comment for-me" id="event_<%= event.id %>">
|
<div class="news-item comment for-me" id="event_<%= event.id %>">
|
||||||
|
|
|
@ -16,6 +16,6 @@
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% if event.created_by?(current_site) || event.site_id == current_site.id %>
|
<% 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 %>
|
<% end %>
|
||||||
</div>
|
</div>
|
Loading…
Add table
Reference in a new issue