/[SQLSession]/trunk/share/web/templates/sql
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /trunk/share/web/templates/sql

Parent Directory Parent Directory | Revision Log Revision Log


Revision 55 - (hide annotations)
Sun Jan 21 19:26:22 2007 UTC (17 years, 4 months ago) by dpavlin
File size: 2653 byte(s)
anonymous users can now only execute SQL queries, and not edit them.

1 dpavlin 9 <%args>
2     $sth => undef
3 dpavlin 20
4 dpavlin 21 $sql_query => undef
5     $name => undef
6     $database => undef
7 dpavlin 20
8 dpavlin 26 $max_rows => 100
9    
10 dpavlin 9 </%args>
11     <%init>
12    
13 dpavlin 27 my $execute_sql = Jifty->web->new_action(
14 dpavlin 9 class => 'DoSQL',
15     moniker => 'execute_sql',
16     );
17    
18     my $result = Jifty->web->response->result('execute_sql');
19     $sth = $result->content('sth') if $result and !defined $sth;
20    
21 dpavlin 45 my $edit = Jifty->web->current_user->role('edit');
22 dpavlin 29 warn $edit ? 'edit mode for SQL' : 'student mode';
23    
24 dpavlin 9 </%init>
25    
26     <&| /_elements/wrapper, title => "Try out SQL query" &>
27     <% Jifty->web->form->start() %>
28 dpavlin 55 % if ( Jifty->web->current_user->id ) {
29 dpavlin 27 <% $execute_sql->form_field('sql_query',
30 dpavlin 20 default_value => $sql_query,
31 dpavlin 29 cols => 80,
32 dpavlin 34 rows => 12,
33 dpavlin 20 ) %>
34 dpavlin 55 % } else {
35     <% $execute_sql->hidden('sql_query', $sql_query ) %>
36     <% $execute_sql->form_value('sql_query', default_value => $sql_query ) %>
37     % }
38 dpavlin 53
39     <div class="database-schema">
40     <%perl>
41     my $db = SQLSession::Model::Database->new();
42     $db->load_by_cols( id => $database );
43     my $name = $db->dsn;
44     $name =~ s/^.*dbname=//;
45     $m->out("<a href=\"/static/spy/$name/index.html\" target=\"_spy\">$name shema</a>");
46     </%perl>
47     </div>
48    
49 dpavlin 29 % if ( $edit ) {
50     <% $execute_sql->form_field('database', default_value => $database ) %>
51     % } else {
52    
53     <!-- hidden database -->
54     <% $execute_sql->hidden('database', $database ) %>
55 dpavlin 52 <% $execute_sql->form_value('database', default_value => $database ) %>
56 dpavlin 29
57     % }
58 dpavlin 53
59 dpavlin 20 <div class="submit_button">
60 dpavlin 27 <% $execute_sql->button( label => 'Try it!' ) %>
61 dpavlin 9
62 dpavlin 21
63 dpavlin 10 % if ( defined($sth) ) {
64    
65 dpavlin 29 % if ( $edit ) {
66    
67 dpavlin 27 % warn "save SQL: ", $execute_sql->argument_value('sql_query');
68    
69 dpavlin 21 <% Jifty->web->link(
70     label => 'Save',
71     onclick => {
72     region => 'save_query',
73 dpavlin 23 replace_with => '/save',
74 dpavlin 21 args => {
75 dpavlin 27 sql_query => $execute_sql->argument_value('sql_query'),
76     database => $execute_sql->argument_value('database'),
77 dpavlin 21 },
78     refresh_self => 1,
79     toggle => 1,
80     },
81 dpavlin 23 as_button => 1,
82 dpavlin 21 ) %>
83 dpavlin 20
84 dpavlin 29 </div><!-- submit_button edit -->
85 dpavlin 20
86 dpavlin 21 <% Jifty->web->region(
87     name => 'save_query',
88     ) %>
89    
90 dpavlin 29 % } else {
91 dpavlin 20
92 dpavlin 29 </div><!-- submit_button no edit -->
93    
94     % }
95    
96     <% Jifty->web->form->end() %>
97    
98 dpavlin 9 <table cellpadding="3" cellspacing="0" border="1">
99    
100     <tr>
101     % foreach my $col ( @{ $sth->{'NAME'} } ) {
102     <th><% $col %></th>
103     % }
104     </tr>
105    
106 dpavlin 26 % my $rows = 0;
107 dpavlin 9 % while ( my @row = $sth->fetchrow_array() ) {
108 dpavlin 26 % last if (++$rows > $max_rows);
109 dpavlin 9 <tr>
110     % foreach my $v ( @row ) {
111 dpavlin 12 <td><% defined($v) ? $v : 'NULL' %></td>
112 dpavlin 9 % }
113     </tr>
114     % }
115    
116     </table>
117 dpavlin 10
118 dpavlin 26 % if ($sth->rows > $max_rows) {
119     <div class="note">
120     Query produced more than <% $max_rows %> rows, try adding <tt>LIMIT</tt> and
121     <tt>OFFSET</tt> to see another part of results.
122     </div>
123     % }
124    
125 dpavlin 21 % } else {
126    
127 dpavlin 29 </div><!-- submit_button no query -->
128 dpavlin 21 <% Jifty->web->form->end() %>
129    
130 dpavlin 20 % }
131 dpavlin 14
132 dpavlin 20 <% Jifty->web->return( label => "Go back" ) %>
133 dpavlin 14
134     </&>
135    

  ViewVC Help
Powered by ViewVC 1.1.26