--- trunk/lib/Frey/Web.pm 2008/11/25 14:58:59 518
+++ trunk/lib/Frey/Web.pm 2008/11/26 02:35:59 527
@@ -20,16 +20,6 @@
default => sub { [ 'static/frey.css' ] },
);
-has 'status' => (
- is => 'rw',
- isa => 'ArrayRef[HashRef[Str]]',
- lazy => 1,
- default => sub { [
-# { 'ClassBrowser' => Frey::ClassBrowser->new( usage_on_top => 0 )->as_markup },
-# { 'Bookmarklets' => Frey::Bookmarklet->new->as_markup },
- ] },
-);
-
has 'request_url' => (
is => 'rw',
isa => 'Uri', coerce => 1,
@@ -149,14 +139,25 @@
=cut
+our @status;
+sub status { @status };
+
+our $icon_html;
+
sub page {
my $self = shift;
my $a = {@_};
+ warn "## page ",dump($a);
+
$reload_counter++;
my $status_line = '';
- foreach my $part ( @{ $self->status } ) {
+
+ unshift @status, { 'ClassBrowser' => Frey::ClassBrowser->new( usage_on_top => 0 )->as_markup };
+ unshift @status, { 'Bookmarklets' => Frey::Bookmarklet->new->as_markup };
+
+ foreach my $part ( @status ) {
foreach my $name ( keys %$part ) {
my $content = $part->{$name};
if ( ref($content) ) {
@@ -212,7 +213,7 @@
my $right =
qq|
- $url
+ reload
$exit
|;
@@ -221,11 +222,14 @@
my $revision = Frey::SVK->info->{Revision} || '';
$revision = $1 if $info->{'Mirrored From'} =~ m{Rev\.\s+(\d+)};
+ $self->add_icon unless $icon_html;
+
my $html = join("\n",
qq|
|,
$self->_head_html,
'' . ( $self->title || $a->{title} || ref($self) ) . '',
'',
+ ( $icon_html || '' ),
( $a->{head} || '' ),
qq|
@@ -255,7 +259,11 @@
sub editor {
my ( $self, $class, $line, $title ) = @_;
confess "need class" unless $class;
- $line ||= 1;
+ if ( ! defined $title ) {
+ $title = "edit $class";
+ $title .= " line $line" if $line;
+ }
+ $line ||= 1;
qq|$class|;
@@ -298,12 +306,59 @@
sub add_status {
my ( $self, $data ) = @_;
- push @{ $self->status }, $data;
+ push @status, $data;
+}
+
+sub clean_status {
+ @status = ();
+ $icon_html = '';
+}
+
+sub status_parts {
+ warn "## status parts ", dump( map { keys %$_ } @status );
}
sub DEMOLISH {
my ( $self ) = @_;
- cluck "## DEMOLISH status ", $#{ $self->status } + 1, " elements ", dump( map { keys %$_ } @{ $self->status } );
+ cluck "## DEMOLISH status ", $#status + 1, " elements ", dump( map { keys %$_ } @status ) if @status;
+}
+
+=head2 add_icon
+
+ Frey::Foo->add_icon; # /static/icons/Frey/Foo.png
+ Frey::Foo->add_icon('warning'); # /static/icons/Frey/Foo/warning.png
+
+=cut
+
+sub add_icon {
+ my ($self,$name) = @_;
+ my $icon = ref($self);
+ $icon = $self->class if $self->can('class');
+ $icon =~ s{::}{/}g;
+ $icon .= "/$name" if $name;
+
+ my $icon_path = "static/icons/$icon.png";
+
+ if ( -e $icon_path ) {
+ $icon_html .= qq||;
+ warn "# using icon $icon_path";
+
+=for later
+
+ # FIXME http://en.wikipedia.org/wiki/Favicon suggest just rel="icon" but that doesn't seem to work!
+ my $ico_path = $icon_path;
+ $ico_path =~ s{png$}{ico};
+ if ( ! -e $ico_path ) {
+ system "convert $icon_path $ico_path";
+ warn "# convert $icon_path $ico_path : $@";
+ }
+ $icon_html .= qq|| if -e $ico_path;
+
+=cut
+
+ } else {
+ warn "TODO add $icon_path icon";
+ }
}
1;