Select option added in editor config button to enable/disable autoclosetag in html mode

This commit is contained in:
robertop23
2013-10-11 22:31:22 -04:30
parent 4233383a98
commit 3744d9b71d
5 changed files with 29 additions and 19 deletions
+2 -2
View File
@@ -563,7 +563,7 @@ def edit():
# Load json only if it is ajax edited...
app = get_app(request.vars.app)
app_path = apath(app, r=request)
editor_defaults={'theme':'web2py', 'editor': 'default'}
editor_defaults={'theme':'web2py', 'editor': 'default', 'closetag': 'true'}
config = Config(os.path.join(request.folder, 'settings.cfg'),
section='editor', default_values=editor_defaults)
preferences = config.read()
@@ -589,7 +589,7 @@ def edit():
response.headers["web2py-component-flash"] = T('Preferences saved correctly')
else:
response.headers["web2py-component-flash"] = T('Preferences saved on session only')
response.headers["web2py-component-command"] = "update_theme('%s');update_editor('%s');jQuery('a[href=#editor_settings] button.close').click();" % (config.read()['theme'], config.read()['editor'])
response.headers["web2py-component-command"] = "update_editor('%s', '%s', '%s');jQuery('a[href=#editor_settings] button.close').click();" % (config.read()['theme'], config.read()['editor'], config.read()['closetag'])
return
else:
details = {'filename':'settings', 'id':'editor_settings', 'force': False}
+4
View File
@@ -1,6 +1,10 @@
[DEFAULT]
theme = web2py
closetag = true
editor = default
[editor]
theme = web2py
editor = default
closetag = true
+19 -16
View File
@@ -18,7 +18,6 @@
<link rel="stylesheet" href="{{=cm}}/lib/codemirror.css">
<link rel="stylesheet" href="{{='%s/theme/%s.css' % (cm, editor_settings['theme'])}}">
<script src="{{=cm}}/lib/codemirror.js"></script>
<script src="{{=cm}}/mode/clike/clike.js"></script>
<script src="{{=cm}}/addon/edit/matchbrackets.js"></script>
<script src="{{=cm}}/addon/edit/closetag.js"></script>
{{if editor_settings['editor'] != 'default':}}<script src="{{='%s/keymap/%s.js' % (cm, editor_settings['editor'])}}"></script>{{pass}}
@@ -45,6 +44,12 @@
<script type="text/javascript">
var current_theme = "{{=editor_settings['theme']}}"; //Default theme
var current_editor = "{{=editor_settings['editor']}}"; //Default editor
{{if editor_settings['closetag'] == 'true':}}
var current_closetag = true; //Default closetag
{{else:}}
var current_closetag = false; //Default closetag
{{pass}}
var current_font_incr = 0; // Default font-size, 0 means don't set
jQuery(document).on('shown click', 'a[data-toggle="tab"]', function (e) {
var tab_id = jQuery(this).attr('href');
@@ -97,23 +102,15 @@ jQuery(document).on('click', 'a.editor_filelink, a#editor_settingslink', functio
load_file(url);
});
function update_theme(name) {
var href = "{{="%s/theme/" % cm}}" + name + ".css";
function update_editor(editor_theme, editor_name, editor_closetag) {
var href = "{{="%s/theme/" % cm}}" + editor_theme + ".css";
var link = jQuery("<link>");
link.attr({
type: 'text/css',
rel: 'stylesheet',
href: href
});
jQuery("head").append( link );
jQuery('textarea[name="data"]') .each(function(id, ta) {
editor = jQuery(ta).data('editor');
editor.setOption("theme", name);
});
current_theme = name;
}
function update_editor(editor_name) {
jQuery("head").append( link );
if (editor_name !='default'){
var src = "{{='%s/keymap/' % cm}}" + editor_name + ".js";
//var src = "/admin/static/codemirror/keymap/" + editor_name + ".js";
@@ -122,13 +119,19 @@ function update_editor(editor_name) {
src: src
});
jQuery("head").append( script );
}
current_theme = editor_theme;
current_editor = editor_name;
switch (editor_closetag){
case 'true': current_closetag = true; break;
case 'false': current_closetag = false;
}
jQuery('textarea[name="data"]') .each(function(id, ta) {
editor = jQuery(ta).data('editor');
editor.setOption("keyMap", editor_name);
editor.setOption("theme", current_theme);
editor.setOption("keyMap", current_editor);
editor.setOption("autoCloseTags", current_closetag);
});
current_editor = editor_name;
}
// incr/decr editor font-size
@@ -139,7 +142,7 @@ jQuery(document).on('click', 'a.font_button', function (e) {
switch (id) {
case 'incr': new_incr = 2; break;
case 'decr': new_incr = -2; break;
case 'default': new_incr = 0; break;
case 'default': new_incr = 0;
}
jQuery('textarea[name="data"]').each(function(id, ta) {
editor = jQuery(ta).data('editor');
@@ -50,7 +50,7 @@
lineNumbers: true,
indentUnit: 4,
styleActiveLine: true,
autoCloseTags: true,
autoCloseTags: current_closetag,
theme: current_theme,
tabMode: "shift",
lineWrapping: true,
@@ -7,12 +7,15 @@
}}
{{themes = [f[:-4] for f in listfiles('admin', "static/codemirror/theme", regexp='.*\.css$' )]}}
{{editors = ['default', 'vim', 'emacs']}}
{{closetag = ['true', 'false']}}
<form id="editor_settings_form" class="form-horizontal">
<div class="control-group">
<label class="control-label" for="selectTheme">{{=T('Theme')}}</label>
<div class="controls">{{=SELECT(themes, value=editor_settings['theme'], _name="theme" )}}</div>
<label class="control-label" for="selectEditor">{{=T('Editor')}}</label>
<div class="controls">{{=SELECT(editors, value=editor_settings['editor'], _name="editor" )}}</div>
<label class="control-label" for="closeTag">{{=T('Enable Close-Tag')}}</label>
<div class="controls">{{=SELECT(closetag, value=editor_settings['closetag'], _name="closetag" )}}</div>
</div>
<div class="control-group">
<div class="controls"><button type="submit" class="disabled btn btn-primary">{{=T('Save')}}</button></div>