/[Frey]/trunk/lib/Frey/Designer.pm
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/lib/Frey/Designer.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 166 - (hide annotations)
Mon Aug 11 19:32:29 2008 UTC (15 years, 9 months ago) by dpavlin
File size: 2551 byte(s)
added mirror attribute (false by default)
example of html modification with pQuery, but it destroys my html :-\
1 dpavlin 164 package Frey::Designer;
2    
3     use Moose;
4     use Moose::Util::TypeConstraints;
5    
6     use URI ();
7    
8     subtype 'Uri'
9     => as 'Object'
10     => where { $_->isa('URI') };
11    
12     coerce 'Uri'
13     => from 'Object'
14     => via { $_->isa('URI')
15     ? $_
16     : Params::Coerce::coerce( 'URI', $_ ) }
17     => from 'Str'
18     => via { URI->new( $_ ) };
19    
20     has 'uri' => (
21     is => 'rw',
22     isa => 'Uri',
23     coerce => 1,
24     required => 1,
25     );
26    
27 dpavlin 166 has 'mirror' => (
28     is => 'rw',
29     isa => 'Boolean',
30     );
31    
32 dpavlin 164 #use String::TT qw/strip tt/;
33    
34     use pQuery;
35     use File::Slurp;
36 dpavlin 166 use LWP::Simple ();
37 dpavlin 164 use File::Path;
38     use Data::Dump qw/dump/;
39    
40     sub template_path {
41     return 'templates/www.carnet.hr/' . shift;
42     }
43    
44     sub mirror_design {
45 dpavlin 166 my ( $self, $c, $path ) = @_;
46 dpavlin 164 return if -e $path;
47    
48 dpavlin 166 return unless $self->mirror;
49    
50     my $url = $self->uri . '/' . $c->req->path . '?' . $c->req->uri->query;
51    
52 dpavlin 164 my $base_path = $path;
53     $base_path =~ s{/[^/]+$}{};
54     mkpath $base_path if ! -e $base_path;
55    
56     warn ">> mirror $url -> $path\n";
57    
58 dpavlin 166 LWP::Simple::mirror( $url, $path ) or die "can't mirror $url: $!";
59 dpavlin 164 }
60    
61     sub handler {
62     my ( $self, $c ) = @_;
63    
64     my $req_dump = dump( $c->req );
65     my $raw = $c->req->raw_body;
66     my $body;
67    
68     my $path = template_path( $c->req->path );
69    
70     $path .= '.html' if $path !~ m/\.\w+$/;
71    
72     my $url = $self->uri;
73    
74 dpavlin 166 $self->mirror_design( $c, $path );
75 dpavlin 164
76     $body .= read_file( $path );
77    
78     if ( $path =~ m/\.css$/ ) {
79     $c->res->content_type( "text/css" );
80     } elsif ( $path =~ m/\.(gif|jpe?g|png)$/ ) {
81     my $type = $1;
82     $type =~ s/jpg/jpeg/;
83     $c->res->content_type( "image/$type" );
84     } else {
85     $c->res->content_type( "text/html" );
86    
87     # strip full hostname
88     $body =~ s{\Q$url\E}{/}gs;
89     # remove cookie variable from url
90     $body =~ s{CARNetweb=[0-9a-f]+}{}gs;
91    
92     my $dom = pQuery( $body );
93     # warn dump( $dom->find("body") );
94     $dom->find(".navigation")->each( sub {
95 dpavlin 166 my $html = $_->innerHTML;
96     warn $html;
97     # $_->innerHTML(qq{
98     # <div style="border: 3px dashed black;">$html</div>
99     # });
100 dpavlin 164 } );
101    
102 dpavlin 166 # $body = $dom->toHtml;
103    
104 dpavlin 164 }
105    
106 dpavlin 166 warn "<< ", $c->req->path,
107     " ", -s $path,
108     " ", $c->res->content_type,
109     " ", $c->req->params ? dump( $c->req->params ) : '',
110     "\n";
111 dpavlin 164
112     =for later
113    
114     $body .= strip tt q{
115     <form method="post">
116     <input type="text" name="id" />
117     <input type="submit" />
118     </form>
119    
120     <form method="post" enctype="multipart/form-data">
121     <input type="file" name="upload_file" />
122     <input type="submit" />
123     </form>
124    
125     <pre>[% raw | html %]</pre>
126     <pre>[% req_dump | html %]</pre>
127     };
128    
129     =cut
130    
131     $c->res->body($body);
132     }
133    
134     1;

  ViewVC Help
Powered by ViewVC 1.1.26