/[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

Contents of /trunk/lib/Frey/Designer.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 196 - (show annotations)
Tue Oct 28 19:34:10 2008 UTC (15 years, 6 months ago) by dpavlin
File size: 3010 byte(s)
resolve links in page to original content using HTML::ResolveLink
1 package Frey::Designer;
2 use Moose;
3
4 =head1 NAME
5
6 Frey::Designer - modify html (sometime in future)
7
8 =cut
9
10 use Frey::Types;
11 #use MooseX::Types::URI qw(Uri FileUri DataUri);
12
13 extends 'Frey';
14 with 'Frey::Web';
15
16 has 'uri' => (
17 is => 'rw',
18 isa => 'Uri', coerce => 1,
19 required => 1,
20 );
21
22 has 'mirror' => (
23 is => 'rw',
24 isa => 'Bool',
25 default => 1,
26 );
27
28 has 'resolve_links' => (
29 is => 'rw',
30 isa => 'Bool',
31 default => 1,
32 );
33
34 #use String::TT qw/strip tt/;
35
36 #use pQuery;
37 use HTML::Query;
38 use File::Slurp;
39 use LWP::Simple qw/get/;
40 use File::Path;
41 use Data::Dump qw/dump/;
42 use HTML::ResolveLink;
43
44 sub path {
45 my $self = shift;
46 my $path = 'templates/www.carnet.hr/' . $self->uri->path;
47 $path .= '.html' if $path !~ m/\.\w+$/;
48 return $path;
49 }
50
51 sub get_page {
52 my ( $self ) = @_;
53
54 my $path = $self->path;
55 my $body;
56
57 if ( ! -e $path && $self->mirror ) {
58
59 my $base_path = $path;
60 $base_path =~ s{/[^/]+$}{};
61 mkpath $base_path if ! -e $base_path;
62
63 my $url = $self->uri;
64 warn ">> mirror $url -> $path\n";
65
66 $body = get( $url ) or die "can't mirror $url: $!";
67
68 if ( $self->resolve_links ) {
69 my $resolver = HTML::ResolveLink->new( base => $url );
70 $body = $resolver->resolve( $body );
71 }
72
73 write_file( $path, $body );
74 warn "WW mirror $url -> $path ", -s $path, " bytes\n";
75
76 } else {
77 $body = read_file( $path );
78 }
79
80 warn "# $path ", -s $path, " == ", length($body), "bytes";
81 return $body;
82 }
83
84 sub html {
85 my ( $self, $req ) = @_;
86
87 my $body;
88
89 if ( $self->uri->path =~ m{/__bookmarklet} ) {
90 my $js = read_file( 'static/xpath.js' );
91 $js =~ s{//.*}{}gm; # remove comments so that compaction below doesn't screw code
92 $js =~ s/\s\s+/ /gs;
93 $req->print(qq{
94 Drag this <a href="javascript:void($js);">bookmarklet</a> to bookmark toolbar or menu to install XPATH inspector
95 });
96 return;
97 }
98
99 $body .= $self->get_page;
100
101 # strip full hostname
102 my $url = $self->uri;
103 $body =~ s{\Q$url\E}{/}gs;
104 # remove cookie variable from url
105 $body =~ s{CARNetweb=[0-9a-f]+}{}gs;
106
107 =for pQuery
108
109 my $dom = pQuery( $body );
110 # warn dump( $dom->find("body") );
111 $dom->find(".navigation")->each( sub {
112 my $html = $_->innerHTML;
113 warn $html;
114 # $_->innerHTML(qq{
115 # <div style="border: 3px dashed black;">$html</div>
116 # });
117 } );
118
119 # $body = $dom->toHtml;
120
121 =cut
122
123 my $dom = HTML::Query->new(
124 text => $body,
125 'body',
126 );
127 # warn dump( $dom->as_HTML );
128 # $body = $dom->as_HTML->[0];
129
130 warn "<< ", $self->uri,
131 " ", -s $self->path,
132 " ", $req->params ? dump( $req->params ) : '',
133 "\n";
134
135 =for later
136
137 $body .= strip tt q{
138 <form method="post">
139 <input type="text" name="id" />
140 <input type="submit" />
141 </form>
142
143 <form method="post" enctype="multipart/form-data">
144 <input type="file" name="upload_file" />
145 <input type="submit" />
146 </form>
147
148 <pre>[% raw | html %]</pre>
149 <pre>[% req_dump | html %]</pre>
150 };
151
152 =cut
153
154 warn $body;
155
156 $req->print( $self->page( title => $self->uri, body => $body ) );
157 }
158
159 1;

  ViewVC Help
Powered by ViewVC 1.1.26