add back sunburst theme

This commit is contained in:
Kyle Drake 2024-10-08 20:48:45 -05:00
parent 8ad26817f1
commit e93e2f31a0
4 changed files with 152 additions and 20 deletions

View file

@ -312,10 +312,11 @@ post '/settings/change_editor_settings' do
owner = current_site.owner
owner.autocomplete_enabled = params[:autocomplete_enabled]
owner.editor_autocomplete_enabled = params[:editor_autocomplete_enabled]
owner.editor_font_size = params[:editor_font_size]
owner.keyboard_mode = params[:keyboard_mode]
owner.tab_width = params[:tab_width]
owner.editor_keyboard_mode = params[:editor_keyboard_mode]
owner.editor_tab_width = params[:editor_tab_width]
owner.editor_theme = params[:editor_theme]
owner.save_changes validate: false
flash[:success] = 'Code editor settings have been updated.'

View file

@ -13,4 +13,3 @@ Sequel.migration do
DB.drop_column :sites, :tab_width
}
end

View file

@ -0,0 +1,130 @@
ace.define("ace/theme/sunburst",["require","exports","module","ace/lib/dom"], function(require, exports, module) {/* ***** BEGIN LICENSE BLOCK *****
* Distributed under the BSD license:
*
* Copyright (c) 2010, Ajax.org B.V.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of Ajax.org B.V. nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* ***** END LICENSE BLOCK ***** */
exports.isDark = true;
exports.cssClass = "ace-sunburst";
exports.cssText = ".ace-sunburst .ace_gutter {\
background: #000000;\
color: rgb(124,124,124)\
}\
.ace-sunburst .ace_print-margin {\
width: 1px;\
background: #e8e8e8\
}\
.ace-sunburst {\
background-color: #000000;\
color: #F8F8F8\
}\
.ace-sunburst .ace_cursor {\
color: #A7A7A7\
}\
.ace-sunburst .ace_marker-layer .ace_selection {\
background: rgba(221, 240, 255, 0.20)\
}\
.ace-sunburst.ace_multiselect .ace_selection.ace_start {\
box-shadow: 0 0 3px 0px #000000;\
border-radius: 2px\
}\
.ace-sunburst .ace_marker-layer .ace_step {\
background: rgb(198, 219, 174)\
}\
.ace-sunburst .ace_marker-layer .ace_bracket {\
margin: -1px 0 0 -1px;\
border: 1px solid rgba(202, 226, 251, 0.24)\
}\
.ace-sunburst .ace_marker-layer .ace_active-line {\
background: rgba(255, 255, 255, 0.10)\
}\
.ace-sunburst .ace_gutter-active-line {\
background-color: rgba(255, 255, 255, 0.10)\
}\
.ace-sunburst .ace_marker-layer .ace_selected-word {\
border: 1px solid rgba(221, 240, 255, 0.20)\
}\
.ace-sunburst .ace_fold {\
background-color: #E28964;\
border-color: #F8F8F8\
}\
.ace-sunburst .ace_keyword {\
color: #E28964\
}\
.ace-sunburst .ace_constant {\
color: #3387CC\
}\
.ace-sunburst .ace_support {\
color: #9B859D\
}\
.ace-sunburst .ace_support.ace_function {\
color: #DAD085\
}\
.ace-sunburst .ace_support.ace_constant {\
color: #CF6A4C\
}\
.ace-sunburst .ace_storage {\
color: #99CF50\
}\
.ace-sunburst .ace_invalid.ace_illegal {\
color: #FD5FF1;\
background-color: rgba(86, 45, 86, 0.75)\
}\
.ace-sunburst .ace_invalid.ace_deprecated {\
text-decoration: underline;\
font-style: italic;\
color: #FD5FF1\
}\
.ace-sunburst .ace_string {\
color: #65B042\
}\
.ace-sunburst .ace_string.ace_regexp {\
color: #E9C062\
}\
.ace-sunburst .ace_comment {\
font-style: italic;\
color: #AEAEAE\
}\
.ace-sunburst .ace_variable {\
color: #3E87E3\
}\
.ace-sunburst .ace_meta.ace_tag {\
color: #89BDFF\
}\
.ace-sunburst .ace_markup.ace_heading {\
color: #FEDCC5;\
background-color: #632D04\
}\
.ace-sunburst .ace_markup.ace_list {\
color: #E1D4B9\
}";
var dom = require("../lib/dom");
dom.importCssString(exports.cssText, exports.cssClass);
});

