[Bio] / WebApplication / WebComponent.pm Repository:
ViewVC logotype

Annotation of /WebApplication/WebComponent.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (view) (download) (as text)

1 : paczian 1.1 package WebComponent;
2 :    
3 :     # WebComponent - abstract web component class
4 :    
5 :     # $Id$
6 :    
7 :     use strict;
8 :     use warnings;
9 :    
10 :     use Carp qw( confess );
11 :    
12 :    
13 :     =pod
14 :    
15 :     =head1 NAME
16 :    
17 :     WebComponent - abstract web component class
18 :    
19 :     =head1 DESCRIPTION
20 :    
21 :     This module is the abstract WebComponent class used by the web application
22 :     framework. A web component is a reusable page element inherited from this
23 :     class. Each component is assigned an unique id (to support javascript
24 :     operations on the components).
25 :    
26 :     Using a web component is done by requesting the component from the application,
27 :     then setting parameters as supported by the specific component and finally
28 :     returning the html output of the component.
29 :    
30 :     =head1 METHODS
31 :    
32 :     =over 4
33 :    
34 :     =item * B<new> (I<application>, I<id>)
35 :    
36 :     Creates a new instance of the WebComponent object. The constructor requires
37 :     a reference to the web application object and an (unique) id. Unique ids
38 :     are used to manipulate html elements by javascript.
39 :    
40 :     =cut
41 :    
42 :     sub new {
43 :     my ($class, $application, $id) = @_;
44 :    
45 :     # check application
46 :     unless (ref $application and $application->isa("WebApplication")) {
47 :     confess "Invalid application in __PACKAGE__ new.";
48 :     }
49 :    
50 :     $id = '' unless (defined $id);
51 :    
52 :     my $self = { 'application' => $application,
53 :     'id' => $id,
54 :     'css' => undef,
55 :     };
56 :     bless $self, $class;
57 :    
58 :     return $self;
59 :     }
60 :    
61 :    
62 :     =pod
63 :    
64 :     =item * B<application> ()
65 :    
66 :     Returns the reference to the application object
67 :    
68 :     =cut
69 :    
70 :     sub application {
71 :     return $_[0]->{'application'};
72 :     }
73 :    
74 :    
75 :     =pod
76 :    
77 :     =item * B<id> ()
78 :    
79 :     Returns the numerical id of the web component
80 :    
81 :     =cut
82 :    
83 :     sub id {
84 :     return $_[0]->{'id'};
85 :     }
86 :    
87 :    
88 :     =pod
89 :    
90 :     =item * B<get_trigger> (I<action_name>)
91 :    
92 :     Returns a unique cgi action param based on the I<action_name>.
93 :    
94 :     =cut
95 :    
96 :     sub get_trigger {
97 :     return 'wac_'.$_[0]->id.'_'.$_[1];
98 :     }
99 :    
100 :     =pod
101 :    
102 :     =item * B<require_javascript> ()
103 :    
104 :     Returns a reference to an array of javascript files to include into the
105 :     output page. By default the method returns the reference to an empty
106 :     array. Overload in inherited web components as needed.
107 :    
108 :     =cut
109 :    
110 :     sub require_javascript {
111 :     return [ ];
112 :     }
113 :    
114 :    
115 :     =pod
116 :    
117 :     =item * B<require_css> (I<css_file>)
118 :    
119 :     Returns the name of the css file to include into the the html of the web component.
120 :     If the optional parameter I<css_file> is given, the component will require that
121 :     css file instead of the default one.
122 :    
123 :     =cut
124 :    
125 :     sub require_css {
126 :     if ($_[1]) {
127 :     $_[0]->{'css'} = $_[1];
128 :     }
129 :     return $_[0]->{'css'};
130 :     }
131 :    
132 :    
133 :     =pod
134 :    
135 :     =item * B<output> ()
136 :    
137 :     Returns the html of the web component
138 :    
139 :     =cut
140 :    
141 :     sub output {
142 :     die "Abstract method 'output' must be implemented in __PACKAGE__.\n";
143 :     }
144 :    
145 :    
146 :     1;

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3