diff --git a/etc/WebGUI.conf.original b/etc/WebGUI.conf.original index 1bbf87ecf..dc7f37aeb 100644 --- a/etc/WebGUI.conf.original +++ b/etc/WebGUI.conf.original @@ -1,3 +1,12 @@ +assets = WebGUI::Asset::File::Image, \ + WebGUI::Asset::File, \ + WebGUI::Asset::Redirect, \ + WebGUI::Asset::Wobject::Layout, \ + WebGUI::Asset::Wobject::USS, \ + WebGUI::Asset::Wobject::SyndicatedContent, \ + WebGUI::Asset::Wobject::Article, \ + WebGUI::Asset::FilePile + sitename = www.example.com, example.com dsn = DBI:mysql:www_example_com diff --git a/lib/WebGUI/Form.pm b/lib/WebGUI/Form.pm index 49d245aaf..fceeb927f 100644 --- a/lib/WebGUI/Form.pm +++ b/lib/WebGUI/Form.pm @@ -237,6 +237,15 @@ sub checkList { return $output; } + +sub codearea { + my $params = shift; + WebGUI::Style::setScript($session{config}{extrasURL}.'/TabFix.js',{type=>"text/javascript"}); + $params->{extras} = 'style="width: 99%; min-width: 440px; height: 400px" onkeypress="TabFix_keyPress(event.type)" onkeydown="TabFix_keyDown(event.type)"'; + my $output = textarea($params); + return $output; +} + #------------------------------------------------------------------- =head2 combo ( hashRef ) @@ -426,9 +435,9 @@ sub date { my $params = shift; my $value = epochToSet($params->{value}||$params->{defaultValue}) unless ($params->{noDate} && $params->{value} eq ''); my $size = $params->{size} || 10; - WebGUI::Style::setScript($session{config}{extrasURL}.'/calendar/calendar.js',{ language=>'javascript' }); - WebGUI::Style::setScript($session{config}{extrasURL}.'/calendar/lang/calendar-en.js',{ language=>'javascript' }); - WebGUI::Style::setScript($session{config}{extrasURL}.'/calendar/calendar-setup.js',{ language=>'javascript' }); + WebGUI::Style::setScript($session{config}{extrasURL}.'/calendar/calendar.js',{ type=>'text/javascript' }); + WebGUI::Style::setScript($session{config}{extrasURL}.'/calendar/lang/calendar-en.js',{ type=>'text/javascript' }); + WebGUI::Style::setScript($session{config}{extrasURL}.'/calendar/calendar-setup.js',{ type=>'text/javascript' }); WebGUI::Style::setLink($session{config}{extrasURL}.'/calendar/calendar-win2k-1.css', { rel=>"stylesheet", type=>"text/css", media=>"all" }); return text({ name=>$params->{name}, diff --git a/lib/WebGUI/HTMLForm.pm b/lib/WebGUI/HTMLForm.pm index 657de0c0f..ed04a7df5 100644 --- a/lib/WebGUI/HTMLForm.pm +++ b/lib/WebGUI/HTMLForm.pm @@ -405,6 +405,33 @@ sub checkList { $self->{_data} .= $output; } +sub codearea { + my ($output); + my ($self, @p) = @_; + my ($name, $label, $value, $subtext, $extras, $wrap, $rows, $columns, $uiLevel, $defaultValue) = + rearrange([qw(name label value subtext extras wrap rows columns uiLevel defaultValue)], @p); + if (_uiLevelChecksOut($uiLevel)) { + $output = WebGUI::Form::codearea({ + "name"=>$name, + "value"=>$value, + "wrap"=>$wrap, + "columns"=>$columns, + "rows"=>$rows, + "extras"=>$extras, + defaultValue =>$defaultValue + }); + $output .= _subtext($subtext); + $output = $self->_tableFormRow($label,$output); + } else { + $output = WebGUI::Form::hidden({ + "name"=>$name, + "value"=>$value, + defaultValue=>$defaultValue + }); + } + $self->{_data} .= $output; +} + #------------------------------------------------------------------- =head2 combo ( name, options [, label, value, size, multiple, extras, subtext, uiLevel, defaultValue ] ) diff --git a/lib/WebGUI/Operation/Template.pm b/lib/WebGUI/Operation/Template.pm index 9a60d461f..f74f0a21b 100644 --- a/lib/WebGUI/Operation/Template.pm +++ b/lib/WebGUI/Operation/Template.pm @@ -124,7 +124,7 @@ sub www_editTemplate { } $f->hidden("tid",$session{form}{tid}); $f->text("name",WebGUI::International::get(528),$template{name}); - $f->textarea( + $f->codearea( -name=>"template", -label=>WebGUI::International::get(504), -value=>$template{template}, diff --git a/www/extras/TabFix.js b/www/extras/TabFix.js new file mode 100644 index 000000000..04e8fa16b --- /dev/null +++ b/www/extras/TabFix.js @@ -0,0 +1,56 @@ + +function TabFix_keyDown(e) { + var dom = document.getElementById&&!document.all; + e=dom? e : event; + obj =dom? e.target : e.srcElement + + if (e.keyCode == 9 && obj.type && obj.type=="textarea") { + topScroll = obj.scrollTop; + leftScroll = obj.scrollLeft; + var position = TabFix_insertAtCursor(obj,'\t'); + + obj.focus(); + obj.selectionStart=position + 1 ; + obj.selectionEnd=position + 1; + obj.scrollTop = topScroll; + obj.scrollLeft = leftScroll; + return false; + } + return true; +} + +function TabFix_keyPress(e) { + var dom = document.getElementById&&!document.all; + e=dom? e : event; + if (e.keyCode == 9) { + return false; + } + return true; +} + +function TabFix_insertAtCursor(myField, myValue) { + //IE + if (document.selection) { + myField.focus(); + sel = document.selection.createRange(); + sel.text = myValue; + } + //MOZILLA + else if (myField.selectionStart || myField.selectionStart == '0') { + var startPos = myField.selectionStart; + var endPos = myField.selectionEnd; + myField.value = myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length); + return startPos; + } else { + myField.value += myValue; + } + return 0; +} + +/* +We'd uncomment the following lines if we wanted +to apply this to all text areas, which we don't + +document.onkeypress=TabFix_keyPress; +document.onkeydown=TabFix_keyDown; +*/