package Kwiki::Edit::BackgroundSave; use warnings; use strict; use Kwiki::Plugin '-Base'; use mixin 'Kwiki::Installer'; our $VERSION = '0.02'; const class_title => 'Background Save'; const class_id => 'background_save'; const javascript_file => 'background_save.js'; const config_file => 'background_save.yaml'; sub register { my $registry = shift; $registry->add(prerequisite => 'prototype'); $registry->add(preload => $self->class_id); $registry->add(action => 'background_save'); $registry->add(hook => 'edit:edit', post => 'add_button' ); $registry->add(hook => 'headers:value', post => 'add_x_json_header' ); } sub background_save { my $page = $self->hub->pages->current; if( $page->modified_time != CGI::param('page_time') ) { my %info = ( problem => 'contention', user => $page->metadata->edit_by || 'UnknownUser', edittime => $page->edit_time, ); $self->hub->headers->json(%info); return $page->modified_time; } $page->content(CGI::param('content')); $page->update->store; return $page->modified_time; } sub add_button { my $hook = pop; my $background_save = $self->config->edit_save_background_button_text; my $page_name = $self->pages->current->title; $background_save = < BUTTON my $ret = $hook->returned; $ret =~ s/(\