From 44d785e222a04d3796204856afd577e3e0bf5a9f Mon Sep 17 00:00:00 2001 From: Kyle Drake Date: Mon, 3 Jun 2013 22:32:39 -0700 Subject: [PATCH] initial integration of text editor --- app.rb | 5 ++ public/css/styles.css | 4 ++ views/dashboard.slim | 2 +- views/layout.slim | 2 +- views/site_files/text_editor.slim | 83 +++++++++++++++++++++++++++++++ 5 files changed, 94 insertions(+), 2 deletions(-) create mode 100644 views/site_files/text_editor.slim diff --git a/app.rb b/app.rb index df309aba..78e85b99 100644 --- a/app.rb +++ b/app.rb @@ -148,6 +148,11 @@ post '/site_files/delete' do redirect '/dashboard' end +get '/site_files/text_editor/:filename' do |filename| + @file_url = "http://#{current_site.username}.neocities.org/#{filename}" + slim :'site_files/text_editor' +end + get '/terms' do slim :'terms' end diff --git a/public/css/styles.css b/public/css/styles.css index 66648d07..b896ff3f 100644 --- a/public/css/styles.css +++ b/public/css/styles.css @@ -17,4 +17,8 @@ textarea, input[type="text"], input[type="password"], input[type="datetime"], in #file_criteria li { padding-bottom: 20px; +} + +select, textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input { + color: #000000; } \ No newline at end of file diff --git a/views/dashboard.slim b/views/dashboard.slim index f91d056c..29101621 100644 --- a/views/dashboard.slim +++ b/views/dashboard.slim @@ -34,7 +34,7 @@ javascript: a href="#" Edit with visual editor not implemented yet.. ETA one week
span i class="icon-edit"    - a href="#" Edit with text editor not implemented yet.. ETA one day
+ a href="/site_files/text_editor/#{file.filename}" Edit with text editor not implemented yet.. ETA one day
span i class="icon-trash"    a href="#" onclick="confirmFileDelete('#{file.filename}')" Delete diff --git a/views/layout.slim b/views/layout.slim index 651ec080..50c3d700 100644 --- a/views/layout.slim +++ b/views/layout.slim @@ -9,6 +9,7 @@ html link href="/css/styles.css" rel="stylesheet" meta property="og:title" content="NeoCities" meta property="og:description" content="NeoCities is the new Geocities. Create your own free home page, and do whatever you want with it." + script src="/js/jquery.min.js" body a id="top" @@ -33,5 +34,4 @@ html container == yield - script src="/js/jquery.min.js" script src="/js/bootstrap.min.js" diff --git a/views/site_files/text_editor.slim b/views/site_files/text_editor.slim new file mode 100644 index 00000000..f1a614b3 --- /dev/null +++ b/views/site_files/text_editor.slim @@ -0,0 +1,83 @@ +css: + #editor { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + } + +.row + .span6 + font style="font-size: 27pt" Editing #{params[:filename]} + .span6 + span.pull-right + | Theme: + select id="theme" size="1" onchange="setTheme();" onkeyup="setTheme();" + optgroup label="Bright" + option value="ace/theme/chrome" Chrome + option value="ace/theme/clouds" Clouds + option value="ace/theme/crimson_editor" Crimson Editor + option value="ace/theme/dawn" Dawn + option value="ace/theme/dreamweaver" Dreamweaver + option value="ace/theme/eclipse" Eclipse + option value="ace/theme/github" GitHub + option value="ace/theme/solarized_light" Solarized Light + option value="ace/theme/textmate" TextMate + option value="ace/theme/tomorrow" Tomorrow + option value="ace/theme/xcode" XCode + optgroup label="Dark" + option value="ace/theme/ambiance" Ambiance + option value="ace/theme/chaos" Chaos + option value="ace/theme/clouds_midnight" Clouds Midnight + option value="ace/theme/cobalt" Cobalt + option value="ace/theme/idle_fingers" idleFingers + option value="ace/theme/kr_theme" krTheme + option value="ace/theme/merbivore" Merbivore + option value="ace/theme/merbivore_soft" Merbivore Soft + option value="ace/theme/mono_industrial" Mono Industrial + option value="ace/theme/monokai" Monokai + option value="ace/theme/pastel_on_dark" Pastel on dark + option value="ace/theme/solarized_dark" selected="selected" Solarized Dark + option value="ace/theme/terminal" Terminal + option value="ace/theme/tomorrow_night" Tomorrow Night + option value="ace/theme/tomorrow_night_blue" Tomorrow Night Blue + option value="ace/theme/tomorrow_night_bright" Tomorrow Night Bright + option value="ace/theme/tomorrow_night_eighties" Tomorrow Night 80s + option value="ace/theme/twilight" Twilight + option value="ace/theme/vibrant_ink" Vibrant Ink + +.row + .span12 + div id="editor" style="width: 100%; height: 1000px; position: relative;" + p Loading, please wait.. + +.row.text-center style="margin-top: 10px" + .span4 + a.btn.btn-large.btn-warning href="" Cancel + .span4 + a.btn.btn-large.btn-success href="" Save Changes + .span4 + a.btn.btn-large.btn-info href="" Save and Finish Editing + + +script src="http://rawgithub.com/ajaxorg/ace-builds/master/src-noconflict/ace.js" type="text/javascript" charset="utf-8" +javascript: + + function setTheme(name) { + editor.setTheme($('#theme').val()); + } + + var editor = {}; + + $(document).ready(function() { + $.get("#{@file_url}", function (response) { + $("#editor").text(response); + + editor = ace.edit("editor"); + setTheme(); + editor.getSession().setMode("ace/mode/html"); + editor.setFontSize(14); + editor.setShowPrintMargin(false); + }); + });