Remove the YUI based code editor from WebGUI, and replace it with a textarea. Fixes bug #1618, and others.

This commit is contained in:
Colin Kuskie 2010-10-05 14:44:53 -07:00
parent d93238d53c
commit f883d8b35f
5 changed files with 1 additions and 860 deletions

View file

@ -16,7 +16,6 @@ package WebGUI::Form::Codearea;
use strict;
use base 'WebGUI::Form::Textarea';
use HTML::Entities qw(encode_entities decode_entities);
use WebGUI::International;
=head1 NAME
@ -90,18 +89,6 @@ sub definition {
#-------------------------------------------------------------------
=head2 getDatabaseFieldType ( )
Returns "MEDIUMTEXT".
=cut
sub getDatabaseFieldType {
return "MEDIUMTEXT";
}
#-------------------------------------------------------------------
=head2 getName ( session )
Returns the human readable name of this control.
@ -113,95 +100,4 @@ sub getName {
return WebGUI::International->new($session, 'WebGUI')->get('codearea');
}
#-------------------------------------------------------------------
=head2 getValue ( [value] )
Return the value, HTML decoded
=cut
sub getValue {
my ( $self, @args ) = @_;
my $value = $self->SUPER::getValue( @args );
return decode_entities( $value );
}
#-------------------------------------------------------------------
=head2 headTags ( )
Set the head tags for this form plugin
=cut
sub headTags {
my $self = shift;
my ($style, $url) = $self->session->quick(qw(style url));
$style->setLink($url->extras("yui/build/resize/assets/skins/sam/resize.css"), {type=>"text/css", rel=>"stylesheet"});
$style->setLink($url->extras("yui/build/assets/skins/sam/skin.css"), {type=>"text/css", rel=>"stylesheet"});
$style->setScript($url->extras("yui/build/utilities/utilities.js"),{type=>"text/javascript"});
$style->setScript($url->extras("yui/build/container/container_core-min.js"),{type=>"text/javascript"});
$style->setScript($url->extras("yui/build/menu/menu-min.js"),{type=>"text/javascript"});
$style->setScript($url->extras("yui/build/button/button-min.js"),{type=>"text/javascript"});
$style->setScript($url->extras("yui/build/resize/resize-min.js"),{type=>"text/javascript"});
$style->setScript($url->extras("yui/build/editor/editor-min.js"),{type=>"text/javascript"});
$style->setScript($url->extras("yui-webgui/build/code-editor/code-editor.js"),{type=>"text/javascript"});
#$style->setLink($url->extras("yui/build/logger/assets/logger.css"), {type=>"text/css", rel=>"stylesheet"});
#$style->setLink($url->extras("yui/build/logger/assets/skins/sam/logger.css"), {type=>"text/css", rel=>"stylesheet"});
#$style->setScript($url->extras("yui/build/logger/logger.js"),{type=>"text/javascript"});
$self->SUPER::headTags();
}
#-------------------------------------------------------------------
=head2 isDynamicCompatible ( )
A class method that returns a boolean indicating whether this control is compatible with the DynamicField control.
=cut
sub isDynamicCompatible {
return 1;
}
#-------------------------------------------------------------------
=head2 toHtml ( )
Renders a code area field.
=cut
sub toHtml {
my $self = shift;
$self->headTags;
my $value = encode_entities( $self->fixMacros($self->fixTags($self->fixSpecialCharacters(scalar $self->getOriginalValue))) );
my $width = $self->get('width') || 400;
my $height = $self->get('height') || 150;
my $id = $self->get('id');
my $name = $self->get('name');
my $extras = $self->get('extras');
my $syntax = $self->get('syntax');
my $styleAttr = $self->get('style');
my $codeCss = $self->session->url->extras("yui-webgui/build/code-editor/code.css");
my $out = <<"END_HTML";
<textarea id="$id" name="$name" $extras rows="10" cols="60" style="font-family: monospace; $styleAttr; height: 100%; width: 100%; resize: none;">$value</textarea>
<script type="text/javascript">
(function(){
YAHOO.util.Event.onDOMReady( function () {
var myeditor = new YAHOO.widget.CodeEditor('${id}', { toggleButton: true, handleSubmit: true, css_url: '${codeCss}', height: '${height}px', width: '${width}px', status: true, resize: true });
myeditor.render();
//var myLogReader = new YAHOO.widget.LogReader();
} );
}());
</script>
END_HTML
return $out;
}
1;