OpenGuides-0.76000755001750001750 012251157435 14004 5ustar00vagrantvagrant000000000000OpenGuides-0.76/META.json000444001750001750 1054612251157425 15607 0ustar00vagrantvagrant000000000000{ "abstract" : "A complete web application for managing a collaboratively-written guide to a city or town.", "author" : [ "unknown" ], "dynamic_config" : 1, "generated_by" : "Module::Build version 0.38, CPAN::Meta::Converter version 2.120351", "license" : [ "perl_5" ], "meta-spec" : { "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", "version" : "2" }, "name" : "OpenGuides", "prereqs" : { "build" : { "requires" : { "Class::Accessor" : "0", "Config::Tiny" : "0", "Data::Dumper" : "0", "File::Path" : "0", "Module::Build" : "0.26" } }, "configure" : { "requires" : { "Class::Accessor" : "0", "Config::Tiny" : "0", "Module::Build" : "0.26" } }, "runtime" : { "recommends" : { "DBD::SQLite" : "0", "Geo::HelmertTransform" : "0", "Test::HTML::Content" : "0", "Test::JSON" : "0", "Test::Pod" : "0", "Wiki::Toolkit::Plugin::Ping" : "0" }, "requires" : { "Algorithm::Diff" : "0.13", "CGI" : "2.92", "CGI::Carp" : "0", "CGI::Cookie" : "0", "Class::Accessor" : "0", "Config::Tiny" : "0", "DBD::SQLite" : "0", "Data::Dumper" : "0", "Data::Validate::URI" : "0", "File::Spec::Functions" : "0", "File::Temp" : "0", "Geo::Coordinates::ITM" : "0", "Geo::Coordinates::OSGB" : "0", "Geo::Coordinates::UTM" : "0", "HTML::Entities" : "0", "JSON" : "0", "LWP::Simple" : "0", "List::Util" : "0", "MIME::Lite" : "0", "Net::Netmask" : "0", "POSIX" : "0", "Parse::RecDescent" : "0", "Plucene" : "0", "Template" : "2.24", "Template::Plugin::JSON::Escape" : "0", "Time::Piece" : "0", "URI::Escape" : "0", "Wiki::Toolkit" : "0.83", "Wiki::Toolkit::Feed::Atom" : "0", "Wiki::Toolkit::Feed::RSS" : "0", "Wiki::Toolkit::Formatter::UseMod" : "0.24", "Wiki::Toolkit::Plugin::Categoriser" : "0", "Wiki::Toolkit::Plugin::Diff" : "0", "Wiki::Toolkit::Plugin::JSON" : "0.05", "Wiki::Toolkit::Plugin::Locator::Grid" : "0", "Wiki::Toolkit::Plugin::RSS::Reader" : "0", "XML::RSS" : "0" } } }, "provides" : { "OpenGuides" : { "file" : "lib/OpenGuides.pm", "version" : "0.76" }, "OpenGuides::Build" : { "file" : "lib/OpenGuides/Build.pm", "version" : "0.04" }, "OpenGuides::CGI" : { "file" : "lib/OpenGuides/CGI.pm", "version" : "0.12" }, "OpenGuides::Config" : { "file" : "lib/OpenGuides/Config.pm", "version" : "0.09" }, "OpenGuides::Feed" : { "file" : "lib/OpenGuides/Feed.pm", "version" : "0.03" }, "OpenGuides::JSON" : { "file" : "lib/OpenGuides/JSON.pm", "version" : "0.05" }, "OpenGuides::RDF" : { "file" : "lib/OpenGuides/RDF.pm", "version" : "0.15" }, "OpenGuides::Search" : { "file" : "lib/OpenGuides/Search.pm", "version" : "0.15" }, "OpenGuides::Search::Lucy" : { "file" : "lib/OpenGuides/Search/Lucy.pm", "version" : 0 }, "OpenGuides::Template" : { "file" : "lib/OpenGuides/Template.pm", "version" : "0.19" }, "OpenGuides::Test" : { "file" : "lib/OpenGuides/Test.pm", "version" : "0.07" }, "OpenGuides::Utils" : { "file" : "lib/OpenGuides/Utils.pm", "version" : "0.18" } }, "release_status" : "stable", "resources" : { "bugtracker" : { "web" : "https://github.com/OpenGuides/OpenGuides/issues" }, "homepage" : "http://openguides.org", "license" : [ "http://dev.perl.org/licenses/" ], "repository" : { "url" : "git://github.com/OpenGuides/OpenGuides.git" }, "x_MailingList" : "openguides-dev@lists.openguides.org" }, "version" : "0.76" } OpenGuides-0.76/Build.PL000444001750001750 4211612251157425 15460 0ustar00vagrantvagrant000000000000use strict; use lib "lib"; eval { require Config::Tiny; # OpenGuides::Build and OpenGuides::Config both use Config::Tiny. require OpenGuides::Build; require OpenGuides::Config; }; die "Problem loading OpenGuides module or a missing module\n\n$@.\n" if $@; # Create the build object. my $build = OpenGuides::Build->new( sign => 1, dist_name => "OpenGuides", dist_abstract => "A complete web application for managing a collaboratively-written guide to a city or town.", module_name => "OpenGuides", dist_version_from => "wiki.cgi", license => "perl", build_requires => { 'Module::Build' => '0.26', # API change for accessing config data 'Class::Accessor' => 0, 'Config::Tiny' => 0, 'Data::Dumper' => 0, 'File::Path' => 0, }, configure_requires => { 'Config::Tiny' => 0, 'Class::Accessor' => 0, 'Module::Build' => '0.26', # API change for accessing config data }, recommends => { 'DBD::SQLite' => 0, # for testing 'Test::HTML::Content' => 0, # for testing, oddly enough 'Test::JSON' => 0, # for testing, oddly enough 'Wiki::Toolkit::Plugin::Ping' => 0, # for pinging external services 'Geo::HelmertTransform' => 0, # for correct WGS84 lat/long 'Test::Pod' => 0, }, meta_merge => { resources => { MailingList => 'openguides-dev@lists.openguides.org', homepage => 'http://openguides.org', bugtracker => 'https://github.com/OpenGuides/OpenGuides/issues', repository => 'git://github.com/OpenGuides/OpenGuides.git', } }, dynamic_config => 1, create_makefile_pl => "passthrough" ); my %args = $build->args; my $force = exists $args{force}; unless ($force || $ENV{'AUTOMATED_TESTING'}) { print <y_n("Continue with install?", "y"); exit 0 unless $continue; } my $existing_config_file = 'wiki.conf'; my $existing_config; if (-f $existing_config_file) { $existing_config = OpenGuides::Config->new(file => $existing_config_file); } else { print <new(); } my %yn_vars = map { $_ => 1 } qw(use_plucene enable_page_deletion navbar_on_home_page backlinks_in_title moderation_requires_password enable_node_image enable_common_categories enable_common_locales recent_changes_on_home_page use_leaflet random_page_omits_locales random_page_omits_categories use_lucy content_above_navbar_in_html show_gmap_in_node_display force_wgs84 send_moderation_notifications read_only); my $skip_config = $force || $ENV{AUTOMATED_TESTING} ? 'y' : Module::Build->y_n("Skip OpenGuides configuration?", "n"); if ( $skip_config ) { print <dbtype__qu; if ( $skip_config ) { $dbtype = $existing_config->dbtype; } else { until ( $dbtype ) { my $def = $existing_config->dbtype; $dbtype = Module::Build->prompt("\n$dbtype_qu", $def); $dbtype = lc($dbtype); $dbtype =~ s/^\s*//; $dbtype =~ s/\s*$//; unless ( $dbtype eq "postgres" or $dbtype eq "mysql" or $dbtype eq "sqlite" ) { undef $dbtype; } } } # Check they have the relevant DBD driver installed. my %drivers = ( postgres => "DBD::Pg", mysql => "DBD::mysql", sqlite => "DBD::SQLite", ); eval "require $drivers{$dbtype}"; warn "$drivers{$dbtype} is needed to run a $dbtype database" if $@; push @answers, { question => $dbtype_qu, variable => "dbtype", value => $dbtype }; my $install_directory; # used to suggest template paths my $use_plucene = 1; # keep track of this so we know what to put in prereqs my $use_lucy = 0; my $use_leaflet; # if true, we skip the GMaps questions my %gmaps_vars = map { $_ => 1 } qw( gmaps_api_key centre_long centre_lat default_gmaps_zoom default_gmaps_search_zoom ); my $centre_lat = ''; # contains centre lat derived from Google Maps URL foreach my $var ( qw( dbname dbuser dbpass dbhost dbport script_name install_directory template_path custom_template_path script_url custom_lib_path use_lucy use_plucene indexing_directory enable_page_deletion admin_pass stylesheet_url site_name navbar_on_home_page recent_changes_on_home_page random_page_omits_locales random_page_omits_categories content_above_navbar_in_html home_name site_desc default_city default_country contact_email default_language formatting_rules_node backlinks_in_title use_leaflet gmaps_api_key centre_long centre_lat show_gmap_in_node_display default_gmaps_zoom default_gmaps_search_zoom force_wgs84 google_analytics_key licence_name licence_url licence_info_url moderation_requires_password enable_node_image enable_common_categories enable_common_locales spam_detector_module host_checker_module static_path static_url send_moderation_notifications read_only custom_macro_module ) ) { my $q_method = $var . "__qu"; my $qu = $existing_config->$q_method; my $type = $yn_vars{$var} ? "y_n" : ""; my $def = $existing_config->$var; my $val = $def; # Override dbname question for SQLite only. if ( $dbtype eq "sqlite" and $var eq "dbname" ) { $qu = "what's the full filename of the SQLite database this site runs on?"; } if ( $dbtype eq "sqlite" and ( $var eq "dbuser" or $var eq "dbpass" or $var eq "dbhost" or $var eq "dbport") ) { print "$var not relevant for SQLite... skipping...\n" unless $skip_config; push @answers, { question => $qu, variable => $var, value => "not-used" }; next; } # Don't ask about Plucene if we've said to use Lucy. If we haven't said # to use Lucy, ask about Plucene only for existing installs, since the old # Search::InvertedIndex method is deprecated. if ( $var eq "use_plucene" ) { if ( $use_lucy ) { print "Skipping question about Plucene - we're using Lucy.\n" unless $skip_config; push @answers, { question => $qu, variable => $var, value => 0 }; next; } elsif ( $existing_config->$var == 1 ) { print "Skipping question about Plucene - we'll use it by " . "default.\n" unless $skip_config; push @answers, { question => $qu, variable => $var, value => 1 }; next; } } # If we're using Leaflet, we can skip the GMaps stuff. Don't erase any # previous answers from their config file though. if ( $use_leaflet && $gmaps_vars{$var} ) { push @answers, { question => $qu, variable => $var, value => $val }; next; } # Make sensible suggestions for template paths if we don't already # have them stored. Not really a default, but a useful hint/shortcut. if ( $var eq "template_path" && !defined $existing_config->$var ) { $def = $install_directory; $def .= "/" unless $def =~ m|/$|; $def .= "templates"; } if ( $var eq "custom_template_path" && !defined $existing_config->$var ) { $def = $install_directory; $def .= "/" unless $def =~ m|/$|; $def .= "custom-templates"; } # If a Google Maps URL was provided last time we know the centre_lat if ( $var eq 'centre_lat' && $centre_lat ) { $val = $centre_lat; next; } # Here is where we actually ask the questions. unless ( $skip_config ) { if ( $type eq "y_n" ) { # may be stored as true/false integer value if ( $def =~ /^\d+$/ ) { $def = $def ? "y" : "n"; } $val = Module::Build->y_n("\n$qu ", $def); } else { $val = Module::Build->prompt("\n$qu ", $def); } } # Allow user to use a Google Maps URL rather than enter lat/long by hand. # We assume centre_long is being asked for first; ensure so in big list above. if ( $var eq 'centre_long' ) { if ( $val =~ /ll=([-\d.]+),([-\d.]+)/ ) { print "Got a Google Maps URL with centre long,lat: [$1, $2]\n"; $val = $1; $centre_lat = $2; } } # Store install_directory so we can use it to suggest template paths. $install_directory = $val if $var eq "install_directory"; # Keep track of chosen search method so we know what to put in prereqs. # From Module::Build docs: ->y_n returns a Perl boolean true or false. $use_lucy = 1 if $var eq "use_lucy" and $val; $use_plucene = 1 if $var eq "use_plucene" and $val; # If they've just chosen to use Leaflet, we won't need to ask any of the # GMaps questions. $use_leaflet = 1 if $var eq "use_leaflet" and $val; # Make sure that script_url ends in a / if ( $var eq "script_url" and $val !~ /\/$/ ) { $val .= "/"; } push @answers, { question => $qu, variable => $var, value => $val }; } # Now deal with the geo stuff. my $geo_handler; my $geo_handler_qu = "Distance calculation methods available are:" . "\n 1) British National Grid" . "\n 2) Irish National Grid" . "\n 3) UTM ellipsoid" . "\nWhich would you like to use?"; if ( $skip_config ) { # We default to GB National Grid for historical reasons. $geo_handler = $existing_config->geo_handler; } else { my $choice; until ( $choice ) { my $def = $existing_config->geo_handler; $choice = Module::Build->prompt("\n".$geo_handler_qu, $def); $choice =~ s/^\s*//; $choice =~ s/\s*$//; unless ( $choice eq "1" or $choice eq "2" or $choice eq "3" ) { undef $choice; } } $geo_handler = $choice; } $geo_handler_qu =~ s/\n//gs; push @answers, { question => $geo_handler_qu, variable => "geo_handler", value => $geo_handler, }; if ( $geo_handler eq "3" ) { my $qu = $existing_config->ellipsoid__qu; my $ellipsoid; if ( $skip_config ) { $ellipsoid = $existing_config->ellipsoid; } else { my $def = $existing_config->ellipsoid; $ellipsoid = Module::Build->prompt("\n".$qu, $def); $ellipsoid =~ s/^\s*//; $ellipsoid =~ s/\s*$//; } push @answers, { question => $qu, variable => "ellipsoid", value => $ellipsoid, }; } # Create a user-friendly config file from answers to prompts. open FILE, ">wiki.conf" or die "Can't open wiki.conf for writing: $!"; foreach my $ans (@answers) { print FILE "# $ans->{question}\n"; print FILE "$ans->{variable} = $ans->{value}\n\n"; } close FILE or die "Can't close wiki.conf: $!"; # We currently only support Plucene for new installs, but may support # others in future my $search_module = $use_plucene ? "Plucene" : "Search::InvertedIndex"; $build->requires({ 'Algorithm::Diff' => '0.13', # for sdiff 'CGI' => '2.92', # avoid escapeHTML bug 'CGI::Carp' => 0, 'CGI::Cookie' => 0, 'Wiki::Toolkit' => '0.83', 'Wiki::Toolkit::Feed::Atom' => 0, 'Wiki::Toolkit::Feed::RSS' => 0, 'Wiki::Toolkit::Formatter::UseMod' => 0.24, #for external_link_class 'Wiki::Toolkit::Plugin::Categoriser' => 0, 'Wiki::Toolkit::Plugin::Diff' => 0, 'Wiki::Toolkit::Plugin::JSON' => '0.05', 'Wiki::Toolkit::Plugin::Locator::Grid'=> 0, 'Wiki::Toolkit::Plugin::RSS::Reader' => 0, 'Class::Accessor' => 0, 'Config::Tiny' => 0, 'Data::Dumper' => 0, $drivers{$dbtype} => 0, 'File::Spec::Functions' => 0, 'File::Temp' => 0, 'HTML::Entities' => 0, 'JSON' => 0, # W::T::P::JSON uses anyway 'LWP::Simple' => 0, 'MIME::Lite' => 0, 'Parse::RecDescent' => 0, $search_module => 0, 'POSIX' => 0, 'Template' => '2.24', # for .lower vmethod 'Template::Plugin::JSON::Escape' => 0, 'Time::Piece' => 0, 'URI::Escape' => 0, 'XML::RSS' => 0, 'Data::Validate::URI' => 0, 'Net::Netmask' => 0, 'List::Util' => 0, 'Geo::Coordinates::UTM' => 0, 'Geo::Coordinates::OSGB' => 0, 'Geo::Coordinates::ITM' => 0, }); $build->add_to_cleanup( "t/indexes/" ); $build->add_to_cleanup( "t/node.db" ); $build->add_to_cleanup( "t/prefs.db" ); $build->add_to_cleanup( "t/templates/tmp/" ); # Tell OpenGuides::Build which additional scripts and templates to install. $build->config_data( __extra_scripts => [ "wiki.conf", "preferences.cgi", "search.cgi", "newpage.cgi" ] ); $build->config_data( __templates => [ "admin_home.tt", "admin_revert_user.tt", "autocreate_content.tt", "backlink_results.tt", "banner.tt", "blacklisted_host.tt", "delete_confirm.tt", "delete_done.tt", "delete_password_wrong.tt", "differences.tt", "display_metadata.tt", "json_index.tt", "metadata.tt", "edit_form.tt", "edit_form_actions.tt", "edit_form_preview.tt", "error.tt", "footer.tt", "header.tt", "home_node.tt", "index_form.tt", "map_index.tt", "map_index_leaflet.tt", "missing_metadata.tt", "moderate_confirm.tt", "moderate_password_wrong.tt", "navbar.tt", "navbar_categories.tt", "navbar_locales.tt", "navbar_help.tt", "navbar_admin.tt", "navbar_home_link.tt", "navbar_options.tt", "navbar_revision_info.tt", "navbar_search.tt", "navbar_this_page.tt", "navbar_tools.tt", "needing_moderation.tt", "newpage.tt", "node.tt", "node_history.tt", "node_image.tt", "node_image_fields.tt", "node_photo_notes.tt", "node_location_search.tt", "node_rdf.tt", "openguides_information_boxes.tt", "preferences.tt", "random_page_failure.tt", "rdf_index.tt", "read_only.tt", "recent_changes.tt", "search_results.tt", "search_results_leaflet.tt", "site_index.tt", "search.tt", "spam_detected.tt", "userstats.tt", "wanted_pages.tt" ] ); $build->config_data( __static_files => [ "map-leaflet.js", "openguides-base.css", ] ); # Finally write the build script. $build->create_build_script; OpenGuides-0.76/INSTALL000444001750001750 4710012251157425 15213 0ustar00vagrantvagrant000000000000OpenGuides installation instructions ==================================== If while following the instructions below or while trying to use your OpenGuides install you see an error that you don't understand, please consult the TROUBLESHOOTING file. For details about installing multiple OpenGuides sites on a single server, or installing OpenGuides into a directory that isn't where your system Perl library is, see further down this file. * Basic installation Unpack the distribution (using for example 'tar' or 'WinZip'), and set your working directory to be the top level of the distribution. If you have an existing "wiki.conf" configuration file and you wish to keep using the values in that, copy it to this directory. Now execute the following commands: perl Build.PL perl Build perl Build test perl Build install The very first of these commands asks a number of questions regarding the installation. "Skip OpenGuides configuration?" Answer "n" to this question unless you really know what you're doing. It's mainly there for developers. (If you already have a configuration file, and wish to use it without the build script asking you this question, run Build.PL with the option --force. This will also skip the "Continue with install?" question.) "What type of database do you want the site to run on?" Answer "postgres", "mysql", or "sqlite". "What's the name of the database that this site runs on?" "...the database user that can access that database?" "...the password that they use to access the database?" You should create (or ask your ISP/sysadmin to create) a database specifically for the use of OpenGuides. If you have more than one OpenGuides installation, for example if you run guides for more than one city, each installation will need its own database. "...the machine that the database is hosted on? (blank if local" If the database is running on a local machine with username/password authentication then just press RETURN to skip this question. If it is running on a local machine with IDENT authentication then you may need to answer "localhost" to this question. If it is running on a remote machine then enter the full hostname of that machine. "What do you want the script to be called?" The default is for the main script to be called "wiki.cgi", but you may prefer to name it after your city - "leeds-guide.cgi" for example. Note that your webserver may be configured to only allow execution of scripts ending in, for example, ".cgi" "What directory should I install it in?" You need to pick a directory for the OpenGuides software to be installed in. This must be one known to the webserver as containing CGI scripts. You will need to have write permission on this directory when you come to run "perl Build install"; unless this is a private directory belonging to you then this might require an 'su' or 'sudo' to root under Unix. "What directory should I install the templates in?" "Where should I look for custom templates?" Normally these will be in the install directory, but they can be anywhere. Custom templates are intended to be user-modified, so you might want to put them somewhere in /etc. "What URL does the install directory map to?" Give the full address needed to access the installation directory with a web browser - for example http://openguide.example.org/ "Do you want me to munge a custom lib path into the scripts?" If you have installed some or all of the required Perl modules (or indeed the OpenGuides modules themselves) into a private directory, you will need to tell the scripts where to find these modules. Enter the paths to search here just as you would enter them in a 'use lib qw( ... );' in a Perl script. "Do you want to use Lucy for searching?" This is currently experimental - don't say "yes" to this question unless you know what you're doing. If you are changing to Lucy from another search method (Plucene or Search::InvertedIndex), you will need to do two things: - either delete your old indexes (they're just files in the index directory) or use a different index directory - reindex your entire wiki (see reindex.pl in the examples/ directory of this distribution) "Do you want to use Plucene for searching?" This question is no longer asked, but documentation here is retained for the benefit of people upgrading. If you are changing to Plucene from Search::InvertedIndex, you will need to do two things: - either delete your old indexes (they're just files in the index directory) or use a different index directory - reindex your entire wiki (see reindex.pl in the examples/ directory of this distribution) "What directory can I use to store indexes in for searching?" You need a directory to store files used as indexes for the site. The user that your script will run as will need write permission on this directory. Under some webserver configurations this might be a dedicated user - 'nobody' or 'www-data' for example, but for many multi-user systems this will just be yourself. "Do you want to enable page deletion?" "Please specify a password for the site admin." The default is to disable page deletion. If you choose to enable the page deletion mechanism then you will need to add a password to your wiki.conf by answering the question above or manually using a line such as admin_pass = putyourpasswordhere Users who know this password will be able to delete unwanted pages - along with all their history - from your wiki. *** USE WITH CAUTION. DELETED PAGES CANNOT BE RECOVERED. *** "What's the URL of the site's stylesheet? If you don't enter one here, the basic OpenGuides stylesheet will be used instead. Supplying an answer to this question is optional. If you do not supply your own stylesheet, your guide will use the basic OpenGuides stylesheet instead (this is automatically installed in your static content directory regardless of your answer to the present question). "What's the wiki called?" This is a title which will appear at the top of every page. If you have more than one OpenGuides installation at the same site then each should have a unique name, since this name is used to manage user preferences. "Do you want the navigation bar included on the home page?" Answer "y" or "n". "Do you want the ten most recent changes included on the home page?" Answer "y" or "n". "Do you want the Random Page link to avoid returning a locale page? "Do you want the Random Page link to avoid returning a category page? Answer "y" or "n". The defaults are "n", which means that Random Page is as likely to return a category or locale page as anything else. If the category and locale pages on your Guide are generally just lists of things in that category/locale, you probably want to pick "y" here. If, on the other hand, your category/locale pages generally have substantial content of their own, you may prefer to choose "n". "Do you want the content to appear above the navbar in the HTML?" Answer "y" or "n". The default is "n", for reasons of backwards compatibility with existing stylesheets, but the recommended answer is "y", as this will help search engines to find the most relevant parts of your pages. "What should the home page of the wiki be called?" "How would you describe the wiki?" Self-explanatory. "What city is the wiki based in?" "What country is the wiki based in?" If the wiki will not be city or country specific you can leave either or both of these blank. "Contact email address for the wiki admin?" Self explanatory. "What language will the site be in? (Please give an ISO language code.)" eg "en" for English, "it" for Italian. See http://ftp.ics.uci.edu/pub/ietf/http/related/iso639.txt "What's the name of the node or page to use for the text formatting rules link?" "What URL do you want to use for the text formatting rules" From 0.19, OpenGuides allows users to choose whether or not to have a permanent link to the text formatting rules node or page in their navbar. You need to put the name of that node or URL in here for it to work, though. You might want to call the node "Text Formatting Examples", "Text Formatting Rules", "House Style" or whatever. Note that these the latter question will override the former, so if you want to use a local node make sure to leave the latter blank. "Make node titles link to node backlinks (C2 style)?" This refers to turning titles into links which bring up a list of referring pages. This was the convention with older wikis ("C2" refers to the original wiki at http://c2.com/cgi/wiki), but is not intuitive. "Do you want to use the Leaflet mapping library?" Answer "y" or "n", but "y" is recommended. In version 0.67 of OpenGuides, we switched from using the Google Maps API to the open source Leaflet mapping library. For now, Google Maps support is retained for legacy reasons, but is deprecated and will be removed in the future. We therefore recommend that you answer "y" to this question. "Would you like to display a map on every node that has geodata?" Answer "y" or "n". Note that an answer of "y" will only take effect if you've either chosen to use the Leaflet mapping library, or you've supplied a Google Maps API key. Note further that users can choose to turn this off in their preferences. "Do you have a Google Maps API key to use with this guide?" As of version 0.67 of OpenGuides, we recommend using the Leaflet mapping library instead of Google Maps - our Google Maps support is out of date and no longer maintained. However, if you do want to use Google Maps, you need to register with Google to get an API key. Visit http://www.google.com/apis/maps/signup.html and follow the instructions. Paste the great long string into the console window where you are installing. See README.GMAPS for more information. "What is the longitude of the centre point of a map to draw for your guide?" "What is the latitude of the centre point of a map to draw for your guide?" This is only necessary if you're using Google Maps - our Leaflet code will figure this out for you. If you do choose to use Google Maps, it's probably a good idea to pick some notionally central point for your guide. For example, Carfax for Oxford, Charing Cross for London. As a convenience, you may paste in a Google Maps URL for the centre longitude question and the (long,lat) will be parsed out from the URL. "What default zoom level shall we use for Google Maps?" "What default zoom level shall we use for Google Maps in the search results?" The defaults are probably appropriate in most cases. "Forcibly treat stored lat/long data as if they used the WGS84 ellipsoid?" Default this answer if you don't know what it means. "Do you have a Google Analytics key to use with this guide?" If you'd like to use Google Analytics to track the traffic on your guide, visit http://www.google.com/analytics/ to sign up for a key. The answer to this question is the string in quotes in the HTML fragment they ask you to paste into your HTML, something along the lines of _uacct = "UA-1234567-1" - it's the UA-1234567-1 part that you need to put in here. If you've forgotten your key, go to Analytics Settings, click "Edit" under Settings, then click "Check Status" in the top right-hand corner of the box with grey stripes. "What licence will you use for the guide?" We strongly recommend that you think at the outset about the licence your guide will use, for maximum usefulness. In particular for a guide that will be on the OpenGuides network, we recommend the "Creative Commons Attribution-ShareAlike 2.5" licence. "What is the URL to your licence?" If you used our recommendation above the URL you will want here is: http://creativecommons.org/licenses/by-sa/2.5/ "What is the URL to your local page about your licensing policy?" You should probably include a page on your wiki about your local licensing policy, but you can leave this blank for now if you don't have one yet. "What module would you like to use for spam detection? (optional)" The module you choose should have a method called "looks_like_spam", which accepts a hash with content and metadata as keys, and returns true or false to the question of whether the edit should be considered to be spam. "What module would you like to use to define custom macros? (optional)" The module you choose should have a method called "custom_macros", which takes arguments macros => \%macros, where the keys of %macros are regexps and the values are subs. It should return a hash similar to %macros. See OpenGuides::Utils for the macros defined in core OpenGuides. "What directory should we install static content (CSS, images, javascript) to?" OpenGuides comes with some static content which will be installed automatically. "What is the URL corresponding to the static content?" You will need to configure the above directory in your web server, then input the URL the content will be visible at here. "Should we send email notifications when a moderated node is edited?" For spam avoidance, you can configure certain nodes to require moderation. To ensure that such edits are noticed, OpenGuides can email you. "Distance calculation methods available are: 1) British National Grid 2) Irish National Grid 3) UTM ellipsoid Which would you like to use?" (and if you choose UTM ellipsoid) "Which ellipsoid would you like to use? (eg 'Airy', 'WGS-84')" See http://www.vterrain.org/Projections/ for how this all works. A UTM (Universal Transverse Mercator) ellipsoid maps latitude and longitude to eastings and northings on a square grid, which allows more accurate distance calculations within the guide. The British and Irish National Grids are scaled and parametrised versions of UTM ellipsoids (Airy 1830 in the British case, Modified Airy in the Irish). Please note that at the moment there is no provision for changing your mind later about which ellipsoid to use, but it shouldn't be too hard to write a conversion script so don't worry too much about picking the wrong one. However do note that once you've entered some location data you should not change this value in the config file without running some kind of converter. If you decide to use the British or Irish National Grid, your users will be able to choose between entering location data as lat/long or as grid co-ordinates. You must have Geo::Coordinates::OSGB installed to use the British National Grid, Geo::Coordinates::ITM to use the Irish National Grid, and Geo::Coordinates::UTM to use a UTM ellipsoid. If you want to use a UTM ellipsoid, WGS-84 is the best choice, as it will allow you to use the mapping support with the minimum of fuss. * Dependency errors If, after you have answered these questions, the build script complains about missing dependencies, don't panic! Simply install them from CPAN and then try again. Note that a wiki.conf file will have been written out at this point, so if you retain it you won't have to answer all the questions again. * Custom templates and CSS Once you have installed OpenGuides you may wish to edit templates that provide site-specific design. These templates are stored in the directory custom-templates/ by default and are described in the file CUSTOMISATION. The id and class tags used for the CSS in OpenGuides are specified in README.CSS. * Security The installer will try to create (or modify an existing) a .htaccess file to protect wiki.conf, which contains sensitive data (ie passwords). However we cannot tell whether apache (or any other web server you may be using) is using this file, so you should check that it functioning and that you cannot access wiki.conf over HTTP. You should also configure wiki.conf with the minimum permissions required so that local users cannot read the file. This is difficult to automate, but the file should be probably be mode 0640, owned by root or an admin user, and set to the group the web server runs with. * Web server configuration In order to let your web server serve up OpenGuides correctly, you will have to tell it to recognise your installation directory as one containing CGI scripts. However you can make your URLs nicer by employing mod_rewrite as well. The following Apache configuration directives show how: Alias /myguide /usr/lib/cgi-bin/myguide Options FollowSymLinks Indexes ExecCGI RewriteEngine on RewriteBase /myguide/ RewriteRule ^$ wiki.cgi [L] Redirect /cgi-bin/myguide/ http://www.example.com/myguide/ You will of course need to make the appropriate substitutions for your site. You also need to make sure that mod_rewrite is enabled in your web server before adding such a configuration. The final step in this URL tidying is to tell OpenGuides that the main CGI script can be assumed to be called from the root of the install directory; do this by setting the script name to be empty in wiki.conf: # what do you want the script to be called? script_name = Currently the Build script does not support this value, so you will have to make sure that you fix this up after an upgrade. * Custom install locations If you wish to install the OpenGuides modules in a private directory, you will need to specify this when you run the Build.PL. If you are using version 0.20 or newer of Module::Build, do: perl Build.PL install_path=lib=/path/to/my/modules/ \ install_path=script=/path/to/my/bin/ \ install_path=arch=/path/to/my/modules/auto/ \ install_path=libdoc=/path/to/my/man/ \ install_path=bindoc=/path/to/my/man/ Or for earlier versions of Module::Build, do: perl Build.PL config='sitelib=/path/to/my/modules/' If any or all of the modules required by the OpenGuides scripts are in a private directory, then you'll need to tell the scripts where to find them. See the section above about munging in a custom lib path. ---------------------------------------------------------------------- Important note for those using SQLite: The user your CGI is running as must have write access to not only the database file itself, but the directory that the file is in, in order that it can write a lockfile. If it doesn't have write access to the database file, you'll see errors like "Unhandled error: [DBD::SQLite::db do failed...". ---------------------------------------------------------------------- * Multiple installations If you want to run multiple OpenGuides sites on one machine, you can use some tricks to make life easier. This isn't currently part of the official install routine, but will generally work. In the rest of this section we will assume that you already have a working OpenGuides install for a single site. Make a directory for the new site, and populate it with a set of symlinks to the main installation directory (ie. for wiki.cgi, supersearch.cgi, newpage.cgi, preferences.cgi, and the templates directory). wiki.conf will not be a symlink, since this will differ from the original site. In this case, simply copy the wiki.conf from the original install and modify it in the obvious way; most importantly, by giving it a different database name (we'll create the database in a moment). Don't forget to set up a separate directory for indices for the new site. Normally, the database is created by the installation process described above; however since we only want one copy of the modules and CGI programs, it isn't appropriate to run them again. So we will make use of the utility program "cgi-wiki-setupdb" which is included with the Wiki::Toolkit distribution. Documentation for this command can be found in its man page; run this with the appropriate arguments to create the new database. Once the key step of setting up the database has been performed, and the web server configured appropriately, the new site should be ready to go! OpenGuides-0.76/SIGNATURE000644001750001750 3355412251157435 15461 0ustar00vagrantvagrant000000000000This file contains message digests of all files listed in MANIFEST, signed via the Module::Signature module, version 0.73. To verify the content in this distribution, first make sure you have Module::Signature installed, then type: % cpansign -v It will check each file's integrity, as well as the signature's validity. If "==> Signature verified OK! <==" is not displayed, the distribution may already have been compromised, and you should not run its Makefile.PL or Build.PL. -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 SHA1 b92271f36927b2be950b8a007e062c3763b69b53 Build.PL SHA1 34a09556161b7ed833e2e56e33dd5002afc604fe CONTRIBUTORS SHA1 b7a4d8b30b269f2a1adf5617503a7684d04ce733 CUSTOMISATION SHA1 ac0179d6b66c982e91fb82f6b93b8ce1c0aed07d Changes SHA1 7d70b7a6a2bf788c6fb7f0842c5e461ecd9d0b10 INSTALL SHA1 b43b27507f50f17236ec731ce59a32557f71c99d MANIFEST SHA1 386474b017b97fada6a543b4eb7dcdaebe456502 META.json SHA1 32de8e27ec127388245f5593ff52f56792969b75 META.yml SHA1 7a24574cbe5c3849850a61a595343147d4def070 Makefile.PL SHA1 3078f658de87babcc30fdd83217dd445411372c0 README SHA1 7dfb84cf0322ed41fb80110d11db2fc288347192 README.CSS SHA1 a663bb72d725a4bdd40bd27bd1c3621d55871428 README.GMAPS SHA1 f5bfeead4820514b4e88be6989f3680752b840a0 README.pod SHA1 4257dd5b8ade3a0c36db723a807a4634ce31164f TROUBLESHOOTING SHA1 137951315fe0798c6f4f210dbe8112e28b5172a8 UPGRADING SHA1 56af6cfc7c441e5a38c759a8dd3047625c48fe32 examples/reindex.pl SHA1 e62ab8f28b255fd2d9d9cb65e4a0fb2c3068fd38 lib/OpenGuides.pm SHA1 2b96b7e4a10a4686ecc99a3ebf34b6d4b350a55c lib/OpenGuides/Build.pm SHA1 c8c01e0e92a24e7d7999bff71a65e54d6c7298b5 lib/OpenGuides/CGI.pm SHA1 196c2832e38715780c4f6894d4bd50ade83d9d7f lib/OpenGuides/Config.pm SHA1 ebc58ad5bb6fdb224a43de214a998421a2e330a7 lib/OpenGuides/Feed.pm SHA1 c959d5cf171b6c18c8a9e96407fa2d636d49251b lib/OpenGuides/JSON.pm SHA1 cc570c04610512e75a65651cc48e73d9e46778dd lib/OpenGuides/RDF.pm SHA1 b70dfcc9937a0c933fff1a58acea3829aca1ecee lib/OpenGuides/Search.pm SHA1 b45b56afa5000bb0aecac981dce9736e05000aa2 lib/OpenGuides/Search/Lucy.pm SHA1 078542c7e5ffec784429db7bcd943cea1e1980bd lib/OpenGuides/Template.pm SHA1 0a37eb51c30e720e0f3dd957ac2ec77ed55752bc lib/OpenGuides/Test.pm SHA1 1b72d5fbcb0c82d09f53751056d046ebb31cac7b lib/OpenGuides/Utils.pm SHA1 3eb260297d714a0cdf853f409836032caa7549dd newpage.cgi SHA1 59da9b95c89010146ea98a62c113e7fd9e3ccc12 preferences.cgi SHA1 b9a32c47e81d4e8904c4a709423fe10f0247be8d search.cgi SHA1 a3497394ed1df2a21496625ce79dff1dd1f339d4 static/map-leaflet.js SHA1 4dba3b5e802e76bf6db19fb19df72d36fcedd862 static/openguides-base.css SHA1 70268ca7e31c9260c4685e5a480c94320eb91192 t/001_load.t SHA1 fada08a138c7f5d0c435fbd184ebfbd975f5da7d t/002_pod.t SHA1 fbeb07504b34dfbcfb0da698345b2fa4afc72293 t/101_utils.t SHA1 1ff8e3d1cec019286a3a8d9adf1a1b906574778f t/102_macros.t SHA1 ead3becaccc66fdd307d8b86afcc42838f8c905e t/103_cookies.t SHA1 3f765b96e182a8f1ab6b3349b0adf919bc8d3f45 t/104_recent_changes_cookies.t SHA1 a9abb0bd4b359d232c7ef6b5c2e99a92cca28d81 t/105_template.t SHA1 3494861de31128f395ec09b707b674c6d686e6bf t/106_test_tester.t SHA1 899ea8760199c18b9121d60d1eea27beeb344211 t/107_commit_node.t SHA1 b7ea9932224909b2abb1f966e8e1907243e71e51 t/108_http_headers.t SHA1 8380555d3a637293f2575e9879a374ed63c8d0f9 t/109_autocreate.t SHA1 742dd04ced138e3f8bf301f7d23c8b347cae2370 t/200_edit_form.t SHA1 103e61b33916db2503ce793002f8b2df5a94ee88 t/201_rdf.t SHA1 9347bcb86802bee2cf6fa5aac2c64109d6d0a734 t/202_feed_recent_changes.t SHA1 6b4cbba63df888307892828b99b82a2f0b37e2b3 t/203_feed_node_all_versions.t SHA1 f4a3834683889bc3bc53d2b3b11c3d2e4c8f5cdf t/204_feed_node_listings.t SHA1 7c28f21f854a091fd5d941bb3e215fb6dc98a691 t/205_write_geo_data.t SHA1 827662f5622a56b29625d624924168e630e6ac51 t/206_geo_data_search_form.t SHA1 a70ccaa6cac26cad8b23c38f34b3af78965564db t/207_geo_data_edit_form.t SHA1 0413fd9251152f748b697d0009881658093c88b0 t/208_wgs84_coords.t SHA1 951d0431aa545dcfda71b2ab46449510231f5f2e t/209_max_min_wgs84_coords.t SHA1 1ccd537ca8032adc8230342f8b8f37074e065d49 t/210_json.t SHA1 a3a23528d89a4ff647739de34d48b38d3777c1f1 t/300_search_raw.t SHA1 89bbf96ffdeec5c91d1592a9026bc12072058107 t/301_search.t SHA1 7122307a62d6e25fdffd153791ac3161d21177dc t/302_search_simple_metadata.t SHA1 48efab4d08e25b818ebd7e231794f97e3adc31c8 t/303_search_advanced_search.t SHA1 58d42991a6386d6a20fea182d1d5016105c7ba84 t/303_search_advanced_search_utm.t SHA1 3b21845a56e4e71f11af3530c15e95a6bce68783 t/304_search_paging.t SHA1 98912b0ff284142140cbe00adba64523959639e5 t/305_search_two_searches.t SHA1 db527f617d9545ee1ef5c0bd6d768d10511ffbe3 t/306_search_order.t SHA1 5c2bdcd6e39e78a52cc1eacb817ddcd2469bc611 t/307_search_summaries.t SHA1 428e10566ab6d9ec5ba4851c3f88c02bcd64a35d t/308_search_params.t SHA1 3c99510673d6810a674fc452a4ef34e3ff9fdfd6 t/309_search_form.t SHA1 c680cf31818c72d403746f4f083f2d2e33ffb735 t/400_search_as_feed.t SHA1 f76d97207cf495e49c6698fa183a827a8f8e17f0 t/401_deletion.t SHA1 14d0a09765466792d6a5784bc41e09a5cf9f64b1 t/402_edit_conflict.t SHA1 f74a72bf14af684befd79b7b71c0cace5c9c0efe t/403_preview_edits.t SHA1 0e5fbef885e371827979dd880b60ef748a92dd87 t/404_node_image.t SHA1 811b61be2bb41f862d95f62e4d7faa3ba54725d6 t/405_home_recent_changes.t SHA1 cf5cc0ee79dd147941328e426fbec8be01e5eecb t/406_map_in_node_display.t SHA1 5ecedef04489f3cc95dd1e0b4e48cb71c84ad2b3 t/407_navbar_placement.t SHA1 514b8a8bcc0ea605211a03018a1619dd82431f58 t/408_google_analytics.t SHA1 2bef3c4f2ea96923b15a124486b65025a97d2b3d t/409_custom_header.t SHA1 709e026bc27e5431a6d8d9560bb20269eb6fc524 t/410_meta_description.t SHA1 7f349e64a15b8468e71fc8603c03cc7d0cbe23eb t/411_custom_macros.t SHA1 9f220832159f46bed355faca8a041be485918ebc t/500_http_response_codes.t SHA1 200ef50bc98d5491f6b8fa9488878870764a9d46 t/501_display_node.t SHA1 c471cc775d6742e697a0abaf9dc34fab5880446b t/502_display_diffs.t SHA1 7e82c9fe22074765a6b96f938327d754de1c575a t/503_show_index.t SHA1 c5d1b91dabdf83ca610138642d68d430898fc3fb t/504_redirect.t SHA1 e5ac557a63d0618bf89f3eb78d47941c34accb02 t/505_node_history.t SHA1 79eff0589b13a6faa4da25b30cbc643f693af0e9 t/506_diffs_with_macros.t SHA1 d0c86a70d5a6a045c3399ea37812c893311544c7 t/507_random_page.t SHA1 30ea252c479a71b60eda87ab58016e8f3188552a t/508_navbar_common_locales_categories.t SHA1 15202976f36af7102fc68f773a10e40e7a0be46a t/509_preferences.t SHA1 55d17973445a498c7c1568ef8cf414c5d999054c t/601_bug_textareas.t SHA1 dda27344cfffa29240834611c7f9efcdae2837fe t/602_bug_trailing_whitespace.t SHA1 2fb52b078d712956e948277ba55c2af63b95da22 t/603_bug_map_link_no_address.t SHA1 8fe079b7c87660ea30b12e04ce7f8bf8bfedcf0e t/604_bug_node_history.t SHA1 ead9f6bd8e49d2e072c3b11027fbb180ce922e97 t/605_bug_metadata_escape.t SHA1 61052a07f565de62742d294cbfcefc1e7f9b98a1 t/606_bug_latlong_representation.t SHA1 a766018818680cea63972c1960c39d5b223b13a6 t/607_bug_first_version.t SHA1 b4de21f38eb75727357bfae77f624d7e29c76941 t/608_bug_website_displayed.t SHA1 62a0efb3eefc577824305fd265df7f94e27f9367 t/609_bug_zero_geo.t SHA1 483f47ce992c7114b3357c0fe12be4b54e903589 t/700_admin_home.t SHA1 b75640394b5ae507b52f95a638508eafa9d7ef3d t/701_missing_metadata.t SHA1 ad4229da150cf9db1c0b101e0749d590c3bbdfdc t/702_node_moderation.t SHA1 5a98c4298d66d6b60ecb68c5c4c4763863807b16 t/703_toggle_moderation.t SHA1 16531165364f4a4044e6bbaa481c753ebc2455c3 t/704_ping_plugin.t SHA1 31cebc1aa5ae6d24254ce4793551f4f1fa4c321a t/705_revert_user.t SHA1 86987161b6eb79410a304792918c7fbb4a4926e2 t/706_detect_spam.t SHA1 a8fc8dce92795912fa077483f8d2ba0e66462d6b t/707_send_email.t SHA1 8684495da544fc125d94743e88406f7049af6d03 t/708_about.t SHA1 a2125ef64f1e5cf6c040e84210a29a11c50c9126 t/709_host_blacklist.t SHA1 0a2e5e47fae10b8de0e0db07906afb150d13f24a t/710_missing_metadata_map.t SHA1 18f44fc97123327c89b9aff8c9fa11d281f14ddc t/801_node_moderate_whitelist.t SHA1 8e4b4d74863f8de4470dab91f0092b951474bd4b t/802_stylesheet.t SHA1 e5947b73f421fcb65558868a9eb86602961b66c3 t/803_show_delete_to_admins_only.t SHA1 cc6ce5fd6fe8f9b559c1156728d54192e16e658a t/804_navbar_admin.t SHA1 5e3efd6931f8f93b68bd4506bc387b63b7ffa924 t/805_universal_edit_link.t SHA1 5787ef2a0379e634a04d132863f0bc6fcac3984e t/806_recent_changes.t SHA1 3244441502edc5160a727fdb628143177deb544c t/807_more_recent_changes.t SHA1 90fdc709ab41ab7c7eb3c43b7aa0569cfac2ff78 t/808_recent_changes_overtime.t SHA1 8e82e841d88e418f66f8ccea1cc0fb7e49a07746 t/809_recent_changes_ip_addr.t SHA1 60157e46258a395e1635b5c51b0d7b9366473301 t/900_css_category_locale_classes.t SHA1 bb7b263c93a92b8c2e14363801b00b773a8215e1 t/901_username_in_templates.t SHA1 ba494ec79b0925deb13861bcd54499ff64992900 t/902_node_name_from_cgi_obj.t SHA1 07ccd0090d052047b5cccd6098d8e043a57428c5 t/903_redirect_without_spaces.t SHA1 5c6a048ed2633584d82091b5573b52f11455c809 t/904_leaflet.t SHA1 710aa847505e17781f6af536d05ff1e96a6bfbd4 t/905_multiple_index.t SHA1 ae36f1fb0608a55fb7a9044cc1a20a7f8d3c2234 t/906_show_index_form.t SHA1 d0e6b21d43a6f85381fc9b619ed8698ca9d008a3 t/907_auto_map_link.t SHA1 d533d373a22056e4a1569115027f7e4e4b9ef405 t/908_custom_node_location_search.t SHA1 50ffca1a2c5bdc5d0128ac3274d62384e19a7e84 t/909_external_class_metadata.t SHA1 7b7516a7b3f7f8f49bd455957dda73607cca3c0c t/templates/105_test.tt SHA1 cb9eebdc15a501e5d8f4ffdc145cdec776534a33 templates/admin_home.tt SHA1 a75c73eae929e63f42207277c2267e6a01472794 templates/admin_revert_user.tt SHA1 a28ac0fdf510720b6d3d122b7b81951089d7cb61 templates/autocreate_content.tt SHA1 cce56a774414dbf049c36754b1681b2fbabc3232 templates/backlink_results.tt SHA1 0a84a7873e3edb57b2f74fa608f75627e64cd31c templates/banner.tt SHA1 d69a5406b1a5b58cf4e3f228afc4c8ae193b4119 templates/blacklisted_host.tt SHA1 17feb029eac8abe973a71ae2e51448271e97c953 templates/delete_confirm.tt SHA1 6f1a2af753659e9a27b7a76f6de800e61c20566a templates/delete_done.tt SHA1 b87db1175fc9d6ca3298b8fd8b36c2bdafd0430e templates/delete_password_wrong.tt SHA1 ee3f99700eec3b7a1cac930e99d39d98bec3bee0 templates/differences.tt SHA1 e4fd219479a5861bd19d4f0b288823cb9ed06b63 templates/display_metadata.tt SHA1 6e4169fbb6b7c2bd80d2a3a1c430c346e5682d53 templates/edit_form.tt SHA1 737c8dd558008f1226ae267e29012ceaf793af37 templates/edit_form_actions.tt SHA1 b9223e06806f795b741a33bc22ff5e68df6ead63 templates/edit_form_preview.tt SHA1 9fd61428d329f5f66d329c2f865b305a1b8cc639 templates/error.tt SHA1 4136e46d2396c8e7960c84a122aad8679a4586f1 templates/footer.tt SHA1 b3918cd9c5f273fa2d8502872d0fac6c959e66e6 templates/header.tt SHA1 1c83a6f0c8cf31c574506ea1426b041ca4a93fc1 templates/home_node.tt SHA1 8e58c04b464a4a66f343bcead9bede9f48506ede templates/index_form.tt SHA1 34fef184d50938d60891e6336ef8dbc78dbb124e templates/json_index.tt SHA1 5ec8a652cf461dc1ca3347ec4a2a29b46488271b templates/map_index.tt SHA1 2a0300d3dc1137f506b0405b943fc707d82c1555 templates/map_index_leaflet.tt SHA1 a5a35cc38d0ce2124cde4c06467aee5c54e8e06f templates/metadata.tt SHA1 0ae8c05c5a9c6517c78fe598da8a8b3a349004cc templates/missing_metadata.tt SHA1 e54c52c831910e7639d0d6ba0c7b9c1c7baba14b templates/moderate_confirm.tt SHA1 e0c37cfb27b4f60e5105fa900f5ea513910441fe templates/moderate_password_wrong.tt SHA1 284b26c3d129995b4a4be5a7058afdfc333691c6 templates/navbar.tt SHA1 5a8dafafcc9f59a6f2e6fdefd6b5458046ecca6a templates/navbar_admin.tt SHA1 4ba71230b36ec1bd0044fbee8d598bcef0114c10 templates/navbar_categories.tt SHA1 956eeb304d9e7af67f652d77a4b713f0a78d4576 templates/navbar_help.tt SHA1 6f49fa1a0f2b9638bdc802a23d2c7c6707125cb6 templates/navbar_home_link.tt SHA1 c9a4d6df4446aa6580c105f4cdeff4124a4a04eb templates/navbar_locales.tt SHA1 4e94c88878e7638f772005448950331ea1724a9b templates/navbar_options.tt SHA1 82bef39205543264c491c56b0554600a924780b6 templates/navbar_revision_info.tt SHA1 4f23c312991f3aebbcbf116e857b7e82854623f2 templates/navbar_search.tt SHA1 ccb552a5902657241ae2ead4fae5d7aa9c082fd7 templates/navbar_this_page.tt SHA1 1d30d7b06de72091a2aeae1d3cb2e18fdff713e6 templates/navbar_tools.tt SHA1 3561c2fbb10154fe7d424bcf593ab9ce93306fe3 templates/needing_moderation.tt SHA1 eb26f364ecdc0e1174fd29fabe373992e7c82901 templates/newpage.tt SHA1 5568b6f4be1fa15c34446a965569a25e1756aaad templates/node.tt SHA1 08d24daa5a8e516108857da52587a855f8a9d7fe templates/node_history.tt SHA1 c7976ea97e586f7865341fe510a95b99518c35ef templates/node_image.tt SHA1 4ccac1d585f5110d2082fcf59e9b42da1536c367 templates/node_image_fields.tt SHA1 914bb4aaa6eba2fcc65a1933954d4c4512413b74 templates/node_location_search.tt SHA1 d0bc10b8a4a599916b6626c97e46339ffba840e8 templates/node_photo_notes.tt SHA1 2b06371f9d016598c515788443a7695dcf760b31 templates/node_rdf.tt SHA1 b6ee941d044da413ee1a58ee8573d0df7da9c608 templates/openguides_information_boxes.tt SHA1 f03bb3973c4edc15aa538adc02fe3aa3cb6224ed templates/plain_index.tt SHA1 090df859658ac18020e57b2f0f10a94ff1d99c2c templates/preferences.tt SHA1 b903d9120f91b3901f45b334a42ed20d00e23138 templates/random_page_failure.tt SHA1 dd91e8b133f62c249184a95036b0246c337f6fc7 templates/rdf_index.tt SHA1 84fb9d4346f3ceb02eec859bfab4cd89cbe84b77 templates/read_only.tt SHA1 1168c90bf3503cee1310f8b528c26cb0456dcc2b templates/recent_changes.tt SHA1 383d4a75283d52976cfa857af164bf70121124fa templates/search.tt SHA1 dac4189f5ab16c80202be08ce8bb35fd1ab368e7 templates/search_results.tt SHA1 1903d4c7fa77a191d83908f5fc5d0f68d9933400 templates/search_results_leaflet.tt SHA1 a2fb88d6d02a376ce3811b347e88b63243b07e4b templates/site_index.tt SHA1 1f1a463a5127a54e5f5059b11f921abe4fa9af37 templates/spam_detected.tt SHA1 603d7c89a53dca5a57e5a735aff9b74fe13bcfb3 templates/userstats.tt SHA1 778881b68d86bebc1cfba9e49d3e3e1d524514f9 templates/wanted_pages.tt SHA1 de3b1013104644a9d961c91b1989d6ccfc6ddc25 wiki.cgi -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iQEcBAEBAgAGBQJSpN8VAAoJEJsOndGQ5lgDumYH/05+pmNMffuX4+yzA4g5t4s7 hJOjawA7m0UYXAXZNWyuAsOOc9CRPzZyRX3bieWoDgWUzS2c58qw7BSB6egR1oXa GY3fMDZZQefKvGZwsFDHa4Wct4CA5NKtHc/HlTZLs3hne77enz+6Covdzn+ZFfQo sPo8D+1nQ9bYxmZ6U9zRvn/v5X8jQtfobCVqxvP/hhZRWvwSWMUFg7JHzeQzD3Zw 0FycMimMAcHkeeg6XDYAEY/yuERiRlfbU/2kB2vCr+WUj4m4VRfLNn+8cXBMAVjO RSadoKUsV1LFFLe1SnrmqmBdnNsb7A5gASNw8tTbg3sJfsFGiklAfYNwZYMhaCg= =MjCW -----END PGP SIGNATURE----- OpenGuides-0.76/META.yml000444001750001750 521212251157425 15411 0ustar00vagrantvagrant000000000000--- abstract: 'A complete web application for managing a collaboratively-written guide to a city or town.' author: - unknown build_requires: Class::Accessor: 0 Config::Tiny: 0 Data::Dumper: 0 File::Path: 0 Module::Build: 0.26 configure_requires: Class::Accessor: 0 Config::Tiny: 0 Module::Build: 0.26 dynamic_config: 1 generated_by: 'Module::Build version 0.38, CPAN::Meta::Converter version 2.120351' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: 1.4 name: OpenGuides provides: OpenGuides: file: lib/OpenGuides.pm version: 0.76 OpenGuides::Build: file: lib/OpenGuides/Build.pm version: 0.04 OpenGuides::CGI: file: lib/OpenGuides/CGI.pm version: 0.12 OpenGuides::Config: file: lib/OpenGuides/Config.pm version: 0.09 OpenGuides::Feed: file: lib/OpenGuides/Feed.pm version: 0.03 OpenGuides::JSON: file: lib/OpenGuides/JSON.pm version: 0.05 OpenGuides::RDF: file: lib/OpenGuides/RDF.pm version: 0.15 OpenGuides::Search: file: lib/OpenGuides/Search.pm version: 0.15 OpenGuides::Search::Lucy: file: lib/OpenGuides/Search/Lucy.pm version: 0 OpenGuides::Template: file: lib/OpenGuides/Template.pm version: 0.19 OpenGuides::Test: file: lib/OpenGuides/Test.pm version: 0.07 OpenGuides::Utils: file: lib/OpenGuides/Utils.pm version: 0.18 recommends: DBD::SQLite: 0 Geo::HelmertTransform: 0 Test::HTML::Content: 0 Test::JSON: 0 Test::Pod: 0 Wiki::Toolkit::Plugin::Ping: 0 requires: Algorithm::Diff: 0.13 CGI: 2.92 CGI::Carp: 0 CGI::Cookie: 0 Class::Accessor: 0 Config::Tiny: 0 DBD::SQLite: 0 Data::Dumper: 0 Data::Validate::URI: 0 File::Spec::Functions: 0 File::Temp: 0 Geo::Coordinates::ITM: 0 Geo::Coordinates::OSGB: 0 Geo::Coordinates::UTM: 0 HTML::Entities: 0 JSON: 0 LWP::Simple: 0 List::Util: 0 MIME::Lite: 0 Net::Netmask: 0 POSIX: 0 Parse::RecDescent: 0 Plucene: 0 Template: 2.24 Template::Plugin::JSON::Escape: 0 Time::Piece: 0 URI::Escape: 0 Wiki::Toolkit: 0.83 Wiki::Toolkit::Feed::Atom: 0 Wiki::Toolkit::Feed::RSS: 0 Wiki::Toolkit::Formatter::UseMod: 0.24 Wiki::Toolkit::Plugin::Categoriser: 0 Wiki::Toolkit::Plugin::Diff: 0 Wiki::Toolkit::Plugin::JSON: 0.05 Wiki::Toolkit::Plugin::Locator::Grid: 0 Wiki::Toolkit::Plugin::RSS::Reader: 0 XML::RSS: 0 resources: bugtracker: https://github.com/OpenGuides/OpenGuides/issues homepage: http://openguides.org license: http://dev.perl.org/licenses/ repository: git://github.com/OpenGuides/OpenGuides.git x_MailingList: openguides-dev@lists.openguides.org version: 0.76 OpenGuides-0.76/search.cgi000555001750001750 60012251157425 16050 0ustar00vagrantvagrant000000000000#!/usr/local/bin/perl use warnings; use strict; use sigtrap die => 'normal-signals'; use CGI; use OpenGuides::Config; use OpenGuides::Search; my $config_file = $ENV{OPENGUIDES_CONFIG_FILE} || "wiki.conf"; my $config = OpenGuides::Config->new( file => $config_file ); my $search = OpenGuides::Search->new( config => $config ); my %vars = CGI::Vars(); $search->run( vars => \%vars ); OpenGuides-0.76/README.pod000444001750001750 400112251157425 15574 0ustar00vagrantvagrant000000000000=head1 NAME OpenGuides - A complete web application for managing a collaboratively-written guide to a city or town. =head1 DESCRIPTION The OpenGuides software provides the framework for a collaboratively-written city guide. It is similar to a wiki but provides somewhat more structured data storage allowing you to annotate wiki pages with information such as category, location, and much more. It provides searching facilities including "find me everything within a certain distance of this place". Every page includes a link to a machine-readable (RDF) version of the page. =head1 BUGS AND CAVEATS UTF8 data are currently not handled correctly throughout. Other bugs are documented at L =head1 SEE ALSO =over 4 =item * The Randomness Guide to London, at L, the largest OpenGuides site. =item * The list of live OpenGuides installs at L. =item * L, the Wiki toolkit which does the heavy lifting for OpenGuides. =back =head1 FEEDBACK If you have a question, a bug report, or a patch, or you're interested in joining the development team, please contact openguides-dev@lists.openguides.org (moderated mailing list, will reach all current developers but you'll have to wait for your post to be approved) or file a bug report at L =head1 AUTHOR The OpenGuides Project (openguides-dev@lists.openguides.org) =head1 COPYRIGHT Copyright (C) 2003-2013 The OpenGuides Project. All Rights Reserved. The OpenGuides distribution is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =head1 CREDITS Programming by Dominic Hargreaves, Earle Martin, Kake Pugh, and Ivor Williams. Testing and bug reporting by Billy Abbott, Jody Belka, Kerry Bosworth, Simon Cozens, Cal Henderson, Steve Jolly, and Bob Walker (among others). Much of the Module::Build stuff copied from the Siesta project L OpenGuides-0.76/newpage.cgi000555001750001750 535712251157425 16267 0ustar00vagrantvagrant000000000000#!/usr/local/bin/perl use warnings; use strict; use sigtrap die => 'normal-signals'; use CGI; use OpenGuides::Config; use OpenGuides::Template; use OpenGuides::Utils; use URI::Escape; my @badchars = qw( & ? _ ); push @badchars, '#'; # Avoid warning about possible comments in qw() my $q = CGI->new; my $config_file = $ENV{OPENGUIDES_CONFIG_FILE} || "wiki.conf"; my $config = OpenGuides::Config->new( file => $config_file ); my $wiki = OpenGuides::Utils->make_wiki_object( config => $config ); my $pagename = $q->param("pagename") || ""; $pagename =~ s/^\s*//; $pagename =~ s/\s*$//; my $action = $q->param("action") || ""; if ( $action eq "makepage" ) { make_page(); } else { show_form(); } sub show_form { print OpenGuides::Template->output( wiki => $wiki, config => $config, template => "newpage.tt", vars => { not_editable => 1, not_deletable => 1, deter_robots => 1, disallowed_chars => \@badchars, pagename => $pagename, read_only => $config->read_only, } ); } sub make_page { # Ensure pagename not blank. unless ( $pagename ) { print OpenGuides::Template->output( wiki => $wiki, config => $config, template => "error.tt", vars => { not_editable => 1, not_deletable => 1, deter_robots => 1, message => "Please enter a page name!", return_url => "newpage.cgi" } ); return 0; } # Ensure pagename valid. my %badhash = map { $_ => 1 } @badchars; my @naughty; foreach my $i ( 0 .. (length $pagename) - 1 ) { my $char = substr( $pagename, $i, 1 ); push @naughty, $char if $badhash{$char}; } if ( scalar @naughty ) { my $message = "Page name $pagename contains disallowed characters"; print OpenGuides::Template->output( wiki => $wiki, config => $config, template => "error.tt", vars => { pagename => $pagename, not_editable => 1, not_deletable => 1, deter_robots => 1, message => $message, return_url => "newpage.cgi?pagename=" . uri_escape($pagename) } ); return 0; } # Hurrah, we're OK. my $node_param = $wiki->formatter->node_name_to_node_param($pagename); print "Location: ".$config->script_url.$config->script_name."?action=edit;id=$node_param\n\n"; return 0; } OpenGuides-0.76/wiki.cgi000555001750001750 3742212251157425 15622 0ustar00vagrantvagrant000000000000#!/usr/local/bin/perl use strict; use warnings; use sigtrap die => 'normal-signals'; use vars qw( $VERSION ); $VERSION = '0.76'; use CGI qw/:standard/; use CGI::Carp qw(croak); use Wiki::Toolkit; use OpenGuides; use OpenGuides::CGI; use OpenGuides::Config; use OpenGuides::RDF; use OpenGuides::JSON; use OpenGuides::Utils; use OpenGuides::Template; use Time::Piece; use URI::Escape; my $config_file = $ENV{OPENGUIDES_CONFIG_FILE} || "wiki.conf"; my $config = OpenGuides::Config->new( file => $config_file ); my $script_name = $config->script_name; my $script_url = $config->script_url; my ($guide, $wiki, $formatter, $q); eval { $guide = OpenGuides->new( config => $config ); $wiki = $guide->wiki; $formatter = $wiki->formatter; $q = CGI->new; # See if we need to redirect due to spaces in URL. Don't do this for # POST requests though - it leads to all the data being stuffed into the # URL, which breaks things if there's a lot of data. my $request_method = $q->request_method() || ""; unless ( $request_method eq "POST" ) { my $redirect = OpenGuides::CGI->check_spaces_redirect( cgi_obj => $q, wiki => $wiki ); if ( $redirect ) { print $q->redirect( -uri => $redirect, -status => 303 ); exit 0; } } # No redirect - carry on. my $node = OpenGuides::CGI->extract_node_name( cgi_obj => $q, wiki => $wiki ); # If we did a post, then CGI->param probably hasn't fully de-escaped, # in the same way as a get would've done if($request_method eq 'POST') { $node = uri_unescape($node); } # Grab our common parameters my $action = $q->param('action') || 'display'; my $commit = $q->param('Save') || 0; my $preview = $q->param('preview') || 0; my $search_terms = $q->param('terms') || $q->param('search') || ''; my $format = $q->param('format') || ''; my $oldid = $q->param('oldid') || ''; # Alternative method of calling search, supported by usemod. $action = 'search' if $q->param("search"); if ($commit) { $guide->commit_node( id => $node, cgi_obj => $q, ); } elsif ($preview) { $guide->preview_edit( id => $node, cgi_obj => $q, ); } elsif ($action eq 'edit') { $guide->display_edit_form( id => $node ); } elsif ($action eq 'search') { do_search($search_terms); } elsif ($action eq 'show_backlinks') { $guide->show_backlinks( id => $node ); } elsif ($action eq 'show_wanted_pages') { show_wanted_pages(); } elsif ($action eq 'show_needing_moderation') { show_needing_moderation(); } elsif ($action eq 'index') { $guide->show_index( cat => $q->param( "cat" ) || "", loc => $q->param( "loc" ) || "", format => $format, # Next two for backwards compatibility (deprecated) type => $q->param("index_type") || "Full", value => $q->param("index_value") || "", ); } elsif ($action eq 'random') { print $guide->display_random_page( category => $q->param( "category" ) || "", locale => $q->param( "locale" ) || "", ); } elsif ($action eq 'find_within_distance') { $guide->find_within_distance( id => $node, metres => $q->param("distance_in_metres") ); } elsif ( $action eq 'admin' ) { $guide->display_admin_interface( moderation_completed => $q->param("moderation"), ); } elsif ( $action eq 'revert_user' ) { $guide->revert_user_interface( username => $q->param("username") || "", host => $q->param("host") || "", password => $q->param("password") || "", ); } elsif ( $action eq 'show_missing_metadata' ) { $guide->show_missing_metadata( metadata_type => $q->param("metadata_type") || "", metadata_value => $q->param("metadata_value") || "", exclude_locales => $q->param("exclude_locales") || "", exclude_categories => $q->param("exclude_categories") || "", format => $q->param( "format" ) || "", ); } elsif ( $action eq 'set_moderation' ) { $guide->set_node_moderation( id => $node, password => $q->param("password") || "", moderation_flag => $q->param("moderation_flag") || "", ); } elsif ( $action eq 'moderate' ) { $guide->moderate_node( id => $node, version => $q->param("version") || "", password => $q->param("password") || "", ); } elsif ( $action eq 'delete' and ( lc($config->enable_page_deletion) eq "y" or $config->enable_page_deletion eq "1" ) ) { $guide->delete_node( id => $node, version => $q->param("version") || "", password => $q->param("password") || "", ); } elsif ($action eq 'userstats') { show_userstats( username => $q->param("username") || "", host => $q->param("host") || "", ); } elsif ($action eq 'list_all_versions') { if($format && ($format eq "rss" || $format eq "atom")) { my %args = ( feed_type => $format, feed_listing => 'node_all_versions', name => $node ); $guide->display_feed( %args ); } else { $guide->list_all_versions( id => $node ); } } elsif ($action eq 'rc') { if ($format && $format eq 'rss') { my $feed = $q->param("feed"); if ( !defined $feed or $feed eq "recent_changes" ) { my %args = map { $_ => ( $q->param($_) || "" ) } qw( feed items days ignore_minor_edits username category locale ); $args{feed_type} = 'rss'; $args{feed_listing} = 'recent_changes'; $guide->display_feed( %args ); } elsif ( $feed eq "chef_dan" ) { display_node_rdf( node => $node ); } else { croak "Unknown RSS feed type '$feed'"; } } elsif ($format && $format eq 'atom') { my %args = map { $_ => ( $q->param($_) || "" ) } qw( feed items days ignore_minor_edits username category locale ); $args{feed_type} = 'atom'; $args{feed_listing} = 'recent_changes'; $guide->display_feed( %args ); } else { $guide->display_node( id => 'RecentChanges' ); } } elsif ($action eq 'rss') { my $redir_target = $script_url . $script_name . '?action=rc;format=rss'; my %args = map { $_ => ( $q->param($_) || "" ) } qw( feed items days ignore_minor_edits username category locale ); foreach my $arg (sort keys %args) { if ($args{$arg} ne "") { $redir_target .= ";$arg=$args{$arg}"; } } print $q->redirect( $redir_target ); } elsif ($action eq 'about') { $guide->display_about(format => $format); } elsif ($action eq 'metadata') { $guide->show_metadata( type => $q->param("type") || "", format => $format, ); } elsif ($action eq 'display') { if ( $format and $format eq "rdf" ) { display_node_rdf( node => $node ); } elsif ( $format and $format eq "json" ) { display_node_json( node => $node ); } elsif ( $format and $format eq 'raw' ) { $guide->display_node( id => $node, format => 'raw', ); } else { my $version = $q->param("version"); my $other_ver = $q->param("diffversion"); if ( $other_ver ) { $guide->display_diffs( id => $node, version => $version, other_version => $other_ver, ); } else { my $redirect; if ((defined $q->param("redirect")) && ($q->param("redirect") == 0)) { $redirect = 0; } else { $redirect = 1; } $guide->display_node( id => $node, version => $version, oldid => $oldid, redirect => $redirect, ); } } } else { # Fallback: redirect to the display page, preserving all vars # except for the action, which we override. # Note: $q->Vars needs munging if we need to support any # multi-valued params my $params = $q->Vars; $params->{'action'} = 'display'; my $redir_target = $script_url . $script_name . '?'; my @args = map { "$_=" . $params->{$_} } keys %{$params}; $redir_target .= join ';', @args; print $q->redirect( -uri => $redir_target, -status => 303 ); } }; if ($@) { my $error = $@; warn $error; print $q->header; my $contact_email = $config->contact_email; print qq(ERROR

Sorry! Something went wrong. Please contact the Wiki administrator at $contact_email and quote the following error message:

) . $q->escapeHTML($error) . qq(

Return to the Wiki home page ); } ############################ subroutines ################################### sub show_userstats { my %args = @_; my ($username, $host) = @args{ qw( username host ) }; croak "No username or host supplied to show_userstats" unless $username or $host; my %criteria = ( last_n_changes => 5 ); $criteria{metadata_was} = $username ? { username => $username } : { host => $host }; my @nodes = $wiki->list_recent_changes( %criteria ); @nodes = map { {name => $q->escapeHTML($_->{name}), last_modified => $q->escapeHTML($_->{last_modified}), comment => OpenGuides::Utils::parse_change_comment( $q->escapeHTML($_->{metadata}{comment}[0]), $script_url . '?', ), url => "$script_name?" . $q->escape($formatter->node_name_to_node_param($_->{name})) } } @nodes; my %tt_vars = ( last_five_nodes => \@nodes, username => $username, username_param => $wiki->formatter->node_name_to_node_param($username), host => $host, ); process_template("userstats.tt", "", \%tt_vars); } sub get_cookie { my $pref_name = shift or return ""; my %cookie_data = OpenGuides::CGI->get_prefs_from_cookie(config=>$config); return $cookie_data{$pref_name}; } sub display_node_rdf { my %args = @_; my $rdf_writer = OpenGuides::RDF->new( wiki => $wiki, config => $config ); print "Content-type: application/rdf+xml\n\n"; print $rdf_writer->emit_rdfxml( node => $args{node} ); } sub display_node_json { my %args = @_; my $json_writer = OpenGuides::JSON->new( wiki => $wiki, config => $config ); print "Content-type: text/javascript\n\n"; print $json_writer->emit_json( node => $args{node} ); } sub process_template { my ($template, $node, $vars, $conf, $omit_header) = @_; my %output_conf = ( wiki => $wiki, config => $config, node => $node, template => $template, vars => $vars ); $output_conf{noheaders} = 1 if $omit_header; # defaults otherwise print OpenGuides::Template->output( %output_conf ); } sub do_search { my $terms = shift; my %finds = $wiki->search_nodes($terms); # my @sorted = sort { $finds{$a} cmp $finds{$b} } keys %finds; my @sorted = sort keys %finds; my @results = map { { url => $q->escape($formatter->node_name_to_node_param($_)), title => $q->escapeHTML($_) } } @sorted; my %tt_vars = ( results => \@results, num_results => scalar @results, not_editable => 1, search_terms => $q->escapeHTML($terms) ); process_template("search_results.tt", "", \%tt_vars); } sub show_wanted_pages { my @dangling = $wiki->list_dangling_links; my @wanted; my %backlinks_count; foreach my $node_name (@dangling) { $backlinks_count{$node_name} = scalar($wiki->list_backlinks( node => $node_name )); } foreach my $node_name (sort { $backlinks_count{$b} <=> $backlinks_count{$a} } @dangling) { my $node_param = uri_escape($formatter->node_name_to_node_param($node_name)); push @wanted, { name => $q->escapeHTML($node_name), edit_link => $script_url . uri_escape($script_name) . "?action=edit;id=$node_param", backlink_link => $script_url . uri_escape($script_name) . "?action=show_backlinks;id=$node_param", backlinks_count => $backlinks_count{$node_name} }; } process_template( "wanted_pages.tt", "", { not_editable => 1, not_deletable => 1, deter_robots => 1, wanted => \@wanted } ); } sub show_needing_moderation { my @nodes = $wiki->list_unmoderated_nodes; # Build the moderate links foreach my $node (@nodes) { my $node_param = uri_escape($formatter->node_name_to_node_param($node->{'name'})); $node->{'moderate_url'} = $script_name . "?action=moderate;id=".$node_param.";version=".$node->{'version'}; $node->{'view_url'} = $script_name . "?id=".$node_param.";version=".$node->{'version'}; $node->{'diff_url'} = $script_name . "?id=".$node_param.";version=".$node->{'moderated_version'}.";diffversion=".$node->{'version'}; $node->{'delete_url'} = $script_name . "?action=delete;version=".$node->{'version'}.";id=".$node_param; } process_template( "needing_moderation.tt", "", { not_editable => 1, not_deletable => 1, deter_robots => 1, nodes => \@nodes } ); } OpenGuides-0.76/UPGRADING000444001750001750 226112251157425 15404 0ustar00vagrantvagrant0000000000000.61 Customized navbar_categories.tt and navbar_locales.tt templates need to be updated: - First of all, your template needs to check for [% config.enable_common_categories %] rather than [% common_categories %] in order to know whether to add this

