mirror of
https://github.com/neocities/neocities.git
synced 2025-07-23 02:56:05 +02:00
Basic creation of initial site
This commit is contained in:
parent
0aaf894fa3
commit
5deb20e264
5 changed files with 54 additions and 3 deletions
42
app.rb
42
app.rb
|
@ -5,6 +5,24 @@ use Rack::Session::Cookie, key: 'neocities',
|
|||
expire_after: 31556926, # one year in seconds
|
||||
secret: $config['session_secret']
|
||||
|
||||
get %r{.+} do
|
||||
subname = request.host.match /[\w-]+/
|
||||
pass if subname.nil?
|
||||
subname = subname.to_s
|
||||
pass if subname == 'www' || subname == 'neocities' || subname == 'testneocities'
|
||||
|
||||
base_path = site_base_path subname
|
||||
path = File.join(base_path, (request.path =~ /\/$/ ? (request.path + 'index.html') : request.path))
|
||||
|
||||
if File.exist?(path)
|
||||
send_file path
|
||||
else
|
||||
send_file File.join(base_path, 'not_found.html')
|
||||
end
|
||||
|
||||
send_file path
|
||||
end
|
||||
|
||||
get '/' do
|
||||
dashboard_if_signed_in
|
||||
slim :index
|
||||
|
@ -28,8 +46,22 @@ end
|
|||
post '/create' do
|
||||
dashboard_if_signed_in
|
||||
@site = Site.new username: params[:username], password: params[:password], email: params[:email], new_tags: params[:tags]
|
||||
|
||||
if @site.valid?
|
||||
DB.transaction { @site.save }
|
||||
|
||||
base_path = site_base_path @site.username
|
||||
|
||||
DB.transaction {
|
||||
@site.save
|
||||
|
||||
begin
|
||||
FileUtils.mkdir base_path
|
||||
rescue Errno::EEXIST
|
||||
end
|
||||
|
||||
File.write File.join(base_path, 'index.html'), slim(:'templates/index', pretty: true, layout: false)
|
||||
File.write File.join(base_path, 'not_found.html'), slim(:'templates/not_found', pretty: true, layout: false)
|
||||
}
|
||||
|
||||
session[:id] = @site.id
|
||||
redirect '/dashboard'
|
||||
|
@ -70,4 +102,12 @@ end
|
|||
|
||||
def current_site
|
||||
@site ||= Site[id: session[:id]]
|
||||
end
|
||||
|
||||
def site_base_path(subname)
|
||||
File.join settings.public_folder, 'sites', subname
|
||||
end
|
||||
|
||||
def template_site_title(username)
|
||||
"#{username.capitalize}#{username[username.length-1] == 's' ? "'" : "'s"} Site"
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue