/[Frey]/trunk/lib/Frey/Web/IFrame.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

Diff of /trunk/lib/Frey/Web/IFrame.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 905 by dpavlin, Thu Dec 25 21:59:20 2008 UTC revision 910 by dpavlin, Fri Jan 2 17:14:15 2009 UTC
# Line 1  Line 1 
1  package Frey::Web::IFrame;  package Frey::Web::IFrame;
2  use Moose;  use Moose::Role;
3    
4  extends 'Frey';  sub iframe_html {
 with 'Frey::Web';  
 #with 'Frey::Storage';  
   
 has skeleton => (  
         is => 'rw',  
         isa => 'Str',  
         required => 1,  
         default => 'skeleton',  
 );  
   
 sub as_markup {  
5          my ($self) = @_;          my ($self) = @_;
6    
7          $self->add_js( 'static/Frey/Web/IFrame.js' );          $self->add_js(q`
   
         $self->add_js(q/  
8                  function ifr_close() {                  function ifr_close() {
9                          var e = self.document.getElementById('frey_iframe') || null;                          self.document.getElementById('ifr_target').style.display = 'none';
10                          if (!e) return;                          self.document.getElementById('ifr_close').style.display = 'none';
                         e.style.height = '0px';  
11                  }                  }
12                  function ifr_show() {                  function ifr_show() {
13                            self.document.getElementById('ifr_loading').style.display='';
14                    }
15                    function ifr_transfer(f) {
16                            self.document.getElementById('ifr_loading').style.display='none';
17                          self.document.getElementById('ifr_close').style.display='';                          self.document.getElementById('ifr_close').style.display='';
18                            if ( f.contentWindow.document.body ) {
19                                    var ifr_target = self.document.getElementById('ifr_target');
20                                    ifr_target.innerHTML = f.contentWindow.document.body.innerHTML;
21                                    f.contentWindow.document.body.innerHTML = ''; // XXX we can't just undef here!
22                                    ifr_target.style.display = '';
23                                    console.log( ifr_target );
24                            }
25                  }                  }
26          /);          `);
   
         my $html = qq|  
                 <a href="#" id="ifr_close" style="display:none;" onclick="ifr_close();this.style.display='none';return false;">close</a>  
                 <iframe id="frey_iframe" name="frey_iframe" width="100%" height="0" frameborder="0" border="0" onload="top.ifr_resize(this);">  
                 </iframe>  
         |;  
27    
28          $html .= $self->iframe_open('/Frey::Web::IFrame','introspect in iframe');          $self->add_css(q|
29                    #ifr_close {
30                            position: absolute;
31                            font-size: 50%;
32                            right: 0.5em;
33                            border: 1px solid #888;
34                            background: #fff;
35                            z-index: 10;
36                            opacity: .2;
37                            filter: alpha(opacity=20);
38                    }
39                    #ifr_close:hover {
40                            opacity: 1;
41                            filter: alpha(opacity=100);
42                    }
43            |);
44    
45          return $html;          return qq|
46            <div>
47                    <a href="#" id="ifr_close" style="display:none;" onclick="ifr_close();return false;" title="close iframe">X</a><span id="ifr_loading" style="display: none; background: #ff8;">Loading...</span>
48                    <!-- we really need src="#" here to avoid onload when page loads -->
49                    <iframe src="#" name="transport_iframe" id="transport_iframe" style="display: none;" frameborder=0 border=0 onload="ifr_transfer(this);"></iframe>
50                    <div id="ifr_target" style="display: none"></div>
51            </div>
52            |
53            ;
54  }  }
55    
56  sub iframe_open {  sub iframe_open {
57          my ($self,$url,$text) = @_;          my ($self,$url,$text) = @_;
58    
59          qq|          qq|
60                  <a href="$url" target="frey_iframe" onclick="ifr_show(); return true;">$text</a>                  <a href="$url" target="transport_iframe" onclick="ifr_show(); return true;">$text</a>
61          |          |
62  }  }
63    

Legend:
Removed from v.905  
changed lines
  Added in v.910

  ViewVC Help
Powered by ViewVC 1.1.26