*** /usr/src/eprints/eprints-2.2.1/perl_lib/EPrints/Database.pm Thu Nov 14 14:41:29 2002 --- /opt1/perl_lib/EPrints/Database.pm Tue Aug 5 13:47:35 2003 *************** *** 919,925 **** foreach $counter (@EPrints::Database::counters) { $sql = "INSERT INTO ".$counter_ds->get_sql_table_name()." ". ! "VALUES (\"$counter\", 0);"; $sth = $self->do( $sql ); --- 919,926 ---- foreach $counter (@EPrints::Database::counters) { $sql = "INSERT INTO ".$counter_ds->get_sql_table_name()." ". ! ###CSL "VALUES (\"$counter\", 0);"; ! "VALUES (\"$counter\", 1000);"; $sth = $self->do( $sql ); *** /usr/src/eprints/eprints-2.2.1/perl_lib/EPrints/DataSet.pm Thu Nov 14 14:41:29 2002 --- /opt1/perl_lib/EPrints/DataSet.pm Thu Sep 4 13:02:59 2003 *************** *** 1013,1018 **** --- 1013,1023 ---- { return 1; } + ##CSL ??? + if( $field->get_property( "required" ) eq "1" ) + { + return 1; + } foreach( @{$self->{typesreq}->{$type}} ) { *** /usr/src/eprints/eprints-2.2.1/perl_lib/EPrints/Document.pm Thu Nov 14 14:41:29 2002 --- /opt1/perl_lib/EPrints/Document.pm Wed Aug 27 15:50:16 2003 *************** *** 137,147 **** datasetid=>"document" }, { name=>"formatdesc", type=>"text" }, { name=>"language", type=>"datatype", required=>1, datasetid=>"language" }, ! { name=>"security", type=>"datatype", required=>1, datasetid=>"security" }, { name=>"main", type=>"text", required=>1 } --- 137,152 ---- datasetid=>"document" }, { name=>"formatdesc", type=>"text" }, + ##CSL + { name=>"upload_plain", type=>"file" }, + { name=>"upload_graburl", type=>"url" }, + ##CSL { name=>"uncompress", type=>"boolean" }, + ##CSL { name=>"link", type=>"boolean" }, { name=>"language", type=>"datatype", required=>1, datasetid=>"language" }, ! { name=>"security", type=>"datatype", datasetid=>"security" }, { name=>"main", type=>"text", required=>1 } *************** *** 865,871 **** ###################################################################### =pod ! =item $success = $doc->upload( $filehandle, $filename ) Upload the contents of the given file handle into this document as the given filename. --- 870,876 ---- ###################################################################### =pod ! =item $success = $doc->upload( $filehandle, $filename, $uncompress ) Upload the contents of the given file handle into this document as the given filename. *************** *** 875,902 **** sub upload { ! my( $self, $filehandle, $filename ) = @_; # Get the filename. File::Basename isn't flexible enough (setting # internal globals in reentrant code very dodgy.) my $file = $filename; - $file =~ s/.*\\//; # Remove everything before a "\" (MSDOS or Win) $file =~ s/.*\://; # Remove everything before a ":" (MSDOS or Win) $file =~ s/.*\///; # Remove everything before a "/" (UNIX) ! ! $file =~ s/ /_/g; # Change spaces into underscores my( $bytes, $buffer ); my $out_path = $self->local_path() . "/" . $file; open OUT, ">$out_path" or return( 0 ); while( $bytes = read( $filehandle, $buffer, 1024 ) ) { print OUT $buffer; } close OUT; $self->rehash; --- 880,927 ---- sub upload { ! my( $self, $filehandle, $filename, $uncompress ) = @_; # Get the filename. File::Basename isn't flexible enough (setting # internal globals in reentrant code very dodgy.) my $file = $filename; $file =~ s/.*\\//; # Remove everything before a "\" (MSDOS or Win) $file =~ s/.*\://; # Remove everything before a ":" (MSDOS or Win) $file =~ s/.*\///; # Remove everything before a "/" (UNIX) ! $file =~ s/[\x00-\x20\x7f-\xff]/_/g; ! $file =~ s/[\Q`"'\E]/?/g; my( $bytes, $buffer ); my $out_path = $self->local_path() . "/" . $file; + ##CSL #uncompress if said so... + if( defined $uncompress && $uncompress ) + { + $out_path = $self->local_path()."/".$$."xqrst"; + } + ## open OUT, ">$out_path" or return( 0 ); while( $bytes = read( $filehandle, $buffer, 1024 ) ) { print OUT $buffer; } close OUT; + ##CSL do not like files of size 0 + if( -z $out_path ) + { + unlink $out_path; + return( 0 ); + } + + if( defined $uncompress && $uncompress ) + { + $self->uncompress($file,$out_path) || return( 0 ); + } + ##CSL convert it to pdf + $file =~ s/\.[^\.]*$//; + $self->convert_to_pdf($file); + $self->set_main($file.".pdf") unless( defined $self->get_main() ); $self->rehash; *************** *** 922,932 **** { my( $self, $filehandle, $filename, $archive_format ) = @_; ! my( $file, $path ) = fileparse( $filename ); # Grab the archive into a temp file $self->upload( $filehandle, $file ) || return( 0 ); - # Get full paths of destination and archive my $dest = $self->local_path(); my $arc_tmp = $dest . "/" . $file; --- 947,962 ---- { my( $self, $filehandle, $filename, $archive_format ) = @_; ! ##CSL my( $file, $path ) = fileparse( $filename ); ! my $file = $filename; + $file =~ s/.*\\//; # remove everything before a backslash + $file =~ s/.*\://; # before colon + $file =~ s/.*\///; # before slash + $file =~ s/ /_/g; # change spaces to underscores + ## # Grab the archive into a temp file $self->upload( $filehandle, $file ) || return( 0 ); # Get full paths of destination and archive my $dest = $self->local_path(); my $arc_tmp = $dest . "/" . $file; *************** *** 949,955 **** ###################################################################### =pod ! =item $success = $doc->upload_url( $url ) Attempt to grab stuff from the given URL. Grabbing HTML stuff this way is always problematic, so (by default): only relative links will --- 979,985 ---- ###################################################################### =pod ! =item $success = $doc->upload_url( $url, $uncompress ) Attempt to grab stuff from the given URL. Grabbing HTML stuff this way is always problematic, so (by default): only relative links will *************** *** 964,970 **** sub upload_url { ! my( $self, $url_in ) = @_; # Use the URI heuristic module to attempt to get a valid URL, in case # users haven't entered the initial http://. --- 994,1000 ---- sub upload_url { ! my( $self, $url_in, $uncompress ) = @_; # Use the URI heuristic module to attempt to get a valid URL, in case # users haven't entered the initial http://. *************** *** 1003,1012 **** # with no trailing slash, an INCORRECT result from URI::Heuristic $cut_dirs = 0 if( $cut_dirs < 0 ); my $rc = $self->{session}->get_archive()->exec( "wget", CUTDIRS => $cut_dirs, ! URL => $url ); chdir $prev_dir; --- 1033,1045 ---- # with no trailing slash, an INCORRECT result from URI::Heuristic $cut_dirs = 0 if( $cut_dirs < 0 ); + my $file = $url; + #escape shell metacharacters + $file =~ s/([\Q&#!()|\E])/\\$1/g; my $rc = $self->{session}->get_archive()->exec( "wget", CUTDIRS => $cut_dirs, ! URL => $file ); chdir $prev_dir; *************** *** 1014,1033 **** return( 0 ) if ( $rc!=0 ); ! # Otherwise set the main file if appropriate ! if( !defined $self->get_main() || $self->get_main() eq "" ) ! { ! my $endfile = $url; ! $endfile =~ s/.*\///; ! $self->set_main( $endfile ); # If it's still undefined, try setting it to index.html or index.htm $self->set_main( "index.html" ) unless( defined $self->get_main() ); $self->set_main( "index.htm" ) unless( defined $self->get_main() ); # Those are our best guesses, best leave it to the user if still don't # have a main file. } $self->rehash; --- 1047,1126 ---- return( 0 ) if ( $rc!=0 ); ! my %allfiles = $self->files(); ! return( 0 ) if( scalar keys %allfiles == 0 ); ! ! $file = $url; $file =~ s/.*\///; $file =~ s/[\Q<+?&*`'>\E]//g; ! $file = (keys %allfiles)[0] if( scalar keys %allfiles == 1 ); + ##CSL # uncompress if said so... + if (defined $uncompress && $uncompress ) + { + if(defined $allfiles{$file} ) + { + my $tmpfile = $self->local_path()."/".$$."xtemp"; + rename $self->local_path()."/".$file , $tmpfile; + $self->uncompress( $file, $tmpfile ) || return( 0 ); + } + } + ## + ##CSL doc-->pdf + $file =~ s/\.[^\.]*$// ; # strip extension + $self->convert_to_pdf($file); + # Otherwise set the main file if appropriate + $self->set_main( $file.".pdf" ) unless( defined $self->get_main() ); + $file = $url; $file =~ s/.*\///; + $self->set_main( $file ) unless( defined $self->get_main() ); # If it's still undefined, try setting it to index.html or index.htm $self->set_main( "index.html" ) unless( defined $self->get_main() ); $self->set_main( "index.htm" ) unless( defined $self->get_main() ); # Those are our best guesses, best leave it to the user if still don't # have a main file. + + $self->rehash; + + return( 1 ); + } + + + ###################################################################### + =pod + + =item $success = $doc->upload_link( $url ) + + Stores the given URL as a link file in a nicely named filename. + + =cut + ###################################################################### + + sub upload_link + { + my( $self, $url_in ) = @_; + + # Use the URI heuristic module to attempt to get a valid URL, in case + # users haven't entered the initial http://. + $url_in =~ s/^\s+//s; $url_in =~ s/\s+$//s; + my $url = URI::Heuristic::uf_uristr( $url_in ); + + # check for syntax + return 0 if( $url !~ /^\w+:\/\/[^\.][\.\w]*\w(\/[<>\[\]\w\#\$\!+\-&\?%\@\~.,;:\/]*)?$/ ); + # make a filename + my $file=$url; + $file =~ s/.*\://; # before colon + $file =~ s/.*\///; # before slash + $file =~ s/[^\w].*$//g if( $file =~ /^\w/ ); + $file .= ".link"; # add extension + + my %allfiles = $self->files(); my $i=$$; + while( defined $allfiles{$file} ){ + $file = "L".$i.".link"; $i++; } + open OUT, ">".$self->local_path()."/".$file or return 0; + print OUT $url,"\n"; + close OUT; + + $self->set_main( $file ) unless( defined $self->get_main() ); $self->rehash; *************** *** 1192,1197 **** --- 1285,1362 ---- return $self->get_value( "format" ); } + + ###################################################################### + =pod + + =item $doc->uncompress ( $dest, $src ) + + Uncompress $file if it exists + + =cut + ###################################################################### + + sub uncompress + { + my( $self, $file, $tmpfile ) = @_; + # check if the file exists, and has appropriate extension + my $dest = $self->local_path(); + my $rc = 0; + if( $file =~ /\.zip$/i ){ #zip file + $rc = $self->{session}->get_archive()->exec( + "zip", + DIR => $dest, + ARC => $tmpfile ); + unlink $tmpfile; + } elsif ( $file =~ /\.t(ar\.)?gz$/ ) { #tgz file + $rc = $self->{session}->get_archive()->exec( + "targz", + DIR => $dest, + ARC => $tmpfile ); + unlink $tmpfile; + } elsif ( $file =~ /\.gz$/ ) { #gz file + $file =~ s/\.gz$//; + $rc = $self->{session}->get_archive()->exec( + "gzip", + DST => $dest."/".$file, + ARC => $tmpfile ); + unlink $tmpfile; + } else { ## move the file to its destination + rename $tmpfile,$dest."/".$file; + } + return $rc==0; + } + + + ###################################################################### + =pod + + =item $doc->convert_to_pdf ( $file ) + + Conver MSWord to PDF if appropriate. + + =cut + ###################################################################### + + sub convert_to_pdf + { + my( $self, $pdf) = @_; + # check if the file exists, and has appropriate extension + my $dest = $self->local_path(); + my $prev_dir = cwd(); + # Change directory to destination dir., return with failure if this + # fails. + unless( chdir $dest ) + { + chdir $prev_dir; + return; + } + $self->{session}->get_archive()->exec( + "doctopdf", + TARGET => $pdf ); + chdir $prev_dir; + } + ###################################################################### =pod *** /usr/src/eprints/eprints-2.2.1/perl_lib/EPrints/EPrint.pm Thu Nov 14 14:41:29 2002 --- /opt1/perl_lib/EPrints/EPrint.pm Wed Aug 27 15:14:05 2003 *************** *** 755,761 **** foreach $field (@req_fields) { # Check that the field is filled ! next if ( defined $self->get_value( $field->get_name() ) ); my $problem = $self->{session}->html_phrase( "lib/eprint:not_done_field" , --- 755,765 ---- foreach $field (@req_fields) { # Check that the field is filled ! my $value=$self->get_value( $field->get_name() ); ! ! next if( $field->get_property( "multiple" ) ? ! ( defined ($value) && scalar @{$value} > 0 ) : ! defined ($value) ); my $problem = $self->{session}->html_phrase( "lib/eprint:not_done_field" , *** /usr/src/eprints/eprints-2.2.1/perl_lib/EPrints/MetaField.pm Thu Nov 14 14:41:29 2002 --- /opt1/perl_lib/EPrints/MetaField.pm Thu Sep 18 18:15:41 2003 *************** *** 133,138 **** --- 133,140 ---- render_single_value => 1, render_value => 1, top => 1, + ##CSL + one_column => 1, type => -1 }; *************** *** 968,974 **** $labels = $ds->get_type_names( $session ); } if( ! !$self->get_property( "multiple" ) && !$req ) { # If it's not multiple and not required there --- 970,976 ---- $labels = $ds->get_type_names( $session ); } if( ! ## CSL !$self->get_property( "multiple" ) && !$req ) { # If it's not multiple and not required there *************** *** 1004,1014 **** if( $session->internal_button_pressed() ) { $boxcount = $session->param( $spacesid ); ! if( $session->internal_button_pressed( ! $self->{name}."_morespaces" ) ) ! { ! $boxcount += $self->{input_add_boxes}; ! } } my $i; --- 1006,1021 ---- if( $session->internal_button_pressed() ) { $boxcount = $session->param( $spacesid ); ! my $cnt = 0; ! $cnt=$self->{input_add_boxes} if($session->internal_button_pressed($self->{name}."_morespaces" )); ! $cnt=5 if($session->internal_button_pressed($self->{name}."_5morespaces" )); ! $cnt=10 if($session->internal_button_pressed($self->{name}."_10morespaces" )); ! $boxcount += $cnt; ! # if( $session->internal_button_pressed( ! # $self->{name}."_morespaces" ) ) ! # { ! # $boxcount += $self->{input_add_boxes}; ! # } } my $i; *************** *** 1032,1045 **** } $html->appendChild( $session->make_element( "input", ! "accept-charset" => "utf-8", type => "hidden", name => $spacesid, value => $boxcount ) ); $html->appendChild( $session->render_internal_buttons( $self->{name}."_morespaces" => $session->phrase( ! "lib/metafield:more_spaces" ) ) ); } else { --- 1039,1060 ---- } $html->appendChild( $session->make_element( "input", ! ## "accept-charset" => "utf-8", type => "hidden", name => $spacesid, value => $boxcount ) ); $html->appendChild( $session->render_internal_buttons( + _order=>[$self->{name}."_morespaces",$self->{name}."_5morespaces",$self->{name}."_10morespaces"], $self->{name}."_morespaces" => $session->phrase( ! "lib/metafield:more_spaces" ) , ! $self->{name}."_5morespaces" => ! $session->phrase( ! "lib/metafield:5more_spaces" ) , ! $self->{name}."_10morespaces" => ! $session->phrase( ! "lib/metafield:10more_spaces" ) ! ) ); } else { *************** *** 1572,1577 **** --- 1587,1604 ---- return $div; } + ##CSL + if( $self->is_type( "file" ) ) + { + my( $div , $textarea , $id ); + $id = $self->{name}.$suffix; + $div = $session->make_element( "div" ); + $div->appendChild( $session->make_element( + "input", + name => $id, + type => "file" ) ); + return $div; + } $session->get_archive()->log( "Don't know how to render input". "field of type: ".$self->get_type() ); *************** *** 1797,1807 **** { my $value = $session->param( $self->{name}.$suffix ); return undef if( $value eq "" ); if( ! !$self->is_type( "longtext" ) && ! $self->{input_style} eq "textarea" ) { ! $value=~s/[\n\r]+/ /gs; } return $value; } --- 1824,1835 ---- { my $value = $session->param( $self->{name}.$suffix ); return undef if( $value eq "" ); + $value =~ s/^\s+//s; $value =~ s/\s+$//s; if( ! !$self->is_type( "longtext" ) ) ! #### && $self->{input_style} eq "textarea" ) { ! $value=~s/[\n\r\s]+/ /gs; } return $value; } *************** *** 1851,1858 **** my $data = {}; foreach( "honourific", "given", "family", "lineage" ) { ! $data->{$_} = ! $session->param( $self->{name}.$suffix."_".$_ ); } if( EPrints::Utils::is_set( $data ) ) { --- 1879,1893 ---- my $data = {}; foreach( "honourific", "given", "family", "lineage" ) { ! my $val=$session->param( $self->{name}.$suffix."_".$_ ); ! if(defined $val) ! { ! $val=~s/^\s+//s; $val=~s/\s+$//s; ! $val=~s/[\n\r\s]+/ /gs; ! $data->{$_}=$val; ! } ! ## $data->{$_} = ! ## $session->param( $self->{name}.$suffix."_".$_ ); } if( EPrints::Utils::is_set( $data ) ) { *************** *** 2429,2434 **** --- 2464,2471 ---- return 0 if( $property eq "idpart" ); return 0 if( $property eq "mainpart" ); return 0 if( $property eq "id_editors_only" ); + ##CSL + return 0 if( $property eq "one_column" ); return 1 if( $property eq "export_as_xml" ); return 1 if( $property eq "can_clone" ); return 1 if( $property eq "sql_index" ); *** /usr/src/eprints/eprints-2.2.1/perl_lib/EPrints/SearchExpression.pm Thu Nov 14 14:41:29 2002 --- /opt1/perl_lib/EPrints/SearchExpression.pm Fri Aug 29 16:13:23 2003 *************** *** 139,145 **** { $self->{defaults} = {}; } ! # Array for the SearchField objects $self->{searchfields} = []; --- 139,151 ---- { $self->{defaults} = {}; } ! ##CSL ????????? Changed !!! ! if( !defined $self->{order} && defined $self->{dataset} ) ! { ! $self->{order} = $self->{session}->get_archive->get_conf("default_order", ! $self->{dataset}->confid); ! } ! ## # Array for the SearchField objects $self->{searchfields} = []; *************** *** 350,377 **** my( $self, $help ) = @_; my $frag = $self->{session}->make_doc_fragment; ! my %shown_help; foreach ( @{$self->{allfields}} ) { my $sf = $self->get_searchfield( $_ ); my $div = $self->{session}->make_element( "div" , class => "searchfieldname" ); $div->appendChild( $self->{session}->make_text( $sf->get_display_name ) ); ! $frag->appendChild( $div ); ! my $shelp = $sf->get_help(); ! if( $help && !defined $shown_help{$shelp} ) ! { $div = $self->{session}->make_element( "div" , class => "searchfieldhelp" ); ! $div->appendChild( $self->{session}->make_text( $shelp ) ); ! $frag->appendChild( $div ); ! #$shown_help{$shelp}=1; } - $div = $self->{session}->make_element( "div" , class => "searchfieldinput" ); --- 356,405 ---- my( $self, $help ) = @_; my $frag = $self->{session}->make_doc_fragment; + ##CSL + my $table=$self->{session}->make_element("table", + border=>"1", cellspacing=>"5", cellpadding=>"5" ); + $frag->appendChild( $table ); + my $colgroup=$self->{session}->make_element("colgroup"); + $table->appendChild($colgroup); + $colgroup->appendChild($self->{session}->make_element("col", + width=>"60%") ); + $colgroup->appendChild($self->{session}->make_element("col", + width=>"40%") ); ! ## my %shown_help; foreach ( @{$self->{allfields}} ) { my $sf = $self->get_searchfield( $_ ); + my $tr=$self->{session}->make_element("tr"); + $table->appendChild($tr); + my $td=$self->{session}->make_element("td", valign=>"top"); + $tr->appendChild($td); my $div = $self->{session}->make_element( "div" , class => "searchfieldname" ); $div->appendChild( $self->{session}->make_text( $sf->get_display_name ) ); ! $td->appendChild( $div ); ! if( $help ){ $div = $self->{session}->make_element( "div" , class => "searchfieldhelp" ); ! $div->appendChild( $self->{session}->make_text( ! $sf->get_help() ) ); ! $td->appendChild($div); ! } ! if( $sf->{field}->get_property( "one_column" ) ) ! { ! $td->setAttribute("colspan","2"); ! $tr=$self->{session}->make_element("tr"); ! $table->appendChild($tr); ! $td=$self->{session}->make_element("td",colspan=>"2", align=>"right"); ! $tr->appendChild($td); ! } else { ! $td=$self->{session}->make_element("td"); ! $tr->appendChild($td); } $div = $self->{session}->make_element( "div" , class => "searchfieldinput" ); *************** *** 375,381 **** $div = $self->{session}->make_element( "div" , class => "searchfieldinput" ); ! $frag->appendChild( $sf->render() ); } return $frag; --- 403,431 ---- $div = $self->{session}->make_element( "div" , class => "searchfieldinput" ); ! $div->appendChild( $sf->render() ); ! $td->appendChild($div); ! ## my $div = $self->{session}->make_element( ! ## "div" , ! ## class => "searchfieldname" ); ! ## $div->appendChild( $self->{session}->make_text( ! ## $sf->get_display_name ) ); ! ## $frag->appendChild( $div ); ! ## my $shelp = $sf->get_help(); ! ## if( $help && !defined $shown_help{$shelp} ) ! ## { ! ## $div = $self->{session}->make_element( ! ## "div" , ! ## class => "searchfieldhelp" ); ! ## $div->appendChild( $self->{session}->make_text( $shelp ) ); ! ## $frag->appendChild( $div ); ! ## #$shown_help{$shelp}=1; ! ## } ! ## ! ## $div = $self->{session}->make_element( ! ## "div" , ! ## class => "searchfieldinput" ); ! ## $frag->appendChild( $sf->render() ); } return $frag; *************** *** 398,403 **** --- 448,455 ---- my $form = $self->{session}->render_form( "get" ); $form->appendChild( $self->render_search_fields( $help ) ); + ##CSL + $form->appendChild( $self->{session}->make_element("br") ); my $div; my $menu; *************** *** 407,413 **** $menu = $self->{session}->render_option_list( name=>$self->{prefix}."_satisfyall", values=>[ "ALL", "ANY" ], ! default=>( defined $self->{satisfy_all} && $self->{satisfy_all}==0 ? "ANY" : "ALL" ), labels=>{ "ALL" => $self->{session}->phrase( "lib/searchexpression:all" ), "ANY" => $self->{session}->phrase( "lib/searchexpression:any" )} ); --- 459,465 ---- $menu = $self->{session}->render_option_list( name=>$self->{prefix}."_satisfyall", values=>[ "ALL", "ANY" ], ! default=>( defined $self->{satisfy_all} && !$self->{satisfy_all} ? "ANY" : "ALL" ), labels=>{ "ALL" => $self->{session}->phrase( "lib/searchexpression:all" ), "ANY" => $self->{session}->phrase( "lib/searchexpression:any" )} ); *************** *** 573,579 **** foreach( @{$self->{searchfields}} ) { my $search_field = $self->get_searchfield( $_ ); ! return 0 if( defined $search_field->get_value() ); } return 1; } --- 625,634 ---- foreach( @{$self->{searchfields}} ) { my $search_field = $self->get_searchfield( $_ ); ! ###CSL return 0 if( defined $search_field->get_value() ); ! if( EPrints::Utils::is_set( $search_field->get_value() )){ ! return 0; ! } } return 1; } *************** *** 1112,1118 **** sub process_webpage { ! my( $self, $title, $preamble ) = @_; my $pagesize = $self->{session}->get_archive()->get_conf( "results_page_size" ); --- 1166,1172 ---- sub process_webpage { ! my( $self, $title, $preamble, $showall ) = @_; my $pagesize = $self->{session}->get_archive()->get_conf( "results_page_size" ); *************** *** 1302,1309 **** # Just print the form... my $page = $self->{session}->make_doc_fragment(); $page->appendChild( $preamble ); ! $page->appendChild( $self->render_search_form( 1 , 1 ) ); $self->{session}->build_page( $title, $page, "search_form" ); $self->{session}->send_page(); --- 1356,1364 ---- # Just print the form... my $page = $self->{session}->make_doc_fragment(); + $showall = 1 if(! defined $showall); $page->appendChild( $preamble ); ! $page->appendChild( $self->render_search_form( 1 , $showall ) ); $self->{session}->build_page( $title, $page, "search_form" ); $self->{session}->send_page(); *** /usr/src/eprints/eprints-2.2.1/perl_lib/EPrints/SearchField.pm Thu Nov 14 14:41:29 2002 --- /opt1/perl_lib/EPrints/SearchField.pm Mon Sep 1 16:09:24 2003 *************** *** 135,141 **** exit; } push @fieldnames, $_->get_sql_name(); ! push @display_names, $_->display_name( $self->{session} ); } $prefix = "" unless defined $prefix; --- 135,142 ---- exit; } push @fieldnames, $_->get_sql_name(); ! ## push @display_names, $_->display_name( $self->{session} ); ! push @display_names, $_->get_name(); } $prefix = "" unless defined $prefix; *************** *** 144,149 **** --- 145,151 ---- $self->{id} = join '/', sort @fieldnames; $self->{form_name_prefix} = $prefix.$self->{id}; $self->{field} = $fields->[0]; + $self->{confid} = $self->{field}->{confid}; if( $self->{field}->get_property( "hasid" ) ) { *************** *** 944,950 **** value => $self->{value}, size => $self->{field}->get_property( "search_cols" ), maxlength => 256 ) ); ! $frag->appendChild( $self->{session}->make_text(" ") ); $frag->appendChild( $self->{session}->render_option_list( name=>$self->{form_name_prefix}."_srchtype", --- 947,954 ---- value => $self->{value}, size => $self->{field}->get_property( "search_cols" ), maxlength => 256 ) ); ! ## $frag->appendChild( $self->{session}->make_text(" ") ); ! $frag->appendChild( $self->{session}->make_element("br") ); $frag->appendChild( $self->{session}->render_option_list( name=>$self->{form_name_prefix}."_srchtype", *************** *** 1014,1020 **** if( $self->{field}->get_property( "multiple" ) ) { ! $frag->appendChild( $self->{session}->make_text(" ") ); $frag->appendChild( $self->{session}->render_option_list( name=>$self->{form_name_prefix}."_self->{merge}", --- 1018,1025 ---- if( $self->{field}->get_property( "multiple" ) ) { ! ## $frag->appendChild( $self->{session}->make_text(" ") ); ! $frag->appendChild( $self->{session}->make_element("br") ); $frag->appendChild( $self->{session}->render_option_list( name=>$self->{form_name_prefix}."_self->{merge}", *************** *** 1207,1213 **** $frag->appendChild( $self->{session}->html_phrase( $phraseid, ! name => $self->{session}->make_text( $self->{display_name} ), value => $valuedesc ) ); ###int,year, --- 1212,1218 ---- $frag->appendChild( $self->{session}->html_phrase( $phraseid, ! name => $self->{session}->make_text($self->get_display_name), value => $valuedesc ) ); ###int,year, *************** *** 1232,1238 **** { my( $self ) = @_; ! return $self->{session}->phrase( "lib/searchfield:help_".$self->{field}->get_type() ); } --- 1237,1244 ---- { my( $self ) = @_; ! ## return $self->{session}->phrase( "lib/searchfield:help_".$self->{field}->get_type() ); ! return $self->{session}->phrase($self->{confid}."_searchhelp_".$self->{display_name} ); } *************** *** 1266,1272 **** sub get_display_name { my( $self ) = @_; ! return $self->{display_name}; } --- 1272,1279 ---- sub get_display_name { my( $self ) = @_; ! ## return $self->{display_name}; ! return $self->{session}->phrase($self->{confid}."_searchname_".$self->{display_name} ); } *** /usr/src/eprints/eprints-2.2.1/perl_lib/EPrints/Session.pm Thu Nov 14 14:41:29 2002 --- /opt1/perl_lib/EPrints/Session.pm Tue Sep 16 11:00:15 2003 *************** *** 1180,1186 **** if( !defined $back_to_text ) { #XXX INTL cjg not DOM ! $back_to_text = $self->make_text( "Continue" ); } if ( $self->{offline} ) --- 1180,1188 ---- if( !defined $back_to_text ) { #XXX INTL cjg not DOM ! ##CSL ! ## $back_to_text = $self->make_text( "Continue" ); ! $back_to_text = $self->html_phrase("lib/session:continue"); } if ( $self->{offline} ) *************** *** 1355,1361 **** my( $div, $html, $span ); $html = $self->make_doc_fragment(); ! my $req = $field->get_property( "required" ); if( defined $dataset && defined $type ) { --- 1356,1366 ---- my( $div, $html, $span ); $html = $self->make_doc_fragment(); ! if( $field->is_type( "separator" ) ) ! { ! $html->appendChild( $field->get_property( "render_value" ) ); ! return $html; ! } my $req = $field->get_property( "required" ); if( defined $dataset && defined $type ) { *************** *** 1395,1400 **** --- 1399,1411 ---- $html->appendChild( $div ); } + ##CSL comment field? + if( $comment ){ + $div = $self->make_element( "div", class => "formfieldcomment" ); + $div->appendChild( $comment ); + $html->appendChild( $div ); + } + $div = $self->make_element( "div", class => "formfieldinput", *************** *** 1457,1462 **** --- 1468,1474 ---- title => $title, page => $mainbit, pagetop => $topofpage, + help => $self->make_text($pageid), head => $links }; *************** *** 1587,1592 **** --- 1599,1610 ---- { my( $self, %httpopts ) = @_; $self->send_http_header( %httpopts ); + ##CSL + print < + END print EPrints::XML::to_string( $self->{page} ); EPrints::XML::dispose( $self->{page} ); delete $self->{page}; *** /usr/src/eprints/eprints-2.2.1/perl_lib/EPrints/SubmissionForm.pm Thu Nov 14 14:41:29 2002 --- /opt1/perl_lib/EPrints/SubmissionForm.pm Mon Sep 22 08:57:51 2003 *************** *** 79,84 **** --- 79,87 ---- use EPrints::EPrint; use EPrints::Session; use EPrints::Document; + ##CSL + use EPrints::MetaField; + ## use Unicode::String qw(utf8 latin1); use strict; *************** *** 88,101 **** #cjg bug pruning very new doc? my $STAGES = { ! home => { next => "type" }, type => { prev => "return", next => "linking" }, linking => { prev => "type", next => "meta" }, meta => { prev => "linking", next => "files" }, files => { prev => "meta", next => "verify" }, ! docmeta => {}, ! fileview => {}, ! upload => {}, verify => { prev => "files", next => "done" }, quickverify => { prev => "return", next => "done" }, done => {}, --- 91,103 ---- #cjg bug pruning very new doc? my $STAGES = { ! home => { next => "type", prec=> "home" }, type => { prev => "return", next => "linking" }, linking => { prev => "type", next => "meta" }, meta => { prev => "linking", next => "files" }, files => { prev => "meta", next => "verify" }, ! upload_first => { prev => "meta", next => "files" }, ! editformat => { prev => "files", next => "files" }, verify => { prev => "files", next => "done" }, quickverify => { prev => "return", next => "done" }, done => {}, *************** *** 605,612 **** my @fields = $self->{dataset}->get_type_fields( $self->{eprint}->get_value( "type" ), $self->{staff} ); ! my $field; ! foreach $field (@fields) { $self->_update_from_form( $field->get_name() ); } --- 605,611 ---- my @fields = $self->{dataset}->get_type_fields( $self->{eprint}->get_value( "type" ), $self->{staff} ); ! foreach my $field (@fields) { $self->_update_from_form( $field->get_name() ); } *************** *** 634,640 **** --- 633,650 ---- } # No problems, onto the next stage + ##CSL + my @docs = $self->{eprint}->get_all_documents(); + if( scalar @docs == 0 ) + { + $self->{document} = undef; + $self->{new_stage} = "upload_first"; + } + else + { $self->_set_stage_next; + } + return( 1 ); } *************** *** 676,691 **** if( $self->{action} eq "newdoc" ) { ! $self->{document} = EPrints::Document::create( ! $self->{session}, ! $self->{eprint} ); ! if( !defined $self->{document} ) ! { ! $self->_database_err; ! return( 0 ); ! } ! ! $self->{new_stage} = "docmeta"; return( 1 ); } --- 686,693 ---- if( $self->{action} eq "newdoc" ) { ! $self->{document} = undef; ! $self->{new_stage} = "upload_first"; return( 1 ); } *************** *** 723,728 **** --- 725,731 ---- return( 0 ); } + ##CSL: should we ask for confimation? if( $doc_action eq "remove" ) { # Remove the offending document *************** *** 731,744 **** $self->_corrupt_err; return( 0 ); } ! ! $self->{new_stage} = "files"; return( 1 ); } if( $doc_action eq "edit" ) { ! $self->{new_stage} = "docmeta"; return( 1 ); } --- 734,757 ---- $self->_corrupt_err; return( 0 ); } ! ##CSL how many documents are left? ! my @docs = $self->{eprint}->get_all_documents(); ! if( scalar @docs == 0 ) ! { ! $self->{document} = undef; ! $self->{new_stage} = "upload_first"; ! } ! else ! { ! $self->_set_stage_this; ! } return( 1 ); } if( $doc_action eq "edit" ) { ! $self->{document}->set_value("upload_graburl", ""); ! $self->{new_stage} = "editformat"; return( 1 ); } *************** *** 748,766 **** ###################################################################### # ! # From docmeta page # ###################################################################### ###################################################################### # ! # $foo = $thing->_from_stage_docmeta # # undocumented # ###################################################################### ! sub _from_stage_docmeta { my( $self ) = @_; --- 761,781 ---- ###################################################################### # ! # From editformat page # ###################################################################### ###################################################################### # ! # $foo = $thing->_from_stage_editformat # # undocumented # ###################################################################### ! ## action: cancel, done, addfile, ! ! sub _from_stage_editformat { my( $self ) = @_; *************** *** 779,929 **** if( $self->{action} eq "cancel" ) { ! $self->{new_stage} = "files"; return( 1 ); } - if( $self->{action} eq "next" ) - { # Update the description if appropriate ! foreach( "formatdesc", "format", "language", "security" ) { ! next if( $self->{session}->get_archive()->get_conf( ! "submission_hide_".$_ ) ); $self->{document}->set_value( $_, $self->{session}->param( $_ ) ); } $self->{document}->commit(); ! $self->{problems} = $self->{document}->validate_meta( $self->{for_archive} ); ! if( $#{$self->{problems}} >= 0 ) { ! $self->{new_stage} = "docmeta"; return( 1 ); } ! ! $self->{new_stage} = "fileview"; return( 1 ); } ! ! # Erk! Unknown action. ! $self->_corrupt_err; ! return( 0 ); ! } ! ! ###################################################################### ! # ! # From fileview page ! # ! ###################################################################### ! ! ###################################################################### ! # ! # $foo = $thing->_from_stage_fileview ! # ! # undocumented ! # ! ###################################################################### ! ! sub _from_stage_fileview ! { ! my( $self ) = @_; ! ! # Check the document is OK, and that it is associated with the current ! # eprint ! $self->{document} = EPrints::Document->new( ! $self->{session}, ! $self->{session}->param( "docid" ) ); ! ! if( !defined $self->{document} || ! $self->{document}->get_value( "eprintid" ) ne $self->{eprint}->get_value( "eprintid" ) ) ! { ! $self->_corrupt_err; ! return( 0 ); } my %files_unsorted = $self->{document}->files(); my @files = sort keys %files_unsorted; - my $i; - my $consumed = 0; - - # Determine which button was pressed - if( $self->{action} eq "deleteall" ) - { - # Delete all button - $self->{document}->remove_all_files(); - $consumed = 1; - } if( $self->{action} =~ m/^main_(\d+)/ ) { if( !defined $files[$1] ) ! { ! # Not a valid filenumber $self->_corrupt_err; return( 0 ); } - # Pressed "Show First" button for this file $self->{document}->set_main( $files[$1] ); ! $consumed = 1; } if( $self->{action} =~ m/^delete_(\d+)/ ) { ! if( !defined $files[$1] ) ! { ! # Not a valid filenumber $self->_corrupt_err; return( 0 ); } # Pressed "Delete" button for this file $self->{document}->remove_file( $files[$1] ); ! $consumed = 1; ! } ! ! ! # Check to see if a fileview button was pressed, process it if necessary ! if( $consumed ) ! { ! # Doc object will have updated as appropriate, commit changes ! unless( $self->{document}->commit() ) ! { ! $self->_database_err; ! return( 0 ); ! } ! ! $self->{new_stage} = "fileview"; ! return( 1 ); ! } ! ! if( $self->{action} eq "prev" ) ! { ! $self->{new_stage} = "docmeta"; ! return( 1 ); ! } ! ! if( $self->{action} eq "upload" ) ! { ! # Set up info for next stage ! $self->{arc_format} = $self->{session}->param( "arc_format" ); ! $self->{num_files} = $self->{session}->param( "num_files" ); ! $self->{new_stage} = "upload"; ! return( 1 ); ! } ! ! if( $self->{action} eq "finished" ) ! { ! # Finished uploading apparently. Validate. ! $self->{problems} = $self->{document}->validate( $self->{for_archive} ); ! ! if( $#{$self->{problems}} >= 0 ) ! { ! $self->{new_stage} = "fileview"; ! return( 1 ); ! } ! ! $self->{new_stage} = "files"; return( 1 ); } --- 794,878 ---- if( $self->{action} eq "cancel" ) { ! $self->_set_stage_prev(); return( 1 ); } # Update the description if appropriate ! foreach( "formatdesc", "language", "security", "upload_plain", "upload_graburl" ) { ! my $hide = $self->{session}->get_archive()->get_conf( "submission_hide_".$_ ) ; ! next if( $hide==1 || ( $hide==2 && !$self->{staff} ) ); $self->{document}->set_value( $_, $self->{session}->param( $_ ) ); } + if( $self->{action} eq "done" ) + { $self->{document}->commit(); + $self->_set_stage_next(); + return( 1 ); + } ! # some other button, remain here... ! $self->_set_stage_this(); ! if( $self->{action} eq "addfile" ) { ! my($success, $file, $url ); ! $file = $self->{session}->param( "upload_plain" ); ! $file = "" if (! defined $file ); ! $url = $self->{session}->param( "upload_graburl" ); ! $url = "" if (! defined $url ); ! if( ($file eq "" ) == ($url eq "" ) ){ ! $self->{problems} = [ ! $self->{session}->html_phrase( "lib/submissionform:upload_nofile" ) ]; return( 1 ); } ! $success = $file ne "" ? ! $self->{document}->upload( $file, $file ) : ! $self->{document}->upload_url( $url ) ; ! if( !$success ) ! { ! $self->{problems} = [ ! $self->{session}->html_phrase( "lib/submissionform:upload_prob" ) ]; return( 1 ); } ! $self->{document}->commit(); ! return( 1 ); } my %files_unsorted = $self->{document}->files(); my @files = sort keys %files_unsorted; + # determine which button was pressed if( $self->{action} =~ m/^main_(\d+)/ ) { if( !defined $files[$1] ) ! { # Not a valid filenumer $self->_corrupt_err; return( 0 ); } $self->{document}->set_main( $files[$1] ); ! $self->{document}->set_format( ! $self->{session}->get_archive()->call( ! "get_document_type", ! $self->{document}->get_main() ) ! ); ! $self->{document}->commit(); ! return( 1 ); } if( $self->{action} =~ m/^delete_(\d+)/ ) { ! if( !defined( $files[$1] ) || ! $self->{document}->get_main() eq $files[$1] ) ! { # Not a valid filenumer $self->_corrupt_err; return( 0 ); } # Pressed "Delete" button for this file $self->{document}->remove_file( $files[$1] ); ! $self->{document}->commit(); return( 1 ); } *************** *** 941,953 **** ###################################################################### # ! # $foo = $thing->_from_stage_upload # # undocumented # ###################################################################### ! sub _from_stage_upload { my( $self ) = @_; --- 889,901 ---- ###################################################################### # ! # $foo = $thing->_from_stage_upload_first # # undocumented # ###################################################################### ! sub _from_stage_upload_first { my( $self ) = @_; *************** *** 964,1033 **** return( 0 ); } ! # We need to address a common "feature" of browsers here. If a form has ! # only one text field in it, and the user types things into it and ! # presses "return" it submits the form without setting the submit ! # button, so we can't tell whether the "Back" or "Upload" button is ! # appropriate. We have to assume that if the user's pressed return they ! # want to go ahead with the upload, so we default to the upload button: ! ! $self->{action} = "upload" unless( defined $self->{action} ); ! ! if( $self->{action} eq "cancel" ) { ! $self->{new_stage} = "fileview"; return( 1 ); } ! if( $self->{action} eq "upload" ) { ! my $arc_format = $self->{session}->param( "arc_format" ); ! my $num_files = $self->{session}->param( "num_files" ); ! # Establish a sensible max and minimum number of files. ! # (The same ones as we used to render the upload form) ! $num_files = 1 if( $num_files < 1 ); ! $num_files = 1 if( $num_files > 99 ); ! my( $success, $file ); ! ! if( $arc_format eq "plain" ) ! { ! my $i; ! for( $i=0; $i<$num_files; $i++ ) { ! $file = $self->{session}->param( "file_$i" ); ! ! $success = $self->{document}->upload( $file, $file ); ! } } ! elsif( $arc_format eq "graburl" ) { ! my $url = $self->{session}->param( "url" ); ! $success = $self->{document}->upload_url( $url ); } ! else { ! $file = $self->{session}->param( "file_0" ); ! $success = $self->{document}->upload_archive( $file, $file, $arc_format ); } - if( !$success ) { $self->{problems} = [ $self->{session}->html_phrase( "lib/submissionform:upload_prob" ) ]; } ! elsif( !defined $self->{document}->get_main() ) ! { ! my %files = $self->{document}->files(); ! if( scalar keys %files == 1 ) ! { ! # There's a single uploaded file, make it the main one. ! my @filenames = keys %files; ! $self->{document}->set_main( $filenames[0] ); ! } ! } ! $self->{document}->commit(); ! $self->{new_stage} = "fileview"; return( 1 ); } --- 911,982 ---- return( 0 ); } ! if( $self->{action} eq "back" ) #don't have anything... { ! # check how many docs we have ! $self->{eprint}->prune_documents(); ! my @docs = $self->{eprint}->get_all_documents(); ! if( scalar (@docs )==0 ){ ! $self->_set_stage_prev(); ! } else { ! $self->_set_stage_next(); ! } return( 1 ); } ! if( $self->{action} eq "next" )#upload the very first file... { ! my($success, $file, $url, $link ); ! foreach( "formatdesc", "language", "security", "upload_plain", "upload_graburl" ) { ! my $hide = $self->{session}->get_archive()->get_conf( "submission_hide_".$_ ) ; ! next if( $hide==1 || ( $hide==2 && !$self->{staff} ) ); ! $self->{document}->set_value( $_, $self->{session}->param( $_ ) ); ! } ! $file = $self->{session}->param( "upload_plain" ); ! $file = "" if (! defined $file ); ! $url = $self->{session}->param( "upload_graburl" ); ! $url = "" if (! defined $url ); ! $link = $self->{session}->param( "link" ); ! $link = "" if(! defined $link ); ! if( ($file eq "" ) == ($url eq "" ) ){ ! $self->{problems} = [ ! $self->{session}->html_phrase( "lib/submissionform:upload_nofile" ) ]; ! $self->_set_stage_this; ! return( 1 ); } ! $success = $file ne "" ? ! $self->{document}->upload( $file, $file, 1 ) : ! $link ne "TRUE" ? ! $self->{document}->upload_url( $url, 1 ) : ! $self->{document}->upload_link( $url ) ; ! if( $success ) ! { ! my %files = $self->{document}->files(); ! my @filenames = keys %files; ! if( scalar( @filenames ) == 0) { ! $success = 0; } ! elsif( !defined $self->{document}->get_main() ) { ! $self->{document}->set_main( $filenames[0] ); ! } } if( !$success ) { $self->{problems} = [ $self->{session}->html_phrase( "lib/submissionform:upload_prob" ) ]; + $self->_set_stage_this(); + return( 1 ); } ! $self->{document}->set_format( ! $self->{session}->get_archive()->call( ! "get_document_type", ! $self->{document}->get_main() ) ! ); $self->{document}->commit(); ! $self->_set_stage_next(); return( 1 ); } *************** *** 1152,1168 **** return( 0 ); } - - - - - ###################################################################### - # - # Functions to render the form for each stage. - # - ###################################################################### - - ###################################################################### # # Select type form --- 1099,1104 ---- *************** *** 1185,1192 **** $page = $self->{session}->make_doc_fragment(); $page->appendChild( $self->_render_problems() ); ! # should this be done with "help?" cjg my $submit_buttons = { --- 1121,1139 ---- $page = $self->{session}->make_doc_fragment(); + ##CSL first part of submission. Give a help ... + if( !defined $self->{problems} || scalar @{$self->{problems}} == 0 ) + { + $page->appendChild( $self->{session}->html_phrase( + defined ($self->{eprint}->get_value("type")) ? + "lib/submissionform:shortinfo_type" : + "lib/submissionform:info_type" )); + } else { + ## $page->appendChild( $self->_render_problems() ); ! $page->appendChild( $self->{session}->html_phrase( ! "lib/submissionform:type_errinfo" )); ! } # should this be done with "help?" cjg my $submit_buttons = { *************** *** 1245,1250 **** --- 1192,1204 ---- $page->appendChild( $self->_render_problems() ); + $page->appendChild( $self->{session}->html_phrase( + "lib/submissionform:info_linking", + type=>$self->{dataset}->render_type_name( + $self->{session},$self->{eprint}->get_value("type")) + )); + + my $archive_ds = $self->{session}->get_archive()->get_dataset( "archive" ); my $comment = {}; *************** *** 1260,1278 **** $comment->{$field_id} = $self->{session}->make_doc_fragment(); if( defined $older_eprint ) { my $citation = $older_eprint->render_citation(); $comment->{$field_id}->appendChild( $self->{session}->html_phrase( "lib/submissionform:verify", citation => $citation ) ); } else { - my $idtext = $self->{session}->make_text( - $self->{eprint}->get_value($field_id)); - $comment->{$field_id}->appendChild( $self->{session}->html_phrase( "lib/submissionform:invalid_eprint", --- 1214,1232 ---- $comment->{$field_id} = $self->{session}->make_doc_fragment(); + my $idtext = $self->{session}->make_text( + $self->{eprint}->get_value($field_id)); if( defined $older_eprint ) { my $citation = $older_eprint->render_citation(); $comment->{$field_id}->appendChild( $self->{session}->html_phrase( "lib/submissionform:verify", + eprintid => $idtext, citation => $citation ) ); } else { $comment->{$field_id}->appendChild( $self->{session}->html_phrase( "lib/submissionform:invalid_eprint", *************** *** 1313,1319 **** $self->{session}->build_page( $self->{session}->html_phrase( ! "lib/submissionform:title_linking" ), $page, "submission_linking" ); $self->{session}->send_page(); --- 1267,1276 ---- $self->{session}->build_page( $self->{session}->html_phrase( ! "lib/submissionform:title_linking", ! type=>$self->{dataset}->render_type_name( ! $self->{session},$self->{eprint}->get_value("type")) ! ), $page, "submission_linking" ); $self->{session}->send_page(); *************** *** 1347,1353 **** $page->appendChild( $self->_render_problems() ); ! $page->appendChild( $self->{session}->html_phrase( "lib/submissionform:bib_info" ) ); my @edit_fields = $self->{dataset}->get_type_fields( $self->{eprint}->get_value( "type" ), $self->{staff} ); --- 1301,1311 ---- $page->appendChild( $self->_render_problems() ); ! $page->appendChild( ! $self->{session}->html_phrase( "lib/submissionform:info_meta", ! type=>$self->{dataset}->render_type_name( ! $self->{session},$self->{eprint}->get_value("type")) ! ) ); my @edit_fields = $self->{dataset}->get_type_fields( $self->{eprint}->get_value( "type" ), $self->{staff} ); *************** *** 1380,1386 **** $self->{session}->build_page( $self->{session}->html_phrase( ! "lib/submissionform:title_meta" ), $page, "submission_meta" ); $self->{session}->send_page(); --- 1338,1347 ---- $self->{session}->build_page( $self->{session}->html_phrase( ! "lib/submissionform:title_meta", ! type=>$self->{dataset}->render_type_name( ! $self->{session},$self->{eprint}->get_value("type")) ! ), $page, "submission_meta" ); $self->{session}->send_page(); *************** *** 1386,1408 **** $self->{session}->send_page(); } - - ###################################################################### # ! # Select an upload format # ###################################################################### ###################################################################### # ! # $foo = $thing->_do_stage_files # # undocumented # ###################################################################### ! sub _do_stage_files { my( $self ) = @_; --- 1347,1367 ---- $self->{session}->send_page(); } ###################################################################### # ! # Select first file in a format # ###################################################################### ###################################################################### # ! # $foo = $thing->_do_stage_upload_first # # undocumented # ###################################################################### ! sub _do_stage_upload_first { my( $self ) = @_; *************** *** 1412,1482 **** $page->appendChild( $self->_render_problems() ); ! # Validate again, so we know what buttons to put up and how ! # to state stuff ! $self->{eprint}->prune_documents(); ! my $probs = $self->{eprint}->validate_documents( $self->{for_archive} ); ! $form = $self->{session}->render_form( "post", $self->{formtarget}."#t" ); ! $page->appendChild( $form ); my @docs = $self->{eprint}->get_all_documents(); ! ! if( scalar @docs > 0 ) ! { ! $form->appendChild( $self->{session}->html_phrase( ! "lib/submissionform:current_docs") ); ! ! $table = $self->{session}->make_element( "table", border=>1 ); ! $form->appendChild( $table ); ! $tr = $self->{session}->make_element( "tr" ); ! $table->appendChild( $tr ); ! $th = $self->{session}->make_element( "th" ); ! $tr->appendChild( $th ); ! $th->appendChild( ! $self->{session}->html_phrase("lib/submissionform:format") ); ! $th = $self->{session}->make_element( "th" ); ! $tr->appendChild( $th ); ! $th->appendChild( ! $self->{session}->html_phrase("lib/submissionform:files_uploaded") ); ! ! my $docds = $self->{session}->get_archive()->get_dataset( "document" ); ! my $doc; ! foreach $doc ( @docs ) { ! $tr = $self->{session}->make_element( "tr" ); ! $table->appendChild( $tr ); ! $td = $self->{session}->make_element( "td" ); ! $tr->appendChild( $td ); ! $td->appendChild( $doc->render_description() ); ! $td = $self->{session}->make_element( "td", align=>"center" ); ! $tr->appendChild( $td ); ! my %files = $doc->files(); ! my $nfiles = scalar(keys %files); ! $td->appendChild( $self->{session}->make_text( $nfiles ) ); ! $td = $self->{session}->make_element( "td" ); ! $tr->appendChild( $td ); ! my $edit_id = "edit_".$doc->get_value( "docid" ); ! my $remove_id = "remove_".$doc->get_value( "docid" ); ! $td->appendChild( ! $self->{session}->render_action_buttons( ! _order => [ $edit_id, $remove_id ], ! $edit_id => $self->{session}->phrase( ! "lib/submissionform:action_edit" ) , ! $remove_id => $self->{session}->phrase( ! "lib/submissionform:action_remove" ) ! ) ); } ! $form->appendChild( $self->{session}->make_element( "br" ) ); } ! ! $form->appendChild( $self->{session}->render_hidden_field( ! "stage", ! "files" ) ); ! $form->appendChild( $self->{session}->render_hidden_field( ! "eprintid", ! $self->{eprint}->get_value( "eprintid" ) ) ); $form->appendChild( $self->{session}->render_hidden_field( "dataset", $self->{eprint}->get_dataset()->id() ) ); --- 1371,1621 ---- $page->appendChild( $self->_render_problems() ); ! my $archive = $self->{session}->get_archive(); ! my $docds = $archive->get_dataset( "document" ); ! my @reqformats = @{$archive->get_conf( "required_formats" )}; ! my $list=$self->{session}->make_doc_fragment(); ! my $c=0; ! foreach( @reqformats ) ! { ! if($c != 0){ ! $list->appendChild($self->{session}->make_text(", ")); ! } ! $c=1; ! $list->appendChild( ! $docds->render_type_name($self->{session},$_) ); ! } my @docs = $self->{eprint}->get_all_documents(); ! $page->appendChild( $self->{session}->html_phrase( ! scalar(@docs)==0 ? ! "lib/submissionform:info_upload_first": ! "lib/submissionform:info_upload_second", ! eprint=>$self->{eprint}->render_citation(), ! list=>$list ! )); ! if( !defined $self->{document} ){ ! $self->{document} = EPrints::Document::create( ! $self->{session}, ! $self->{eprint} ); ! } ! if( !defined $self->{document} ) { ! $self->_database_err; ! return( 0 ); } ! my $fields = []; ! my $separator = EPrints::MetaField->new( ! confid=>"document", ! archive=>$self->{session}->get_archive(), ! name=>"separator", ! type=>"separator", ! render_value=>$self->{session}->html_phrase( ! "lib/submissionform:separator") ! ); ! foreach( "formatdesc", "language", "security", "separator", "upload_plain", "upload_graburl" ) ! { ! my $hide = $archive->get_conf( "submission_hide_".$_ ); ! next if( $hide==1 || ( $hide==2 && !$self->{staff} ) ); ! push @{$fields}, ! $_ eq "separator" ? $separator : $docds->get_field( $_ ); } ! my $hidden_fields = { ! docid => $self->{document}->get_value( "docid" ), ! dataset => $self->{eprint}->get_dataset()->id(), ! eprintid => $self->{eprint}->get_value( "eprintid" ), ! ##CSL keep the stage verbatim as might be called from do_stage_files ! stage => "upload_first" }; ! my $submit_buttons = ! { ! next => $self->{session}->phrase( "lib/submissionform:action_next" ), ! back => $self->{session}->phrase( "lib/submissionform:action_prev" ), ! _order => [ "back", "next" ] ! }; ! ! my %vvalues = %{$self->{document}->get_data()}; ! ##CSL - nicer way to do it... ! ## push @{$fields},EPrints::MetaField->new( ! ## confid=>"document", ! ## archive=>$self->{session}->get_archive(), ! ## name=>"uncompress", ! ## type=>"boolean"); ! ## ! ## $vvalues{"uncompress"} = "TRUE"; ! ! push @{$fields},EPrints::MetaField->new( ! confid=>"document", ! archive=>$self->{session}->get_archive(), ! name=>"link", ! type=>"boolean"); ! ! $vvalues{"link"} = "FALSE"; ! ! $page->appendChild( ! $self->{session}->render_input_form( ! staff=>$self->{staff}, ! fields=>$fields, ! values=>\%vvalues, ! show_names=>1, ! show_help=>1, ! buttons=>$submit_buttons, ! hidden_fields=>$hidden_fields, ! dest=>$self->{formtarget}."#t" ) ); ! ! $self->{session}->build_page( ! $self->{session}->html_phrase( ! "lib/submissionform:title_upload_first", ! type=>$self->{dataset}->render_type_name( ! $self->{session}, ! $self->{eprint}->get_value( "type" ) ), ! eprint=>$self->{eprint}->render_citation() ! ), ! $page, ! "submission_first" ); ! $self->{session}->send_page(); ! } ! ! ###################################################################### ! # ! # Select an upload format ! # ! ###################################################################### ! ! ###################################################################### ! # ! # $foo = $thing->_do_stage_files ! # ! # undocumented ! # ! ###################################################################### ! ! sub _do_stage_files ! { ! my( $self ) = @_; ! ! my( $page, $p, $form, $table, $tr, $td, $th ); ! ! $page = $self->{session}->make_doc_fragment(); ! ! $page->appendChild( $self->_render_problems() ); ! ! my $archive = $self->{session}->get_archive(); ! my $docds = $archive->get_dataset( "document" ); ! ! # Validate again, so we know what buttons to put up and how ! # to state stuff ! ! $self->{eprint}->prune_documents(); ! ! my @docs = $self->{eprint}->get_all_documents(); ! if( scalar @docs == 0 ){ ## should not happen... ! $self->{document} = undef; ! $self->_do_stage_upload_first(); ! return; ! } ! ! my $probs = $self->{eprint}->validate_documents( $self->{for_archive} ); ! ! $page->appendChild( ! $self->{session}->html_phrase( ! "lib/submissionform:info_format", ! eprint=>$self->{eprint}->render_citation() ! ) ); ! ! $form = $self->{session}->render_form( "post", $self->{formtarget}."#t" ); ! $page->appendChild( $form ); ! ! my $hide_formatdesc = ! $archive->get_conf( ! "submission_hide_formatdesc"); ! $form->appendChild( ! $self->{session}->html_phrase( ! "lib/submissionform:current_docs") ); ! ! $table = $self->{session}->make_element( "table", border=>"1" ); ! $form->appendChild( $table ); ! $tr = $self->{session}->make_element( "tr" ); ! $table->appendChild( $tr ); ! $th = $self->{session}->make_element( "th" ); ! $tr->appendChild( $th ); ! $th->appendChild( ! $self->{session}->html_phrase("lib/submissionform:hdr_format") ); ! ! if( !$hide_formatdesc ){ ! $th = $self->{session}->make_element( "th" ); ! $tr->appendChild( $th ); ! $th->appendChild( $self->{session}->html_phrase("lib/submissionform:hdr_formatdesc") ); ! } ! $th = $self->{session}->make_element( "th" ); ! $tr->appendChild( $th ); ! $th->appendChild( ! $self->{session}->html_phrase("lib/submissionform:hdr_tryout") ); ! ! $th = $self->{session}->make_element( "th" ); ! $tr->appendChild( $th ); ! $th->appendChild( ! $self->{session}->html_phrase("lib/submissionform:hdr_files_uploaded") ); ! ##CSL make empty header for the "[edit] [delete]" buttons ! $th = $self->{session}->make_element( "th" ); ! $tr->appendChild( $th ); ! $th->appendChild( ! $self->{session}->html_phrase("lib/submissionform:_nbsp") ); ! ! foreach my $doc ( @docs ) ! { ! $tr = $self->{session}->make_element( "tr" ); ! $table->appendChild( $tr ); ! $td = $self->{session}->make_element( "td" ); ! $tr->appendChild( $td ); ! $td->appendChild( ! $docds->render_type_name($self->{session}, ! $doc->get_data()->{"format"} )); ! if( !$hide_formatdesc ){ ! $td = $self->{session}->make_element( "td" ); ! $tr->appendChild( $td ); ! my $value = $doc->get_value("formatdesc"); ! $td->appendChild( ! defined($value) ? ! $self->{session}->make_text($value) : ! $self->{session}->html_phrase("lib/submissionform:_nbsp") ! ); ! } ! $td = $self->{session}->make_element( "td" ); ! $tr->appendChild( $td ); ! $td->appendChild($self->{session}->html_phrase( ! "lib/submissionform:here_to_view", ! link=>$self->{session}->render_link( $doc->get_url(), "_blank" ), ! text=>$self->{session}->make_text( $doc->get_main() ) ) ); ! ! $td = $self->{session}->make_element( "td", align=>"center" ); ! $tr->appendChild( $td ); ! my %files = $doc->files(); ! my $nfiles = scalar(keys %files); ! $td->appendChild( $self->{session}->make_text( $nfiles ) ); ! ! $td = $self->{session}->make_element( "td" ); ! $tr->appendChild( $td ); ! my $edit_id = "edit_".$doc->get_value( "docid" ); ! my $remove_id = "remove_".$doc->get_value( "docid" ); ! $td->appendChild( ! $self->{session}->render_action_buttons( ! _order => [ $edit_id, $remove_id ], ! $edit_id => $self->{session}->phrase( ! "lib/submissionform:action_edit" ) , ! $remove_id => $self->{session}->phrase( ! "lib/submissionform:action_remove" ) ! ) ); ! } ! $form->appendChild( $self->{session}->make_element( "br" ) ); ! ! $form->appendChild( $self->{session}->render_hidden_field( ! "stage", ! "files" ) ); ! $form->appendChild( $self->{session}->render_hidden_field( ! "eprintid", ! $self->{eprint}->get_value( "eprintid" ) ) ); $form->appendChild( $self->{session}->render_hidden_field( "dataset", $self->{eprint}->get_dataset()->id() ) ); *************** *** 1490,1496 **** $buttons{_order} = [ "prev", "next" ]; } ! my @reqformats = @{$self->{session}->get_archive()->get_conf( "required_formats" )}; if( scalar @reqformats == 0 ) { $form->appendChild( --- 1629,1635 ---- $buttons{_order} = [ "prev", "next" ]; } ! my @reqformats = @{$archive->get_conf( "required_formats" )}; if( scalar @reqformats == 0 ) { $form->appendChild( *************** *** 1499,1513 **** } else { - my $doc_ds = $self->{session}->get_archive()->get_dataset( - "document" ); my $list = $self->{session}->make_doc_fragment(); my $c = scalar @reqformats; foreach( @reqformats ) { --$c; $list->appendChild( ! $doc_ds->render_type_name( $self->{session}, $_ ) ); if( $c > 0 ) { --- 1638,1650 ---- } else { my $list = $self->{session}->make_doc_fragment(); my $c = scalar @reqformats; foreach( @reqformats ) { --$c; $list->appendChild( ! $docds->render_type_name( $self->{session}, $_ ) ); if( $c > 0 ) { *************** *** 1518,1524 **** $form->appendChild( $self->{session}->html_phrase( "lib/submissionform:least_one", ! list=>$list ) ); } $form->appendChild( $self->{session}->render_action_buttons( --- 1655,1662 ---- $form->appendChild( $self->{session}->html_phrase( "lib/submissionform:least_one", ! list=>$list ) ) ! if( scalar @{$probs} != 0 ); } $form->appendChild( $self->{session}->render_action_buttons( *************** *** 1529,1535 **** $self->{session}->build_page( $self->{session}->html_phrase( ! "lib/submissionform:title_format" ), $page, "submission_format" ); $self->{session}->send_page(); --- 1667,1678 ---- $self->{session}->build_page( $self->{session}->html_phrase( ! "lib/submissionform:title_format", ! type=>$self->{dataset}->render_type_name( ! $self->{session}, ! $self->{eprint}->get_value( "type" ) ), ! eprint=>$self->{eprint}->render_citation() ! ), $page, "submission_format" ); $self->{session}->send_page(); *************** *** 1538,1738 **** ###################################################################### # ! # Document metadata # ###################################################################### ###################################################################### # ! # $foo = $thing->_do_stage_docmeta # # undocumented # ###################################################################### ! sub _do_stage_docmeta { my( $self ) = @_; - my $page = $self->{session}->make_doc_fragment(); - - $page->appendChild( $self->_render_problems( - $self->{session}->html_phrase("lib/submissionform:fix_upload"), - $self->{session}->html_phrase("lib/submissionform:please_fix") ) ); - - # The hidden fields, used by all forms. - my $hidden_fields = { - docid => $self->{document}->get_value( "docid" ), - dataset => $self->{eprint}->get_dataset()->id(), - eprintid => $self->{eprint}->get_value( "eprintid" ), - stage => "docmeta" }; - my $archive = $self->{session}->get_archive(); my $docds = $archive->get_dataset( "document" ); - my $submit_buttons = - { - next => $self->{session}->phrase( "lib/submissionform:action_next" ), - cancel => $self->{session}->phrase( "lib/submissionform:action_cancel" ), - _order => [ "cancel", "next" ] - }; - - my $fields = []; - foreach( "format", "formatdesc", "language", "security" ) - { - unless( $archive->get_conf( "submission_hide_".$_ ) ) - { - push @{$fields}, $docds->get_field( $_ ); - } - } - - $page->appendChild( - $self->{session}->render_input_form( - staff=>$self->{staff}, - fields=>$fields, - values=>$self->{document}->get_data(), - show_help=>1, - buttons=>$submit_buttons, - default_action=>"next", - hidden_fields=>$hidden_fields, - dest=>$self->{formtarget}."#t" ) ); - - $self->{session}->build_page( - $self->{session}->html_phrase( - "lib/submissionform:title_docmeta" ), - $page, - "submission_docmeta" ); - $self->{session}->send_page(); - } - - ###################################################################### - # - # View / Delete files - # - ###################################################################### - - ###################################################################### - # - # $foo = $thing->_do_stage_fileview - # - # undocumented - # - ###################################################################### - - sub _do_stage_fileview - { - my( $self ) = @_; - my $page = $self->{session}->make_doc_fragment(); $page->appendChild( $self->_render_problems( ! $self->{session}->html_phrase("lib/submissionform:fix_upload"), $self->{session}->html_phrase("lib/submissionform:please_fix") ) ); # The hidden fields, used by all forms. my $hidden_fields = { docid => $self->{document}->get_value( "docid" ), dataset => $self->{eprint}->get_dataset()->id(), eprintid => $self->{eprint}->get_value( "eprintid" ), ! stage => "fileview" }; ! ! ############################ ! ! my $options = []; ! my $hideopts = {}; ! foreach( "archive", "graburl", "plain" ) ! { ! $hideopts->{$_} = 0; ! my $copt = $self->{session}->get_archive->get_conf( ! "submission_hide_upload_".$_ ); ! $hideopts->{$_} = 1 if( defined $copt && $copt ); ! } ! ! push @{$options},"plain" unless( $hideopts->{plain} ); ! push @{$options},"graburl" unless( $hideopts->{graburl} ); ! unless( $hideopts->{archive} ) ! { ! push @{$options}, @{$self->{session}->get_archive()->get_conf( ! "archive_formats" )} ! } ! ! my $arc_format_field = EPrints::MetaField->new( ! confid=>'format', ! archive=> $self->{session}->get_archive(), ! name=>'arc_format', ! required=>1, ! type=>'set', ! options => $options ); ! ! my $fields = [ $arc_format_field ]; ! ! my $hidehowmany = $self->{session}->get_archive->get_conf( ! "submission_hide_howmanyfiles" ); ! if( defined $hidehowmany && $hidehowmany ) ! { ! # This hidden field will appear in the other ! # forms on this page too, but that will not hurt. ! $hidden_fields->{num_files} = 1; ! } ! else ! { ! my $num_files_field = EPrints::MetaField->new( ! confid=>'format', ! archive=> $self->{session}->get_archive(), ! name=>'num_files', ! type=>'int', ! digits=>2 ); ! ! push @{$fields}, $num_files_field; ! } ! ! my $submit_buttons; ! $submit_buttons = { ! upload => $self->{session}->phrase( ! "lib/submissionform:action_upload" ) }; ! ! $page->appendChild( ! $self->{session}->render_input_form( ! staff=>$self->{staff}, ! fields=>$fields, ! values=>{ ! num_files => 1, ! arc_format => "plain" ! }, ! default_action=>"upload", ! show_help=>1, ! buttons=>$submit_buttons, ! hidden_fields=>$hidden_fields, ! dest=>$self->{formtarget}."#t" ) ); ! ! ! ################################## ! # ! # Render info about uploaded files my %files = $self->{document}->files(); ! ! my( $p, $table, $tr, $th, $td, $form ); ! ! if( scalar keys %files == 1 ) ! { ! $self->{document}->set_main( (keys %files)[0] ); ! $self->{document}->commit(); ! } ! ! if( scalar keys %files == 0 ) ! { ! $page->appendChild( ! $self->{session}->html_phrase( ! "lib/submissionform:no_files") ); ! } ! else ! { ! $form = $self->{session}->render_form( "post", $self->{formtarget}."#t" ); $page->appendChild( $form ); - foreach( keys %{$hidden_fields} ) { $form->appendChild( $self->{session}->render_hidden_field( --- 1680,1730 ---- ###################################################################### # ! # Edit a document format # ###################################################################### ###################################################################### # ! # $foo = $thing->_do_stage_editformat # # undocumented # ###################################################################### ! sub _do_stage_editformat { my( $self ) = @_; my $archive = $self->{session}->get_archive(); my $docds = $archive->get_dataset( "document" ); my $page = $self->{session}->make_doc_fragment(); $page->appendChild( $self->_render_problems( ! $self->{session}->html_phrase("lib/submissionform:fix_editformat"), $self->{session}->html_phrase("lib/submissionform:please_fix") ) ); + $page->appendChild( + $self->{session}->html_phrase( + "lib/submissionform:info_editformat_files", + format=>$docds->render_type_name($self->{session}, + $self->{document}->get_value("format") ), + eprint=>$self->{eprint}->render_citation() + )); # The hidden fields, used by all forms. my $hidden_fields = { docid => $self->{document}->get_value( "docid" ), dataset => $self->{eprint}->get_dataset()->id(), eprintid => $self->{eprint}->get_value( "eprintid" ), ! stage => "editformat" }; my %files = $self->{document}->files(); ! my ($p, $table, $tr, $th, $td, $form ); ! $form = $self->{session}->render_form("post",$self->{formtarget}."#t" ); $page->appendChild( $form ); foreach( keys %{$hidden_fields} ) { $form->appendChild( $self->{session}->render_hidden_field( *************** *** 1745,1966 **** $self->{session}->html_phrase( "lib/submissionform:files_for_format") ); - if( !defined $self->{document}->get_main() ) - { - $p->appendChild( - $self->{session}->html_phrase( - "lib/submissionform:sel_first") ); - } - $table = $self->{session}->make_element( "table", border=>"1" ); $form->appendChild( $table ); $tr = $self->{session}->make_element( "tr" ); $table->appendChild( $tr ); ! ! $th = $self->{session}->make_element( "th" ); ! $tr->appendChild( $th ); ! $th = $self->{session}->make_element( "th" ); $tr->appendChild( $th ); $th->appendChild( $self->{session}->html_phrase( ! "lib/submissionform:filename") ); ! $th = $self->{session}->make_element( "th" ); $tr->appendChild( $th ); $th->appendChild( $self->{session}->html_phrase( ! "lib/submissionform:size_bytes") ); ! $th = $self->{session}->make_element( "th" ); $tr->appendChild( $th ); ! $th = $self->{session}->make_element( "th" ); $tr->appendChild( $th ); my $main = $self->{document}->get_main(); ! my $filename; my $filecount = 0; ! foreach $filename (sort keys %files) { $tr = $self->{session}->make_element( "tr" ); $table->appendChild( $tr ); ! ! $td = $self->{session}->make_element( "td" ); $tr->appendChild( $td ); ! if( defined $main && $main eq $filename ) { - #cjg Style Mee $td->appendChild( $self->{session}->html_phrase( ! "lib/submissionform:shown_first" ) ); ! $td->appendChild( $self->{session}->make_text( latin1(" ->") ) ); } ! $td = $self->{session}->make_element( "td" ); $tr->appendChild( $td ); # Iffy. Non 8bit filenames could cause a render bug. cjg $td->appendChild( $self->{session}->make_text( $filename ) ); ! $td = $self->{session}->make_element( "td", align=>"right" ); $tr->appendChild( $td ); $td->appendChild( $self->{session}->make_text( $files{$filename} ) ); ! $td = $self->{session}->make_element( "td" ); $tr->appendChild( $td ); ! if( !defined $main || $main ne $filename ) { $td->appendChild( $self->{session}->render_action_buttons( - "main_".$filecount => - $self->{session}->phrase( - "lib/submissionform:show_first" ) ) ); - } - - $td = $self->{session}->make_element( "td" ); - $tr->appendChild( $td ); - $td->appendChild( $self->{session}->render_action_buttons( "delete_".$filecount => $self->{session}->phrase( "lib/submissionform:delete" ) ) ); ! ! $filecount++; } ! $form->appendChild( $self->{session}->render_action_buttons( ! deleteall => ! $self->{session}->phrase( ! "lib/submissionform:delete_all" ) ) ); ! ! $a = $self->{session}->render_link( $self->{document}->get_url(), "_blank" ); ! $form->appendChild( ! $self->{session}->html_phrase( ! "lib/submissionform:here_to_view", link => $a ) ); ! ! } ! ! $submit_buttons = { ! prev => $self->{session}->phrase( ! "lib/submissionform:action_prev" ) }; ! ! if( scalar keys %files > 0 ) { ! ! $submit_buttons->{finished} = $self->{session}->phrase( ! "lib/submissionform:action_finished" ); ! $submit_buttons->{_order} = [ "prev" , "finished" ]; } - $page->appendChild( - $self->{session}->render_input_form( - staff=>$self->{staff}, - buttons=>$submit_buttons, - hidden_fields=>$hidden_fields, - default_action=>"prev", - dest=>$self->{formtarget}."#t" ) ); - - $self->{session}->build_page( $self->{session}->html_phrase( ! "lib/submissionform:title_fileview" ), ! $page, ! "submission_fileview" ); ! $self->{session}->send_page(); ! } ! ! ! ! ###################################################################### ! # ! # Actual file upload form ! # ! ###################################################################### ! ! ###################################################################### ! # ! # $foo = $thing->_do_stage_upload ! # ! # undocumented ! # ! ###################################################################### ! ! sub _do_stage_upload ! { ! my( $self ) = @_; ! ! my( $page, $form, $form2 ); ! ! $page = $self->{session}->make_doc_fragment(); ! $form = $self->{session}->render_form( "post", $self->{formtarget}."#t" ); ! $form2 = $self->{session}->render_form( "post", $self->{formtarget}."#t" ); ! $page->appendChild( $form ); ! $page->appendChild( $form2 ); ! ! if( $self->{arc_format} eq "graburl" ) ! { ! $form->appendChild( $self->{session}->html_phrase( "lib/submissionform:enter_url" ) ); ! my $field = EPrints::MetaField->new( ! archive=> $self->{session}->get_archive(), ! name => "url", ! type => "text" ); ! $form->appendChild( $field->render_input_field( $self->{session} ) ); ! } ! else ! { ! if( $self->{arc_format} eq "plain" ) ! { ! if( $self->{num_files} > 1 ) ! { ! $form->appendChild( $self->{session}->html_phrase("lib/submissionform:enter_files") ); ! } ! else ! { ! $form->appendChild( $self->{session}->html_phrase("lib/submissionform:enter_file") ); ! } ! } ! else ! { ! $self->{num_files} = 1; ! $form->appendChild( $self->{session}->html_phrase("lib/submissionform:enter_compfile") ); ! } ! my $i; ! # Establish a sensible max and minimum number of files. ! $self->{num_files} = 1 if( $self->{num_files} < 1 ); ! $self->{num_files} = 1 if( $self->{num_files} > 99 ); ! for( $i=0; $i < $self->{num_files}; $i++ ) { ! $form->appendChild( $self->{session}->render_upload_field( "file_$i" ) ); ! } ! } ! my %hidden_fields = ( ! stage => "upload", ! eprintid => $self->{eprint}->get_value( "eprintid" ), ! dataset => $self->{eprint}->get_dataset()->id(), ! docid => $self->{document}->get_value( "docid" ), ! num_files => $self->{num_files}, ! arc_format => $self->{arc_format} ); ! foreach( keys %hidden_fields ) { ! $form->appendChild( $self->{session}->render_hidden_field( $_, $hidden_fields{$_} ) ); ! $form2->appendChild( $self->{session}->render_hidden_field( $_, $hidden_fields{$_} ) ); ! } ! ! $form->appendChild( $self->{session}->render_action_buttons( ! upload => $self->{session}->phrase( ! "lib/submissionform:action_upload" ) ) ); ! ! $form2->appendChild( $self->{session}->render_action_buttons( ! cancel => $self->{session}->phrase( ! "lib/submissionform:action_cancel" ) ) ); $self->{session}->build_page( $self->{session}->html_phrase( ! "lib/submissionform:title_upload" ), $page, ! "submission_upload" ); $self->{session}->send_page(); } --- 1736,1882 ---- $self->{session}->html_phrase( "lib/submissionform:files_for_format") ); $table = $self->{session}->make_element( "table", border=>"1" ); $form->appendChild( $table ); $tr = $self->{session}->make_element( "tr" ); $table->appendChild( $tr ); ! ## --> main button $th = $self->{session}->make_element( "th" ); $tr->appendChild( $th ); $th->appendChild( $self->{session}->html_phrase( ! "lib/submissionform:hdr_make_main") ); ! ## filename $th = $self->{session}->make_element( "th" ); $tr->appendChild( $th ); $th->appendChild( $self->{session}->html_phrase( ! "lib/submissionform:hdr_filename") ); ! ## filesize $th = $self->{session}->make_element( "th" ); $tr->appendChild( $th ); ! $th->appendChild( ! $self->{session}->html_phrase( ! "lib/submissionform:hdr_size_bytes") ); ! ## Delete button $th = $self->{session}->make_element( "th" ); $tr->appendChild( $th ); + $th->appendChild( + $self->{session}->html_phrase( + "lib/submissionform:delete_file") ); my $main = $self->{document}->get_main(); ! if( !defined $main ) ! { #impossible ! $main=""; ! } my $filecount = 0; ! foreach my $filename (sort keys %files) { $tr = $self->{session}->make_element( "tr" ); $table->appendChild( $tr ); ! ## main file ! $td = $self->{session}->make_element( "td", align => "right" ); $tr->appendChild( $td ); ! if( $main eq $filename ) { $td->appendChild( $self->{session}->html_phrase( ! "lib/submissionform:main_file" ) ); ! } else { ! $td->appendChild( $self->{session}->render_action_buttons( ! "main_".$filecount => ! $self->{session}->phrase( ! "lib/submissionform:become_main" ))); } ! ## file name $td = $self->{session}->make_element( "td" ); $tr->appendChild( $td ); # Iffy. Non 8bit filenames could cause a render bug. cjg $td->appendChild( $self->{session}->make_text( $filename ) ); ! ## filesize $td = $self->{session}->make_element( "td", align=>"right" ); $tr->appendChild( $td ); $td->appendChild( $self->{session}->make_text( $files{$filename} ) ); ! ## delete $td = $self->{session}->make_element( "td" ); $tr->appendChild( $td ); ! if( $main ne $filename ) { $td->appendChild( $self->{session}->render_action_buttons( "delete_".$filecount => $self->{session}->phrase( "lib/submissionform:delete" ) ) ); ! } else { ! $td->appendChild($self->{session}->html_phrase( ! "lib/submissionform:_nbsp")); } ! $filecount++; } $page->appendChild( $self->{session}->html_phrase( ! "lib/submissionform:info_editformat_meta") ); ! my $submit_buttons = { ! ## addfile => $self->{session}->phrase("lib/submissionform:action_newfile"), ! done => $self->{session}->phrase( "lib/submissionform:action_done" ), ! cancel => $self->{session}->phrase( "lib/submissionform:action_cancel" ), ! _order => [ "cancel", "done" ] ! }; ! my $fields = []; ! my $separator = EPrints::MetaField->new( ! confid=>"document", ! archive=>$self->{session}->get_archive(), ! name=>"separator", ! type=>"separator", ! render_value=>$self->{session}->render_ruler() ); ! foreach( "formatdesc", "language", "security", "separator", "upload_plain", "upload_graburl" ) { ! my $hide = $archive->get_conf( "submission_hide_".$_ ); ! next if( $hide==1 || ( $hide==2 && !$self->{staff} ) ); ! push @{$fields}, ! $_ eq "separator" ? $separator : $docds->get_field( $_ ); ! } ! ## push @{$fields}, EPrints::MetaField->new( ! ## confid=>"document", ! ## archive=>$self->{session}->get_archive(), ! ## name=>"uncompress", ! ## type=>"boolean"); ! ## my %values = %{$self->{document}->get_data()}; ! ## $values{"uncompress"} = "FALSE" ; + $form = $self->{session}->render_input_form( + staff=>$self->{staff}, + fields=>$fields, + values=>$self->{document}->get_data(), + ## values=>\%vvalues, + show_names=>1, + show_help=>1, + buttons=>{ + addfile => $self->{session}->phrase("lib/submissionform:action_newfile") + }, + default_action=>"done", + hidden_fields=>$hidden_fields, + dest=>$self->{formtarget}."#t" ); + $form->appendChild( + $self->{session}->html_phrase( + "lib/submissionform:info_editformat_tail") ); + $form->appendChild( $self->{session}->render_action_buttons( %{$submit_buttons} ) ); + $page->appendChild($form); $self->{session}->build_page( $self->{session}->html_phrase( ! "lib/submissionform:title_editformat", ! eprint=>$self->{eprint}->render_citation() ! ), $page, ! "submission_editformat" ); $self->{session}->send_page(); } *************** *** 2210,2216 **** { my( $self, $before, $after ) = @_; ! my( $p, $ul, $li, $frag ); $frag = $self->{session}->make_doc_fragment(); if( !defined $self->{problems} || scalar @{$self->{problems}} == 0 ) --- 2123,2129 ---- { my( $self, $before, $after ) = @_; ! my( $ul, $li, $frag ); $frag = $self->{session}->make_doc_fragment(); if( !defined $self->{problems} || scalar @{$self->{problems}} == 0 ) *************** *** 2221,2238 **** # List the problem(s) ! $p = $self->{session}->make_element( "p" ); ! if( defined $before ) ! { ! $p->appendChild( $before ); ! } ! else ! { ! $p->appendChild( $self->{session}->html_phrase( "lib/submissionform:filled_wrong" ) ); - } - $frag->appendChild( $p ); $ul = $self->{session}->make_element( "ul" ); foreach (@{$self->{problems}}) --- 2134,2154 ---- # List the problem(s) ! ##CSL $p = $self->{session}->make_element( "p" ); ! # if( defined $before ) ! # { ! # $frag->appendChild( $before ); ! # } ! # else ! # { ! # $p->appendChild( ! # $self->{session}->html_phrase( ! # "lib/submissionform:filled_wrong" ) ); ! # } ! # $frag->appendChild( $p ); ! $frag->appendChild( defined $before ? $before : $self->{session}->html_phrase( "lib/submissionform:filled_wrong" ) ); $ul = $self->{session}->make_element( "ul" ); foreach (@{$self->{problems}}) *************** *** 2243,2260 **** } $frag->appendChild( $ul ); ! $p = $self->{session}->make_element( "p" ); ! if( defined $after ) ! { ! $p->appendChild( $after ); ! } ! else ! { ! $p->appendChild( $self->{session}->html_phrase( "lib/submissionform:please_complete" ) ); - } - $frag->appendChild( $p ); return $frag; } --- 2159,2179 ---- } $frag->appendChild( $ul ); ! ##CSL $p = $self->{session}->make_element( "p" ); ! # if( defined $after ) ! # { ! # $p->appendChild( $after ); ! # } ! # else ! # { ! # $p->appendChild( ! # $self->{session}->html_phrase( ! # "lib/submissionform:please_complete" ) ); ! # } ! # $frag->appendChild( $p ); ! $frag->appendChild( defined $after ? $after : $self->{session}->html_phrase( "lib/submissionform:please_complete" ) ); return $frag; } *** /usr/src/eprints/eprints-2.2.1/perl_lib/EPrints/UserForm.pm Thu Nov 14 14:41:29 2002 --- /opt1/perl_lib/EPrints/UserForm.pm Thu Sep 18 07:54:44 2003 *************** *** 147,152 **** --- 147,159 ---- my $full_name = $self->{user}->render_description(); + if( $self->{session}->seen_form() && + $self->{session}->get_action_button() eq "cancel" ) + { + $self->{session}->redirect( $self->{redirect} ); + return; + } + if( $self->{session}->seen_form() == 0 || $self->{session}->internal_button_pressed() || $self->{session}->get_action_button() eq "edit" ) *************** *** 154,194 **** my( $page, $p, $a ); $page = $self->{session}->make_doc_fragment(); - if( $self->{staff} ) - { $page->appendChild( $self->{session}->html_phrase( ! "lib/userform:staff_blurb" ) ); ! } ! else { $page->appendChild( $self->{session}->html_phrase( ! "lib/userform:blurb" ) ); ! } ! $page->appendChild( $self->_render_user_form() ); $self->{session}->build_page( $self->{session}->html_phrase( "lib/userform:record_for", name => $full_name ), $page, "user_form" ); $self->{session}->send_page(); ! } ! elsif( $self->_update_from_form() ) ! { ! # Update the user values ! ! # Validate the changes ! $self->{user}->commit(); ! $self->{user} = EPrints::User->new( ! $self->{session}, ! $self->{user}->get_value( "userid" ) ); ! my $problems = $self->{user}->validate(); if( scalar @{$problems} == 0 ) { ! # User has entered everything OK $self->{session}->redirect( $self->{redirect} ); return; } --- 161,200 ---- my( $page, $p, $a ); $page = $self->{session}->make_doc_fragment(); $page->appendChild( $self->{session}->html_phrase( ! "lib/userform:blurb" )); ! my($desc,$title) = $self->{user}->render_full(); ! $page->appendChild( $desc ); ! if( $self->{staff} || ! $self->{user}->has_priv("no_edit_own_record" ) ) { $page->appendChild( $self->{session}->html_phrase( ! "lib/userform:staff_blurb" )); $page->appendChild( $self->_render_user_form() ); + $page->appendChild( $self->{session}->html_phrase( "lib/userform:userhome_tail" ) ); $self->{session}->build_page( $self->{session}->html_phrase( "lib/userform:record_for", name => $full_name ), $page, "user_form" ); + } else { + $page->appendChild( $self->{session}->html_phrase( "lib/userform:userhome_tail" ) ); + $self->{session}->build_page( + $self->{session}->html_phrase( + "lib/userform:record_for", + name => $full_name ), + $page, + "userpage" ); + } $self->{session}->send_page(); ! return; } ! my $problems = $self->_update_from_form(); if( scalar @{$problems} == 0 ) { ! # Update the user values ! $self->{user}->commit(); $self->{session}->redirect( $self->{redirect} ); return; } *************** *** 201,208 **** "lib/userform:form_incorrect" ) ); $ul = $self->{session}->make_element( "ul" ); ! my( $problem ); ! foreach $problem (@$problems) { $li = $self->{session}->make_element( "li" ); $li->appendChild( $problem ); --- 206,212 ---- "lib/userform:form_incorrect" ) ); $ul = $self->{session}->make_element( "ul" ); ! foreach my $problem (@$problems) { $li = $self->{session}->make_element( "li" ); $li->appendChild( $problem ); *************** *** 216,236 **** $page->appendChild( $self->_render_user_form() ); $self->{session}->build_page( $self->{session}->html_phrase( "lib/userform:record_for", name => $full_name ), $page, ! "user_form" ); $self->{session}->send_page(); ! } ! else ! { ! $self->{session}->render_error( ! $self->{session}->html_phrase( ! "lib/userform:problem_updating" ), ! $self->{redirect} ); ! } } --- 220,234 ---- $page->appendChild( $self->_render_user_form() ); + $page->appendChild( $self->{session}->html_phrase( "lib/userform:userhome_tail" ) ); $self->{session}->build_page( $self->{session}->html_phrase( "lib/userform:record_for", name => $full_name ), $page, ! "user_form_problem" ); $self->{session}->send_page(); ! return; } *************** *** 255,272 **** sub _render_user_form { my( $self ) = @_; - my $user_ds = $self->{session}->get_archive()->get_dataset( "user" ); - my @fields = $user_ds->get_type_fields( $self->{user}->get_value( "usertype" ), $self->{staff} ); my %hidden = ( "userid"=>$self->{user}->get_value( "userid" ) ); ! my $buttons = { update => $self->{session}->phrase( "lib/userform:update_record" ) }; my $form = $self->{session}->render_input_form( staff=>$self->{staff}, dataset=>$user_ds, type=>$self->{user}->get_value( "usertype" ), ! fields=>\@fields, values=>$self->{user}->get_data(), show_names=>1, show_help=>1, --- 253,280 ---- sub _render_user_form { my( $self ) = @_; my $user_ds = $self->{session}->get_archive()->get_dataset( "user" ); my @fields = $user_ds->get_type_fields( $self->{user}->get_value( "usertype" ), $self->{staff} ); + my @newfields = (); + foreach my $field ( @fields ){ + next if( !$self->{staff} && $field->get_name eq "email" ); + next if( !$self->{staff} && $field->get_name eq "username" ); + push @newfields,$field; + } + my %hidden = ( "userid"=>$self->{user}->get_value( "userid" ) ); ! my $buttons = { ! _order => ["cancel","update"], ! cancel => $self->{session}->phrase("lib/userform:cancel_edit"), ! update => $self->{session}->phrase( "lib/userform:update_record" ) ! }; ! ##CSL my $form = $self->{session}->render_input_form( staff=>$self->{staff}, dataset=>$user_ds, type=>$self->{user}->get_value( "usertype" ), ! fields=>\@newfields, values=>$self->{user}->get_data(), show_names=>1, show_help=>1, *************** *** 288,294 **** ###################################################################### # ! # $foo = $thing->_update_from_form # # undocumented # --- 296,302 ---- ###################################################################### # ! # @problems = $thing->_update_from_form # # undocumented # *************** *** 297,302 **** --- 305,311 ---- sub _update_from_form { my( $self ) = @_; + my @problems; # Ensure correct user if( $self->{session}->param( "userid" ) ne *************** *** 306,328 **** $self->{session}->get_archive()->log( "Username in $form_id doesn't match object username ". $self->{username} ); ! return( 0 ); } my $user_ds = $self->{session}->get_archive()->get_dataset( "user" ); ! my @fields = $user_ds->get_type_fields( $self->{user}->get_value( "usertype" ), $self->{staff} ); ! my $field; foreach $field ( @fields ) { my $param = $field->form_value( $self->{session} ); ! ! $self->{user}->set_value( $field->{name} , $param ); } ! return( 1 ); } --- 315,351 ---- $self->{session}->get_archive()->log( "Username in $form_id doesn't match object username ". $self->{username} ); + push @problems, $self->{session}->html_phrase( + "lib/userform:mismatch_id"); ! return \@problems; } my $user_ds = $self->{session}->get_archive()->get_dataset( "user" ); ! ##CSL wrong. "usertype" might be modified by the data, thus it must be fetched from there ! my $usertype = $self->{session}->param( "usertype" ); ! $usertype = $self->{user}->get_value( "usertype" ) if (!defined $usertype ); ! my @fields = $user_ds->get_type_fields( $usertype, $self->{staff} ); my $field; foreach $field ( @fields ) { my $param = $field->form_value( $self->{session} ); ! next if( !$self->{staff} && $field->get_name eq "email" ); ! next if( !$self->{staff} && $field->get_name eq "username" ); ! if($field->{name} eq "password" && ! defined($param) && length($param) < 3) ! { ! push @problems, $self->{session}->html_phrase( ! "lib/userform:short_password"); ! } ! $self->{user}->set_value( $field->{name}, $param ); ! } ! if(scalar @problems == 0 ){ ! @problems = @{$self->{user}->validate()}; } ! return \@problems; } *** /usr/src/eprints/eprints-2.2.1/perl_lib/EPrints/User.pm Thu Nov 14 14:41:29 2002 --- /opt1/perl_lib/EPrints/User.pm Thu Sep 4 12:04:59 2003 *************** *** 109,117 **** ( { name=>"userid", type=>"int", required=>1 }, ! { name=>"username", type=>"text", required=>1 }, ! { name=>"password", type=>"secret", fromform=>\&EPrints::Utils::crypt_password }, { name=>"usertype", type=>"datatype", required=>1, --- 109,117 ---- ( { name=>"userid", type=>"int", required=>1 }, ! { name=>"username", type=>"text", required=>1, input_cols=>20 }, ! { name=>"password", type=>"secret", input_cols=>20, fromform=>\&EPrints::Utils::crypt_password }, { name=>"usertype", type=>"datatype", required=>1, *** /usr/src/eprints/eprints-2.2.1/perl_lib/EPrints/Utils.pm Thu Nov 14 14:41:29 2002 --- /opt1/perl_lib/EPrints/Utils.pm Fri Sep 19 09:02:13 2003 *************** *** 1348,1363 **** my( $session , $field , $value ) = @_; if( !defined $value ) { return $session->make_doc_fragment; } ! my( %c ) = ( ! ParseParamEnt => 0, ! ErrorContext => 2, ! NoLWP => 1 ); ! my $doc = eval { EPrints::XML::parse_xml_string( "".$value."" ); }; if( $@ ) { my $err = $@; ! $err =~ s# at /.*##; my $pre = $session->make_element( "pre" ); $pre->appendChild( $session->make_text( "Error parsing XML: ".$err ) ); return $pre; --- 1349,1365 ---- my( $session , $field , $value ) = @_; if( !defined $value ) { return $session->make_doc_fragment; } ! ##CSL ! # my( %c ) = ( ! # ParseParamEnt => 0, ! # ErrorContext => 2, ! # NoLWP => 1 ); ! # my $doc = eval { EPrints::XML::parse_xml_string( "".$value."" ); }; if( $@ ) { my $err = $@; ! ## $err =~ s# at /.*##; my $pre = $session->make_element( "pre" ); $pre->appendChild( $session->make_text( "Error parsing XML: ".$err ) ); return $pre; *************** *** 1552,1557 **** --- 1554,1581 ---- $fileid =~ s/[\s\/]/_/g; return $fileid; + } + + ###################################################################### + =pod + + =item $str = EPrints::Utils::strip_spaces( $string ) + + Take a value and strip leading and trailing whitespaces; convert internal + newlines to space + + =cut + ###################################################################### + + sub strip_spaces + { + my( $str ) = @_; + + return undef if( !defined $str ); + + $str =~ s/^\s//g; $str =~ s/\s$//g; $str =~ s/\s+/ /g; + + return $str; } 1; *** /usr/src/eprints/eprints-2.2.1/perl_lib/EPrints/XML.pm Thu Nov 14 14:41:29 2002 --- /opt1/perl_lib/EPrints/XML.pm Fri Sep 19 09:04:24 2003 *************** *** 142,150 **** if( $@ ) { my $err = $@; ! $err =~ s# at /.*##; ! print STDERR "Error parsing XML $string"; ! return; } } return $doc; --- 141,152 ---- if( $@ ) { my $err = $@; ! ##CSL ! # $err =~ s# at /.*##; ! # print STDERR "Error parsing XML $string"; ! # return; ! $err =~ s#\sXML::Parser::Expat.*$##s ; ! die $err ; } } return $doc; *************** *** 491,496 **** --- 493,506 ---- push @n, $node->toString; } } + ##CSL turn old good values into á the like that + ## elsif( EPrints::XML::is_dom( $node, "Text" ) ) + ## { + ## my $dtext = $node->toString; + ## $dtext =~ s/á/á/g; + ## push @n, $dtext; + ## } + ## elsif( EPrints::XML::is_dom( $node, "Text", *************** *** 595,617 **** sub write_xml_file { my( $node, $filename ) = @_; ! ! if( $gdome ) ! { unless( open( XMLFILE, ">$filename" ) ) { EPrints::Config::abort( <toStringEnc("utf8",0); print XMLFILE EPrints::XML::to_string( $node, "utf-8" ); ! close XMLFILE; ! } ! else ! { ! $node->printToFile( $filename ); } } ###################################################################### --- 605,647 ---- sub write_xml_file { my( $node, $filename ) = @_; ! ##CSL ! # ! # if( $gdome ) ! # { ! # unless( open( XMLFILE, ">$filename" ) ) ! # { ! # EPrints::Config::abort( <toStringEnc("utf8",0); ! # print XMLFILE EPrints::XML::to_string( $node, "utf-8" ); ! # close XMLFILE; ! # } ! # else ! # { ! # $node->printToFile( $filename ); ! # } ! ##CSL unless( open( XMLFILE, ">$filename" ) ) { EPrints::Config::abort( < + END + if( $gdome ){ # print XMLFILE $node->toStringEnc("utf8",0); print XMLFILE EPrints::XML::to_string( $node, "utf-8" ); ! } else { ! print XMLFILE $node->toString; } + close XMLFILE; + ##CSL } ###################################################################### *** /usr/src/eprints/eprints-2.2.1/perl_lib/XML/DOM.pm Thu Nov 14 14:41:29 2002 --- /opt1/perl_lib/XML/DOM.pm Thu Aug 7 15:52:01 2003 *************** *** 278,286 **** my ($str, $default) = @_; return undef unless defined $str; ! $str =~ s/([\xC0-\xDF].|[\xE0-\xEF]..|[\xF0-\xFF]...)|([$default])|(]]>)/ defined($1) ? XmlUtf8Decode ($1) : ! defined ($2) ? $DecodeDefaultEntity{$2} : "]]>" /egs; #?? could there be references that should not be expanded? # e.g. should not replace &#nn; ¯ and &abc; --- 278,292 ---- my ($str, $default) = @_; return undef unless defined $str; ! ##CSL ! ## $str =~ s/([\xC0-\xDF].|[\xE0-\xEF]..|[\xF0-\xFF]...)|([$default])|(]]>)/ ! ## defined($1) ? XmlUtf8Decode ($1) : ! ## defined ($2) ? $DecodeDefaultEntity{$2} : "]]>" /egs; ! $str =~ s/([\xC0-\xDF].|[\xE0-\xEF]..|[\xF0-\xFF]...)|&(&)&|&&([^&]+)&&|([$default])|(]]>)/ defined($1) ? XmlUtf8Decode ($1) : ! defined($2) ? $2 : ! defined($3) ? $3 : ! defined ($4) ? $DecodeDefaultEntity{$4} : "]]>" /egs; #?? could there be references that should not be expanded? # e.g. should not replace &#nn; ¯ and &abc;