[Bio] / SubsystemEditor / WebPage / ManageMetaSubsystems.pm Repository:
ViewVC logotype

Annotation of /SubsystemEditor/WebPage/ManageMetaSubsystems.pm

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : bartels 1.1 package SubsystemEditor::WebPage::ManageMetaSubsystems;
2 :    
3 :     use strict;
4 :     use warnings;
5 :     use URI::Escape;
6 :     use HTML;
7 :     use Data::Dumper;
8 :     use FIG;
9 :     use MetaSubsystem;
10 :    
11 :     use base qw( WebPage );
12 :    
13 :     1;
14 :    
15 :     ##################################################
16 :     # Method for registering components etc. for the #
17 :     # application #
18 :     ##################################################
19 :     sub init {
20 :     my ( $self ) = @_;
21 :    
22 :     $self->application->register_component( 'Table', 'retttable' );
23 :     $self->application->register_component( 'Info', 'CommentInfo');
24 :     }
25 :    
26 :     sub require_javascript {
27 :    
28 :     return [ './Html/showfunctionalroles.js' ];
29 :    
30 :     }
31 :    
32 :     ##############################################
33 :     # Website content is returned by this method #
34 :     ##############################################
35 :     sub output {
36 :     my ( $self ) = @_;
37 :    
38 :     $self->{ 'fig' } = $self->application->data_handle( 'FIG' );
39 :     $self->{ 'cgi' } = $self->application->cgi;
40 :    
41 :     $self->application->show_login_user_info(1);
42 :     $self->{ 'alleditable' } = $self->{ 'cgi' }->param( 'alleditable' );
43 :    
44 :     # look if someone is logged in and can write the subsystem #
45 :     $self->{ 'can_alter' } = 0;
46 :     $self->{ 'user' } = $self->application->session->user;
47 :     if ( $self->{ 'user' } ) {
48 :     $self->{ 'can_alter' } = 1;
49 :     }
50 :    
51 :     my $dbmaster = $self->application->dbmaster();
52 :     my $ppoapplication = $self->application->backend();
53 :    
54 :     # get a seeduser #
55 :     $self->{ 'seeduser' } = '';
56 :     if ( defined( $self->{ 'user' } ) && ref( $self->{ 'user' } ) ) {
57 :     my $preferences = $dbmaster->Preferences->get_objects( { user => $self->{ 'user' },
58 :     name => 'SeedUser',
59 :     application => $ppoapplication } );
60 :     if ( defined( $preferences->[0] ) ) {
61 :     $self->{ 'seeduser' } = $preferences->[0]->value();
62 :     }
63 :     $self->{ 'fig' }->set_user( $self->{ 'seeduser' } );
64 :     }
65 :     else {
66 :     $self->application->add_message( 'warning', "No user defined, please log in first\n" );
67 :     return "<H1>Manage my subsystems</H1>";
68 :     }
69 :    
70 :     my ( $comment, $error ) = ( "" );
71 :    
72 :    
73 :     #########
74 :     # TASKS #
75 :     #########
76 :    
77 :    
78 :     if ( defined( $self->{ 'cgi' }->param( 'buttonpressed' ) ) && $self->{ 'cgi' }->param( 'buttonpressed' ) eq 'DeleteMetaSubsystems' ) {
79 :     my @sstodelete = $self->{ 'cgi' }->param( 'subsystem_checkbox' );
80 :     foreach my $sstd ( @sstodelete ) {
81 :     if ( $sstd =~ /subsystem\_checkbox\_(.*)/ ) {
82 :     my $ss = $1;
83 :     $comment = $self->remove_metasubsystem( $ss );
84 :     }
85 :     }
86 :     }
87 :    
88 :     # spreadsheetbuttons #
89 :     my $actionbuttons = $self->get_spreadsheet_buttons();
90 :    
91 :     my $hiddenvalues;
92 :     $hiddenvalues->{ 'buttonpressed' } = 'none';
93 :     $hiddenvalues->{ 'alleditable' } = $self->{ 'alleditable' };
94 :    
95 :     my $content = "<H1>Manage my metasubsystems</H1>";
96 :    
97 :     if ( defined( $comment ) && $comment ne '' ) {
98 :     my $info_component = $self->application->component( 'CommentInfo' );
99 :    
100 :     $info_component->content( $comment );
101 :     $info_component->default( 0 );
102 :     $content .= $info_component->output();
103 :     }
104 :    
105 :     $content .= $self->start_form( 'manage', $hiddenvalues );
106 :    
107 :     my ( $sstable, $putcomment ) = $self->getMetaSubsystemTable();
108 :     $comment .= $putcomment;
109 :    
110 :     $content .= $actionbuttons;
111 :     $content .= $sstable;
112 :     $content .= $actionbuttons;
113 :    
114 :     $content .= $self->end_form();
115 :    
116 :     ###############################
117 :     # Display errors and comments #
118 :     ###############################
119 :    
120 :     if ( defined( $error ) && $error ne '' ) {
121 :     $self->application->add_message( 'warning', $error );
122 :     }
123 :    
124 :     return $content;
125 :     }
126 :    
127 :    
128 :     ####################################
129 :     # get the subsystem overview table #
130 :     ####################################
131 :     sub getMetaSubsystemTable {
132 :    
133 :     my ( $self ) = @_;
134 :    
135 :     my $comment = '';
136 :    
137 :     my $showright = defined( $self->{ 'cgi' }->param( 'SHOWRIGHT' ) );
138 :     my $showmine = defined( $self->{ 'cgi' }->param( 'SHOWMINE' ) );
139 :    
140 :     my $rettable;
141 :    
142 :     opendir( SSA, "$FIG_Config::data/MetaSubsystems" ) or die "Could not open $FIG_Config::data/MetaSubsystems";
143 :     my @sss = readdir( SSA );
144 :    
145 :     my $retcolumns = [ '',
146 :     { 'name' => 'Subsystem Name',
147 :     'width' => 300,
148 :     'sortable' => 1,
149 :     'filter' => 1 },
150 :     { 'name' => 'Subsystem Curator' }
151 :     ];
152 :    
153 :     my $retdata = [];
154 :     foreach ( @sss ) {
155 :     next if ( $_ =~ /^\./ );
156 :    
157 :     my $name = $_;
158 :    
159 :     my $esc_name = uri_escape($name);
160 :     my $owner = MetaSubsystem::get_curator_from_metaname( $name );
161 :    
162 :     if ( $self->{ 'alleditable' } && $self->{ 'user' }->has_right( $self->application, 'edit', 'metasubsystem', $name )
163 :     || $owner eq $self->{ 'seeduser' } ) {
164 :     $self->{ 'can_alter' } = 1;
165 :     $self->{ 'fig' }->set_user( $self->{ 'seeduser' } );
166 :     }
167 :     else {
168 :     next;
169 :     }
170 :    
171 :    
172 :     if ( defined( $name ) && $name ne '' && $name ne ' ' ) {
173 :    
174 :     my $ssname = $name;
175 :     $ssname =~ s/\_/ /g;
176 :    
177 :     if ( $name =~ /'/ ) {
178 :     $name =~ s/'/&#39/;
179 :     }
180 :    
181 :     my $esc_name = uri_escape($name);
182 :    
183 :     my $subsysurl = "SubsysEditor.cgi?page=MetaSpreadsheet&metasubsystem=$esc_name";
184 :    
185 :     my $subsystem_checkbox = $self->{ 'cgi' }->checkbox( -name => 'subsystem_checkbox',
186 :     -id => "subsystem_checkbox_$esc_name",
187 :     -value => "subsystem_checkbox_$esc_name",
188 :     -label => '',
189 :     -checked => 0,
190 :     -override => 1 );
191 :    
192 :     my $retrow = [ $subsystem_checkbox,
193 :     "<A HREF='$subsysurl'>$ssname</A>",
194 :     $owner ];
195 :     push @$retdata, $retrow;
196 :     }
197 :     }
198 :    
199 :     my $rettableobject = $self->application->component( 'retttable' );
200 :     $rettableobject->width( 900 );
201 :     $rettableobject->data( $retdata );
202 :     $rettableobject->columns( $retcolumns );
203 :     $rettable = $rettableobject->output();
204 :    
205 :     return ( $rettable, $comment );
206 :     }
207 :    
208 :     sub supported_rights {
209 :    
210 :     return [ [ 'login', '*', '*' ] ];
211 :    
212 :     }
213 :    
214 :     #################################
215 :     # Buttons under the spreadsheet #
216 :     #################################
217 :     sub get_spreadsheet_buttons {
218 :    
219 :     my ( $self ) = @_;
220 :    
221 :     my $delete_button = "<INPUT TYPE=HIDDEN VALUE=0 NAME='DeleteSS' ID='DeleteSS'>";
222 :     $delete_button .= "<INPUT TYPE=BUTTON VALUE='Delete selected metasubsystems' NAME='DeleteMetaSubsystems' ID='DeleteSubsystems' ONCLICK='if ( confirm( \"Do you really want to delete the selected metasubsystems?\" ) ) {
223 :     document.getElementById( \"DeleteSS\" ).value = 1;
224 :     SubmitManage( \"DeleteMetaSubsystems\", 0 ); }'>";
225 :    
226 :     my $spreadsheetbuttons = "<DIV id='controlpanel'><H2>Actions</H2>\n";
227 :     if ( $self->{ 'can_alter' } ) {
228 :     $spreadsheetbuttons .= "<TABLE><TR><TD$delete_button</TD></TR></TABLE><BR>";
229 :     }
230 :     $spreadsheetbuttons .= "</DIV>";
231 :     return $spreadsheetbuttons;
232 :     }
233 :    
234 :     #######################################
235 :     # Remove genomes from the spreadsheet #
236 :     #######################################
237 :     sub remove_metasubsystem {
238 :     my( $self, $metasubsystem ) = @_;
239 :    
240 :     my $name = $metasubsystem;
241 :     $name =~ s/\_/ /g;
242 :    
243 :     # my $cmd = "rm -rf '$FIG_Config::data/Subsystems/$subsystem'";
244 :     $self->{ 'fig' }->verify_dir( "$FIG_Config::data/MetaSubsystemsBACKUP" );
245 :     my $cmd = "mv '$FIG_Config::data/MetaSubsystems/$metasubsystem' '$FIG_Config::data/MetaSubsystemsBACKUP/$metasubsystem"."_".time."'";
246 :     my $rc = system $cmd;
247 :    
248 :     my $comment = "Deleted metasubsystem $name<BR>\n";
249 :    
250 :     return $comment;
251 :     }

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3