--- trunk/share/web/templates/sql.html 2006/12/03 00:12:25 12 +++ trunk/share/web/templates/sql 2007/01/21 12:19:58 45 @@ -1,10 +1,16 @@ <%args> -$page => 1 $sth => undef + +$sql_query => undef +$name => undef +$database => undef + +$max_rows => 100 + <%init> -my $action = Jifty->web->new_action( +my $execute_sql = Jifty->web->new_action( class => 'DoSQL', moniker => 'execute_sql', ); @@ -12,18 +18,65 @@ my $result = Jifty->web->response->result('execute_sql'); $sth = $result->content('sth') if $result and !defined $sth; +my $edit = Jifty->web->current_user->role('edit'); +warn $edit ? 'edit mode for SQL' : 'student mode'; + <&| /_elements/wrapper, title => "Try out SQL query" &> <% Jifty->web->form->start() %> -<% $action->form_field('sql_query') %> -<% $action->form_field('database') %> -<% Jifty->web->form->submit( label => 'Try it!' ) %> -<% Jifty->web->form->end() %> - +<% $execute_sql->form_field('sql_query', + default_value => $sql_query, + cols => 80, + rows => 12, +) %> +% if ( $edit ) { +<% $execute_sql->form_field('database', default_value => $database ) %> +% } else { + + +<% $execute_sql->hidden('database', $database ) %> + +% } +
+<% $execute_sql->button( label => 'Try it!' ) %> + % if ( defined($sth) ) { +% if ( $edit ) { + +% warn "save SQL: ", $execute_sql->argument_value('sql_query'); + +<% Jifty->web->link( + label => 'Save', + onclick => { + region => 'save_query', + replace_with => '/save', + args => { + sql_query => $execute_sql->argument_value('sql_query'), + database => $execute_sql->argument_value('database'), + }, + refresh_self => 1, + toggle => 1, + }, + as_button => 1, +) %> + +
+ +<% Jifty->web->region( + name => 'save_query', +) %> + +% } else { + + + +% } + +<% Jifty->web->form->end() %> + @@ -32,7 +85,9 @@ % } +% my $rows = 0; % while ( my @row = $sth->fetchrow_array() ) { +% last if (++$rows > $max_rows); % foreach my $v ( @row ) { @@ -42,4 +97,21 @@
<% defined($v) ? $v : 'NULL' %>
+% if ($sth->rows > $max_rows) { +
+Query produced more than <% $max_rows %> rows, try adding LIMIT and +OFFSET to see another part of results. +
+% } + +% } else { + + +<% Jifty->web->form->end() %> + % } + +<% Jifty->web->return( label => "Go back" ) %> + + +