Re: [vhffs-dev] Modify Git Repository Description |
[ Thread Index | Date Index | More vhffs.org/vhffs-dev Archives ]
Hi François, On Tue, Apr 17, 2018 at 12:07:28PM +0200, François Mazen wrote: > Hello, > > following my request in the forum to modify git repository description > (https://forum.tuxfamily.org/topic/704/probleme-avec-git/), I've > investigated a way to add this feature. > > I don't know if this is a popular request, but a diff is attached to this > message. It adds a description field in the git preference panel and commit > the modification in the git API. Similar code could be added to the other > source control type (svn, mercurial, bazaar, cvs). > The code is small and simple but I'm not a PERL developer, so feel free to > change my contribution :-) Great!, thank you very much, applied with some changes, see below. Sylvain > diff --git a/vhffs-api/src/Vhffs/Panel/Git.pm b/vhffs-api/src/Vhffs/Panel/Git.pm > index 338bccf1..9b1e2476 100644 > --- a/vhffs-api/src/Vhffs/Panel/Git.pm > +++ b/vhffs-api/src/Vhffs/Panel/Git.pm > @@ -211,6 +211,7 @@ sub save_prefs { > > my $public = $cgi->param('public'); > my $ml_name = $cgi->param('ml_name'); > + my $description = Encode::decode_utf8( scalar $cgi->param('description') ); > > unless( $user->can_modify($git) ) { > $panel->add_error( gettext('You\'re not allowed to do this, object is not in active state or you don\'t have enough ACL rights') ); > @@ -231,6 +232,14 @@ sub save_prefs { > $git->set_status(Vhffs::Constants::WAITING_FOR_MODIFICATION); > } > > + if(defined $description) { > + $git->set_description($description); > + $git->set_status(Vhffs::Constants::WAITING_FOR_MODIFICATION); > + } > + else { > + $panel->add_error( gettext('You must enter a description') ); > + } > + We can't set object state to WAITING_FOR_MODIFICATION here. If anything next fail we must not redirect the user to the group preference page with a successful message, which is what actually happen if object state is set to WAITING_FOR_MODIFICATION. Therefore we need to check all user input before trying to set them, and we need to set object state to WAITING_FOR_MODIFICATION last. I agree it was tricky because the previous code was wrong :-) > if($ml_name =~ /^\s*$/ or Vhffs::Functions::valid_mail($ml_name)) { > if($ml_name ne $git->get_ml_name) { > $git->set_ml_name($ml_name); > diff --git a/vhffs-panel/templates/scm/prefs.tt b/vhffs-panel/templates/scm/prefs.tt > index 79881d60..38de3a9f 100644 > --- a/vhffs-panel/templates/scm/prefs.tt > +++ b/vhffs-panel/templates/scm/prefs.tt > @@ -7,6 +7,9 @@ > <option value="0"[% ' selected="selected"' UNLESS repository.is_public %]>[% 'No' | i18n | html %]</option> > </select> > </p> > + <p><label for="description" class="description">[% 'Repository description:' | i18n | html %]</label> > + <textarea name="description" id="description" class="description" cols="45" rows="1">[% repository.get_description | html %]</textarea></p> > + > [% IF repository.supports_notifications %] > <h2>[% 'Options' | i18n | html %]</h2> > <p>
Attachment:
signature.asc
Description: Digital signature
Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |