aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Reaction/UI/Skin.pm
diff options
context:
space:
mode:
authoromega <omega@03d0b0b2-0e1a-0410-a411-fdb2f4bd65d7>2008-06-22 18:50:25 +0000
committeromega <omega@03d0b0b2-0e1a-0410-a411-fdb2f4bd65d7>2008-06-22 18:50:25 +0000
commit888532d3340836e468a5572c44893f58e0202ed5 (patch)
treeefba09fcb270fd7c02712c9be12c8ee671500f34 /lib/Reaction/UI/Skin.pm
parent6f51eb8562a023cd9ddf6a2ad09f0f416673b079 (diff)
downloadreaction-888532d3340836e468a5572c44893f58e0202ed5.tar.gz
reaction-888532d3340836e468a5572c44893f58e0202ed5.zip
fix some merge problems
Diffstat (limited to 'lib/Reaction/UI/Skin.pm')
-rw-r--r--lib/Reaction/UI/Skin.pm24
1 files changed, 21 insertions, 3 deletions
diff --git a/lib/Reaction/UI/Skin.pm b/lib/Reaction/UI/Skin.pm
index a875366..42b3189 100644
--- a/lib/Reaction/UI/Skin.pm
+++ b/lib/Reaction/UI/Skin.pm
@@ -6,6 +6,7 @@ use Reaction::Class;
use Reaction::UI::LayoutSet;
use Reaction::UI::RenderingContext;
use File::ShareDir;
+use File::Basename;
use aliased 'Path::Class::Dir';
@@ -41,9 +42,26 @@ class Skin which {
my $skin_name = $self->name;
if ($skin_name =~ s!^/(.*?)/!!) {
my $dist = $1;
- $args->{skin_base_dir} =
- Dir->new(File::ShareDir::dist_dir($dist))
- ->subdir('skin');
+ $args->{skin_base_dir} = eval {
+ Dir->new(File::ShareDir::dist_dir($dist))
+ ->subdir('skin');
+ };
+ if ($@) {
+ # No installed Reaction
+ my $file = __FILE__;
+ my $dir = Dir->new(dirname($file));
+ my $skin_base;
+ while ($dir->parent) {
+ if (-d $dir->subdir('share') && -d $dir->subdir('share')->subdir('skin')) {
+ $skin_base = $dir->subdir('share')->subdir('skin');
+ last;
+ }
+ $dir = $dir->parent;
+ }
+ confess "could not find skinbase by recursion. ended up at $dir, from $file"
+ unless $skin_base;
+ $args->{skin_base_dir} = $skin_base;
+ }
}
my $base = $args->{skin_base_dir}->subdir($skin_name);
confess "No such skin base directory ${base}"