--- trunk/lib/Frey/Web.pm 2008/11/25 14:58:59 518
+++ trunk/lib/Frey/Web.pm 2008/11/26 00:45:52 524
@@ -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,23 @@
=cut
+our @status;
+sub status { @status };
+
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 +211,7 @@
my $right =
qq|
- $url
+ reload
$exit
|;
@@ -221,6 +220,8 @@
my $revision = Frey::SVK->info->{Revision} || '';
$revision = $1 if $info->{'Mirrored From'} =~ m{Rev\.\s+(\d+)};
+ $self->add_icon;
+
my $html = join("\n",
qq|
|,
$self->_head_html,
@@ -255,7 +256,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 +303,46 @@
sub add_status {
my ( $self, $data ) = @_;
- push @{ $self->status }, $data;
+ push @status, $data;
+}
+
+sub clean_status {
+ @status = ();
+}
+
+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;
+}
+
+sub add_icon {
+ my $self = shift;
+ my $icon = ref($self);
+ $icon = $self->class if $self->can('class');
+ $icon =~ s{::}{/}g;
+
+ my $icon_path = "static/icons/$icon.png";
+
+ if ( -e $icon_path ) {
+ $self->add_head( qq|| );
+ warn "# using icon $icon_path";
+
+ # 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 : $@";
+ }
+ $self->add_head( qq|| ) if -e $ico_path;
+
+ } else {
+ warn "can't find $icon_path";
+ }
}
1;