to the navbar or not. - Secondly, you need to replace with 0.60 The edit form now uses stylable
s rather than tables. You will probably want to provide at least basic styling for these. 0.59 Some CSS was altered; you should check and update your stylesheets. See README.CSS for details. Common categories and locales were moved within the navbar 0.58 No major changes 0.57 Search::InvertedIndex is deprecated; please use Plucene instead. 0.55 Wiki::Toolkit required instead of CGI::Wiki. 0.52 supersearch.cgi is now just search.cgi, so please update templates as appropriate, and consider adding an HTTP redirect to keep old links working. OpenGuides-0.76/MANIFEST000444001750001750 1065112251157425 15314 0ustar00vagrantvagrant000000000000Build.PL CONTRIBUTORS CUSTOMISATION Changes INSTALL MANIFEST Makefile.PL META.yml README README.pod README.CSS README.GMAPS SIGNATURE TROUBLESHOOTING UPGRADING examples/reindex.pl lib/OpenGuides/Build.pm lib/OpenGuides/CGI.pm lib/OpenGuides/Config.pm lib/OpenGuides/Feed.pm lib/OpenGuides/JSON.pm lib/OpenGuides/RDF.pm lib/OpenGuides/Search.pm lib/OpenGuides/Search/Lucy.pm lib/OpenGuides/Template.pm lib/OpenGuides/Test.pm lib/OpenGuides/Utils.pm lib/OpenGuides.pm newpage.cgi preferences.cgi search.cgi static/map-leaflet.js static/openguides-base.css templates/admin_home.tt templates/admin_revert_user.tt templates/autocreate_content.tt templates/backlink_results.tt templates/banner.tt templates/blacklisted_host.tt templates/delete_confirm.tt templates/delete_done.tt templates/delete_password_wrong.tt templates/differences.tt templates/display_metadata.tt templates/edit_form.tt templates/edit_form_actions.tt templates/edit_form_preview.tt templates/error.tt templates/footer.tt templates/header.tt templates/json_index.tt templates/home_node.tt templates/index_form.tt templates/map_index.tt templates/map_index_leaflet.tt templates/missing_metadata.tt templates/metadata.tt templates/moderate_confirm.tt templates/moderate_password_wrong.tt templates/navbar.tt templates/navbar_admin.tt templates/navbar_categories.tt templates/navbar_help.tt templates/navbar_home_link.tt templates/navbar_locales.tt templates/navbar_options.tt templates/navbar_revision_info.tt templates/navbar_search.tt templates/navbar_this_page.tt templates/navbar_tools.tt templates/needing_moderation.tt templates/newpage.tt templates/node.tt templates/node_history.tt templates/node_image.tt templates/node_image_fields.tt templates/node_location_search.tt templates/node_photo_notes.tt templates/node_rdf.tt templates/openguides_information_boxes.tt templates/plain_index.tt templates/preferences.tt templates/random_page_failure.tt templates/rdf_index.tt templates/read_only.tt templates/recent_changes.tt templates/search_results.tt templates/search_results_leaflet.tt templates/site_index.tt templates/search.tt templates/spam_detected.tt templates/userstats.tt templates/wanted_pages.tt t/001_load.t t/002_pod.t t/101_utils.t t/102_macros.t t/103_cookies.t t/104_recent_changes_cookies.t t/105_template.t t/106_test_tester.t t/107_commit_node.t t/108_http_headers.t t/109_autocreate.t t/200_edit_form.t t/201_rdf.t t/202_feed_recent_changes.t t/203_feed_node_all_versions.t t/204_feed_node_listings.t t/205_write_geo_data.t t/206_geo_data_search_form.t t/207_geo_data_edit_form.t t/208_wgs84_coords.t t/209_max_min_wgs84_coords.t t/210_json.t t/300_search_raw.t t/301_search.t t/302_search_simple_metadata.t t/303_search_advanced_search.t t/303_search_advanced_search_utm.t t/304_search_paging.t t/305_search_two_searches.t t/306_search_order.t t/307_search_summaries.t t/308_search_params.t t/309_search_form.t t/400_search_as_feed.t t/401_deletion.t t/402_edit_conflict.t t/403_preview_edits.t t/404_node_image.t t/405_home_recent_changes.t t/406_map_in_node_display.t t/407_navbar_placement.t t/408_google_analytics.t t/409_custom_header.t t/410_meta_description.t t/411_custom_macros.t t/500_http_response_codes.t t/501_display_node.t t/502_display_diffs.t t/503_show_index.t t/504_redirect.t t/505_node_history.t t/506_diffs_with_macros.t t/507_random_page.t t/508_navbar_common_locales_categories.t t/509_preferences.t t/601_bug_textareas.t t/602_bug_trailing_whitespace.t t/603_bug_map_link_no_address.t t/604_bug_node_history.t t/605_bug_metadata_escape.t t/606_bug_latlong_representation.t t/607_bug_first_version.t t/608_bug_website_displayed.t t/609_bug_zero_geo.t t/700_admin_home.t t/701_missing_metadata.t t/702_node_moderation.t t/703_toggle_moderation.t t/704_ping_plugin.t t/705_revert_user.t t/706_detect_spam.t t/707_send_email.t t/708_about.t t/709_host_blacklist.t t/710_missing_metadata_map.t t/801_node_moderate_whitelist.t t/802_stylesheet.t t/803_show_delete_to_admins_only.t t/804_navbar_admin.t t/805_universal_edit_link.t t/806_recent_changes.t t/807_more_recent_changes.t t/808_recent_changes_overtime.t t/809_recent_changes_ip_addr.t t/900_css_category_locale_classes.t t/901_username_in_templates.t t/902_node_name_from_cgi_obj.t t/903_redirect_without_spaces.t t/904_leaflet.t t/905_multiple_index.t t/906_show_index_form.t t/907_auto_map_link.t t/908_custom_node_location_search.t t/909_external_class_metadata.t t/templates/105_test.tt wiki.cgi META.json SIGNATURE Added here by Module::Build OpenGuides-0.76/TROUBLESHOOTING000444001750001750 274212251157425 16357 0ustar00vagrantvagrant000000000000OpenGuides Troubleshooting Guide ================================ If you are able to run wiki.cgi from the command line but receive an Error 500 when trying to view it in your browser, look for the following message in your webserver error logs: "Unable to tie -map_name [...] datafiles directory [...] does not exist and cannot be created." This means that the directory you specified in your configuration as "indexing_directory" is inaccessible by the user that your CGI is running as. This might mean one of two things: - you've specified an indexing_directory within your own webspace and the user your CGIs are running as - typically 'nobody' or 'www-data' - doesn't have permission to write there or - you've specified an indexing_directory in a place that you're not allowed to write to or a combination of both. Your ISP or sysadmin might be able to help you further with this problem if you can't figure it out yourself; as a start, try setting your indexes directory as world-writeable. ---------------------------------------------------------------------- Important note for those using SQLite: The user your CGI is running as must have write access to not only the database file itself, but the directory that the file is in, in order that it can write a lockfile. If it doesn't have write access to the database file, you'll see errors like "Unhandled error: [DBD::SQLite::db do failed...". ---------------------------------------------------------------------- OpenGuides-0.76/CUSTOMISATION000444001750001750 566012251157425 16133 0ustar00vagrantvagrant000000000000It is not recommended that you amend the supplied templates - they contain logic and therefore can have bugs, they may have new features added in the future and so on. From OpenGuides 0.41, some of the supplied templates will optionally call out to other template fragments that you can put in a custom template path (by default custom-templates/). If custom templates do not exist then sensible default wording will be used instead. The names of all custom templates will be prefixed with custom_. The custom templates currently supported are: - custom_header.tt Will be included at the very end of the element on every page. - custom_licence.tt Will be included at the top of the page editing form. - custom_footer_credits.tt Will be included in a