Skip to content

Commit 61a7e0e

Browse files
committed
Added the ability to do codemirror true on a text field and have a codemirror.js instances how up. Also added custom install location options for CKEDITOR
forgot to add in codemirror commits"
1 parent 8d7d7bc commit 61a7e0e

File tree

4 files changed

+64
-3
lines changed

4 files changed

+64
-3
lines changed

app/assets/javascripts/rails_admin/ra.widgets.coffee

+13-1
Original file line numberDiff line numberDiff line change
@@ -125,11 +125,23 @@ $(document).live 'rails_admin.dom_ready', ->
125125
# ckeditor
126126

127127
$('form [data-richtext=ckeditor]').not('.ckeditored').each ->
128-
window.CKEDITOR_BASEPATH = '/assets/ckeditor/'
129128
options = $(this).data('options')
129+
window.CKEDITOR_BASEPATH = options['base_location']
130130
if not window.CKEDITOR
131131
$(window.document).append('<script src="' + options['jspath'] + '"><\/script>')
132132
if instance = window.CKEDITOR.instances[this.id]
133133
instance.destroy(true)
134134
window.CKEDITOR.replace(this, options['options'])
135135
$(this).addClass('ckeditored')
136+
137+
#codemirror
138+
139+
$('form [data-richtext=codemirror]').not('.codemirrored').each ->
140+
options = $(this).data('options')
141+
if not window.CodeMirror
142+
$(window.document).append('<script src="' + options['jspath'] + '" type="text\/javascript"><\/script>')
143+
$('head').append('<script src="' + options['locations']['mode'] + '" type="text\/javascript"><\/script>')
144+
$('head').append('<link href="' + options['csspath'] + '" rel="stylesheet" media="all" type="text\/css">')
145+
$('head').append('<link href="' + options['locations']['theme'] + '" rel="stylesheet" media="all" type="text\/css">')
146+
CodeMirror.fromTextArea(this,{mode:options['options']['mode'],theme:options['options']['theme']})
147+
$(this).addClass('codemirrored')

app/assets/stylesheets/rails_admin/imports.css.scss.erb

-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
@import "bootstrap/grid";
3535
@import "bootstrap/layouts";
3636
@import "bootstrap/type";
37-
@import "bootstrap/code";
3837
@import "bootstrap/forms";
3938
@import "bootstrap/tables";
4039
@import "bootstrap/sprites";

app/views/rails_admin/main/_form_text.html.haml

+10-1
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,20 @@
22
if field.ckeditor
33
richtext = 'ckeditor'
44
js_data = {
5-
:jspath => '/assets/ckeditor/ckeditor.js',
5+
:jspath => field.ckeditor_location,
6+
:base_location => field.ckeditor_base_location,
67
:options => {
78
:customConfig => field.ckeditor_config_js
89
}
910
}
11+
elsif field.codemirror
12+
richtext = 'codemirror'
13+
js_data = {
14+
:csspath => field.codemirror_css_location,
15+
:jspath => field.codemirror_js_location,
16+
:options => field.codemirror_config,
17+
:locations => field.codemirror_assets
18+
}
1019
else
1120
richtext = false
1221
js_data = {}

lib/rails_admin/config/fields/types/text.rb

+41
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,47 @@ class Text < RailsAdmin::Config::Fields::Base
1919
"/assets/ckeditor/config.js"
2020
end
2121

22+
#Use this if you want to point to a cloud instances of CKeditor
23+
register_instance_option(:ckeditor_location) do
24+
'/assets/ckeditor/ckeditor.js'
25+
end
26+
27+
#Use this if you want to point to a cloud instances of the base CKeditor
28+
register_instance_option(:ckeditor_base_location) do
29+
'/assets/ckeditor/'
30+
end
31+
32+
# Codemirror is disabled by default and CKEditor takes precedence
33+
register_instance_option(:codemirror) do
34+
false
35+
end
36+
37+
#Pass the theme and mode for Codemirror
38+
register_instance_option(:codemirror_config) do
39+
{
40+
:mode => 'css',
41+
:theme => 'night'
42+
}
43+
end
44+
45+
#Pass the location of the theme and mode for Codemirror
46+
register_instance_option(:codemirror_assets) do
47+
{
48+
:mode => '/assets/codemirror/modes/css.js',
49+
:theme => '/assets/codemirror/themes/night.css'
50+
}
51+
end
52+
53+
#Use this if you want to point to a cloud instances of CodeMirror
54+
register_instance_option(:codemirror_js_location) do
55+
'/assets/codemirror.js'
56+
end
57+
58+
#Use this if you want to point to a cloud instances of CodeMirror
59+
register_instance_option(:codemirror_css_location) do
60+
'/assets/codemirror.css'
61+
end
62+
2263
register_instance_option(:html_attributes) do
2364
{
2465
:cols => "48",

0 commit comments

Comments
 (0)