HTML-WebMake

 view release on metacpan or  search on metacpan

lib/HTML/WebMake/CGI/Edit.pm  view on Meta::CPAN

	href="__REINVOKE__dir=${dirurl}__">the directory listing</a>.

    </p> }; #"

  } else {
    $form .= qq{ <p>

	Your changes have been submitted.  Thanks!  Now return to <a
	href="__REINVOKE__dir=${dirurl}__">the directory listing</a>.

    </p> }; #"
  }

  $form;
}

###########################################################################

sub create_wmmetas {
  my ($self) = @_;
  my $q = $self->{q};

  $self->{wmmetas} = '';

  foreach my $name ($q->param()) {
    next unless ($name =~ /^m_(\S+)/);
    my $metaname = $1; $metaname =~ s/\"/_/gs;

    my $val = $q->param ($name);
    next if ($val =~ /^\s*$/);
    $val =~ s/<(\/\s*wmmeta\s*>)/\&lt;$1/gs; # escape end-of-metadata tags

    $self->{wmmetas} .= "<wmmeta name=\"$metaname\">$val</wmmeta>\n";
  }

  1;
}

sub strip_wmmetas {
  my ($self, $t) = @_;

  $t =~ s/\s*<wmmeta\s*name=\"([^\"]+)\"\s*>(.*?)<\/\s*wmmeta\s*>\s*/
  	$self->_strip_wmmeta_item ($1, $2); /gies;

  $t =~ s/\s*<wmmeta\s*name=([^\s>]+)\s*>(.*?)<\/\s*wmmeta\s*>\s*/
  	$self->_strip_wmmeta_item ($1, $2); /gies;

  $t =~ s/\s*<wmmeta\s*name=\"?([^\">]+?)\"?\s+value=\"?([^\">]+?)\"?\s*\/>\s*/
  	$self->_strip_wmmeta_item ($1, $2); /gies;

  $t;
}

sub _strip_wmmeta_item {
  my ($self, $name, $val) = @_;
  $name =~ tr!A-Z!a-z!;
  $self->{read_metas}->{$name} = $val;
  return '';
}

sub update_metatable {
  my ($self) = @_;
  my $q = $self->{q};
  if (!$self->{metatable}->lock_metatable_file ($self->{file_base})) {
    $self->warn ("failed to lock metadata table: ".
    	"someone else may be updating content here, in which case try again".
	"later -- or you may not have write permissions to the filesystem.");
    return 0;		# TODO
  }

  my $res = $self->rewrite_metatable ($q);
  $self->{metatable}->unlock_metatable_file ($self->{file_base});

  if (!$res) {
    $self->warn ("write/unlink/rename of metadata table failed!");
    return 0;
  }
  1;
}

sub rewrite_metatable {
  my ($self, $q) = @_;

  my $tbl = $self->{metatable}->read_metatable_file ($self->{file_base});

  my $fname = $self->{filename};
  if (!defined $tbl->{$fname}) { $tbl->{$fname} = { }; }

  foreach my $name ($q->param()) {
    next unless ($name =~ /^m_(\S+)/);
    my $metaname = $1; $metaname =~ s/\"/_/gs;

    my $val = $q->param ($name);
    next if ($val =~ /^\s*$/);
    $val =~ s/<(\/\s*meta\s*>)/\&lt;$1/gs; # escape end-of-metadata tags

    $tbl->{$fname}->{$metaname} = $val;
  }

  $self->{metatable}->rewrite_metatable_file ($self->{file_base});
}

###########################################################################

sub handle_fileless_save {
  my ($self, $q, $newtext) = @_;

  my $form;
  my $wmkf = $q->param ('wmkf');
  $q->param ('f', $wmkf);

  my $handler = new HTML::WebMake::CGI::Site($q);
  $handler->set_file_base ($self->{file_base});
  $form = $handler->modify_text_item ($newtext);
  $self->{msgs} .= $handler->{msgs};

  if ($self->{msgs} ne '') {
    $form = qq{ <p>

	Some errors were encountered.  Either go back and re-edit to fix them,
	or abandon the changes that could not be committed and return to <a



( run in 3.354 seconds using v1.01-cache-2.11-cpan-d7f47b0818f )