diff --git a/pod_doc_tools/HTMLDocs.pm b/pod_doc_tools/HTMLDocs.pm
new file mode 100644
index 0000000..65a1c99
--- /dev/null
+++ b/pod_doc_tools/HTMLDocs.pm
@@ -0,0 +1,401 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+package WeBWorK::Utils::HTMLDocs;
+
+use File::Find;
+use File::Temp qw(tempfile);
+use IO::File;
+use Pod::Find qw(pod_find simplify_name contains_pod);
+use Pod::Html;
+#use Pod::PP;
+use POSIX qw(strftime);
+use Data::Dumper;
+
+our @sections = (
+ '/' => "(root)",
+ bin => "Scripts",
+ conf => "Config Files",
+ doc => "Documentation",
+ lib => "Libraries",
+ macros => "Macros",
+ clients => "Clients",
+);
+
+sub new {
+ my ($invocant, %o) = @_;
+ my $class = ref $invocant || $invocant;
+
+ my @section_list = exists $o{sections} ? @{$o{sections}} : @sections;
+ my $section_hash = {@section_list};
+ my $section_order = [ map { $section_list[2*$_] } 0..$#section_list/2 ];
+ delete $o{sections};
+
+ my $self = {
+ %o,
+ idx => {},
+ section_hash => $section_hash,
+ section_order => $section_order,
+ };
+ return bless $self, $class;
+}
+
+sub convert_pods {
+ my $self = shift;
+ my $source_root = $self->{source_root};
+ my $dest_root = $self->{dest_root};
+ my $subdirs = do {
+ my $dh;
+ opendir $dh, $source_root;
+ join ':',
+ grep { not (/^\./ or /^(CVS|.svn)$/) and -d "$source_root/$_" }
+ readdir $dh;
+ };
+ $self->{subdirs} = $subdirs;
+
+ find({wanted => $self->gen_pod_wanted, no_chdir => 1}, $source_root);
+ $self->write_index("$dest_root/index.html");
+}
+
+sub gen_pod_wanted {
+ my $self = shift;
+ return sub {
+ my $path = $File::Find::name;
+ my $dir = $File::Find::dir;
+ my ($name) = $path =~ m|^$dir(?:/(.*))?$|;
+ $name = '' unless defined $name;
+
+ if ($name =~ /^\./) {
+ $File::Find::prune = 1;
+ return;
+ }
+ unless (-f $path or -d $path) {
+ $File::Find::prune = 1;
+ return;
+ }
+ if (-d _ and $name =~ /^(CVS|RCS|.svn)$/) {
+ $File::Find::prune = 1;
+ return;
+ }
+
+ return if -d _;
+ return unless contains_pod($path);
+ $self->process_pod($path);
+ };
+}
+
+sub process_pod {
+ my ($self, $pod_path) = @_;
+ my $source_root = $self->{source_root};
+ my $dest_root = $self->{dest_root};
+ my $dest_url = $self->{dest_url};
+ my $subdirs = $self->{subdirs};
+
+ my $pod_name;
+
+ my ($subdir, $filename) = $pod_path =~ m|^$source_root/(?:(.*)/)?(.*)$|;
+ my ($subdir_first, $subdir_rest);
+ print "subdir_first: $subdir_first\n";
+ print "subdir_rest: $subdir_rest\n";
+ if (defined $subdir) {
+ if ($subdir =~ m|/|) {
+ ($subdir_first, $subdir_rest) = $subdir =~ m|^([^/]*)/(.*)|;
+ } else {
+ $subdir_first = $subdir;
+ }
+ }
+ $pod_name = (defined $subdir_rest ? "$subdir_rest/" : "") . $filename;
+ if ($filename =~ /\.(plx?|pg)$/ or $filename !~ /\./) {
+ $filename .= '.html';
+ } elsif ($filename =~ /\.pod$/) {
+ $pod_name =~ s/\.pod$//;
+ $filename =~ s/\.pod$/.html/;
+ } elsif ($filename =~ /\.pm$/) {
+ $pod_name =~ s/\.pm$//;
+ $pod_name =~ s|/+|::|g;
+ $filename =~ s/\.pm$/.html/;
+ }
+ my $html_dir = defined $subdir ? "$dest_root/$subdir" : $dest_root;
+ my $html_path = "$html_dir/$filename";
+ my $html_rel_path = defined $subdir ? "$subdir/$filename" : $filename;
+
+ # deal with potential
+ if (not defined $subdir) {
+ my $source_root_last = $source_root;
+ $source_root_last =~ s|^.*/||;
+ if ($source_root_last =~ /^(.+)_(.+?)(?:--(.*))?$/) {
+ my ($module, $version, $extra) = ($1, $2, $3);
+ $subdir = $extra; # the subdir is appended to the dir name
+ } else {
+ $subdir = '/'; # fake subdir for "things in the root"
+ }
+ }
+ $self->update_index($subdir, $html_rel_path, $pod_name);
+ #my $podpp_path = do_podpp($pod_path);
+ do_mkdir($html_dir);
+ do_pod2html(
+ subdirs => $subdirs,
+ source_root => $source_root,
+ dest_root => $dest_root,
+ dest_url => $dest_url,
+ pod_path => $pod_path,
+ html_path => $html_path,
+ );
+ #unlink $podpp_path;
+ # postprocess HTML to add SSI tags for header and footer
+ $self->postprocess_pod($html_path);
+}
+
+sub postprocess_pod {
+ my ($self, $file) = @_;
+ my $fh = new IO::File($file, 'r+')
+ or die "Failed to open file '$file' for reading/writing: $!\n";
+ my $title;
+ my $text = "";
+ my $in_body = 0;
+ while (my $line = <$fh>) {
+ if ($in_body) {
+ if ($line =~ /^\s*<\/body>\s*$/) {
+ $in_body = 0;
+ next;
+ }
+ if ($line =~ /^\s*
\s*$/) {
+ next;
+ }
+ $text .= $line;
+ } else {
+ if ($line =~ /^\s*\s*$/) {
+ $in_body = 1;
+ next;
+ }
+ if ($line =~ /\s*(.*)<\/title>.*$/) {
+ $title = $1;
+ }
+ elsif ($file =~ /\/(w+)\.html$/) {
+ $title = $1;
+ }
+ }
+ }
+ seek $fh, 0, 0;
+ truncate $fh, 0;
+ #print $fh "", "\n" if defined $title;
+ write_header($fh,$title);
+ #print $fh '' . "\n";
+ print $fh $text;
+ #print $fh '' . "\n";
+ write_footer($fh);
+ my $mode = (stat $fh)[2] & 0777 | 0111;
+ chmod $mode, $fh;
+}
+
+sub update_index {
+ my ($self, $subdir, $html_rel_path, $pod_name) = @_;
+ $subdir =~ s|/.*$||;
+ my $idx = $self->{idx};
+ my $sections = $self->{section_hash};
+ if (exists $sections->{$subdir}) {
+ push @{$idx->{$subdir}}, [ $html_rel_path, $pod_name ];
+ } else {
+ warn "no section for subdir '$subdir'\n";
+ }
+}
+
+sub write_index {
+ my ($self, $out_path) = @_;
+ my $idx = $self->{idx};
+ my $sections = $self->{section_hash};
+ my $section_order = $self->{section_order};
+ my $source_root = $self->{source_root};
+ $source_root =~ s|^.*/||;
+ my $dest_url = $self->{dest_url};
+
+ #print Dumper($idx);
+
+ #my $header = "Index $source_root\n";
+ #my $content_start = "Index for $source_root
\n";
+
+ #my $header = qq|| . "\n"
+ # . '' . "\n";
+ my $title = "Index for $source_root";
+ my $content_start = "";
+ my $content = "";
+
+ foreach my $section (@$section_order) {
+ next unless defined $idx->{$section};
+ my $section_name = $sections->{$section};
+ $content_start .= "- $section_name
\n";
+ my @files = sort @{$idx->{$section}};
+ $content .= "\n";
+ $content .= "$section_name
\n";
+ foreach my $file (sort { $a->[1] cmp $b->[1] } @files) {
+ my ($path, $name) = @$file;
+ $content .= "- $name
\n";
+ }
+ #$content .= "
\n";
+ $content .= "
\n";
+ }
+
+ $content_start .= "
\n";
+ my $date = strftime "%a %b %e %H:%M:%S %Z %Y", localtime;
+ my $content_end = "Generated $date
\n";
+ #my $footer = "\n";
+ #my $content_end = "";
+ #my $footer = '' . "\n";
+
+ my $fh = new IO::File($out_path, 'w') or die "Failed to open index '$out_path' for writing: $!\n";
+ write_header($fh,$title);
+ #print $fh $header, $content_start, $content, $content_end, $footer;
+ print $fh $content_start, $content, $content_end;
+ write_footer($fh);
+ my $mode = (stat $fh)[2] & 0777 | 0111;
+ chmod $mode, $fh;
+}
+
+sub do_podpp {
+ my $in_path = shift;
+ my $pp = make Pod::PP(-incpath=>[],-symbols=>{});
+ #my ($out_fh, $out_path) = tempfile('ww-make-docs-podpp.XXXXXX');
+ #local *STDOUT = $out_fh;
+ my $out_path = "$in_path.podpp";
+ local *STDOUT;
+ open STDOUT, '>', $out_path or die "can't redirect STDOUT to $out_path: $!";
+ $pp->parse_from_file($in_path);
+ return $out_path;
+}
+
+sub do_mkdir {
+ my $dir = shift;
+ system '/bin/mkdir', '-p', $dir;
+ if ($?) {
+ my $exit = $? >> 8;
+ my $signal = $? & 127;
+ my $core = $? & 128;
+ die "/bin/mkdir -p $dir failed (exit=$exit signal=$signal core=$core)\n";
+ }
+}
+
+sub do_pod2html {
+ my %o = @_;
+ my @args = (
+ defined $o{subdirs} && length $o{subdirs} ? "--podpath=$o{subdirs}" : (),
+ "--podroot=$o{source_root}",
+ "--htmldir=$o{dest_root}",
+ defined $o{dest_url} && length $o{dest_url} ? "--htmlroot=$o{dest_url}" : (),
+ "--infile=$o{pod_path}",
+ "--outfile=$o{html_path}",
+ '--recurse',
+ '--noheader',
+ );
+ #print join(" ", 'pod2html', @args), "\n";
+ pod2html(@args);
+}
+
+sub write_header {
+ my $fh = shift;
+ my $title = shift;
+ print $fh qq{
+
+
+
+
+
+
+ $title
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
$title
+
+
From WeBWorK
+
+
+
+
+ }
+}
+
+sub write_footer {
+ my $fh = shift;
+ print $fh <<'EOF';
+
+
+
+
+
+
+
+
+
+
+EOF
+ #for my $module (sort keys %index) {
+ #print $fh "
\n";
+ #print $fh "
$module
\n";
+ #print $fh "
\n";
+ #print $fh "
\n";
+ #for my $version (reverse sort keys %{$index{$module}}) {
+ #if (ref $index{$module}{$version}) {
+ #print $fh "- $version
\n";
+ #for my $extra (sort keys %{$index{$module}{$version}}) {
+ #print $fh "- $extra
\n";
+ #}
+ #print $fh "
\n";
+ #} else {
+ #print $fh "- $version
\n";
+ #}
+ #}
+ #print $fh "
\n";
+ #print $fh "
\n";
+ #}
+ print $fh <<'EOF';
+
+
+
+
+
+
+
+EOF
+}
+
+package main;
+
+unless (caller) {
+ unless (@ARGV >= 2) {
+ print "usage: $0 source_root dest_root [ dest_url ]\n";
+ exit 1;
+ }
+ my $htmldocs = new WeBWorK::Utils::HTMLDocs(
+ source_root => $ARGV[0],
+ dest_root => $ARGV[1],
+ dest_url => $ARGV[2],
+ );
+ $htmldocs->convert_pods;
+}
+
+1;
+
diff --git a/pod_doc_tools/pod2htmd.tmp b/pod_doc_tools/pod2htmd.tmp
new file mode 100644
index 0000000..0844977
--- /dev/null
+++ b/pod_doc_tools/pod2htmd.tmp
@@ -0,0 +1,798 @@
+bin:logs:DATA:conf:tmp:courses.dist:lib:t:doc:clients:htdocs
+/home/mgage/webwork_masters/ww_source_files/webwork2
+mapConfigRelative htdocs/js/vendor/requirejs/tests/mapConfig/mapConfigRelative.pod:
+mapConfigStarAdapterBuilt htdocs/js/vendor/requirejs/tests/mapConfig/built/mapConfigStarAdapterBuilt.pod:
+prob4 courses.dist/modelCourse/templates/set0/prob4:
+Config lib/WeBWorK/ContentGenerator/Instructor/Config.pm:
+water_fountain_alt htdocs/applets/Image_and_Cursor_All/water_fountain_alt.pod:
+email courses.dist/modelCourse/templates/email:
+errorContinueLocal htdocs/js/vendor/requirejs/tests/error/errorContinueLocal.pod:
+unsigned htdocs/applets/geogebra_stable/unsigned:
+scripts htdocs/js/vendor/requirejs/tests/jquery/scripts:htdocs/js/vendor/requirejs/tests/packages/bar/0.4/scripts:htdocs/js/vendor/requirejs/tests/packages/pkgs/beta/0.2/scripts:
+NonVersioned lib/WeBWorK/DB/Schema/NewSQL/NonVersioned.pm:
+docs doc/parser/docs:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/docs:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/docs:htdocs/js/vendor/requirejs/docs:htdocs/js/vendor/underscore/docs:htdocs/js/vendor/backbone/docs:htdocs/js/legacy/backbone/docs:htdocs/js/apps/LibraryBrowser/docs:
+InstructorProblemSetList htdocs/helpFiles/InstructorProblemSetList.pod:
+remove_stale_images bin/remove_stale_images.pod:
+sql_single lib/WeBWorK/Utils/CourseManagement/sql_single.pm:
+snap-to htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/draggable/snap-to.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/draggable/snap-to.pod:
+teacher_Problem.js htdocs/js/legacy/webwork_js_master/out/files/teacher_Problem.js.pod:
+WeBWorK lib/WeBWorK:lib/WeBWorK.pm:lib/Apache/WeBWorK.pm:htdocs/js/legacy/webwork_js_master/out/modules/WeBWorK.pod:
+Localize lib/WeBWorK/Localize.pm:lib/WeBWorK/Localize:
+relativeModuleId htdocs/js/vendor/requirejs/tests/paths/relativeModuleId.pod:
+ComboBox lib/WeBWorK/HTML/ComboBox.pm:
+scriptload htdocs/js/vendor/requirejs/tests/browsertests/scriptload:
+Problems htdocs/helpFiles/Problems.pod:
+AttemptsTable lib/WeBWorK/Utils/AttemptsTable.pm:
+node htdocs/js/vendor/requirejs/docs/node.pod:
+pg htdocs/codemirror2/mode/pg:
+cursor-style htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/draggable/cursor-style.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/draggable/cursor-style.pod:
+EmailCellValidator htdocs/js/vendor/editablegrid-2.0.1/doc/jsdoc/symbols/EmailCellValidator.pod:
+display-grid htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/selectable/display-grid.pod:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/sortable/display-grid.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/selectable/display-grid.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/sortable/display-grid.pod:
+LocationAddresses lib/WeBWorK/DB/Record/LocationAddresses.pm:
+SetMaker3 lib/WeBWorK/ContentGenerator/Instructor/SetMaker3.pm:
+pathArrayFail htdocs/js/vendor/requirejs/tests/pathArray/pathArrayFail.pod:
+nestedRelativeRequire htdocs/js/vendor/requirejs/tests/nestedRelativeRequire:htdocs/js/vendor/requirejs/tests/nestedRelativeRequire/nestedRelativeRequire.pod:
+unsupported-themes htdocs/unsupported-themes:
+TextCellEditor htdocs/js/vendor/editablegrid-2.0.1/doc/jsdoc/symbols/TextCellEditor.pod:
+moduleConfig htdocs/js/vendor/requirejs/tests/moduleConfig:htdocs/js/vendor/requirejs/tests/moduleConfig/moduleConfig.pod:
+puff-effect htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/docs/puff-effect.pod:
+ProblemSetDetail2 lib/WeBWorK/ContentGenerator/Instructor/ProblemSetDetail2.pm:htdocs/js/apps/ProblemSetDetail2:
+datasource htdocs/js/vendor/editablegrid-2.0.1/examples/full/datasource:
+commonjs htdocs/js/vendor/requirejs/tests/commonjs:htdocs/js/vendor/requirejs/docs/commonjs.pod:
+InstructorIndex htdocs/helpFiles/InstructorIndex.pod:
+helpFiles htdocs/helpFiles:
+a htdocs/js/vendor/requirejs/tests/relative/outsideBaseUrl/a:htdocs/js/vendor/requirejs/tests/commonjs/tests/modules/1.0/nested/a:
+img htdocs/js/vendor/bootstrap/img:htdocs/js/legacy/webwork_js_master/out/assets/img:htdocs/themes/math3/bootstrap/img:
+UserSetLocations lib/WeBWorK/DB/Record/UserSetLocations.pm:
+anonSimple htdocs/js/vendor/requirejs/tests/anon/anonSimple.pod:
+Entering-Fractions htdocs/helpFiles/Entering-Fractions.pod:
+Login lib/WeBWorK/ContentGenerator/Login.pm:
+modal-confirmation htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/dialog/modal-confirmation.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/dialog/modal-confirmation.pod:
+Constants lib/WeBWorK/Constants.pm:
+teacher htdocs/js/legacy/webwork_js_master/teacher:htdocs/js/legacy/webwork/teacher:htdocs/js/legacy/webwork_js_develop/teacher:
+sample htdocs/js/vendor/requirejs/tests/text/resources/sample.pod:
+PermissionLevel lib/WeBWorK/DB/Record/PermissionLevel.pm:
+File lib/WeBWorK/File:
+pluginMap htdocs/js/vendor/requirejs/tests/plugins/pluginMap:htdocs/js/vendor/requirejs/tests/plugins/pluginMap/pluginMap.pod:
+CHANGES htdocs/js/legacy/webwork_js_master/out/assets/vendor/prettify/CHANGES.pod:
+pathArray htdocs/js/vendor/requirejs/tests/pathArray:htdocs/js/vendor/requirejs/tests/pathArray/pathArray.pod:
+trontastic htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/trontastic:
+determinism htdocs/js/vendor/requirejs/tests/commonjs/tests/modules/1.0/determinism:
+InstructorPGProblemEditor htdocs/helpFiles/InstructorPGProblemEditor.pod:
+LaTeXMathML htdocs/LaTeXMathML:
+jquery htdocs/js/vendor/jquery:htdocs/js/vendor/requirejs/tests/jquery:htdocs/js/vendor/requirejs/tests/jquery/jquery.pod:htdocs/js/vendor/requirejs/docs/jquery.pod:htdocs/js/vendor/editablegrid-2.0.1/extensions/jquery:
+MathView htdocs/js/apps/MathView:
+jsdoc htdocs/js/vendor/editablegrid-2.0.1/doc/jsdoc:
+runner htdocs/js/vendor/requirejs/tests/doh/runner.pod:
+Entering-Vectors htdocs/helpFiles/Entering-Vectors.pod:
+nameOnly htdocs/js/vendor/requirejs/tests/plugins/nameOnly.pod:
+jszip htdocs/js/vendor/jszip:
+achievements courses.dist/modelCourse/html/achievements:courses.dist/modelCourse/templates/achievements:
+MathTranslators lib/WebworkWebservice/MathTranslators.pm:
+errorContinue htdocs/js/vendor/requirejs/tests/error/errorContinue.pod:
+AchievementEditor lib/WeBWorK/ContentGenerator/Instructor/AchievementEditor.pm:htdocs/js/apps/AchievementEditor:
+Basic_TheLastOption lib/WeBWorK/Authen/Basic_TheLastOption.pm:
+definedSpecified htdocs/js/vendor/requirejs/tests/definedSpecified:htdocs/js/vendor/requirejs/tests/definedSpecified/definedSpecified.pod:
+NumberCellEditor htdocs/js/vendor/editablegrid-2.0.1/doc/jsdoc/symbols/NumberCellEditor.pod:
+drop-effect htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/docs/drop-effect.pod:
+HTML lib/WeBWorK/HTML:
+Markdown.pl htdocs/js/vendor/requirejs/dist/Markdown.pl.pod:
+flags htdocs/js/vendor/editablegrid-2.0.1/examples/full/images/flags:
+requirements htdocs/js/vendor/requirejs/docs/requirements.pod:
+jqueryDynamic2 htdocs/js/vendor/requirejs/tests/jquery/jqueryDynamic2.pod:
+component htdocs/js/vendor/requirejs/tests/plugins/pluginLast/component.pod:
+ProblemSetDetail lib/WeBWorK/ContentGenerator/Instructor/ProblemSetDetail.pm:
+jquery-ui-themes-1.10.3 htdocs/css/vendor/jquery-ui-themes-1.10.3:
+instructor_links htdocs/helpFiles/instructor_links.pod:
+ASCIIMathML htdocs/ASCIIMathML:
+Cookie lib/WeBWorK/Cookie.pm:
+blind-effect htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/docs/blind-effect.pod:
+set0 courses.dist/modelCourse/templates/set0:
+first.js htdocs/js/vendor/requirejs/tests/paths/first.js:
+NAMESPACE htdocs/js/vendor/requirejs/tests/NAMESPACE.pod:
+mode htdocs/codemirror2/mode:
+InstructorFileManager htdocs/helpFiles/InstructorFileManager.pod:
+library-browser htdocs/html-templates/library-browser.pod:
+Set lib/WeBWorK/DB/Record/Set.pm:
+formats htdocs/dragmathedit/dragmath/formats:
+setfilepermissions bin/setfilepermissions.pod:
+legacy htdocs/js/legacy:
+Logout lib/WeBWorK/ContentGenerator/Logout.pm:
+devel doc/devel:
+FakeRequest lib/WeBWorK/FakeRequest.pm:
+SetMaker2 lib/WeBWorK/ContentGenerator/Instructor/SetMaker2.pm:
+hardcopyThemes conf/snippets/hardcopyThemes:
+base htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/themes/base:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/themes/base:
+SetMaker lib/WeBWorK/ContentGenerator/Instructor/SetMaker.pm:htdocs/js/apps/SetMaker:
+lang htdocs/dragmathedit/dragmath/lang:
+sortable htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/sortable:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/draggable/sortable.pod:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/docs/sortable.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/sortable:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/draggable/sortable.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/docs/sortable.pod:
+Xgraph htdocs/applets/Xgraph:
+handle htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/draggable/handle.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/draggable/handle.pod:
+snap-to-grid htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/resizable/snap-to-grid.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/resizable/snap-to-grid.pod:
+Entering-Formulas htdocs/helpFiles/Entering-Formulas.pod:
+water_fountain htdocs/applets/Image_and_Cursor_All/water_fountain.pod:
+source htdocs/applets/source:
+scroll htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/draggable/scroll.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/draggable/scroll.pod:
+InfoBox lib/WeBWorK/HTML/InfoBox.pm:
+errors htdocs/js/vendor/requirejs/docs/errors.pod:
+scriptloadinteractive htdocs/js/vendor/requirejs/tests/browsertests/scriptloadinteractive:
+WeBWorK.js htdocs/js/legacy/webwork_js_master/out/files/WeBWorK.js.pod:
+PGProblemEditor3 lib/WeBWorK/ContentGenerator/Instructor/PGProblemEditor3.pm:htdocs/js/apps/PGProblemEditor3:
+local htdocs/js/vendor/requirejs/tests/text/resources/local.pod:
+paths htdocs/js/vendor/requirejs/tests/paths:htdocs/js/vendor/requirejs/tests/paths/paths.pod:
+requirejs htdocs/js/vendor/requirejs:
+error htdocs/js/vendor/requirejs/tests/error:
+EditableGrid htdocs/js/vendor/editablegrid-2.0.1/doc/jsdoc/symbols/EditableGrid.pod:
+Levels htdocs/helpFiles/Levels.pod:
+Stats_old lib/WeBWorK/ContentGenerator/Instructor/Stats_old.pm:
+python htdocs/codemirror2/mode/python:
+pulsate-effect htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/docs/pulsate-effect.pod:
+setOrientation courses.dist/modelCourse/templates/setOrientation:
+CheckboxCellRenderer htdocs/js/vendor/editablegrid-2.0.1/doc/jsdoc/symbols/CheckboxCellRenderer.pod:
+RenderProblem lib/WebworkWebservice/RenderProblem.pm:
+1.0 htdocs/js/vendor/requirejs/tests/commonjs/tests/modules/1.0:
+empty-lists htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/sortable/empty-lists.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/sortable/empty-lists.pod:
+subwidget2 htdocs/js/vendor/requirejs/tests/text/subwidget2.pod:
+delayedDefine htdocs/js/vendor/requirejs/tests/delayedDefine:htdocs/js/vendor/requirejs/tests/delayedDefine/delayedDefine.pod:
+universal htdocs/js/vendor/requirejs/tests/universal:htdocs/js/vendor/requirejs/tests/universal/universal.pod:
+fromText htdocs/js/vendor/requirejs/tests/plugins/fromText:htdocs/js/vendor/requirejs/tests/plugins/fromText/fromText.pod:
+test htdocs/js/vendor/requirejs/tests/browsertests/appendbeforeload/test.pod:htdocs/js/vendor/underscore/test:htdocs/js/vendor/backbone/test:htdocs/js/vendor/backbone/test/test.pod:htdocs/js/legacy/backbone/test:htdocs/js/legacy/backbone/test/test.pod:htdocs/codemirror2/test:
+PT-Sans htdocs/js/vendor/requirejs/dist/fonts/PT-Sans:
+htmllinksexample courses.dist/modelCourse/templates/setMAAtutorial/htmllinksexample:
+Entering-Exponents htdocs/helpFiles/Entering-Exponents.pod:
+32x32 htdocs/applets/geogebra_stable/icons/hicolor/32x32:
+pluginMapDynamic htdocs/js/vendor/requirejs/tests/plugins/pluginMap/dynamic/pluginMapDynamic.pod:
+curve_template htdocs/applets/Image_and_Cursor_All/curve_template.pod:
+helper htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/resizable/helper.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/resizable/helper.pod:
+modal-form htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/dialog/modal-form.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/dialog/modal-form.pod:
+undefEnforceShim htdocs/js/vendor/requirejs/tests/undef/undefEnforceShim.pod:
+FormatRecords lib/WeBWorK/Utils/FormatRecords.pm:
+shopping-cart htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/droppable/shopping-cart.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/droppable/shopping-cart.pod:
+models htdocs/js/legacy/webwork/models:htdocs/js/legacy/webwork_js_develop/models:
+UserList2 lib/WeBWorK/ContentGenerator/Instructor/UserList2.pm:
+webwork htdocs/js/legacy/webwork:htdocs/js/legacy/webwork_js_master/out/classes/webwork.pod:
+subwidget htdocs/js/vendor/requirejs/tests/text/subwidget.pod:
+48x48 htdocs/applets/geogebra_stable/icons/hicolor/48x48:
+textBuilt htdocs/js/vendor/requirejs/tests/text/textBuilt.pod:
+tires htdocs/js/vendor/requirejs/tests/packages/optimizing/packages/tires:
+OptionList lib/WeBWorK/HTML/OptionList.pm:
+modules htdocs/js/vendor/jquery/modules:htdocs/js/vendor/requirejs/tests/commonjs/tests/modules:htdocs/js/vendor/backbone/modules:htdocs/js/legacy/webwork_js_master/out/modules:
+CourseAdmin lib/WeBWorK/ContentGenerator/CourseAdmin.pm:
+mathview htdocs/images/mathview:
+GlobalUserAchievement lib/WeBWorK/DB/Record/GlobalUserAchievement.pm:
+TestWW clients/t/TestWW.pod:
+foo htdocs/js/vendor/requirejs/tests/relative/foo:htdocs/js/vendor/requirejs/tests/packages/foo:
+shim htdocs/js/vendor/requirejs/tests/shim:
+connect-lists htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/sortable/connect-lists.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/sortable/connect-lists.pod:
+StudentProgress lib/WeBWorK/ContentGenerator/Instructor/StudentProgress.pm:
+defineErrorLocal htdocs/js/vendor/requirejs/tests/error/defineErrorLocal.pod:
+DropdownList lib/WeBWorK/HTML/DropdownList.pm:
+transfer-effect htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/docs/transfer-effect.pod:
+prob05 courses.dist/modelCourse/templates/setOrientation/prob05:
+Debug lib/WeBWorK/Debug.pm:
+NumberCellRenderer htdocs/js/vendor/editablegrid-2.0.1/doc/jsdoc/symbols/NumberCellRenderer.pod:
+urlfetch htdocs/js/vendor/requirejs/tests/urlfetch:htdocs/js/vendor/requirejs/tests/urlfetch/urlfetch.pod:
+Entering-Equations htdocs/helpFiles/Entering-Equations.pod:
+fromTextNoDefine htdocs/js/vendor/requirejs/tests/plugins/fromTextNoDefine:htdocs/js/vendor/requirejs/tests/plugins/fromTextNoDefine/fromTextNoDefine.pod:
+ScoringDownload lib/WeBWorK/ContentGenerator/Instructor/ScoringDownload.pm:
+plugin htdocs/js/vendor/requirejs/tests/plugins/pluginMapSameName/plugin:
+Display htdocs/dragmathedit/dragmath/Display:
+SortHeaderRenderer htdocs/js/vendor/editablegrid-2.0.1/doc/jsdoc/symbols/SortHeaderRenderer.pod:
+accepted-elements htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/droppable/accepted-elements.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/droppable/accepted-elements.pod:
+InstructorUserList htdocs/helpFiles/InstructorUserList.pod:
+test_two_images_localhost clients/t/test_two_images_localhost.pod:
+using_examples htdocs/applets/xFunctions/using_examples.pod:
+ListingDB lib/WeBWorK/Utils/ListingDB.pm:
+vader htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/vader:
+64x64 htdocs/applets/geogebra_stable/icons/hicolor/64x64:
+Entering-Limits htdocs/helpFiles/Entering-Limits.pod:
+Second_semester_calculus_topics clients/t/Second_semester_calculus_topics.pod:
+wwdb_addgw bin/old_scripts/wwdb_addgw.pod:
+Moodle lib/WeBWorK/Authen/Moodle.pm:
+prob14-hint courses.dist/modelCourse/templates/setOrientation/prob14/prob14-hint.pod:
+internals htdocs/codemirror2/internals.pod:
+pg-find-tags bin/pg-find-tags.pod:
+htmlmixed htdocs/codemirror2/mode/htmlmixed:
+UserAchievement lib/WeBWorK/DB/Record/UserAchievement.pm:
+draggable htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/draggable:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/docs/draggable.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/draggable:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/docs/draggable.pod:
+vendor htdocs/js/vendor:htdocs/js/vendor/underscore/test/vendor:htdocs/js/vendor/backbone/test/vendor:htdocs/js/legacy/vendor:htdocs/js/legacy/webwork_js_master/out/assets/vendor:htdocs/js/legacy/backbone/test/vendor:htdocs/css/vendor:
+absolute htdocs/js/vendor/requirejs/tests/commonjs/tests/modules/1.0/absolute:
+SetVersion lib/WeBWorK/DB/Record/SetVersion.pm:
+outsideBaseUrl htdocs/js/vendor/requirejs/tests/relative/outsideBaseUrl:htdocs/js/vendor/requirejs/tests/relative/outsideBaseUrl/a/outsideBaseUrl.pod:
+test-zepto htdocs/js/vendor/backbone/test/test-zepto.pod:htdocs/js/legacy/backbone/test/test-zepto.pod:
+bar htdocs/js/vendor/requirejs/tests/relative/foo/bar:htdocs/js/vendor/requirejs/tests/packages/bar:htdocs/js/vendor/requirejs/tests/paths/relativeNormalize/bar:
+images_fr htdocs/images/images_fr:
+EmailCellRenderer htdocs/js/vendor/editablegrid-2.0.1/doc/jsdoc/symbols/EmailCellRenderer.pod:
+less htdocs/js/vendor/datepicker/less:
+configRequirejs htdocs/js/vendor/requirejs/tests/configRequirejs.pod:
+LiveGraphics htdocs/js/apps/LiveGraphics:
+Local_Usage_Data htdocs/helpFiles/Local_Usage_Data.pod:
+Assigner lib/WeBWorK/ContentGenerator/Instructor/Assigner.pm:
+teacher_Library.js htdocs/js/legacy/webwork_js_master/out/files/teacher_Library.js.pod:
+Key lib/WebworkSOAP/Classes/Key.pm:lib/WeBWorK/DB/Record/Key.pm:
+ProblemUtil lib/WeBWorK/ContentGenerator/ProblemUtil:lib/WeBWorK/ContentGenerator/ProblemUtil/ProblemUtil.pm:
+LibraryActions lib/WebworkWebservice/LibraryActions.pm:
+undef htdocs/js/vendor/requirejs/tests/undef:htdocs/js/vendor/requirejs/tests/undef/undef.pod:
+shake-effect htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/docs/shake-effect.pod:
+Permission lib/WebworkSOAP/Classes/Permission.pm:
+pg-append-textbook-tags bin/pg-append-textbook-tags.pod:
+math2 htdocs/unsupported-themes/math2:
+SelectCellEditor htdocs/js/vendor/editablegrid-2.0.1/doc/jsdoc/symbols/SelectCellEditor.pod:
+Tags lib/WeBWorK/Utils/Tags.pm:
+InstructorUsersAssignedToSet htdocs/helpFiles/InstructorUsersAssignedToSet.pod:
+WebworkWebservice lib/WebworkWebservice:lib/WebworkWebservice.pm:
+download htdocs/js/vendor/requirejs/docs/download.pod:
+domReady htdocs/js/vendor/requirejs/tests/domReady:htdocs/js/vendor/requirejs/tests/domReady/domReady.pod:
+AchievementItems lib/WeBWorK/AchievementItems.pm:
+Grades lib/WeBWorK/Utils/Grades.pm:lib/WeBWorK/ContentGenerator/Grades.pm:htdocs/helpFiles/Grades.pod:
+database.conf.dist conf/database.conf.dist.pod:
+south-street htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/south-street:
+WWSafe lib/WWSafe.pm:
+dragmathedit htdocs/dragmathedit:
+uploads DATA/uploads:
+afghanistan_borders_alt htdocs/applets/Image_and_Cursor_All/afghanistan_borders_alt.pod:
+mapConfig htdocs/js/vendor/requirejs/tests/mapConfig:htdocs/js/vendor/requirejs/tests/mapConfig/mapConfig.pod:
+overcast htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/overcast:
+Request lib/WeBWorK/Request.pm:lib/WeBWorK/RPC/Request.pm:
+hicolor htdocs/applets/geogebra_stable/icons/hicolor:
+Entering-Intervals htdocs/helpFiles/Entering-Intervals.pod:
+black-tie htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/black-tie:
+index htdocs/index.pod:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/index.pod:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/effect/index.pod:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/selectable/index.pod:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/position/index.pod:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/draggable/index.pod:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/widget/index.pod:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/resizable/index.pod:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/sortable/index.pod:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/dialog/index.pod:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/droppable/index.pod:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/button/index.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/index.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/selectable/index.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/position/index.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/draggable/index.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/widget/index.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/resizable/index.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/progressbar/index.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/sortable/index.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/dialog/index.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/droppable/index.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/button/index.pod:htdocs/js/vendor/requirejs/index.pod:htdocs/js/vendor/requirejs/tests/index.pod:htdocs/js/vendor/requirejs/tests/browsertests/vardefine/index.pod:htdocs/js/vendor/requirejs/tests/browsertests/docwritenested/index.pod:htdocs/js/vendor/requirejs/tests/browsertests/scriptload/index.pod:htdocs/js/vendor/requirejs/tests/browsertests/onerror/index.pod:htdocs/js/vendor/requirejs/tests/browsertests/scriptloadinteractiveattach/index.pod:htdocs/js/vendor/requirejs/tests/browsertests/noload/index.pod:htdocs/js/vendor/requirejs/tests/browsertests/scriptloadinteractive/index.pod:htdocs/js/vendor/editablegrid-2.0.1/doc/jsdoc/index.pod:htdocs/js/vendor/editablegrid-2.0.1/examples/index.pod:htdocs/js/vendor/editablegrid-2.0.1/examples/simple/index.pod:htdocs/js/vendor/editablegrid-2.0.1/examples/attach/index.pod:htdocs/js/vendor/editablegrid-2.0.1/examples/jsdata/index.pod:htdocs/js/vendor/editablegrid-2.0.1/examples/minimal/index.pod:htdocs/js/vendor/editablegrid-2.0.1/examples/json/index.pod:htdocs/js/vendor/editablegrid-2.0.1/examples/mixed/index.pod:htdocs/js/vendor/editablegrid-2.0.1/examples/full/index.pod:htdocs/js/vendor/underscore/index.pod:htdocs/js/vendor/underscore/test/index.pod:htdocs/js/vendor/backbone/index.pod:htdocs/js/vendor/backbone/examples/todos/index.pod:htdocs/js/legacy/webwork_js_master/out/index.pod:htdocs/js/legacy/webwork_js_master/out/assets/index.pod:htdocs/js/legacy/webwork_js_master/out/modules/index.pod:htdocs/js/legacy/webwork_js_master/out/files/index.pod:htdocs/js/legacy/webwork_js_master/out/classes/index.pod:htdocs/js/legacy/backbone/index.pod:htdocs/js/legacy/backbone/examples/todos/index.pod:htdocs/applets/index.pod:htdocs/applets/xFunctions/index.pod:htdocs/codemirror2/index.pod:htdocs/codemirror2/test/index.pod:htdocs/codemirror2/mode/xml/index.pod:htdocs/codemirror2/mode/javascript/index.pod:htdocs/codemirror2/mode/haskell/index.pod:htdocs/codemirror2/mode/diff/index.pod:htdocs/codemirror2/mode/pg/index.pod:htdocs/codemirror2/mode/rst/index.pod:htdocs/codemirror2/mode/python/index.pod:htdocs/codemirror2/mode/stex/index.pod:htdocs/codemirror2/mode/clike/index.pod:htdocs/codemirror2/mode/smalltalk/index.pod:htdocs/codemirror2/mode/css/index.pod:htdocs/codemirror2/mode/php/index.pod:htdocs/codemirror2/mode/htmlmixed/index.pod:htdocs/codemirror2/mode/math/index.pod:
+dojox htdocs/js/vendor/requirejs/tests/packages/dojox:htdocs/js/vendor/requirejs/tests/packages/pkgs/dojox:
+Syntax htdocs/helpFiles/Syntax.pod:
+widget htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/widget:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/widget:htdocs/js/vendor/requirejs/tests/text/widget.pod:
+Feedback lib/WeBWorK/ContentGenerator/Feedback.pm:
+activeline htdocs/codemirror2/demo/activeline.pod:
+Apache lib/Apache:
+UserProblem lib/WebworkSOAP/Classes/UserProblem.pm:lib/WeBWorK/DB/Record/UserProblem.pm:
+Schema lib/WeBWorK/DB/Schema:lib/WeBWorK/DB/Schema.pm:
+WSDL lib/WebworkSOAP/WSDL.pm:
+GatewayQuiz lib/WeBWorK/ContentGenerator/GatewayQuiz.pm:htdocs/js/apps/GatewayQuiz:
+async htdocs/js/vendor/requirejs/tests/browsertests/async:
+pluginErrorContinue htdocs/js/vendor/requirejs/tests/error/pluginErrorContinue.pod:
+Home lib/WeBWorK/ContentGenerator/Home.pm:
+icons htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/button/icons.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/button/icons.pod:htdocs/applets/geogebra_stable/icons:
+jsonp htdocs/js/vendor/requirejs/tests/jsonp:htdocs/js/vendor/requirejs/tests/jsonp/jsonp.pod:
+fr htdocs/js/vendor/requirejs/tests/i18n/nls/fr:
+RPC lib/WeBWorK/RPC:lib/WeBWorK/RPC.pm:
+doc htdocs/js/vendor/editablegrid-2.0.1/doc:
+undefLocal htdocs/js/vendor/requirejs/tests/undef/undefLocal.pod:
+Units htdocs/helpFiles/Units.pod:
+Authen lib/WeBWorK/Authen:lib/WeBWorK/Authen.pm:
+_global_ htdocs/js/vendor/editablegrid-2.0.1/doc/jsdoc/symbols/_global_.pod:
+ubc htdocs/unsupported-themes/ubc:
+hasOwnProperty htdocs/js/vendor/requirejs/tests/commonjs/tests/modules/1.0/hasOwnProperty:
+faq-optimization htdocs/js/vendor/requirejs/docs/faq-optimization.pod:
+c htdocs/js/vendor/requirejs/tests/mapConfig/c:htdocs/js/vendor/requirejs/tests/mapConfig/another/c:htdocs/js/vendor/requirejs/tests/commonjs/tests/modules/1.0/nested/a/b/c:
+PDE-notation htdocs/helpFiles/PDE-notation.pod:
+uniques htdocs/js/vendor/requirejs/tests/uniques:htdocs/js/vendor/requirejs/tests/uniques/uniques.pod:
+Driver lib/WeBWorK/DB/Driver:lib/WeBWorK/DB/Driver.pm:
+CellEditor htdocs/js/vendor/editablegrid-2.0.1/doc/jsdoc/symbols/CellEditor.pod:
+redmond htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/redmond:
+optimization htdocs/js/vendor/requirejs/docs/optimization.pod:
+position htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/position:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/docs/position.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/position:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/docs/position.pod:
+openflashchart htdocs/js/vendor/editablegrid-2.0.1/extensions/openflashchart:
+nestedRequireConfig htdocs/js/vendor/requirejs/tests/nestedRequireConfig:htdocs/js/vendor/requirejs/tests/nestedRequireConfig/nestedRequireConfig.pod:
+CourseEnvironment lib/WeBWorK/CourseEnvironment.pm:
+Second_semester_calculus_topics2 clients/t/Second_semester_calculus_topics2.pod:
+webwork-popup htdocs/dragmathedit/webwork-popup.pod:
+textOnError htdocs/js/vendor/requirejs/tests/text/textOnError.pod:
+trailingComma htdocs/js/vendor/requirejs/tests/trailingComma:htdocs/js/vendor/requirejs/tests/trailingComma/trailingComma.pod:
+InputColor htdocs/js/apps/InputColor:
+SortRecords lib/WeBWorK/Utils/SortRecords.pm:
+Compare lib/WeBWorK/ContentGenerator/Instructor/Compare.pm:
+afterload htdocs/js/vendor/requirejs/tests/afterload.pod:
+SQL lib/WeBWorK/DB/Driver/SQL.pm:
+UserDetail lib/WeBWorK/ContentGenerator/Instructor/UserDetail.pm:
+development-bundle htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle:
+codemirror htdocs/js/vendor/codemirror:
+le-frog htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/le-frog:
+revert htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/draggable/revert.pod:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/droppable/revert.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/draggable/revert.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/droppable/revert.pod:
+button htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/button:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/docs/button.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/button:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/docs/button.pod:
+wwdb_check bin/old_scripts/wwdb_check.pod:
+resizable htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/resizable:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/docs/resizable.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/resizable:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/docs/resizable.pod:
+InstructorAddUsers htdocs/helpFiles/InstructorAddUsers.pod:
+Entering-Logarithms htdocs/helpFiles/Entering-Logarithms.pod:
+table htdocs/js/vendor/requirejs/tests/packages/pkgs/dojox/table:
+isBrowser htdocs/js/vendor/requirejs/tests/isBrowser:htdocs/js/vendor/requirejs/tests/isBrowser/isBrowser.pod:
+noload htdocs/js/vendor/requirejs/tests/browsertests/noload:
+256x256 htdocs/applets/geogebra_stable/icons/hicolor/256x256:
+72x72 htdocs/applets/geogebra_stable/icons/hicolor/72x72:
+wwaddindexing bin/old_scripts/wwaddindexing.pod:
+sql_moodle lib/WeBWorK/Utils/CourseManagement/sql_moodle.pm:
+jQuery.widget htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/docs/jQuery.widget.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/docs/jQuery.widget.pod:
+b htdocs/js/vendor/requirejs/tests/relative/outsideBaseUrl/b:htdocs/js/vendor/requirejs/tests/moduleConfig/b:htdocs/js/vendor/requirejs/tests/commonjs/tests/modules/1.0/nested/a/b:
+414 htdocs/js/vendor/requirejs/tests/circular/414:htdocs/js/vendor/requirejs/tests/circular/414/414.pod:
+html-templates htdocs/html-templates:
+specialDeps htdocs/js/vendor/requirejs/tests/specialDeps:htdocs/js/vendor/requirejs/tests/specialDeps/specialDeps.pod:
+size-effect htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/docs/size-effect.pod:
+oldrelease htdocs/codemirror2/oldrelease.pod:
+ProctoredGatewayQuiz lib/WeBWorK/ContentGenerator/ProctoredGatewayQuiz.pm:
+webwork_js_develop htdocs/js/legacy/webwork_js_develop:
+requirePluginLoad htdocs/js/vendor/requirejs/tests/requirePluginLoad:htdocs/js/vendor/requirejs/tests/requirePluginLoad/requirePluginLoad.pod:
+pkgs htdocs/js/vendor/requirejs/tests/packages/pkgs:
+xFunctions htdocs/applets/xFunctions:htdocs/applets/xFunctions/xFunctions.pod:
+version1 htdocs/js/vendor/requirejs/tests/version1:
+applets htdocs/applets:
+exports htdocs/js/vendor/requirejs/tests/exports:htdocs/js/vendor/requirejs/tests/exports/exports.pod:
+x3dom htdocs/js/vendor/x3dom:
+codemirror2 htdocs/codemirror2:
+alpha htdocs/js/vendor/requirejs/tests/packages/pkgs/alpha:
+geogebra_webstart htdocs/applets/geogebra_stable/geogebra_webstart.pod:
+text htdocs/js/vendor/requirejs/tests/text:htdocs/js/vendor/requirejs/tests/text/text.pod:
+Test lib/WeBWorK/ContentGenerator/Test.pm:
+AchievementUserEditor lib/WeBWorK/ContentGenerator/Instructor/AchievementUserEditor.pm:
+photo-manager htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/droppable/photo-manager.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/droppable/photo-manager.pod:
+Depths lib/WeBWorK/DB/Record/Depths.pm:
+SliderGraph htdocs/applets/Xgraph/SliderGraph.pod:
+SetsAssignedToUser lib/WeBWorK/ContentGenerator/Instructor/SetsAssignedToUser.pm:
+radio htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/button/radio.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/button/radio.pod:
+math4-ar htdocs/themes/math4-ar:
+plug htdocs/js/vendor/requirejs/tests/mapConfig/plug:
+Hardcopy lib/WeBWorK/ContentGenerator/Hardcopy.pm:
+stex htdocs/codemirror2/mode/stex:
+anon htdocs/js/vendor/requirejs/tests/anon:
+old_scripts bin/old_scripts:
+textarea htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/resizable/textarea.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/resizable/textarea.pod:
+constrain-movement htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/draggable/constrain-movement.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/draggable/constrain-movement.pod:
+Global_Average_Attempts_Data htdocs/helpFiles/Global_Average_Attempts_Data.pod:
+Authz lib/WeBWorK/Authz.pm:
+constrain-area htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/resizable/constrain-area.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/resizable/constrain-area.pod:
+c2 htdocs/js/vendor/requirejs/tests/mapConfig/c2:
+viewport htdocs/js/vendor/requirejs/tests/circular/complexPlugin/viewport.pod:
+dojo htdocs/js/vendor/requirejs/docs/dojo.pod:
+onerror htdocs/js/vendor/requirejs/tests/browsertests/onerror:htdocs/js/vendor/requirejs/tests/plugins/onerror:htdocs/js/vendor/requirejs/tests/plugins/onerror/onerror.pod:
+Tasks lib/WeBWorK/Utils/Tasks.pm:
+built htdocs/js/vendor/requirejs/tests/shim/built:htdocs/js/vendor/requirejs/tests/mapConfig/built:
+dataMain htdocs/js/vendor/requirejs/tests/dataMain:htdocs/js/vendor/requirejs/tests/dataMain/dataMain.pod:
+DetermineProblemLangAndDirection lib/WeBWorK/Utils/DetermineProblemLangAndDirection.pm:
+themes htdocs/themes:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/themes:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/themes:htdocs/css/vendor/jquery-ui-themes-1.10.3/themes:
+codeshard htdocs/codemirror2/codeshard.pod:htdocs/codemirror2/demo/codeshard.pod:
+autocomplete_variant_1 htdocs/js/vendor/editablegrid-2.0.1/extensions/autocomplete_variant_1:
+InstructorStats htdocs/helpFiles/InstructorStats.pod:
+Merge lib/WeBWorK/DB/Schema/NewSQL/Merge.pm:
+resize htdocs/codemirror2/demo/resize.pod:
+engine htdocs/js/vendor/requirejs/tests/packages/optimizing/packages/engine:
+InstructorAssigner htdocs/helpFiles/InstructorAssigner.pod:
+impl htdocs/js/vendor/requirejs/tests/paths/impl:
+label htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/progressbar/label.pod:
+Problem lib/WeBWorK/DB/Record/Problem.pm:lib/WeBWorK/ContentGenerator/Problem.pm:htdocs/js/apps/Problem:
+WebsiteCellValidator htdocs/js/vendor/editablegrid-2.0.1/doc/jsdoc/symbols/WebsiteCellValidator.pod:
+templates courses.dist/modelCourse/templates:
+SendMail lib/WeBWorK/ContentGenerator/Instructor/SendMail.pm:
+window htdocs/js/vendor/requirejs/tests/packages/dojox/window:
+missing htdocs/js/vendor/requirejs/tests/commonjs/tests/modules/1.0/missing:
+no_help htdocs/helpFiles/no_help.pod:
+VersionedMerge lib/WeBWorK/DB/Schema/NewSQL/VersionedMerge.pm:
+serialize htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/selectable/serialize.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/selectable/serialize.pod:
+fonts htdocs/js/vendor/requirejs/dist/fonts:
+afghanistan_distances_alt htdocs/applets/Image_and_Cursor_All/afghanistan_distances_alt.pod:
+sendXMLRPC.pl clients/sendXMLRPC.pl.pod:
+mapConfigPluginBuilt htdocs/js/vendor/requirejs/tests/mapConfig/built/mapConfigPluginBuilt.pod:
+onResourceLoad htdocs/js/vendor/requirejs/tests/onResourceLoad:
+Preflight lib/WeBWorK/ContentGenerator/Instructor/Preflight.pm:
+mapConfigStar htdocs/js/vendor/requirejs/tests/mapConfig/mapConfigStar.pod:
+Global_Average_Status_Data htdocs/helpFiles/Global_Average_Status_Data.pod:
+transpiler htdocs/js/vendor/requirejs/tests/circular/transpiler:htdocs/js/vendor/requirejs/tests/circular/transpiler/transpiler.pod:
+clike htdocs/codemirror2/mode/clike:
+DateCellValidator htdocs/js/vendor/editablegrid-2.0.1/doc/jsdoc/symbols/DateCellValidator.pod:
+InstructorPreflight htdocs/helpFiles/InstructorPreflight.pod:
+packages htdocs/js/vendor/requirejs/tests/packages:htdocs/js/vendor/requirejs/tests/packages/packages.pod:htdocs/js/vendor/requirejs/tests/packages/optimizing/packages:
+MultiPointGraph htdocs/applets/PointGraph/MultiPointGraph.pod:
+minimal htdocs/js/vendor/editablegrid-2.0.1/examples/minimal:
+resources htdocs/js/vendor/requirejs/tests/text/resources:
+Local_Average_Status_Data htdocs/helpFiles/Local_Average_Status_Data.pod:
+0.2 htdocs/js/vendor/requirejs/tests/packages/pkgs/beta/0.2:
+AuthenWeBWorK lib/Apache/AuthenWeBWorK.pm:
+CourseIntegrityCheck lib/WeBWorK/Utils/CourseIntegrityCheck.pm:
+tmp htdocs/tmp:
+splitbutton htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/button/splitbutton.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/button/splitbutton.pod:
+program htdocs/js/vendor/requirejs/tests/commonjs/tests/modules/1.0/determinism/program.pod:htdocs/js/vendor/requirejs/tests/commonjs/tests/modules/1.0/monkeys/program.pod:htdocs/js/vendor/requirejs/tests/commonjs/tests/modules/1.0/cyclic/program.pod:htdocs/js/vendor/requirejs/tests/commonjs/tests/modules/1.0/relative/program.pod:htdocs/js/vendor/requirejs/tests/commonjs/tests/modules/1.0/absolute/program.pod:htdocs/js/vendor/requirejs/tests/commonjs/tests/modules/1.0/method/program.pod:htdocs/js/vendor/requirejs/tests/commonjs/tests/modules/1.0/nested/program.pod:htdocs/js/vendor/requirejs/tests/commonjs/tests/modules/1.0/hasOwnProperty/program.pod:htdocs/js/vendor/requirejs/tests/commonjs/tests/modules/1.0/missing/program.pod:htdocs/js/vendor/requirejs/tests/commonjs/tests/modules/1.0/exactExports/program.pod:htdocs/js/vendor/requirejs/tests/commonjs/tests/modules/1.0/transitive/program.pod:
+dialog htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/dialog:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/docs/dialog.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/dialog:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/docs/dialog.pod:
+Password lib/WebworkSOAP/Classes/Password.pm:lib/WeBWorK/DB/Record/Password.pm:
+UsesMathObjects htdocs/helpFiles/UsesMathObjects.pod:
+max-min htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/resizable/max-min.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/resizable/max-min.pod:
+prettify htdocs/js/legacy/webwork_js_master/out/assets/vendor/prettify:
+renderViaXMLRPC lib/WeBWorK/ContentGenerator/renderViaXMLRPC.pm:
+autocomplete_variant_2 htdocs/js/vendor/editablegrid-2.0.1/extensions/autocomplete_variant_2:
+history htdocs/js/vendor/requirejs/docs/history.pod:
+Setting lib/WeBWorK/DB/Record/Setting.pm:
+ProblemRenderer lib/WeBWorK/ContentGenerator/ProblemRenderer.pm:
+UsersAssignedToSet lib/WeBWorK/ContentGenerator/Instructor/UsersAssignedToSet.pm:
+afghanistan_distances htdocs/applets/Image_and_Cursor_All/afghanistan_distances.pod:
+FilterRecords lib/WeBWorK/Utils/FilterRecords.pm:
+_sounds htdocs/js/vendor/requirejs/tests/doh/_sounds:
+undefNoRequire htdocs/js/vendor/requirejs/tests/undef/undefNoRequire.pod:
+Upload lib/WeBWorK/Upload.pm:
+PointGraph htdocs/applets/PointGraph:
+Achievement lib/WeBWorK/DB/Record/Achievement.pm:
+User lib/WebworkSOAP/Classes/User.pm:lib/WeBWorK/DB/Record/User.pm:
+rst htdocs/codemirror2/mode/rst:
+all htdocs/js/vendor/requirejs/tests/commonjs/tests/modules/1.0/all.pod:
+geogebra htdocs/applets/geogebra_stable/geogebra.pod:htdocs/applets/geogebra_stable/geogebra:
+Entering-Numbers htdocs/helpFiles/Entering-Numbers.pod:
+flick htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/flick:
+universal-built htdocs/js/vendor/requirejs/tests/universal/universal-built.pod:
+RestrictedMailer lib/WeBWorK/Utils/RestrictedMailer.pm:
+scale-effect htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/docs/scale-effect.pod:
+nestedDefine2 htdocs/js/vendor/requirejs/tests/nestedDefine/nestedDefine2.pod:
+attach htdocs/js/vendor/editablegrid-2.0.1/examples/attach:
+DATA htdocs/DATA:
+relativeBaseUrl htdocs/js/vendor/requirejs/tests/relative/relativeBaseUrl.pod:
+placeholder htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/sortable/placeholder.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/sortable/placeholder.pod:
+a1 htdocs/js/vendor/requirejs/tests/mapConfig/a1:
+EnumCellRenderer htdocs/js/vendor/editablegrid-2.0.1/doc/jsdoc/symbols/EnumCellRenderer.pod:
+delcourse bin/delcourse.pod:
+Form lib/WeBWorK/Form.pm:
+ContentGenerator lib/WeBWorK/ContentGenerator.pm:lib/WeBWorK/ContentGenerator:
+dgage htdocs/images/dgage:
+calc courses.dist/modelCourse/templates/setDemo/calc.pod:
+cupertino htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/cupertino:
+cyclic htdocs/js/vendor/requirejs/tests/commonjs/tests/modules/1.0/cyclic:
+AchievementList lib/WeBWorK/ContentGenerator/Instructor/AchievementList.pm:
+common htdocs/js/vendor/requirejs/tests/i18n/common.pod:
+minified htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/themes/base/minified:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/themes/ui-lightness/minified:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/ui/minified:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/themes/base/minified:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/themes/ui-lightness/minified:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/ui/minified:
+SketchGraph htdocs/js/legacy/sketchgraphhtml5b/SketchGraph.pod:htdocs/applets/Xgraph/SketchGraph.pod:
+humanity htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/humanity:
+Entering-Decimals htdocs/helpFiles/Entering-Decimals.pod:
+SetMakernojs lib/WeBWorK/ContentGenerator/Instructor/SetMakernojs.pm:
+hello_world_apps clients/hello_world_apps:
+WebworkSOAP lib/WebworkSOAP:lib/WebworkSOAP.pm:
+Classes lib/WebworkSOAP/Classes:
+specificCollection htdocs/js/vendor/requirejs/tests/plugins/pluginLast/specificCollection.pod:
+c1 htdocs/js/vendor/requirejs/tests/mapConfig/c1:
+fuel htdocs/js/vendor/requirejs/tests/packages/optimizing/packages/fuel:
+MySOAP lib/MySOAP.pm:
+chair htdocs/js/vendor/requirejs/tests/packages/pkgs/dojox/chair:
+ProblemGrader lib/WeBWorK/ContentGenerator/Instructor/ProblemGrader.pm:htdocs/js/apps/ProblemGrader:
+webwork_xmlrpc_client.pl clients/hello_world_apps/webwork_xmlrpc_client.pl.pod:
+delay-start htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/draggable/delay-start.pod:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/resizable/delay-start.pod:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/sortable/delay-start.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/draggable/delay-start.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/resizable/delay-start.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/sortable/delay-start.pod:
+liveJar htdocs/applets/liveJar:htdocs/applets/liveJar/liveJar.pod:
+visual-feedback htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/draggable/visual-feedback.pod:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/resizable/visual-feedback.pod:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/droppable/visual-feedback.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/draggable/visual-feedback.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/resizable/visual-feedback.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/droppable/visual-feedback.pod:
+remoteUrls htdocs/js/vendor/requirejs/tests/remoteUrls:htdocs/js/vendor/requirejs/tests/remoteUrls/remoteUrls.pod:
+ProblemSetList2 lib/WeBWorK/ContentGenerator/Instructor/ProblemSetList2.pm:
+GlobalSet lib/WebworkSOAP/Classes/GlobalSet.pm:
+dataMainBaseUrl htdocs/js/vendor/requirejs/tests/dataMain/baseUrl/dataMainBaseUrl.pod:
+js htdocs/js:htdocs/js/vendor/datepicker/js:htdocs/js/vendor/iframe-resizer/js:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/js:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/js:htdocs/js/vendor/bootstrap/js:htdocs/js/vendor/editablegrid-2.0.1/extensions/openflashchart/js:htdocs/js/legacy/webwork_js_master/out/assets/js:htdocs/themes/math3/bootstrap/js:
+diff htdocs/codemirror2/mode/diff:
+progressbar htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/progressbar:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/docs/progressbar.pod:
+portlets htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/sortable/portlets.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/sortable/portlets.pod:
+fade-effect htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/docs/fade-effect.pod:
+smalltalk htdocs/codemirror2/mode/smalltalk:
+faq-advanced htdocs/js/vendor/requirejs/docs/faq-advanced.pod:
+twitter htdocs/js/vendor/requirejs/tests/jsonp/twitter.pod:
+simple-badbase htdocs/js/vendor/requirejs/tests/simple-badbase.pod:
+math4 htdocs/themes/math4:
+bigCollection htdocs/js/vendor/requirejs/tests/plugins/pluginLast/bigCollection.pod:
+indeterminate htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/progressbar/indeterminate.pod:
+index-php htdocs/js/vendor/requirejs/tests/browsertests/scriptloadinteractiveattach/index-php.pod:htdocs/js/vendor/requirejs/tests/browsertests/scriptloadinteractive/index-php.pod:
+mapConfigBuilt htdocs/js/vendor/requirejs/tests/mapConfig/built/mapConfigBuilt.pod:
+Entering-Inequalities htdocs/helpFiles/Entering-Inequalities.pod:
+doh htdocs/js/vendor/requirejs/tests/doh:
+dragmath htdocs/dragmathedit/dragmath:
+OPLUtils bin/OPLUtils.pm:
+TagWidget htdocs/js/apps/TagWidget:
+Versioned lib/WeBWorK/DB/Schema/NewSQL/Versioned.pm:
+GlobalProblem lib/WebworkSOAP/Classes/GlobalProblem.pm:
+webwork_js_master htdocs/js/legacy/webwork_js_master:
+nestedRequire htdocs/js/vendor/requirejs/tests/nestedRequire:htdocs/js/vendor/requirejs/tests/nestedRequire/nestedRequire.pod:htdocs/js/vendor/requirejs/tests/onResourceLoad/nestedRequire.pod:
+why htdocs/js/vendor/requirejs/docs/why.pod:
+complete htdocs/codemirror2/demo/complete.pod:
+LoginProctor lib/WeBWorK/ContentGenerator/LoginProctor.pm:
+modal htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/dialog/modal.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/dialog/modal.pod:
+basic-built htdocs/js/vendor/requirejs/tests/shim/built/basic-built.pod:
+DatePicker htdocs/js/apps/DatePicker:
+manual htdocs/codemirror2/manual.pod:
+newpassword bin/newpassword.pod:
+wwdb bin/wwdb.pod:
+mustache htdocs/codemirror2/demo/mustache.pod:
+submodule htdocs/js/vendor/requirejs/tests/commonjs/tests/modules/1.0/determinism/submodule:htdocs/js/vendor/requirejs/tests/commonjs/tests/modules/1.0/relative/submodule:htdocs/js/vendor/requirejs/tests/commonjs/tests/modules/1.0/absolute/submodule:
+font-awesome htdocs/css/vendor/font-awesome:
+sketchgraphhtml5b htdocs/js/legacy/sketchgraphhtml5b:
+SetActions lib/WebworkWebservice/SetActions.pm:
+geogebra_stable htdocs/applets/geogebra_stable:
+FormatRenderedProblem lib/FormatRenderedProblem.pm:
+exactExports htdocs/js/vendor/requirejs/tests/commonjs/tests/modules/1.0/exactExports:
+problems doc/parser/problems:
+out htdocs/js/legacy/webwork_js_master/out:
+animated htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/dialog/animated.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/dialog/animated.pod:
+GummyGraph htdocs/applets/Xgraph/GummyGraph.pod:
+UserSet lib/WebworkSOAP/Classes/UserSet.pm:lib/WeBWorK/DB/Record/UserSet.pm:
+ProblemSet lib/WeBWorK/ContentGenerator/ProblemSet.pm:
+Base64 htdocs/js/apps/Base64:
+Entering-Formulas10 htdocs/helpFiles/Entering-Formulas10.pod:
+twoColumn conf/snippets/hardcopyThemes/twoColumn:
+mapConfigStarAdapter htdocs/js/vendor/requirejs/tests/mapConfig/mapConfigStarAdapter.pod:
+teacher_Set.js htdocs/js/legacy/webwork_js_master/out/files/teacher_Set.js.pod:
+AddOnLoad htdocs/js/apps/AddOnLoad:
+setMAAtutorial courses.dist/modelCourse/templates/setMAAtutorial:
+json htdocs/js/vendor/editablegrid-2.0.1/extensions/openflashchart/js/json:htdocs/js/vendor/editablegrid-2.0.1/examples/json:
+CourseActions lib/WebworkWebservice/CourseActions.pm:
+staticgraphicsexample courses.dist/modelCourse/templates/setMAAtutorial/staticgraphicsexample:
+design htdocs/js/vendor/requirejs/docs/design:
+DatePickerScripts lib/WeBWorK/Utils/DatePickerScripts.pm:
+html courses.dist/modelCourse/html:
+DateCellEditor htdocs/js/vendor/editablegrid-2.0.1/doc/jsdoc/symbols/DateCellEditor.pod:
+ww_purge_old_nonces bin/ww_purge_old_nonces.pod:
+faq htdocs/js/vendor/requirejs/docs/faq.pod:
+LTIBasic lib/WeBWorK/Authen/LTIBasic.pm:
+math htdocs/codemirror2/mode/math:
+images_es htdocs/images/images_es:
+vardefine htdocs/js/vendor/requirejs/tests/browsertests/vardefine:
+PGProblemEditor2 lib/WeBWorK/ContentGenerator/Instructor/PGProblemEditor2.pm:htdocs/js/apps/PGProblemEditor2:
+editablegrid-2.0.1 htdocs/js/vendor/editablegrid-2.0.1:
+RestrictedClosureClass lib/WeBWorK/Utils/RestrictedClosureClass.pm:
+jquery-ui-1.10.0.custom htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom:
+modal-message htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/dialog/modal-message.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/dialog/modal-message.pod:
+Options lib/WeBWorK/ContentGenerator/Options.pm:htdocs/helpFiles/Options.pod:
+checkbox htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/button/checkbox.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/button/checkbox.pod:
+Entering-Units htdocs/helpFiles/Entering-Units.pod:
+font htdocs/js/vendor/FontAwesome/font:htdocs/css/vendor/font-awesome/font:
+CGI lib/WeBWorK/CGI.pm:
+Instructor lib/WeBWorK/ContentGenerator/Instructor:lib/WeBWorK/ContentGenerator/Instructor.pm:
+php htdocs/js/vendor/editablegrid-2.0.1/php:htdocs/codemirror2/mode/php:
+scalable htdocs/applets/geogebra_stable/icons/hicolor/scalable:
+droppable htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/droppable:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/docs/droppable.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/droppable:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/docs/droppable.pod:
+dark-hive htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/dark-hive:
+blitzer htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/blitzer:
+haskell htdocs/codemirror2/mode/haskell:
+browsertests htdocs/js/vendor/requirejs/tests/browsertests:
+t clients/t:
+layers htdocs/js/vendor/requirejs/tests/layers:htdocs/js/vendor/requirejs/tests/layers/layers.pod:
+moduleAndExports htdocs/js/vendor/requirejs/tests/exports/moduleAndExports.pod:
+images htdocs/images:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/css/ui-lightness/images:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/themes/base/images:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/themes/base/minified/images:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/themes/ui-lightness/images:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/themes/ui-lightness/minified/images:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/images:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/position/images:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/droppable/images:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/css/ui-lightness/images:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/themes/base/images:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/themes/base/minified/images:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/themes/ui-lightness/images:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/themes/ui-lightness/minified/images:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/images:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/position/images:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/progressbar/images:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/droppable/images:htdocs/js/vendor/editablegrid-2.0.1/images:htdocs/js/vendor/editablegrid-2.0.1/extensions/jquery/images:htdocs/js/vendor/editablegrid-2.0.1/examples/full/images:htdocs/js/vendor/underscore/docs/images:htdocs/js/vendor/backbone/docs/images:htdocs/js/legacy/backbone/docs/images:htdocs/unsupported-themes/ubc/images:htdocs/css/images:htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/pepper-grinder/images:htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/redmond/images:htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/le-frog/images:htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/black-tie/images:htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/swanky-purse/images:htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/humanity/images:htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/vader/images:htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/trontastic/images:htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/smoothness/images:htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/blitzer/images:htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/sunny/images:htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/start/images:htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/hot-sneaks/images:htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/dark-hive/images:htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/excite-bike/images:htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/dot-luv/images:htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/cupertino/images:htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/overcast/images:htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/flick/images:htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/eggplant/images:htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/ui-darkness/images:htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/mint-choc/images:htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/ui-lightness/images:htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/south-street/images:htdocs/css/ui-lightness/images:
+src htdocs/js/vendor/requirejs/tests/dataMain/baseUrl/src:htdocs/js/vendor/editablegrid-2.0.1/src:
+pluginErrorContinueLocal htdocs/js/vendor/requirejs/tests/error/pluginErrorContinueLocal.pod:
+DBImportExport lib/WeBWorK/Utils/DBImportExport.pm:
+default htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/effect/default.pod:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/selectable/default.pod:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/position/default.pod:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/draggable/default.pod:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/widget/default.pod:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/resizable/default.pod:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/sortable/default.pod:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/dialog/default.pod:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/droppable/default.pod:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/button/default.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/selectable/default.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/position/default.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/draggable/default.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/widget/default.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/resizable/default.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/progressbar/default.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/sortable/default.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/dialog/default.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/droppable/default.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/button/default.pod:
+16x16 htdocs/applets/geogebra_stable/icons/hicolor/16x16:
+scriptloadinteractiveattach htdocs/js/vendor/requirejs/tests/browsertests/scriptloadinteractiveattach:
+other htdocs/js/vendor/other:
+ui htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/ui:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/ui:
+textOnXhr htdocs/js/vendor/requirejs/tests/text/textOnXhr.pod:
+excite-bike htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/excite-bike:
+LDAP lib/WeBWorK/Authen/LDAP.pm:
+whyamd htdocs/js/vendor/requirejs/docs/whyamd.pod:
+pluginLast htdocs/js/vendor/requirejs/tests/plugins/pluginLast:htdocs/js/vendor/requirejs/tests/plugins/pluginLast/pluginLast.pod:
+connect-lists-through-tabs htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/sortable/connect-lists-through-tabs.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/sortable/connect-lists-through-tabs.pod:
+backbone-localstorage htdocs/js/vendor/backbone/docs/backbone-localstorage.pod:htdocs/js/legacy/backbone/docs/backbone-localstorage.pod:
+oneColumn conf/snippets/hardcopyThemes/oneColumn:
+Skeleton lib/WeBWorK/ContentGenerator/Skeleton.pm:
+cjsDotRequire htdocs/js/vendor/requirejs/tests/cjsSpace/cjsDotRequire.pod:
+24x24 htdocs/applets/geogebra_stable/icons/hicolor/24x24:
+ProblemSets lib/WeBWorK/ContentGenerator/ProblemSets.pm:htdocs/helpFiles/ProblemSets.pod:
+backbone htdocs/js/vendor/backbone:htdocs/js/vendor/backbone/docs/backbone.pod:htdocs/js/legacy/backbone:htdocs/js/legacy/backbone/docs/backbone.pod:
+transitive htdocs/js/vendor/requirejs/tests/commonjs/tests/modules/1.0/transitive:
+PGtoTexRenderer lib/WeBWorK/ContentGenerator/PGtoTexRenderer.pm:
+images_tr htdocs/images/images_tr:
+popup htdocs/js/apps/WirisEditor/popup.pod:
+lib htdocs/js/vendor/requirejs/tests/packages/baz/lib:htdocs/js/vendor/requirejs/tests/packages/foo/lib:htdocs/js/vendor/requirejs/tests/packages/funky/lib:htdocs/dragmathedit/dragmath/lib:htdocs/codemirror2/lib:
+math3 htdocs/themes/math3:
+Stats lib/WeBWorK/ContentGenerator/Instructor/Stats.pm:
+curve_template_alt htdocs/applets/Image_and_Cursor_All/curve_template_alt.pod:
+classes htdocs/js/legacy/webwork_js_master/out/classes:
+Index lib/WeBWorK/ContentGenerator/Instructor/Index.pm:
+ShowHide htdocs/js/apps/ShowHide:
+EquationDisplay lib/WeBWorK/ContentGenerator/EquationDisplay.pm:
+highlight-effect htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/docs/highlight-effect.pod:
+SubmitGrade lib/WeBWorK/Authen/LTIAdvanced/SubmitGrade.pm:
+Null lib/WeBWorK/DB/Driver/Null.pm:
+tests htdocs/js/vendor/requirejs/tests:htdocs/js/vendor/requirejs/tests/commonjs/tests:
+symbols htdocs/js/vendor/editablegrid-2.0.1/doc/jsdoc/symbols:
+UsingParser doc/parser/docs/UsingParser.pod:
+config htdocs/js/vendor/requirejs/tests/config.pod:
+pepper-grinder htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/pepper-grinder:
+128x128 htdocs/applets/geogebra_stable/icons/hicolor/128x128:
+items htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/sortable/items.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/sortable/items.pod:
+CellRenderer htdocs/js/vendor/editablegrid-2.0.1/doc/jsdoc/symbols/CellRenderer.pod:
+files htdocs/js/vendor/editablegrid-2.0.1/doc/jsdoc/files.pod:htdocs/js/legacy/webwork_js_master/out/files:
+UserList lib/WeBWorK/ContentGenerator/Instructor/UserList.pm:
+Entering-Syntax htdocs/helpFiles/Entering-Syntax.pod:
+another htdocs/js/vendor/requirejs/tests/mapConfig/another:
+PG lib/WeBWorK/PG:lib/WeBWorK/PG.pm:
+WeBWorKAppletTest htdocs/applets/WeBWorKAppletTest.pod:
+Classlist lib/WeBWorK/File/Classlist.pm:
+NumberCellValidator htdocs/js/vendor/editablegrid-2.0.1/doc/jsdoc/symbols/NumberCellValidator.pod:
+wwsh bin/wwsh.pod:
+prime htdocs/js/vendor/requirejs/tests/plugins/prime:
+RQP lib/RQP.pm:
+Scoring lib/WeBWorK/File/Scoring.pm:lib/WeBWorK/ContentGenerator/Instructor/Scoring.pm:
+easing htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/effect/easing.pod:
+examples htdocs/js/vendor/editablegrid-2.0.1/examples:htdocs/js/vendor/backbone/examples:htdocs/js/legacy/backbone/examples:
+relative htdocs/js/vendor/requirejs/tests/relative:htdocs/js/vendor/requirejs/tests/relative/relative.pod:htdocs/js/vendor/requirejs/tests/commonjs/tests/modules/1.0/relative:
+autocomplete htdocs/js/vendor/editablegrid-2.0.1/extensions/autocomplete:
+LTIAdvanced lib/WeBWorK/Authen/LTIAdvanced:lib/WeBWorK/Authen/LTIAdvanced.pm:
+dynamic htdocs/js/vendor/requirejs/tests/plugins/pluginMap/dynamic:
+properties htdocs/applets/geogebra_stable/geogebra/properties:
+grab_course_environment.pl t/grab_course_environment.pl.pod:
+circularPlugin htdocs/js/vendor/requirejs/tests/circular/circularPlugin.pod:
+macros doc/parser/macros:
+ShowAnswers lib/WeBWorK/ContentGenerator/Instructor/ShowAnswers.pm:
+baseUrl htdocs/js/vendor/requirejs/tests/baseUrl.pod:htdocs/js/vendor/requirejs/tests/dataMain/baseUrl:
+start htdocs/js/vendor/requirejs/docs/start.pod:htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/start:
+AddUsers lib/WeBWorK/ContentGenerator/Instructor/AddUsers.pm:
+Column htdocs/js/vendor/editablegrid-2.0.1/doc/jsdoc/symbols/Column.pod:
+css htdocs/css:htdocs/js/vendor/datepicker/css:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/css:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/css:htdocs/js/vendor/bootstrap/css:htdocs/js/vendor/editablegrid-2.0.1/examples/full/css:htdocs/js/vendor/FontAwesome/css:htdocs/js/legacy/webwork_js_master/out/assets/css:htdocs/themes/math3/bootstrap/css:htdocs/css/vendor/font-awesome/css:htdocs/codemirror2/css:htdocs/codemirror2/mode/css:
+Locations lib/WeBWorK/DB/Record/Locations.pm:
+setDemo courses.dist/modelCourse/templates/setDemo:
+snippets conf/snippets:
+prob14 courses.dist/modelCourse/templates/setOrientation/prob14:
+NewSQL lib/WeBWorK/DB/Schema/NewSQL:lib/WeBWorK/DB/Schema/NewSQL.pm:
+extensions doc/parser/extensions:htdocs/js/vendor/editablegrid-2.0.1/extensions:
+afghanistan_borders htdocs/applets/Image_and_Cursor_All/afghanistan_borders.pod:
+views htdocs/js/legacy/webwork/views:htdocs/js/legacy/webwork_js_develop/views:
+addcourse bin/addcourse.pod:
+SaveTargetSetProblems lib/WeBWorK/ContentGenerator/Instructor/SaveTargetSetProblems.pm:
+version2 htdocs/js/vendor/requirejs/tests/version2:
+XMLRPC lib/WeBWorK/Authen/XMLRPC.pm:
+library_browser htdocs/js/apps/LibraryBrowser/docs/library_browser.pod:
+Cosign lib/WeBWorK/Authen/Cosign.pm:
+js-ofc-library htdocs/js/vendor/editablegrid-2.0.1/extensions/openflashchart/js-ofc-library:
+sync htdocs/js/vendor/requirejs/tests/plugins/sync.pod:
+assets htdocs/js/legacy/webwork_js_master/out/assets:
+FontAwesome htdocs/js/vendor/FontAwesome:
+events htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/draggable/events.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/draggable/events.pod:
+selectable htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/selectable:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/docs/selectable.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/selectable:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/docs/selectable.pod:
+README htdocs/js/legacy/webwork_js_master/out/assets/vendor/prettify/README.pod:
+mixed htdocs/js/vendor/editablegrid-2.0.1/examples/mixed:
+InstructorUserDetail htdocs/helpFiles/InstructorUserDetail.pod:
+Global_Usage_Data htdocs/helpFiles/Global_Usage_Data.pod:
+synchronous-resize htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/resizable/synchronous-resize.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/resizable/synchronous-resize.pod:
+post htdocs/js/vendor/requirejs/dist/post.pod:
+InstructorSetMaker htdocs/helpFiles/InstructorSetMaker.pod:
+dot-luv htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/dot-luv:
+pluginShim htdocs/js/vendor/requirejs/tests/plugins/pluginShim:htdocs/js/vendor/requirejs/tests/plugins/pluginShim/pluginShim.pod:
+InstructorConfig htdocs/helpFiles/InstructorConfig.pod:
+animate htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/resizable/animate.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/resizable/animate.pod:
+mouse htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/docs/mouse.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/docs/mouse.pod:
+mapConfigStarBuilt htdocs/js/vendor/requirejs/tests/mapConfig/built/mapConfigStarBuilt.pod:
+EmbeddedWWProblems t/EmbeddedWWProblems.pod:
+WirisEditor htdocs/js/apps/WirisEditor:
+DB lib/WeBWorK/DB:lib/WeBWorK/DB.pm:
+IntervalNotation htdocs/helpFiles/IntervalNotation.pod:
+dist htdocs/js/vendor/requirejs/dist:
+full htdocs/js/vendor/editablegrid-2.0.1/examples/full:
+URLPath lib/WeBWorK/URLPath.pm:
+cjsSpace htdocs/js/vendor/requirejs/tests/cjsSpace:htdocs/js/vendor/requirejs/tests/cjsSpace/cjsSpace.pod:
+simple-nohead htdocs/js/vendor/requirejs/tests/simple-nohead.pod:
+Local lib/WeBWorK/PG/Local.pm:
+hot-sneaks htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/hot-sneaks:
+fold-effect htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/docs/fold-effect.pod:
+plugins htdocs/js/vendor/requirejs/tests/plugins:htdocs/js/vendor/requirejs/docs/plugins.pod:
+Entering-Logarithms10 htdocs/helpFiles/Entering-Logarithms10.pod:
+nestedDefine htdocs/js/vendor/requirejs/tests/nestedDefine:htdocs/js/vendor/requirejs/tests/nestedDefine/nestedDefine.pod:
+complexPlugin htdocs/js/vendor/requirejs/tests/circular/complexPlugin:htdocs/js/vendor/requirejs/tests/circular/complexPlugin/complexPlugin.pod:
+InstructorProblemSetDetail2 htdocs/helpFiles/InstructorProblemSetDetail2.pod:
+keys htdocs/js/legacy/vendor/keys:
+CourseManagement lib/WeBWorK/Utils/CourseManagement:lib/WeBWorK/Utils/CourseManagement.pm:
+NPL lib/WeBWorK/NPL.pm:
+underscore htdocs/js/vendor/underscore:htdocs/js/vendor/underscore/docs/underscore.pod:
+nls htdocs/js/vendor/requirejs/tests/i18n/nls:
+depoverlap htdocs/js/vendor/requirejs/tests/depoverlap.pod:
+iframe-resizer htdocs/js/vendor/iframe-resizer:
+mapConfigSpecificity htdocs/js/vendor/requirejs/tests/mapConfig/mapConfigSpecificity.pod:
+AppletSupport htdocs/js/apps/AppletSupport:
+InstructorSendMail htdocs/helpFiles/InstructorSendMail.pod:
+demo htdocs/codemirror2/demo:
+Shibboleth lib/WeBWorK/Authen/Shibboleth.pm:
+i18n htdocs/js/vendor/requirejs/tests/i18n:htdocs/js/vendor/requirejs/tests/i18n/i18n.pod:
+test-ender htdocs/js/vendor/backbone/test/test-ender.pod:htdocs/js/legacy/backbone/test/test-ender.pod:
+InstructorScoring htdocs/helpFiles/InstructorScoring.pod:
+36x36 htdocs/applets/geogebra_stable/icons/hicolor/36x36:
+testing courses.dist/modelCourse/templates/set0/prob4/testing.pod:
+apps htdocs/js/apps:htdocs/applets/geogebra_stable/icons/hicolor/96x96/apps:htdocs/applets/geogebra_stable/icons/hicolor/22x22/apps:htdocs/applets/geogebra_stable/icons/hicolor/24x24/apps:htdocs/applets/geogebra_stable/icons/hicolor/256x256/apps:htdocs/applets/geogebra_stable/icons/hicolor/192x192/apps:htdocs/applets/geogebra_stable/icons/hicolor/48x48/apps:htdocs/applets/geogebra_stable/icons/hicolor/128x128/apps:htdocs/applets/geogebra_stable/icons/hicolor/72x72/apps:htdocs/applets/geogebra_stable/icons/hicolor/16x16/apps:htdocs/applets/geogebra_stable/icons/hicolor/scalable/apps:htdocs/applets/geogebra_stable/icons/hicolor/36x36/apps:htdocs/applets/geogebra_stable/icons/hicolor/64x64/apps:htdocs/applets/geogebra_stable/icons/hicolor/32x32/apps:
+ui-darkness htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/ui-darkness:
+javascript htdocs/js/vendor/editablegrid-2.0.1/examples/full/javascript:htdocs/codemirror2/mode/javascript:
+EnumProvider htdocs/js/vendor/editablegrid-2.0.1/doc/jsdoc/symbols/EnumProvider.pod:
+double htdocs/js/vendor/requirejs/tests/plugins/double.pod:
+Utils lib/WeBWorK/Utils:lib/WeBWorK/Utils.pm:lib/WeBWorK/DB/Utils:lib/WeBWorK/DB/Utils.pm:
+PGProblemEditor lib/WeBWorK/ContentGenerator/Instructor/PGProblemEditor.pm:
+CellValidator htdocs/js/vendor/editablegrid-2.0.1/doc/jsdoc/symbols/CellValidator.pod:
+96x96 htdocs/applets/geogebra_stable/icons/hicolor/96x96:
+FileManager lib/WeBWorK/ContentGenerator/Instructor/FileManager.pm:
+relativeNormalize htdocs/js/vendor/requirejs/tests/paths/relativeNormalize:htdocs/js/vendor/requirejs/tests/paths/relativeNormalize/relativeNormalize.pod:
+todos htdocs/js/vendor/backbone/examples/todos:htdocs/js/vendor/backbone/docs/todos.pod:htdocs/js/legacy/backbone/examples/todos:htdocs/js/legacy/backbone/docs/todos.pod:
+mapConfigPlugin htdocs/js/vendor/requirejs/tests/mapConfig/mapConfigPlugin.pod:
+sunny htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/sunny:
+Entering-Angles htdocs/helpFiles/Entering-Angles.pod:
+queryPath htdocs/js/vendor/requirejs/tests/queryPath.pod:
+domReadyExtraConfig htdocs/js/vendor/requirejs/tests/domReady/domReadyExtraConfig.pod:
+toolbar htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/button/toolbar.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/button/toolbar.pod:htdocs/js/vendor/requirejs/tests/circular/complexPlugin/toolbar.pod:
+en-us-surfer htdocs/js/vendor/requirejs/tests/i18n/nls/en-us-surfer:
+modelCourse courses.dist/modelCourse:
+contributing htdocs/js/vendor/requirejs/docs/contributing.pod:
+explode-effect htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/docs/explode-effect.pod:
+greek htdocs/js/vendor/requirejs/tests/relative/greek:
+math4-green htdocs/themes/math4-green:
+ShowMeAnother lib/WeBWorK/ContentGenerator/ShowMeAnother.pm:
+SQLAbstractIdentTrans lib/WeBWorK/DB/Utils/SQLAbstractIdentTrans.pm:
+WebworkClient lib/WebworkClient.pm:lib/WebworkClient:
+jqueryDynamic htdocs/js/vendor/requirejs/tests/jquery/jqueryDynamic.pod:
+simple htdocs/js/vendor/requirejs/tests/simple.pod:htdocs/js/vendor/editablegrid-2.0.1/examples/simple:
+aspect-ratio htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/resizable/aspect-ratio.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/resizable/aspect-ratio.pod:
+pluginMapSameName htdocs/js/vendor/requirejs/tests/plugins/pluginMapSameName:htdocs/js/vendor/requirejs/tests/plugins/pluginMapSameName/pluginMapSameName.pod:
+slide-effect htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/docs/slide-effect.pod:
+LibraryBrowser htdocs/js/apps/LibraryBrowser:
+docwritenested htdocs/js/vendor/requirejs/tests/browsertests/docwritenested:
+Entering-Points htdocs/helpFiles/Entering-Points.pod:
+circular htdocs/js/vendor/requirejs/tests/circular:htdocs/js/vendor/requirejs/tests/circular.pod:
+cycler htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/position/cycler.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/position/cycler.pod:
+Proctor lib/WeBWorK/Authen/Proctor.pm:
+multiversion htdocs/js/vendor/requirejs/tests/multiversion.pod:
+GetTargetSetProblems lib/WeBWorK/ContentGenerator/Instructor/GetTargetSetProblems.pm:
+bootstrap htdocs/js/vendor/bootstrap:htdocs/themes/math3/bootstrap:
+optimizing-built htdocs/js/vendor/requirejs/tests/packages/optimizing/optimizing-built.pod:
+InstructorProblemSetDetail htdocs/helpFiles/InstructorProblemSetDetail.pod:
+propagation htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/droppable/propagation.pod:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos/droppable/propagation.pod:
+codeshard2 htdocs/codemirror2/demo/codeshard2.pod:
+LocalStorage htdocs/js/apps/LocalStorage:
+method htdocs/js/vendor/requirejs/tests/commonjs/tests/modules/1.0/method:
+bounce-effect htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/docs/bounce-effect.pod:
+Local_Average_Attempts_Data htdocs/helpFiles/Local_Average_Attempts_Data.pod:
+datepicker htdocs/js/vendor/datepicker:
+live_map_instructions htdocs/applets/live_map_instructions.pod:
+CAS lib/WeBWorK/Authen/CAS.pm:
+eggplant htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/eggplant:
+effect htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos/effect:
+DateCellRenderer htdocs/js/vendor/editablegrid-2.0.1/doc/jsdoc/symbols/DateCellRenderer.pod:
+beta htdocs/js/vendor/requirejs/tests/packages/pkgs/beta:
+external htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/external:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/external:
+instructorXMLHandler lib/WeBWorK/ContentGenerator/instructorXMLHandler.pm:
+frontpage htdocs/html-templates/frontpage.pod:
+swanky-purse htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/swanky-purse:
+InstructorFileTransfer htdocs/helpFiles/InstructorFileTransfer.pod:
+Std lib/WeBWorK/DB/Schema/NewSQL/Std.pm:
+search htdocs/codemirror2/demo/search.pod:
+SetLocations lib/WeBWorK/DB/Record/SetLocations.pm:
+WebsiteCellRenderer htdocs/js/vendor/editablegrid-2.0.1/doc/jsdoc/symbols/WebsiteCellRenderer.pod:
+workers htdocs/js/vendor/requirejs/tests/workers.pod:
+mint-choc htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/mint-choc:
+mimetypes htdocs/applets/geogebra_stable/icons/hicolor/96x96/mimetypes:htdocs/applets/geogebra_stable/icons/hicolor/22x22/mimetypes:htdocs/applets/geogebra_stable/icons/hicolor/24x24/mimetypes:htdocs/applets/geogebra_stable/icons/hicolor/256x256/mimetypes:htdocs/applets/geogebra_stable/icons/hicolor/192x192/mimetypes:htdocs/applets/geogebra_stable/icons/hicolor/48x48/mimetypes:htdocs/applets/geogebra_stable/icons/hicolor/128x128/mimetypes:htdocs/applets/geogebra_stable/icons/hicolor/72x72/mimetypes:htdocs/applets/geogebra_stable/icons/hicolor/16x16/mimetypes:htdocs/applets/geogebra_stable/icons/hicolor/scalable/mimetypes:htdocs/applets/geogebra_stable/icons/hicolor/36x36/mimetypes:htdocs/applets/geogebra_stable/icons/hicolor/64x64/mimetypes:htdocs/applets/geogebra_stable/icons/hicolor/32x32/mimetypes:
+funky htdocs/js/vendor/requirejs/tests/packages/funky:
+DBUpgrade lib/WeBWorK/Utils/DBUpgrade.pm:
+ui-lightness htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/css/ui-lightness:htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/themes/ui-lightness:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/css/ui-lightness:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/themes/ui-lightness:htdocs/css/ui-lightness:htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/ui-lightness:
+ProblemVersion lib/WeBWorK/DB/Record/ProblemVersion.pm:
+xml htdocs/codemirror2/mode/xml:
+0.4 htdocs/js/vendor/requirejs/tests/packages/bar/0.4:
+ProblemSetList lib/WeBWorK/ContentGenerator/Instructor/ProblemSetList.pm:
+jsdata htdocs/js/vendor/editablegrid-2.0.1/examples/jsdata:
+textOnly htdocs/js/vendor/requirejs/tests/text/textOnly.pod:
+ScrollingRecordList lib/WeBWorK/HTML/ScrollingRecordList.pm:
+smoothness htdocs/css/vendor/jquery-ui-themes-1.10.3/themes/smoothness:
+Course lib/WebworkSOAP/Classes/Course.pm:
+optimizing htdocs/js/vendor/requirejs/tests/packages/optimizing:htdocs/js/vendor/requirejs/tests/packages/optimizing/optimizing.pod:
+issue379 htdocs/js/vendor/requirejs/tests/issue379:htdocs/js/vendor/requirejs/tests/issue379/issue379.pod:
+mapConfigDelayed htdocs/js/vendor/requirejs/tests/mapConfig/mapConfigDelayed.pod:
+adapter htdocs/js/vendor/requirejs/tests/mapConfig/adapter:
+compress htdocs/codemirror2/compress.pod:
+22x22 htdocs/applets/geogebra_stable/icons/hicolor/22x22:
+basic htdocs/js/vendor/requirejs/tests/shim/basic.pod:
+Record lib/WeBWorK/DB/Record.pm:lib/WeBWorK/DB/Record:
+math4-red htdocs/themes/math4-red:
+parser doc/parser:
+pre htdocs/js/vendor/requirejs/dist/pre.pod:
+GetLibrarySetProblems lib/WeBWorK/ContentGenerator/Instructor/GetLibrarySetProblems.pm:
+api htdocs/js/vendor/requirejs/docs/api.pod:
+marker htdocs/codemirror2/demo/marker.pod:
+Achievements lib/WeBWorK/ContentGenerator/Achievements.pm:
+AchievementEvaluator lib/WeBWorK/AchievementEvaluator.pm:
+PastAnswer lib/WeBWorK/DB/Record/PastAnswer.pm:
+demos htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/demos:htdocs/js/vendor/jquery/jquery-ui-1.10.0.custom/development-bundle/demos:
+ParserAnswerCheckers doc/parser/docs/ParserAnswerCheckers.pod:
+dataMainIndex htdocs/js/vendor/requirejs/tests/dataMain/dataMainIndex:htdocs/js/vendor/requirejs/tests/dataMain/dataMainIndex/dataMainIndex.pod:
+Remote lib/WeBWorK/PG/Remote.pm:
+baz htdocs/js/vendor/requirejs/tests/packages/baz:
+jquery-ui-1.9.2.custom htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom:
+Template lib/WeBWorK/Template.pm:
+nested htdocs/js/vendor/requirejs/tests/commonjs/tests/modules/1.0/nested:
+clip-effect htdocs/js/vendor/jquery/jquery-ui-1.9.2.custom/development-bundle/docs/clip-effect.pod:
+mapConfigMulti htdocs/js/vendor/requirejs/tests/mapConfig/mapConfigMulti.pod:
+192x192 htdocs/applets/geogebra_stable/icons/hicolor/192x192:
+appendbeforeload htdocs/js/vendor/requirejs/tests/browsertests/appendbeforeload:
+Image_and_Cursor_All htdocs/applets/Image_and_Cursor_All:htdocs/applets/Image_and_Cursor_All/Image_and_Cursor_All.pod:
+LibraryStats lib/WeBWorK/Utils/LibraryStats.pm:
+sub htdocs/js/vendor/requirejs/tests/mapConfig/a1/sub:htdocs/js/vendor/requirejs/tests/nestedRelativeRequire/sub:htdocs/js/vendor/requirejs/tests/anon/sub:
+DelayedMailer lib/WeBWorK/Utils/DelayedMailer.pm:
+functionToString htdocs/js/vendor/requirejs/tests/browsertests/functionToString.pod:
+monkeys htdocs/js/vendor/requirejs/tests/commonjs/tests/modules/1.0/monkeys:
+textDepend htdocs/js/vendor/requirejs/tests/plugins/textDepend:htdocs/js/vendor/requirejs/tests/plugins/textDepend/textDepend.pod:
diff --git a/pod_doc_tools/pod2htmi.tmp b/pod_doc_tools/pod2htmi.tmp
new file mode 100644
index 0000000..b3dea60
--- /dev/null
+++ b/pod_doc_tools/pod2htmi.tmp
@@ -0,0 +1,2 @@
+bin:logs:DATA:conf:tmp:courses.dist:lib:t:doc:clients:htdocs
+/home/mgage/webwork_masters/ww_source_files/webwork2
diff --git a/pod_doc_tools/pod_doc_instructions.md b/pod_doc_tools/pod_doc_instructions.md
new file mode 100644
index 0000000..d6490b5
--- /dev/null
+++ b/pod_doc_tools/pod_doc_instructions.md
@@ -0,0 +1,44 @@
+## instructions for pod documents with jason
+
+/home/jaubrey/webwork:
+
+* ww-make-docs-from-svn
+ *
+
+* ww-make-docs
+ * updates local copy and writes web pages
+
+* source files
+* /home/jaubrey/webwork/webwork2_TRUNK
+* /home/jaubrey/webwork/pg_TRUNK ...
+
+* update these directories `ls m`
+* manually using `git`
+* then run `ww-make-docs-from-svn`
+
+
+Need to rewrite script so that it updates
+the git repository automatically.
+
+
+
+## media wiki search daemon
+/usr/local/search/ls2/ generates the search file
+for mediawiki
+
+.lsearchd (daemon)
+/etc/init/d/lsearchd
+
+/usr/share/mediawiki contents of media wiki
+/var/lib/mediawiki
+```
+mgage@ws4doc:/home/jaubrey$ sudo crontab -l -u root
+ls # m h dom mon dow command
+00 00 * * * cd /usr/local/search/ls2/ && ./build > /home/jaubrey/cronlogs/lucene_search.log
+00 * * * * /usr/bin/python /var/www/planet/planet.py /var/www/planet/webwork/config.ini
+```
+/var/www/w has some mediawiki stuff
+
+cd /usr/local/search/ls2
+sudo ./configure /var/lib/mediawiki
+sudo ./build lsearch.con
\ No newline at end of file
diff --git a/pod_doc_tools/ww-make-docs b/pod_doc_tools/ww-make-docs
new file mode 100755
index 0000000..65a1c99
--- /dev/null
+++ b/pod_doc_tools/ww-make-docs
@@ -0,0 +1,401 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+package WeBWorK::Utils::HTMLDocs;
+
+use File::Find;
+use File::Temp qw(tempfile);
+use IO::File;
+use Pod::Find qw(pod_find simplify_name contains_pod);
+use Pod::Html;
+#use Pod::PP;
+use POSIX qw(strftime);
+use Data::Dumper;
+
+our @sections = (
+ '/' => "(root)",
+ bin => "Scripts",
+ conf => "Config Files",
+ doc => "Documentation",
+ lib => "Libraries",
+ macros => "Macros",
+ clients => "Clients",
+);
+
+sub new {
+ my ($invocant, %o) = @_;
+ my $class = ref $invocant || $invocant;
+
+ my @section_list = exists $o{sections} ? @{$o{sections}} : @sections;
+ my $section_hash = {@section_list};
+ my $section_order = [ map { $section_list[2*$_] } 0..$#section_list/2 ];
+ delete $o{sections};
+
+ my $self = {
+ %o,
+ idx => {},
+ section_hash => $section_hash,
+ section_order => $section_order,
+ };
+ return bless $self, $class;
+}
+
+sub convert_pods {
+ my $self = shift;
+ my $source_root = $self->{source_root};
+ my $dest_root = $self->{dest_root};
+ my $subdirs = do {
+ my $dh;
+ opendir $dh, $source_root;
+ join ':',
+ grep { not (/^\./ or /^(CVS|.svn)$/) and -d "$source_root/$_" }
+ readdir $dh;
+ };
+ $self->{subdirs} = $subdirs;
+
+ find({wanted => $self->gen_pod_wanted, no_chdir => 1}, $source_root);
+ $self->write_index("$dest_root/index.html");
+}
+
+sub gen_pod_wanted {
+ my $self = shift;
+ return sub {
+ my $path = $File::Find::name;
+ my $dir = $File::Find::dir;
+ my ($name) = $path =~ m|^$dir(?:/(.*))?$|;
+ $name = '' unless defined $name;
+
+ if ($name =~ /^\./) {
+ $File::Find::prune = 1;
+ return;
+ }
+ unless (-f $path or -d $path) {
+ $File::Find::prune = 1;
+ return;
+ }
+ if (-d _ and $name =~ /^(CVS|RCS|.svn)$/) {
+ $File::Find::prune = 1;
+ return;
+ }
+
+ return if -d _;
+ return unless contains_pod($path);
+ $self->process_pod($path);
+ };
+}
+
+sub process_pod {
+ my ($self, $pod_path) = @_;
+ my $source_root = $self->{source_root};
+ my $dest_root = $self->{dest_root};
+ my $dest_url = $self->{dest_url};
+ my $subdirs = $self->{subdirs};
+
+ my $pod_name;
+
+ my ($subdir, $filename) = $pod_path =~ m|^$source_root/(?:(.*)/)?(.*)$|;
+ my ($subdir_first, $subdir_rest);
+ print "subdir_first: $subdir_first\n";
+ print "subdir_rest: $subdir_rest\n";
+ if (defined $subdir) {
+ if ($subdir =~ m|/|) {
+ ($subdir_first, $subdir_rest) = $subdir =~ m|^([^/]*)/(.*)|;
+ } else {
+ $subdir_first = $subdir;
+ }
+ }
+ $pod_name = (defined $subdir_rest ? "$subdir_rest/" : "") . $filename;
+ if ($filename =~ /\.(plx?|pg)$/ or $filename !~ /\./) {
+ $filename .= '.html';
+ } elsif ($filename =~ /\.pod$/) {
+ $pod_name =~ s/\.pod$//;
+ $filename =~ s/\.pod$/.html/;
+ } elsif ($filename =~ /\.pm$/) {
+ $pod_name =~ s/\.pm$//;
+ $pod_name =~ s|/+|::|g;
+ $filename =~ s/\.pm$/.html/;
+ }
+ my $html_dir = defined $subdir ? "$dest_root/$subdir" : $dest_root;
+ my $html_path = "$html_dir/$filename";
+ my $html_rel_path = defined $subdir ? "$subdir/$filename" : $filename;
+
+ # deal with potential
+ if (not defined $subdir) {
+ my $source_root_last = $source_root;
+ $source_root_last =~ s|^.*/||;
+ if ($source_root_last =~ /^(.+)_(.+?)(?:--(.*))?$/) {
+ my ($module, $version, $extra) = ($1, $2, $3);
+ $subdir = $extra; # the subdir is appended to the dir name
+ } else {
+ $subdir = '/'; # fake subdir for "things in the root"
+ }
+ }
+ $self->update_index($subdir, $html_rel_path, $pod_name);
+ #my $podpp_path = do_podpp($pod_path);
+ do_mkdir($html_dir);
+ do_pod2html(
+ subdirs => $subdirs,
+ source_root => $source_root,
+ dest_root => $dest_root,
+ dest_url => $dest_url,
+ pod_path => $pod_path,
+ html_path => $html_path,
+ );
+ #unlink $podpp_path;
+ # postprocess HTML to add SSI tags for header and footer
+ $self->postprocess_pod($html_path);
+}
+
+sub postprocess_pod {
+ my ($self, $file) = @_;
+ my $fh = new IO::File($file, 'r+')
+ or die "Failed to open file '$file' for reading/writing: $!\n";
+ my $title;
+ my $text = "";
+ my $in_body = 0;
+ while (my $line = <$fh>) {
+ if ($in_body) {
+ if ($line =~ /^\s*<\/body>\s*$/) {
+ $in_body = 0;
+ next;
+ }
+ if ($line =~ /^\s*
\s*$/) {
+ next;
+ }
+ $text .= $line;
+ } else {
+ if ($line =~ /^\s*\s*$/) {
+ $in_body = 1;
+ next;
+ }
+ if ($line =~ /\s*(.*)<\/title>.*$/) {
+ $title = $1;
+ }
+ elsif ($file =~ /\/(w+)\.html$/) {
+ $title = $1;
+ }
+ }
+ }
+ seek $fh, 0, 0;
+ truncate $fh, 0;
+ #print $fh "", "\n" if defined $title;
+ write_header($fh,$title);
+ #print $fh '' . "\n";
+ print $fh $text;
+ #print $fh '' . "\n";
+ write_footer($fh);
+ my $mode = (stat $fh)[2] & 0777 | 0111;
+ chmod $mode, $fh;
+}
+
+sub update_index {
+ my ($self, $subdir, $html_rel_path, $pod_name) = @_;
+ $subdir =~ s|/.*$||;
+ my $idx = $self->{idx};
+ my $sections = $self->{section_hash};
+ if (exists $sections->{$subdir}) {
+ push @{$idx->{$subdir}}, [ $html_rel_path, $pod_name ];
+ } else {
+ warn "no section for subdir '$subdir'\n";
+ }
+}
+
+sub write_index {
+ my ($self, $out_path) = @_;
+ my $idx = $self->{idx};
+ my $sections = $self->{section_hash};
+ my $section_order = $self->{section_order};
+ my $source_root = $self->{source_root};
+ $source_root =~ s|^.*/||;
+ my $dest_url = $self->{dest_url};
+
+ #print Dumper($idx);
+
+ #my $header = "Index $source_root\n";
+ #my $content_start = "Index for $source_root
\n";
+
+ #my $header = qq|| . "\n"
+ # . '' . "\n";
+ my $title = "Index for $source_root";
+ my $content_start = "";
+ my $content = "";
+
+ foreach my $section (@$section_order) {
+ next unless defined $idx->{$section};
+ my $section_name = $sections->{$section};
+ $content_start .= "- $section_name
\n";
+ my @files = sort @{$idx->{$section}};
+ $content .= "\n";
+ $content .= "$section_name
\n";
+ foreach my $file (sort { $a->[1] cmp $b->[1] } @files) {
+ my ($path, $name) = @$file;
+ $content .= "- $name
\n";
+ }
+ #$content .= "
\n";
+ $content .= "
\n";
+ }
+
+ $content_start .= "
\n";
+ my $date = strftime "%a %b %e %H:%M:%S %Z %Y", localtime;
+ my $content_end = "Generated $date
\n";
+ #my $footer = "\n";
+ #my $content_end = "";
+ #my $footer = '' . "\n";
+
+ my $fh = new IO::File($out_path, 'w') or die "Failed to open index '$out_path' for writing: $!\n";
+ write_header($fh,$title);
+ #print $fh $header, $content_start, $content, $content_end, $footer;
+ print $fh $content_start, $content, $content_end;
+ write_footer($fh);
+ my $mode = (stat $fh)[2] & 0777 | 0111;
+ chmod $mode, $fh;
+}
+
+sub do_podpp {
+ my $in_path = shift;
+ my $pp = make Pod::PP(-incpath=>[],-symbols=>{});
+ #my ($out_fh, $out_path) = tempfile('ww-make-docs-podpp.XXXXXX');
+ #local *STDOUT = $out_fh;
+ my $out_path = "$in_path.podpp";
+ local *STDOUT;
+ open STDOUT, '>', $out_path or die "can't redirect STDOUT to $out_path: $!";
+ $pp->parse_from_file($in_path);
+ return $out_path;
+}
+
+sub do_mkdir {
+ my $dir = shift;
+ system '/bin/mkdir', '-p', $dir;
+ if ($?) {
+ my $exit = $? >> 8;
+ my $signal = $? & 127;
+ my $core = $? & 128;
+ die "/bin/mkdir -p $dir failed (exit=$exit signal=$signal core=$core)\n";
+ }
+}
+
+sub do_pod2html {
+ my %o = @_;
+ my @args = (
+ defined $o{subdirs} && length $o{subdirs} ? "--podpath=$o{subdirs}" : (),
+ "--podroot=$o{source_root}",
+ "--htmldir=$o{dest_root}",
+ defined $o{dest_url} && length $o{dest_url} ? "--htmlroot=$o{dest_url}" : (),
+ "--infile=$o{pod_path}",
+ "--outfile=$o{html_path}",
+ '--recurse',
+ '--noheader',
+ );
+ #print join(" ", 'pod2html', @args), "\n";
+ pod2html(@args);
+}
+
+sub write_header {
+ my $fh = shift;
+ my $title = shift;
+ print $fh qq{
+
+
+
+
+
+
+ $title
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
$title
+
+
From WeBWorK
+
+
+
+
+ }
+}
+
+sub write_footer {
+ my $fh = shift;
+ print $fh <<'EOF';
+
+
+
+
+
+
+
+
+
+
+EOF
+ #for my $module (sort keys %index) {
+ #print $fh "
\n";
+ #print $fh "
$module
\n";
+ #print $fh "
\n";
+ #print $fh "
\n";
+ #for my $version (reverse sort keys %{$index{$module}}) {
+ #if (ref $index{$module}{$version}) {
+ #print $fh "- $version
\n";
+ #for my $extra (sort keys %{$index{$module}{$version}}) {
+ #print $fh "- $extra
\n";
+ #}
+ #print $fh "
\n";
+ #} else {
+ #print $fh "- $version
\n";
+ #}
+ #}
+ #print $fh "
\n";
+ #print $fh "
\n";
+ #}
+ print $fh <<'EOF';
+
+
+
+
+
+
+
+EOF
+}
+
+package main;
+
+unless (caller) {
+ unless (@ARGV >= 2) {
+ print "usage: $0 source_root dest_root [ dest_url ]\n";
+ exit 1;
+ }
+ my $htmldocs = new WeBWorK::Utils::HTMLDocs(
+ source_root => $ARGV[0],
+ dest_root => $ARGV[1],
+ dest_url => $ARGV[2],
+ );
+ $htmldocs->convert_pods;
+}
+
+1;
+
diff --git a/pod_doc_tools/ww-make-docs-from-github.pl b/pod_doc_tools/ww-make-docs-from-github.pl
new file mode 100755
index 0000000..0ed197f
--- /dev/null
+++ b/pod_doc_tools/ww-make-docs-from-github.pl
@@ -0,0 +1,261 @@
+#!/usr/bin/perl -sT
+################################################################################
+# WeBWorK Online Homework Delivery System
+# Copyright © 2000-2003 The WeBWorK Project, http://openwebwork.sf.net/
+# $CVSHeader: admintools/ww-make-docs-from-cvs,v 1.5 2007/10/02 20:27:44 sh002i Exp $
+#
+# This program is free software; you can redistribute it and/or modify it under
+# the terms of either: (a) the GNU General Public License as published by the
+# Free Software Foundation; either version 2, or (at your option) any later
+# version, or (b) the "Artistic License" which comes with this package.
+#
+# 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 either the GNU General Public License or the
+# Artistic License for more details.
+################################################################################
+
+=head1 NAME
+
+ww-make-docs-from-cvs - make WeBWorK documentation from github viewable over the web
+
+=cut
+
+use 5.10.0;
+use strict;
+use warnings;
+use IO::File;
+
+$ENV{PATH} = "";
+$ENV{ENV} = "";
+
+our $CHECKOUT_DIR = '/home/mgage/webwork_masters/ww_source_files';
+our $DOC_DIR = '/home/mgage/htdocs/wwdocs';
+
+our $GIT = "/usr/bin/git";
+our $MKDIR = "/bin/mkdir";
+our $RM = "/bin/rm";
+our $WW_MAKE_DOCS = '/home/mgage/webwork_masters/pod_doc_tools/ww-make-docs.pl';
+
+our $BASE_URL = 'https://demo.webwork.rochester.edu/wwdocs';
+
+our $v; # for verbose switch
+
+my @dirs;
+my %index;
+
+if (@ARGV) {
+ @dirs = map "$CHECKOUT_DIR/$_", @ARGV;
+} else {
+ @dirs = glob("$CHECKOUT_DIR/*");
+}
+say "directories to update from ". join("\n\t ", @dirs);
+foreach my $dir (@dirs) {
+ next unless -d $dir;
+ say "reading $dir";
+ if ($dir =~ m/^([^\!\$\^\&\*\(\)\~\[\]\|\{\}\'\"\;\<\>\?]+)$/) {
+ print "\n-----> $dir <-----\n\n" if $v;
+ # update_git($1);
+ process_dir($1);
+ update_index($1);
+ } else {
+ warn "'$dir' insecure.\n";
+ }
+}
+
+{
+ my $fh = new IO::File("$DOC_DIR/index.html", 'w')
+ or die "failed to open '$DOC_DIR/index.html' for writing: $!\n";
+ write_index_new($fh);
+ #write_index($fh);
+ my $mode = (stat $fh)[2] & 0777 | 0111;
+ chmod $mode, $fh;
+}
+
+sub update_git {
+ my ($dir) = @_;
+
+ system "cd \"$dir\" && $GIT pull" and die "git failed: $!\n";
+}
+
+sub process_dir {
+ my ($source_dir) = @_;
+ my $dest_dir = $source_dir;
+ $dest_dir =~ s/^$CHECKOUT_DIR/$DOC_DIR/;
+
+ system $RM, '-rf', $dest_dir;
+ system $MKDIR, '-p', $dest_dir;
+ if ($?) {
+ my $exit = $? >> 8;
+ my $signal = $? & 127;
+ my $core = $? & 128;
+ die "/bin/mkdir -p $dest_dir failed (exit=$exit signal=$signal core=$core)\n";
+ }
+
+ system $WW_MAKE_DOCS, $source_dir, $dest_dir;#, $BASE_URL;
+ if ($?) {
+ my $exit = $? >> 8;
+ my $signal = $? & 127;
+ my $core = $? & 128;
+ die "$WW_MAKE_DOCS $source_dir $dest_dir failed (exit=$exit signal=$signal core=$core)\n";
+ }
+}
+
+sub update_index {
+ my $dir = shift;
+ $dir =~ s/^.*\///;
+ if ($dir =~ /^(.+)_(.+?)(?:--(.*))?$/) {
+ my ($module, $version, $extra) = ($1, $2, $3);
+ if ($version =~ /^rel-(\d+)-(\d+)(?:-(\d+))?$/) {
+ my ($major, $minor, $patch) = ($1, $2, $3);
+ if (defined $patch) {
+ $version = "$major.$minor.$patch";
+ } else {
+ $version = "$major.$minor.0";
+ }
+ } elsif ($version =~ /^rel-(\d+)-(\d)-(?:patches|dev)$/) {
+ my ($major, $minor) = ($1, $2);
+ $version = "$major.$minor.x (bugfixes)";
+ } elsif ($version eq "develop") {
+ $version = 'develop';
+ } else {
+ warn "unfamiliar version string '$version' for dir '$dir' -- not adding to index.\n";
+ return;
+ }
+ $module =~ s/^pg$/PG/;
+ $module =~ s/^webwork2$/WeBWorK/;
+ $module =~ s/^OpenProblemLibrary/OPL/;
+ if (defined $extra) {
+ $index{$module}{$version}{$extra} = $dir;
+ } else {
+ $index{$module}{$version} = $dir;
+ }
+ } else {
+ warn "unfamiliar dir format '$dir' -- not adding to index.\n";
+ }
+}
+
+sub write_index {
+ my $fh = shift;
+ print $fh "WeBWorK Documentation from Git\n";
+ print $fh "WeBWorK Documentation from Git
\n";
+ print $fh "\n";
+ print $fh map { "- $_
\n" } sort keys %index;
+ print $fh "
\n";
+ for my $module (sort keys %index) {
+ print $fh "
\n";
+ print $fh "\n";
+ print $fh "\n";
+ for my $version (sort keys %{$index{$module}}) {
+ if (ref $index{$module}{$version}) {
+ print $fh "- $version
\n";
+ for my $extra (sort keys %{$index{$module}{$version}}) {
+ print $fh "- $extra
\n";
+ }
+ print $fh "
\n";
+ } else {
+ print $fh "- $version
\n";
+ }
+ }
+ print $fh "
\n";
+ print $fh "\n";
+ }
+}
+
+sub write_index_new {
+ my $fh = shift;
+ write_header($fh, 'WeBWorK Documentation from Git');
+ print $fh "Main Menu
\n";
+ print $fh 'Chose a product and version from the menu to the left.
';
+ write_footer($fh);
+}
+
+sub write_header {
+ my $fh = shift;
+ my $title = shift;
+ print $fh qq{
+
+
+
+
+
+
+ $title
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
$title
+
+
From WeBWorK
+
+
+
+
+ }
+}
+
+sub write_footer {
+ my $fh = shift;
+ print $fh <<'EOF';
+
+
+
+
+
+
+
+
+
+
+EOF
+ for my $module (sort keys %index) {
+ print $fh "
\n";
+ print $fh "
$module
\n";
+ print $fh "
\n";
+ print $fh "
\n";
+ for my $version (reverse sort keys %{$index{$module}}) {
+ if (ref $index{$module}{$version}) {
+ print $fh "- $version
\n";
+ for my $extra (sort keys %{$index{$module}{$version}}) {
+ print $fh "- $extra
\n";
+ }
+ print $fh "
\n";
+ } else {
+ print $fh "- $version
\n";
+ }
+ }
+ print $fh "
\n";
+ print $fh "
\n";
+ }
+ print $fh <<'EOF';
+
+
+
+
+
+
+
+EOF
+}
diff --git a/pod_doc_tools/ww-make-docs-from-svn b/pod_doc_tools/ww-make-docs-from-svn
new file mode 100644
index 0000000..e948fd4
--- /dev/null
+++ b/pod_doc_tools/ww-make-docs-from-svn
@@ -0,0 +1,259 @@
+#!/usr/bin/perl -sT
+################################################################################
+# WeBWorK Online Homework Delivery System
+# Copyright © 2000-2003 The WeBWorK Project, http://openwebwork.sf.net/
+# $CVSHeader: admintools/ww-make-docs-from-cvs,v 1.5 2007/10/02 20:27:44 sh002i Exp $
+#
+# This program is free software; you can redistribute it and/or modify it under
+# the terms of either: (a) the GNU General Public License as published by the
+# Free Software Foundation; either version 2, or (at your option) any later
+# version, or (b) the "Artistic License" which comes with this package.
+#
+# 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 either the GNU General Public License or the
+# Artistic License for more details.
+################################################################################
+
+=head1 NAME
+
+ww-make-docs-from-cvs - make WeBWorK documentation from SVN viewable over the web
+
+=cut
+
+use strict;
+use warnings;
+use IO::File;
+
+$ENV{PATH} = "";
+$ENV{ENV} = "";
+
+our $CHECKOUT_DIR = '/Volumes/webwork-2015-08owc/maaorg/pod documentation stuff from maa server/source_files';
+our $DOC_DIR = '/Volumes/webwork-2015-08owc/maaorg/pod documentation stuff from maa server/wwdocs';
+
+our $SVN = "/usr/bin/git";
+our $MKDIR = "/bin/mkdir";
+our $RM = "/bin/rm";
+our $WW_MAKE_DOCS = '/Volumes/webwork-2015-08owc/maaorg/pod documentation stuff from maa server/pod_doc_tools';
+
+our $BASE_URL = 'https://demo.webwork.rochester.edu/pod';
+
+our $v; # for verbose switch
+
+my @dirs;
+my %index;
+
+if (@ARGV) {
+ @dirs = map "$CHECKOUT_DIR/$_", @ARGV;
+} else {
+ @dirs = glob("$CHECKOUT_DIR/*");
+}
+
+foreach my $dir (@dirs) {
+ next unless -d $dir;
+ if ($dir =~ m/^([^\!\$\^\&\*\(\)\~\[\]\|\{\}\'\"\;\<\>\?]+)$/) {
+ print "\n-----> $dir <-----\n\n" if $v;
+ update_svn($1);
+ process_dir($1);
+ update_index($1);
+ } else {
+ warn "'$dir' insecure.\n";
+ }
+}
+
+{
+ my $fh = new IO::File("$DOC_DIR/index.html", 'w')
+ or die "failed to open '$DOC_DIR/index.html' for writing: $!\n";
+ write_index_new($fh);
+ #write_index($fh);
+ my $mode = (stat $fh)[2] & 0777 | 0111;
+ chmod $mode, $fh;
+}
+
+sub update_svn {
+ my ($dir) = @_;
+
+ system "cd \"$dir\" && $SVN up" and die "git failed: $!\n";
+}
+
+sub process_dir {
+ my ($source_dir) = @_;
+ my $dest_dir = $source_dir;
+ $dest_dir =~ s/^$CHECKOUT_DIR/$DOC_DIR/;
+
+ system $RM, '-rf', $dest_dir;
+ system $MKDIR, '-p', $dest_dir;
+ if ($?) {
+ my $exit = $? >> 8;
+ my $signal = $? & 127;
+ my $core = $? & 128;
+ die "/bin/mkdir -p $dest_dir failed (exit=$exit signal=$signal core=$core)\n";
+ }
+
+ system $WW_MAKE_DOCS, $source_dir, $dest_dir;#, $BASE_URL;
+ if ($?) {
+ my $exit = $? >> 8;
+ my $signal = $? & 127;
+ my $core = $? & 128;
+ die "$WW_MAKE_DOCS $source_dir $dest_dir failed (exit=$exit signal=$signal core=$core)\n";
+ }
+}
+
+sub update_index {
+ my $dir = shift;
+ $dir =~ s/^.*\///;
+ if ($dir =~ /^(.+)_(.+?)(?:--(.*))?$/) {
+ my ($module, $version, $extra) = ($1, $2, $3);
+ if ($version =~ /^rel-(\d+)-(\d+)(?:-(\d+))?$/) {
+ my ($major, $minor, $patch) = ($1, $2, $3);
+ if (defined $patch) {
+ $version = "$major.$minor.$patch";
+ } else {
+ $version = "$major.$minor.0";
+ }
+ } elsif ($version =~ /^rel-(\d+)-(\d)-(?:patches|dev)$/) {
+ my ($major, $minor) = ($1, $2);
+ $version = "$major.$minor.x (bugfixes)";
+ } elsif ($version eq "TRUNK") {
+ $version = 'trunk';
+ } else {
+ warn "unfamiliar version string '$version' for dir '$dir' -- not adding to index.\n";
+ return;
+ }
+ $module =~ s/^pg$/PG/;
+ $module =~ s/^webwork2$/WeBWorK/;
+ $module =~ s/^NationalProblemLibrary/NPL/;
+ if (defined $extra) {
+ $index{$module}{$version}{$extra} = $dir;
+ } else {
+ $index{$module}{$version} = $dir;
+ }
+ } else {
+ warn "unfamiliar dir format '$dir' -- not adding to index.\n";
+ }
+}
+
+sub write_index {
+ my $fh = shift;
+ print $fh "WeBWorK Documentation from SVN\n";
+ print $fh "WeBWorK Documentation from SVN
\n";
+ print $fh "\n";
+ print $fh map { "- $_
\n" } sort keys %index;
+ print $fh "
\n";
+ for my $module (sort keys %index) {
+ print $fh "
\n";
+ print $fh "\n";
+ print $fh "\n";
+ for my $version (sort keys %{$index{$module}}) {
+ if (ref $index{$module}{$version}) {
+ print $fh "- $version
\n";
+ for my $extra (sort keys %{$index{$module}{$version}}) {
+ print $fh "- $extra
\n";
+ }
+ print $fh "
\n";
+ } else {
+ print $fh "- $version
\n";
+ }
+ }
+ print $fh "
\n";
+ print $fh "\n";
+ }
+}
+
+sub write_index_new {
+ my $fh = shift;
+ write_header($fh, 'WeBWorK Documentation from SVN');
+ print $fh "Main Menu
\n";
+ print $fh 'Chose a product and version from the menu to the left.
';
+ write_footer($fh);
+}
+
+sub write_header {
+ my $fh = shift;
+ my $title = shift;
+ print $fh qq{
+
+
+
+
+
+
+ $title
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
$title
+
+
From WeBWorK
+
+
+
+
+ }
+}
+
+sub write_footer {
+ my $fh = shift;
+ print $fh <<'EOF';
+
+
+
+
+
+
+
+
+
+
+EOF
+ for my $module (sort keys %index) {
+ print $fh "
\n";
+ print $fh "
$module
\n";
+ print $fh "
\n";
+ print $fh "
\n";
+ for my $version (reverse sort keys %{$index{$module}}) {
+ if (ref $index{$module}{$version}) {
+ print $fh "- $version
\n";
+ for my $extra (sort keys %{$index{$module}{$version}}) {
+ print $fh "- $extra
\n";
+ }
+ print $fh "
\n";
+ } else {
+ print $fh "- $version
\n";
+ }
+ }
+ print $fh "
\n";
+ print $fh "
\n";
+ }
+ print $fh <<'EOF';
+
+
+
+
+
+
+
+EOF
+}
diff --git a/pod_doc_tools/ww-make-docs.pl b/pod_doc_tools/ww-make-docs.pl
new file mode 100755
index 0000000..153e326
--- /dev/null
+++ b/pod_doc_tools/ww-make-docs.pl
@@ -0,0 +1,407 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use 5.10.0;
+
+package WeBWorK::Utils::HTMLDocs;
+
+use File::Find;
+use File::Temp qw(tempfile);
+use IO::File;
+use Pod::Find qw(pod_find simplify_name contains_pod);
+use Pod::Html;
+#use Pod::PP;
+use POSIX qw(strftime);
+use Data::Dumper;
+
+our @sections = (
+ '/' => "(root)",
+ bin => "Scripts",
+ conf => "Config Files",
+ doc => "Documentation",
+ lib => "Libraries",
+ macros => "Macros",
+ clients => "Clients",
+ t => "test modules",
+ htdocs => "web accessible docs",
+);
+
+sub new {
+ my ($invocant, %o) = @_;
+ my $class = ref $invocant || $invocant;
+
+ my @section_list = exists $o{sections} ? @{$o{sections}} : @sections;
+ my $section_hash = {@section_list};
+ my $section_order = [ map { $section_list[2*$_] } 0..$#section_list/2 ];
+ delete $o{sections};
+
+ my $self = {
+ %o,
+ idx => {},
+ section_hash => $section_hash,
+ section_order => $section_order,
+ };
+ return bless $self, $class;
+}
+
+sub convert_pods {
+ my $self = shift;
+ my $source_root = $self->{source_root};
+ my $dest_root = $self->{dest_root};
+ my $subdirs = do {
+ my $dh;
+ opendir $dh, $source_root;
+ join ':',
+ grep { not (/^\./ or /^(CVS|.svn)$/) and -d "$source_root/$_" }
+ readdir $dh;
+ };
+ $self->{subdirs} = $subdirs;
+
+ find({wanted => $self->gen_pod_wanted, no_chdir => 1}, $source_root);
+ $self->write_index("$dest_root/index.html");
+}
+
+sub gen_pod_wanted {
+ my $self = shift;
+ return sub {
+ my $path = $File::Find::name;
+ my $dir = $File::Find::dir;
+ my ($name) = $path =~ m|^$dir(?:/(.*))?$|;
+ $name = '' unless defined $name;
+
+ if ($name =~ /^\./) {
+ $File::Find::prune = 1;
+ return;
+ }
+ unless (-f $path or -d $path) {
+ $File::Find::prune = 1;
+ return;
+ }
+ if (-d _ and $name =~ /^(CVS|RCS|.svn)$/) {
+ $File::Find::prune = 1;
+ return;
+ }
+
+ return if -d _;
+ return unless contains_pod($path);
+ $self->process_pod($path);
+ };
+}
+
+sub process_pod {
+ my ($self, $pod_path) = @_;
+ my $source_root = $self->{source_root};
+ my $dest_root = $self->{dest_root};
+ my $dest_url = $self->{dest_url};
+ my $subdirs = $self->{subdirs};
+
+ my $pod_name;
+
+ my ($subdir, $filename) = $pod_path =~ m|^$source_root/(?:(.*)/)?(.*)$|;
+ my ($subdir_first, $subdir_rest)=('','');
+ say "subdir $subdir";
+ if (defined $subdir) {
+ if ($subdir =~ m|/|) {
+ ($subdir_first, $subdir_rest) = $subdir =~ m|^([^/]*)/(.*)|;
+ } else {
+ $subdir_first = $subdir;
+ }
+ }
+ say "subdir_first: ", $subdir_first//'';
+ say "subdir_rest: ", $subdir_rest//'';
+ say '';
+
+ $pod_name = (defined $subdir_rest ? "$subdir_rest/" : "") . $filename;
+ if ($filename =~ /\.(plx?|pg)$/ or $filename !~ /\./) {
+ $filename .= '.html';
+ } elsif ($filename =~ /\.pod$/) {
+ $pod_name =~ s/\.pod$//;
+ $filename =~ s/\.pod$/.html/;
+ } elsif ($filename =~ /\.pm$/) {
+ $pod_name =~ s/\.pm$//;
+ $pod_name =~ s|/+|::|g;
+ $filename =~ s/\.pm$/.html/;
+ }
+ my $html_dir = defined $subdir ? "$dest_root/$subdir" : $dest_root;
+ my $html_path = "$html_dir/$filename";
+ my $html_rel_path = defined $subdir ? "$subdir/$filename" : $filename;
+
+ # deal with potential failure
+ if (not defined $subdir) {
+ my $source_root_last = $source_root;
+ $source_root_last =~ s|^.*/||;
+ if ($source_root_last =~ /^(.+)_(.+?)(?:--(.*))?$/) {
+ my ($module, $version, $extra) = ($1, $2, $3);
+ $subdir = $extra; # the subdir is appended to the dir name
+ } else {
+ $subdir = '/'; # fake subdir for "things in the root"
+ }
+ }
+ $self->update_index($subdir, $html_rel_path, $pod_name);
+ #my $podpp_path = do_podpp($pod_path);
+ do_mkdir($html_dir);
+ do_pod2html(
+ subdirs => $subdirs,
+ source_root => $source_root,
+ dest_root => $dest_root,
+ dest_url => $dest_url,
+ pod_path => $pod_path,
+ html_path => $html_path,
+ );
+ #unlink $podpp_path;
+ # postprocess HTML to add SSI tags for header and footer
+ $self->postprocess_pod($html_path);
+}
+
+sub postprocess_pod {
+ my ($self, $file) = @_;
+ my $fh = new IO::File($file, 'r+')
+ or die "Failed to open file '$file' for reading/writing: $!\n";
+ my $title;
+ my $text = "";
+ my $in_body = 0;
+ while (my $line = <$fh>) {
+ if ($in_body) {
+ if ($line =~ /^\s*<\/body>\s*$/) {
+ $in_body = 0;
+ next;
+ }
+ if ($line =~ /^\s*
\s*$/) {
+ next;
+ }
+ $text .= $line;
+ } else {
+ if ($line =~ /^\s*\s*$/) {
+ $in_body = 1;
+ next;
+ }
+ if ($line =~ /\s*(.*)<\/title>.*$/) {
+ $title = $1;
+ }
+ elsif ($file =~ /\/(w+)\.html$/) {
+ $title = $1;
+ }
+ }
+ }
+ seek $fh, 0, 0;
+ truncate $fh, 0;
+ #print $fh "", "\n" if defined $title;
+ write_header($fh,$title);
+ #print $fh '' . "\n";
+ print $fh $text;
+ #print $fh '' . "\n";
+ write_footer($fh);
+ my $mode = (stat $fh)[2] & 0777 | 0111;
+ chmod $mode, $fh;
+}
+
+sub update_index {
+ my ($self, $subdir, $html_rel_path, $pod_name) = @_;
+ $subdir =~ s|/.*$||;
+ my $idx = $self->{idx};
+ my $sections = $self->{section_hash};
+ if (exists $sections->{$subdir}) {
+ push @{$idx->{$subdir}}, [ $html_rel_path, $pod_name ];
+ } else {
+ warn "no section for subdir '$subdir'\n";
+ }
+}
+
+sub write_index {
+ my ($self, $out_path) = @_;
+ my $idx = $self->{idx};
+ my $sections = $self->{section_hash};
+ my $section_order = $self->{section_order};
+ my $source_root = $self->{source_root};
+ $source_root =~ s|^.*/||;
+ my $dest_url = $self->{dest_url};
+
+ #print Dumper($idx);
+
+ #my $header = "Index $source_root\n";
+ #my $content_start = "Index for $source_root
\n";
+
+ #my $header = qq|| . "\n"
+ # . '' . "\n";
+ my $title = "Index for $source_root";
+ my $content_start = "";
+ my $content = "";
+
+ foreach my $section (@$section_order) {
+ next unless defined $idx->{$section};
+ my $section_name = $sections->{$section};
+ $content_start .= "- $section_name
\n";
+ my @files = sort @{$idx->{$section}};
+ $content .= "\n";
+ $content .= "$section_name
\n";
+ foreach my $file (sort { $a->[1] cmp $b->[1] } @files) {
+ my ($path, $name) = @$file;
+ $content .= "- $name
\n";
+ }
+ #$content .= "
\n";
+ $content .= "
\n";
+ }
+
+ $content_start .= "
\n";
+ my $date = strftime "%a %b %e %H:%M:%S %Z %Y", localtime;
+ my $content_end = "Generated $date
\n";
+ #my $footer = "\n";
+ #my $content_end = "";
+ #my $footer = '' . "\n";
+
+ my $fh = new IO::File($out_path, 'w') or die "Failed to open index '$out_path' for writing: $!\n";
+ write_header($fh,$title);
+ #print $fh $header, $content_start, $content, $content_end, $footer;
+ print $fh $content_start, $content, $content_end;
+ write_footer($fh);
+ my $mode = (stat $fh)[2] & 0777 | 0111;
+ chmod $mode, $fh;
+}
+
+sub do_podpp {
+ my $in_path = shift;
+ my $pp = make Pod::PP(-incpath=>[],-symbols=>{});
+ #my ($out_fh, $out_path) = tempfile('ww-make-docs-podpp.XXXXXX');
+ #local *STDOUT = $out_fh;
+ my $out_path = "$in_path.podpp";
+ local *STDOUT;
+ open STDOUT, '>', $out_path or die "can't redirect STDOUT to $out_path: $!";
+ $pp->parse_from_file($in_path);
+ return $out_path;
+}
+
+sub do_mkdir {
+ my $dir = shift;
+ system '/bin/mkdir', '-p', $dir;
+ if ($?) {
+ my $exit = $? >> 8;
+ my $signal = $? & 127;
+ my $core = $? & 128;
+ die "/bin/mkdir -p $dir failed (exit=$exit signal=$signal core=$core)\n";
+ }
+}
+
+sub do_pod2html {
+ my %o = @_;
+ my @args = (
+ defined $o{subdirs} && length $o{subdirs} ? "--podpath=$o{subdirs}" : (),
+ "--podroot=$o{source_root}",
+ "--htmldir=$o{dest_root}",
+ defined $o{dest_url} && length $o{dest_url} ? "--htmlroot=$o{dest_url}" : (),
+ "--infile=$o{pod_path}",
+ "--outfile=$o{html_path}",
+ '--recurse',
+ '--noheader',
+ );
+ #print join(" ", 'pod2html', @args), "\n";
+ pod2html(@args);
+}
+
+sub write_header {
+ my $fh = shift;
+ my $title = shift;
+ print $fh qq{
+
+
+
+
+
+
+ $title
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
$title
+
+
From WeBWorK
+
+
+
+
+ }
+}
+
+sub write_footer {
+ my $fh = shift;
+ print $fh <<'EOF';
+
+
+
+
+
+
+
+
+
+
+EOF
+ #for my $module (sort keys %index) {
+ #print $fh "
\n";
+ #print $fh "
$module
\n";
+ #print $fh "
\n";
+ #print $fh "
\n";
+ #for my $version (reverse sort keys %{$index{$module}}) {
+ #if (ref $index{$module}{$version}) {
+ #print $fh "- $version
\n";
+ #for my $extra (sort keys %{$index{$module}{$version}}) {
+ #print $fh "- $extra
\n";
+ #}
+ #print $fh "
\n";
+ #} else {
+ #print $fh "- $version
\n";
+ #}
+ #}
+ #print $fh "
\n";
+ #print $fh "
\n";
+ #}
+ print $fh <<'EOF';
+
+
+
+
+
+
+
+EOF
+}
+
+package main;
+
+unless (caller) {
+ unless (@ARGV >= 2) {
+ print "usage: $0 source_root dest_root [ dest_url ]\n";
+ exit 1;
+ }
+ my $htmldocs = new WeBWorK::Utils::HTMLDocs(
+ source_root => $ARGV[0],
+ dest_root => $ARGV[1],
+ dest_url => $ARGV[2],
+ );
+ $htmldocs->convert_pods;
+}
+
+1;
+
diff --git a/pod_doc_tools/ww-make-docs.pm b/pod_doc_tools/ww-make-docs.pm
new file mode 100644
index 0000000..65a1c99
--- /dev/null
+++ b/pod_doc_tools/ww-make-docs.pm
@@ -0,0 +1,401 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+package WeBWorK::Utils::HTMLDocs;
+
+use File::Find;
+use File::Temp qw(tempfile);
+use IO::File;
+use Pod::Find qw(pod_find simplify_name contains_pod);
+use Pod::Html;
+#use Pod::PP;
+use POSIX qw(strftime);
+use Data::Dumper;
+
+our @sections = (
+ '/' => "(root)",
+ bin => "Scripts",
+ conf => "Config Files",
+ doc => "Documentation",
+ lib => "Libraries",
+ macros => "Macros",
+ clients => "Clients",
+);
+
+sub new {
+ my ($invocant, %o) = @_;
+ my $class = ref $invocant || $invocant;
+
+ my @section_list = exists $o{sections} ? @{$o{sections}} : @sections;
+ my $section_hash = {@section_list};
+ my $section_order = [ map { $section_list[2*$_] } 0..$#section_list/2 ];
+ delete $o{sections};
+
+ my $self = {
+ %o,
+ idx => {},
+ section_hash => $section_hash,
+ section_order => $section_order,
+ };
+ return bless $self, $class;
+}
+
+sub convert_pods {
+ my $self = shift;
+ my $source_root = $self->{source_root};
+ my $dest_root = $self->{dest_root};
+ my $subdirs = do {
+ my $dh;
+ opendir $dh, $source_root;
+ join ':',
+ grep { not (/^\./ or /^(CVS|.svn)$/) and -d "$source_root/$_" }
+ readdir $dh;
+ };
+ $self->{subdirs} = $subdirs;
+
+ find({wanted => $self->gen_pod_wanted, no_chdir => 1}, $source_root);
+ $self->write_index("$dest_root/index.html");
+}
+
+sub gen_pod_wanted {
+ my $self = shift;
+ return sub {
+ my $path = $File::Find::name;
+ my $dir = $File::Find::dir;
+ my ($name) = $path =~ m|^$dir(?:/(.*))?$|;
+ $name = '' unless defined $name;
+
+ if ($name =~ /^\./) {
+ $File::Find::prune = 1;
+ return;
+ }
+ unless (-f $path or -d $path) {
+ $File::Find::prune = 1;
+ return;
+ }
+ if (-d _ and $name =~ /^(CVS|RCS|.svn)$/) {
+ $File::Find::prune = 1;
+ return;
+ }
+
+ return if -d _;
+ return unless contains_pod($path);
+ $self->process_pod($path);
+ };
+}
+
+sub process_pod {
+ my ($self, $pod_path) = @_;
+ my $source_root = $self->{source_root};
+ my $dest_root = $self->{dest_root};
+ my $dest_url = $self->{dest_url};
+ my $subdirs = $self->{subdirs};
+
+ my $pod_name;
+
+ my ($subdir, $filename) = $pod_path =~ m|^$source_root/(?:(.*)/)?(.*)$|;
+ my ($subdir_first, $subdir_rest);
+ print "subdir_first: $subdir_first\n";
+ print "subdir_rest: $subdir_rest\n";
+ if (defined $subdir) {
+ if ($subdir =~ m|/|) {
+ ($subdir_first, $subdir_rest) = $subdir =~ m|^([^/]*)/(.*)|;
+ } else {
+ $subdir_first = $subdir;
+ }
+ }
+ $pod_name = (defined $subdir_rest ? "$subdir_rest/" : "") . $filename;
+ if ($filename =~ /\.(plx?|pg)$/ or $filename !~ /\./) {
+ $filename .= '.html';
+ } elsif ($filename =~ /\.pod$/) {
+ $pod_name =~ s/\.pod$//;
+ $filename =~ s/\.pod$/.html/;
+ } elsif ($filename =~ /\.pm$/) {
+ $pod_name =~ s/\.pm$//;
+ $pod_name =~ s|/+|::|g;
+ $filename =~ s/\.pm$/.html/;
+ }
+ my $html_dir = defined $subdir ? "$dest_root/$subdir" : $dest_root;
+ my $html_path = "$html_dir/$filename";
+ my $html_rel_path = defined $subdir ? "$subdir/$filename" : $filename;
+
+ # deal with potential
+ if (not defined $subdir) {
+ my $source_root_last = $source_root;
+ $source_root_last =~ s|^.*/||;
+ if ($source_root_last =~ /^(.+)_(.+?)(?:--(.*))?$/) {
+ my ($module, $version, $extra) = ($1, $2, $3);
+ $subdir = $extra; # the subdir is appended to the dir name
+ } else {
+ $subdir = '/'; # fake subdir for "things in the root"
+ }
+ }
+ $self->update_index($subdir, $html_rel_path, $pod_name);
+ #my $podpp_path = do_podpp($pod_path);
+ do_mkdir($html_dir);
+ do_pod2html(
+ subdirs => $subdirs,
+ source_root => $source_root,
+ dest_root => $dest_root,
+ dest_url => $dest_url,
+ pod_path => $pod_path,
+ html_path => $html_path,
+ );
+ #unlink $podpp_path;
+ # postprocess HTML to add SSI tags for header and footer
+ $self->postprocess_pod($html_path);
+}
+
+sub postprocess_pod {
+ my ($self, $file) = @_;
+ my $fh = new IO::File($file, 'r+')
+ or die "Failed to open file '$file' for reading/writing: $!\n";
+ my $title;
+ my $text = "";
+ my $in_body = 0;
+ while (my $line = <$fh>) {
+ if ($in_body) {
+ if ($line =~ /^\s*<\/body>\s*$/) {
+ $in_body = 0;
+ next;
+ }
+ if ($line =~ /^\s*
\s*$/) {
+ next;
+ }
+ $text .= $line;
+ } else {
+ if ($line =~ /^\s*\s*$/) {
+ $in_body = 1;
+ next;
+ }
+ if ($line =~ /\s*(.*)<\/title>.*$/) {
+ $title = $1;
+ }
+ elsif ($file =~ /\/(w+)\.html$/) {
+ $title = $1;
+ }
+ }
+ }
+ seek $fh, 0, 0;
+ truncate $fh, 0;
+ #print $fh "", "\n" if defined $title;
+ write_header($fh,$title);
+ #print $fh '' . "\n";
+ print $fh $text;
+ #print $fh '' . "\n";
+ write_footer($fh);
+ my $mode = (stat $fh)[2] & 0777 | 0111;
+ chmod $mode, $fh;
+}
+
+sub update_index {
+ my ($self, $subdir, $html_rel_path, $pod_name) = @_;
+ $subdir =~ s|/.*$||;
+ my $idx = $self->{idx};
+ my $sections = $self->{section_hash};
+ if (exists $sections->{$subdir}) {
+ push @{$idx->{$subdir}}, [ $html_rel_path, $pod_name ];
+ } else {
+ warn "no section for subdir '$subdir'\n";
+ }
+}
+
+sub write_index {
+ my ($self, $out_path) = @_;
+ my $idx = $self->{idx};
+ my $sections = $self->{section_hash};
+ my $section_order = $self->{section_order};
+ my $source_root = $self->{source_root};
+ $source_root =~ s|^.*/||;
+ my $dest_url = $self->{dest_url};
+
+ #print Dumper($idx);
+
+ #my $header = "Index $source_root\n";
+ #my $content_start = "Index for $source_root
\n";
+
+ #my $header = qq|| . "\n"
+ # . '' . "\n";
+ my $title = "Index for $source_root";
+ my $content_start = "";
+ my $content = "";
+
+ foreach my $section (@$section_order) {
+ next unless defined $idx->{$section};
+ my $section_name = $sections->{$section};
+ $content_start .= "- $section_name
\n";
+ my @files = sort @{$idx->{$section}};
+ $content .= "\n";
+ $content .= "$section_name
\n";
+ foreach my $file (sort { $a->[1] cmp $b->[1] } @files) {
+ my ($path, $name) = @$file;
+ $content .= "- $name
\n";
+ }
+ #$content .= "
\n";
+ $content .= "
\n";
+ }
+
+ $content_start .= "
\n";
+ my $date = strftime "%a %b %e %H:%M:%S %Z %Y", localtime;
+ my $content_end = "Generated $date
\n";
+ #my $footer = "\n";
+ #my $content_end = "";
+ #my $footer = '' . "\n";
+
+ my $fh = new IO::File($out_path, 'w') or die "Failed to open index '$out_path' for writing: $!\n";
+ write_header($fh,$title);
+ #print $fh $header, $content_start, $content, $content_end, $footer;
+ print $fh $content_start, $content, $content_end;
+ write_footer($fh);
+ my $mode = (stat $fh)[2] & 0777 | 0111;
+ chmod $mode, $fh;
+}
+
+sub do_podpp {
+ my $in_path = shift;
+ my $pp = make Pod::PP(-incpath=>[],-symbols=>{});
+ #my ($out_fh, $out_path) = tempfile('ww-make-docs-podpp.XXXXXX');
+ #local *STDOUT = $out_fh;
+ my $out_path = "$in_path.podpp";
+ local *STDOUT;
+ open STDOUT, '>', $out_path or die "can't redirect STDOUT to $out_path: $!";
+ $pp->parse_from_file($in_path);
+ return $out_path;
+}
+
+sub do_mkdir {
+ my $dir = shift;
+ system '/bin/mkdir', '-p', $dir;
+ if ($?) {
+ my $exit = $? >> 8;
+ my $signal = $? & 127;
+ my $core = $? & 128;
+ die "/bin/mkdir -p $dir failed (exit=$exit signal=$signal core=$core)\n";
+ }
+}
+
+sub do_pod2html {
+ my %o = @_;
+ my @args = (
+ defined $o{subdirs} && length $o{subdirs} ? "--podpath=$o{subdirs}" : (),
+ "--podroot=$o{source_root}",
+ "--htmldir=$o{dest_root}",
+ defined $o{dest_url} && length $o{dest_url} ? "--htmlroot=$o{dest_url}" : (),
+ "--infile=$o{pod_path}",
+ "--outfile=$o{html_path}",
+ '--recurse',
+ '--noheader',
+ );
+ #print join(" ", 'pod2html', @args), "\n";
+ pod2html(@args);
+}
+
+sub write_header {
+ my $fh = shift;
+ my $title = shift;
+ print $fh qq{
+
+
+
+
+
+
+ $title
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
$title
+
+
From WeBWorK
+
+
+
+
+ }
+}
+
+sub write_footer {
+ my $fh = shift;
+ print $fh <<'EOF';
+
+
+
+
+
+
+
+
+
+
+EOF
+ #for my $module (sort keys %index) {
+ #print $fh "
\n";
+ #print $fh "
$module
\n";
+ #print $fh "
\n";
+ #print $fh "
\n";
+ #for my $version (reverse sort keys %{$index{$module}}) {
+ #if (ref $index{$module}{$version}) {
+ #print $fh "- $version
\n";
+ #for my $extra (sort keys %{$index{$module}{$version}}) {
+ #print $fh "- $extra
\n";
+ #}
+ #print $fh "
\n";
+ #} else {
+ #print $fh "- $version
\n";
+ #}
+ #}
+ #print $fh "
\n";
+ #print $fh "
\n";
+ #}
+ print $fh <<'EOF';
+
+
+
+
+
+
+
+EOF
+}
+
+package main;
+
+unless (caller) {
+ unless (@ARGV >= 2) {
+ print "usage: $0 source_root dest_root [ dest_url ]\n";
+ exit 1;
+ }
+ my $htmldocs = new WeBWorK::Utils::HTMLDocs(
+ source_root => $ARGV[0],
+ dest_root => $ARGV[1],
+ dest_url => $ARGV[2],
+ );
+ $htmldocs->convert_pods;
+}
+
+1;
+