diff --git a/rhodecode/model/validation_schema/widgets.py b/rhodecode/model/validation_schema/widgets.py new file mode 100644 --- /dev/null +++ b/rhodecode/model/validation_schema/widgets.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- + +# Copyright (C) 2011-2017 RhodeCode GmbH +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License, version 3 +# (only), as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +# This program is dual-licensed. If you wish to learn more about the +# RhodeCode Enterprise Edition, including its added features, Support services, +# and proprietary license terms, please see https://rhodecode.com/licenses/ + +import logging + +import deform +import deform.widget + + +log = logging.getLogger(__name__) + + +class CodeMirrorWidget(deform.widget.TextAreaWidget): + template = 'codemirror' + requirements = (('deform', None), ('codemirror', None)) diff --git a/rhodecode/templates/forms/codemirror.pt b/rhodecode/templates/forms/codemirror.pt new file mode 100644 --- /dev/null +++ b/rhodecode/templates/forms/codemirror.pt @@ -0,0 +1,30 @@ +<div tal:define="rows rows|field.widget.rows; + cols cols|field.widget.cols; + css_class css_class|field.widget.css_class; + oid oid|field.oid; + name name|field.name; + style style|field.widget.style; + help_block help_block|field.widget.help_block|''; + codemirror_options codemirror_options|field.widget.codemirror_options|{}; + codemirror_mode codemirror_mode|field.widget.codemirror_mode|'' + "> + +<textarea tal:attributes="rows rows; + cols cols; + class string: form-control ${css_class or ''}; + style style" + id="${oid}" + name="${name}">${cstruct}</textarea> + +<p tal:condition="help_block" class="help-block">${help_block}</p> +<script type="text/javascript"> +deform.addCallback( + '${oid}', + function(oid) { + var myCodeMirror = initCodeMirror(oid, '', false, ${codemirror_options}); + setCodeMirrorMode(myCodeMirror, '${codemirror_mode}'); + } +); +</script> + +</div>