View file

@ -148,9 +148,9 @@
<div class="modal-body">
<p>
Enable Code Suggestions:
<input name="autocomplete_enabled" type="hidden" value="false">
<input name="autocomplete_enabled" type="checkbox" value="true"
<% if current_site.owner.autocomplete_enabled %>
<input name="editor_autocomplete_enabled" type="hidden" value="false">
<input name="editor_autocomplete_enabled" type="checkbox" value="true"
<% if current_site.owner.editor_autocomplete_enabled %>
checked
<% end %>
>
@ -165,18 +165,18 @@
</p>
<p>
Tab Width:
<select name="tab_width">
<option value="2" <% if current_site.owner.tab_width == 2 %>selected<% end %>>Two Spaces</option>
<option value="4" <% if current_site.owner.tab_width == 4 %>selected<% end %>>Four Spaces</option>
<select name="editor_tab_width">
<option value="2" <% if current_site.owner.editor_tab_width == 2 %>selected<% end %>>Two Spaces</option>
<option value="4" <% if current_site.owner.editor_tab_width == 4 %>selected<% end %>>Four Spaces</option>
</select>
</p>
<p>
Keyboard Mode:
<select name="keyboard_mode">
<option value="0" <% if current_site.owner.keyboard_mode == 0 %>selected<% end %>>Default</option>
<option value="1" <% if current_site.owner.keyboard_mode == 1 %>selected<% end %>>Vim</option>
<option value="2" <% if current_site.owner.keyboard_mode == 2 %>selected<% end %>>Emacs</option>
<option value="3" <% if current_site.owner.keyboard_mode == 3 %>selected<% end %>>VsCode</option>
<select name="editor_keyboard_mode">
<option value="" <% if current_site.owner.editor_keyboard_mode == 0 %>selected<% end %>>Default</option>
<option value="vim" <% if current_site.owner.editor_keyboard_mode == 1 %>selected<% end %>>Vim</option>
<option value="emacs" <% if current_site.owner.editor_keyboard_mode == 2 %>selected<% end %>>Emacs</option>
<option value="vscode" <% if current_site.owner.editor_keyboard_mode == 3 %>selected<% end %>>VSCode</option>
</select>
</p>
</div>
@ -280,7 +280,7 @@
<% if @ace_mode %>
editor.getSession().setMode("ace/mode/<%= @ace_mode %>")
<% end %>
editor.getSession().setTabSize(<%= current_site.owner.tab_width %>)
editor.getSession().setTabSize(<%= current_site.owner.editor_tab_width %>)
editor.getSession().setUseWrapMode(true)
editor.setFontSize(<%= current_site.owner.editor_font_size %>)
editor.setShowPrintMargin(false)
@ -288,15 +288,17 @@
maxLines: Infinity,
autoScrollEditorIntoView: true,
// settings based options here
<% if current_site.owner.editor_autocomplete_enabled %>
enableBasicAutocompletion: true,
enableLiveAutocompletion: true,
<% end %>
enableSnippets: true,
})
<% if current_site.owner.keyboard_mode == 1%>
<% if current_site.owner.editor_keyboard_mode == 1%>
editor.setKeyboardHandler("ace/keyboard/vim");
<% elsif current_site.owner.keyboard_mode == 2%>
<% elsif current_site.owner.editor_keyboard_mode == 2%>
editor.setKeyboardHandler("ace/keyboard/emacs");
<% elsif current_site.owner.keyboard_mode == 3%>
<% elsif current_site.owner.editor_keyboard_mode == 3%>
editor.setKeyboardHandler("ace/keyboard/vscode");
<% end %>