There is a "GhostText" extension for Firefox that claims to do this:
  https://addons.mozilla.org/bg/firefox/addon/ghosttext/

If you edit your own wiki, there are a few programs that allow you to do it via command line (console/terminal) and let you configure your editor (including vim). I believe the first one was "pmwe", I have attached a GPL-licensed copy of it to this message. There are also:
  http://www.pmwiki.org/wiki/Cookbook/Pywe
  http://www.pmwiki.org/wiki/Cookbook/EmacsPmWikiMode

I have used none of the above, maybe the people who have can comment.

Petko


On 29/12/2017 22:51, Jont Allen wrote:
Hi
I was using "its all text" do edit web pages on pmwiki, but they have
changed firefox so that is no longer available.
Is there any option to change the editor in pmwiki to use your own editor?
I use gvim (vim).
The way that "its all text" worked is you would click on "Edit" and
the page would start gvim. You would make the edits on your own
computer, and then
when you saved the results, it would appear back on the pmwiki page,
with the changes.

Is any other way to do this now that "its all text' is gone?
#!/usr/bin/perl 
#   pmwe  (pmwikiedit)
#   Copyright 2002-2004 Jonathan Scott Duff 
#   [email protected]
#
#   This program is free software; you can redistribute it and/or modify
#   it under the terms of the GNU General Public License as published by
#   the Free Software Foundation; either version 2 of the License, or
#   (at your option) any later version.
#
#   This program is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#   along with this program; if not, write to the Free Software
#   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#
#   HISTORY
#   April  5, 2004      Added improvements suggested by Tom Hoover
#   April 10, 2004      Added some documentation and other improvements
#   May 8, 2004         Fixed a couple of small bugs

=pod

=head1 NAME

        pmwe - PmWiki Edit - Edit wiki pages using your favorite editor

=head1 SYNPOSIS

        pmwe [options] [Abbr:][WikiGroup/]WikiPage              -or-
        pmwe [options] URL      
        
=head1 DESCRIPTION

Edit wiki pages using your favorite editor. Currently only works
with pmwiki.

=head2 OPTIONS

        -a AUTHOR       Specify the author of the wiki page

        -c FILENAME     Name of cookie file to use. Defaults to
                        $HOME/.pmwe.cookies

        -e EDITOR       Full path to the editor you wish to use. If
                        unspecified, uses the value in the EDITOR
                        environment variable otherwise uses "vi" 

        -g              Grabs the passwords as they are entered and
                        writes them to the filename specified by the -p
                        option. This option has no effect if -p is not
                        specified.

        -m FILENAME     A file for mapping Intermap-like abbreviations to URLs
                        The format for this file is "abbreviation URL"
                        where the space can be any number of whitespace
                        characters. The URL must be such that adding
                        "Group/WikiPage" to the end will access the
                        wiki page.

        -p FILENAME     File for keeping the passwords for your realms.  
                        The format of the file is "realm:user:password".
                        When used in conjunction with the -g option,
                        realms and passwords will be written to the
                        password file as used.

        -u URL          Specify a URL for accessing the wiki. The URL
                        must be such that adding "Group/WikiPage" to the
                        end will access the wikipage.

=head1 AUTHOR

Jonathan Scott Duff [email protected]

=cut

use strict;
use warnings;

use Getopt::Std;
my %opt; getopts('m:a:e:u:c:p:gr', \%opt);

my %passwords;
if ($opt{'p'} && open(P,$opt{'p'})) {
   while (<P>) { 
      chomp; my($realm,$user,$pass) = split /:/,$_,2; 
      $realm = 'pm' unless $realm;
      $passwords{$realm}= [ $user, $pass ]; 
   }
   close P;
}

package PmWikiAgent;

use base qw(LWP::UserAgent);
use Term::ReadKey;

our $Author;
sub set_author { shift; $Author = shift; }

sub new {
   my $self = LWP::UserAgent::new(@_);
   $self->agent("pmwikiedit");
   return $self;
}

