source: trunk/preferences.cgi @ 716

Last change on this file since 716 was 621, checked in by Dominic Hargreaves, 17 years ago

Use environment variable OPENGUIDES_CONFIG_FILE for config file location;
will be useful for mod_perl. Also add error checking to OpenGuides::Config
config file opening.

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 3.2 KB
Line 
1#!/usr/local/bin/perl
2
3use warnings;
4use strict;
5
6use CGI;
7use OpenGuides::Config;
8use OpenGuides::CGI;
9use OpenGuides::Utils;
10use OpenGuides::Template;
11
12my $config_file = $ENV{OPENGUIDES_CONFIG_FILE} || "wiki.conf";
13my $config = OpenGuides::Config->new( file => $config_file );
14my $wiki = OpenGuides::Utils->make_wiki_object( config => $config );
15my $cgi = CGI->new();
16my $action = $cgi->param('action') || '';
17
18if ( $action eq "set_preferences" ) {
19    set_preferences();
20} else {
21    show_form();
22}
23
24exit 0;
25
26sub set_preferences {
27    my $username     = $cgi->param("username")                   || "";
28    my $gc_link      = $cgi->param("include_geocache_link")      || 0;
29    my $pre_above    = $cgi->param("preview_above_edit_box")     || 0;
30    my $latlong_trad = $cgi->param("latlong_traditional")        || 0;
31    my $omit_hlplnks = $cgi->param("omit_help_links")            || 0;
32    my $rc_minor_eds = $cgi->param("show_minor_edits_in_rc")     || 0;
33    my $edit_type    = $cgi->param("default_edit_type")          || "normal";
34    my $expires      = $cgi->param("cookie_expires")             || "month";
35    my $track_rc     = $cgi->param("track_recent_changes_views") || 0;
36    my $prefs_cookie = OpenGuides::CGI->make_prefs_cookie(
37        config => $config,
38        username => $username,
39        include_geocache_link  => $gc_link,
40        preview_above_edit_box => $pre_above,
41        latlong_traditional    => $latlong_trad,
42        omit_help_links        => $omit_hlplnks,
43        show_minor_edits_in_rc => $rc_minor_eds,
44        default_edit_type      => $edit_type,
45        cookie_expires         => $expires,
46        track_recent_changes_views => $track_rc,
47    );
48    my @cookies = ( $prefs_cookie );
49    # If they've asked not to have their recent changes visits tracked,
50    # clear any existing recentchanges cookie.
51    if ( ! $track_rc ) {
52        my $rc_cookie = OpenGuides::CGI->make_recent_changes_cookie(
53            config       => $config,
54            clear_cookie => 1,
55        );
56        push @cookies, $rc_cookie;
57    }
58    print OpenGuides::Template->output(
59        wiki     => $wiki,
60        config   => $config,
61        template => "preferences.tt",
62        cookies  => \@cookies,
63        vars     => {
64                      not_editable               => 1,
65                      username                   => $username,
66                      include_geocache_link      => $gc_link,
67                      preview_above_edit_box     => $pre_above,
68                      latlong_traditional        => $latlong_trad,
69                      omit_help_links            => $omit_hlplnks,
70                      show_minor_edits_in_rc     => $rc_minor_eds,
71                      default_edit_type          => $edit_type,
72                      cookie_expires             => $expires,
73                      track_recent_changes_views => $track_rc,
74                    }
75    );
76}
77
78sub show_form {
79    # Get defaults for form fields from cookies.
80    my %prefs = OpenGuides::CGI->get_prefs_from_cookie( config => $config );
81
82    print OpenGuides::Template->output(
83        wiki     => $wiki,
84        config   => $config,
85        template => "preferences.tt",
86        vars     => { %prefs,
87                      not_editable => 1,
88                      show_form    => 1
89                    }
90    );
91}
Note: See TracBrowser for help on using the repository browser.