'Highlight current line' & 'Display line numbers' options in admin editor

This commit is contained in:
ilvalle
2013-10-24 16:16:41 +02:00
parent 94ddb6c11f
commit 6599e08d32
4 changed files with 21 additions and 6 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', 'closetag': 'true', 'codefolding': 'false', 'tabwidth':'4', 'indentwithtabs':'false'}
editor_defaults={'theme':'web2py', 'editor': 'default', 'closetag': 'true', 'codefolding': 'false', 'tabwidth':'4', 'indentwithtabs':'false', 'linenumbers':'true', 'highlightline':'true'}
config = Config(os.path.join(request.folder, 'settings.cfg'),
section='editor', default_values=editor_defaults)
preferences = config.read()
@@ -586,7 +586,7 @@ def edit():
response.headers["web2py-component-command"] = "update_editor(%s);$('a[href=#editor_settings] button.close').click();" % response.json(config.read())
return
else:
details = {'filename':'settings', 'id':'editor_settings', 'force': False}
details = {'realfilename':'settings', 'filename':'settings', 'id':'editor_settings', 'force': False}
details['plain_html'] = response.render('default/editor_settings.html', {'editor_settings':preferences})
return response.json(details)
@@ -136,6 +136,13 @@ function update_editor(preferences) {
editor.setOption("indentUnit", parseInt(preferences.tabwidth));
editor.setOption("tabSize", parseInt(preferences.tabwidth));
editor.setOption("indentWithTabs", (preferences.indentwithtabs === 'true'));
if (preferences.linenumbers === 'true') {
gutters = editor.getOption("gutters");
gutters.splice(0, 0, 'CodeMirror-linenumbers');
editor.setOption("gutter", gutters);
}
editor.setOption("lineNumbers", (preferences.linenumbers === 'true'));
editor.setOption("styleActiveLine", (preferences.highlightline === 'true'));
});
}
@@ -47,11 +47,11 @@
{{else:}}
mode: { name: '{{=filetype}}'{{if filetype=='python':}},version: 2,singleLineStringErrors: false, {{pass}} },
{{pass}}
lineNumbers: true,
lineNumbers: {{=editor_settings['linenumbers']}},
indentUnit: {{=editor_settings['tabwidth']}},
indentWithTabs: {{=editor_settings['indentwithtabs']}},
tabSize: {{=editor_settings['tabwidth']}},
styleActiveLine: true,
styleActiveLine: {{=editor_settings['highlightline']}},
autoCloseTags: {{=editor_settings['closetag']}},
theme: "{{=editor_settings['theme']}}",
lineWrapping: true,
@@ -26,13 +26,21 @@
<div class="controls">{{=stateWidget("codefolding", value=editor_settings['codefolding'])}}</div>
</div>
<div class="control-group">
<label class="control-label" for="codefolding">{{=T('Tab width (# characters)')}}</label>
<label class="control-label" for="tabwidth">{{=T('Tab width (# characters)')}}</label>
<div class="controls">{{=SELECT(range(1,9, 1), value=editor_settings['tabwidth'], _name="tabwidth" )}}</div>
</div>
<div class="control-group">
<label class="control-label" for="codefolding">{{=T('Indent with tabs')}}</label>
<label class="control-label" for="indentwithtabs">{{=T('Indent with tabs')}}</label>
<div class="controls">{{=stateWidget("indentwithtabs", value=editor_settings['indentwithtabs'])}}</div>
</div>
<div class="control-group">
<label class="control-label" for="linenumbers">{{=T('Display line numbers')}}</label>
<div class="controls">{{=stateWidget("linenumbers", value=editor_settings['linenumbers'])}}</div>
</div>
<div class="control-group">
<label class="control-label" for="highlightline">{{=T('Highlight current line')}}</label>
<div class="controls">{{=stateWidget("highlightline", value=editor_settings['highlightline'])}}</div>
</div>
<div class="control-group">
<div class="controls"><button type="submit" class="disabled btn btn-primary">{{=T('Save')}}</button></div>
</div>