our $Password;
sub get_basic_credentials
{
   my($self, $realm) = @_;
   return ($passwords{$realm}[0],$passwords{$realm}[1]) if $passwords{$realm};
   print "Enter username/password for $realm\n";
   print "Username [$Author]: "; chomp(my $author = <STDIN>);
   $author = $Author if $author eq '';
   if ($Password) { print "Press ENTER to use the same password as before\n"; }
   print "Password: ";
   ReadMode('noecho'); chomp(my $password = <STDIN>); ReadMode('restore');
   print "\n";  # because we disabled echo
   if ($password eq '') { $password = $Password; }
   else { $Password = $password; }
   savepass($realm,$author,$password) if $opt{'g'};
   return ($author, $password);
}

use Fcntl ':flock';
sub savepass {
   return unless $opt{'p'};
   my ($realm,$user,$pass) = @_;
   $passwords{$realm} = [ $user, $pass ];
   return unless open(P,">",$opt{'p'});
   flock(P,LOCK_EX);
   for (sort keys %passwords) { print P join(":",$_,@{$passwords{$_}}),"\n"; }
   close P;
}

package main;

use HTTP::Cookies;
use File::Temp qw(tempfile);

my $DefaultWikiUrl = 'http://www.pmwiki.org/wiki/';
my $DefaultWikiPage = 'Main/WikiSandbox';
my $DefaultWikiEditor = 'vi';
my $DefaultWikiAuthor = 'Pm';

my %urlmap;
my $mapfile = $opt{'m'} || "$ENV{'HOME'}/.pmwe.map";
if (open(MAP, $mapfile)) {
   while (<MAP>) { my ($n,$url) = split; $urlmap{$n} = $url; }
   close MAP;
}

my $cookiefile  = $opt{'c'} || "$ENV{'HOME'}/.pmwe.cookies";
my $jar = HTTP::Cookies->new(file => $cookiefile, autosave => 1);
$jar->scan(sub { $DefaultWikiAuthor = $_[2] if $_[1] eq 'author'; });

my $wikipage    = shift || $DefaultWikiPage;
my $editor      = $opt{'e'} || $ENV{'EDITOR'} || $DefaultWikiEditor;
my $author      = $opt{'a'} || $ENV{'WikiAuthor'} || $DefaultWikiAuthor;
my $wikiurl     = $opt{'u'} || shift || $DefaultWikiUrl;

my $pageurl;
if ($wikipage =~ /^http/) { 
   $pageurl = $wikipage;
   if ($wikipage =~ /pagename/) 
      { ($wikipage) = $pageurl =~ /pagename=([^&]+)/; }
   else { ($wikipage) = $pageurl =~ m!(\w+/\w+)$!; }
} else {
   $wikiurl = $urlmap{$1} if $wikipage=~s/^(\w+):// && $urlmap{$1};
   if (not exists $urlmap{$1}) { die "There exists no map for $1\n"; }

   $wikipage =~ tr!/!.!;
   $wikipage .= ".$wikipage" unless $wikipage =~ /\./;

   $wikiurl ||= $DefaultWikiUrl;
   $wikiurl .= '/' unless $wikiurl =~ m!/$!;
   $pageurl = "$wikiurl$wikipage";
}

while (1) { 
  my $sep = ($pageurl =~ /\?/) ? '&' : '?';
  my $ua = PmWikiAgent->new; $ua->set_author($author); $ua->cookie_jar($jar);
  my $req = HTTP::Request->new('GET', "$pageurl${sep}action=source");
  my $outfile = (tempfile(UNLINK => 1))[1];
  my $res = $ua->request($req,$outfile);
  
  my $mtime0 = (stat($outfile))[9];
  system("$editor $outfile");
  my $mtime1 = (stat($outfile))[9];
  $mtime0 == $mtime1 && die "content unchanged.\n"; 
  
  open(OUTFILE, $outfile) or die;
  $res = $ua->post($pageurl, [
     action     => 'edit',
     post       => 1,
     pagename   => $wikipage,
     text       => do { local $/; <OUTFILE> },
     author     => 'Pm',
     authpw     => '!secret',
     code1      => 6472,
  ]);
  close OUTFILE;
  $res->is_error && die "Unable to save content!\n".$res->as_string."\n";
  exit(0) unless $opt{'r'};
}
_______________________________________________
pmwiki-users mailing list
[email protected]
http://www.pmichaud.com/mailman/listinfo/pmwiki-users

Reply via email to