OSDN Git Service

(no commit message)
[fswiki/fswiki-lite.git] / edit.cgi
diff --git a/edit.cgi b/edit.cgi
new file mode 100644 (file)
index 0000000..c421b26
--- /dev/null
+++ b/edit.cgi
@@ -0,0 +1,219 @@
+#!/usr/bin/perl\r
+################################################################################\r
+#\r
+# FSWiki Lite - ¥Ú¡¼¥¸ºîÀ®¡¢ÊÔ½¸ÍÑ¥¹¥¯¥ê¥×¥È\r
+#\r
+################################################################################\r
+require "./lib/common.pl";\r
+#===============================================================================\r
+# ½èÍý¤Î¿¶¤êʬ¤±\r
+#===============================================================================\r
+&ReadParse();\r
+if($in{"p"} eq ""){\r
+       $in{"p"} = "FrontPage";\r
+}\r
+\r
+if($in{"p"}=~ /[\|:\[\]]/){\r
+       &Util::error("¥Ú¡¼¥¸Ì¾¤Ë»ÈÍѤǤ­¤Ê¤¤Ê¸»ú¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£");\r
+}\r
+\r
+if($in{"a"} eq "edit"){\r
+       &edit_page();\r
+\r
+} elsif($in{"a"} eq "new"){\r
+       &new_page();\r
+       \r
+} elsif($in{"a"} eq "save"){\r
+       &save_page();\r
+       \r
+} elsif($in{"a"} eq "attach"){\r
+       &attach_file();\r
+       \r
+} elsif($in{"a"} eq "delconf"){\r
+       &attach_delete_confirm();\r
+       \r
+} elsif($in{"a"} eq "delete"){\r
+       &attach_delete();\r
+       \r
+} else {\r
+       redirect("FrontPage");\r
+}\r
+\r
+#-------------------------------------------------------------------------------\r
+# ¥Ú¡¼¥¸¤ÎÊÔ½¸\r
+#-------------------------------------------------------------------------------\r
+sub edit_page {\r
+       my $source  = shift;\r
+       my $page    = $in{"p"};\r
+       my $preview = 0;\r
+       my $time    = $in{"t"};\r
+       \r
+       if($source ne ""){\r
+               $preview = 1;\r
+       } elsif(&Wiki::exists_page($page)){\r
+               $source = &Wiki::get_page($page);\r
+               $time   = &Wiki::get_last_modified($page);\r
+       }\r
+       \r
+       &print_header($in{"p"}."¤ÎÊÔ½¸");\r
+       \r
+       if($preview==1){\r
+               print &Wiki::process_wiki($source);\r
+       }\r
+       \r
+       print "<form action=\"$EDIT_SCRIPT\" method=\"POST\">\n";\r
+       print "  <textarea name=\"source\" rows=\"20\" cols=\"80\">".&Util::escapeHTML($source)."</textarea><br>\n";\r
+       print "  <input type=\"submit\" name=\"do_save\" value=\" Êݠ¸ \">\n";\r
+       print "  <input type=\"submit\" name=\"preview\" value=\"¥×¥ì¥Ó¥å¡¼\">\n";\r
+       print "  <input type=\"hidden\" name=\"a\" value=\"save\">\n";\r
+       print "  <input type=\"hidden\" name=\"p\" value=\"".&Util::escapeHTML($page)."\">\n";\r
+       print "  <input type=\"hidden\" name=\"t\" value=\"".&Util::escapeHTML($time)."\">\n";\r
+       print "</form>\n";\r
+       \r
+       opendir(DIR, $main::ATTACH_DIR);\r
+       my ($attachentry, @attachfiles);\r
+       while($attachentry = readdir(DIR)){\r
+               my $type = rindex($attachentry,&Util::url_encode($page).".");\r
+               if($type eq 0){\r
+                       push(@attachfiles, "$main::ATTACH_DIR/$attachentry");\r
+               }\r
+       }\r
+       closedir(DIR);\r
+       foreach my $attach (@attachfiles){\r
+               $attach =~ /^\Q$main::ATTACH_DIR\E\/(.+)\.(.+)$/;\r
+               my $pagename = $1;\r
+               my $filename = $2;\r
+               print &Wiki::Plugin::ref(&Util::url_decode($filename));\r
+               printf ("[<a href=\"$EDIT_SCRIPT?a=delconf&p=%s&f=%s\">ºï½ü</a>]\n",$pagename,$filename);\r
+       }\r
+       \r
+       print "<form action=\"$EDIT_SCRIPT\" method=\"post\" enctype=\"multipart/form-data\">\n";\r
+       print "  <input type=\"file\" name=\"f\">\n";\r
+       print "  <input type=\"submit\" name=\"do_attach\" value=\" Åº ÉÕ \">\n";\r
+       print "  <input type=\"hidden\" name=\"a\" value=\"attach\">\n";\r
+       print "  <input type=\"hidden\" name=\"p\" value=\"".&Util::escapeHTML($page)."\">\n";\r
+       print "</form>\n";\r
+       \r
+       &print_footer();\r
+}\r
+\r
+#-------------------------------------------------------------------------------\r
+# ¥Ú¡¼¥¸¤ÎºîÀ®\r
+#-------------------------------------------------------------------------------\r
+sub new_page {\r
+       &print_header("¥Ú¡¼¥¸¤ÎºîÀ®");\r
+       print "<form action=\"$SCRIPT_NAME\" method=\"POST\">\n";\r
+       print "  <input type=\"text\" name=\"p\" size=\"40\">\n";\r
+       print "  <input type=\"submit\" name=\"do_save\" value=\" ºî À® \">\n";\r
+       print "  <input type=\"hidden\" name=\"a\" value=\"edit\">\n";\r
+       print "</form>\n";\r
+       &print_footer();\r
+}\r
+\r
+#-------------------------------------------------------------------------------\r
+# ¥Ú¡¼¥¸¤ÎÊݸ\r
+#-------------------------------------------------------------------------------\r
+sub save_page {\r
+       my $page   = $in{"p"};\r
+       my $source = $in{"source"};\r
+       \r
+       if($in{"preview"} ne ""){\r
+               &edit_page($source);\r
+               \r
+       } else {\r
+               # ¥Ú¡¼¥¸¤Îºï½ü\r
+               if($source eq ""){\r
+                       # ¹¹¿·¤Î½ÅÊ£¥Á¥§¥Ã¥¯\r
+                       if(&Wiki::exists_page($page)){\r
+                               if($in{"t"} != &Wiki::get_last_modified($page)){\r
+                                       &Util::error("¤³¤Î¥Ú¡¼¥¸¤Ï´û¤Ë¹¹¿·¤µ¤ì¤Æ¤¤¤Þ¤¹¡£");\r
+                               } else {\r
+                                       &Wiki::remove_page($page);\r
+                               }\r
+                       }\r
+                       &redirect("FrontPage");\r
+                       \r
+               # ¥Ú¡¼¥¸¤ÎºîÀ®¤Þ¤¿¤Ï¹¹¿·\r
+               } else {\r
+                       # ¹¹¿·¤Î½ÅÊ£¥Á¥§¥Ã¥¯\r
+                       if(&Wiki::exists_page($page)){\r
+                               if($in{"t"} != &Wiki::get_last_modified($page)){\r
+                                       &Util::error("¤³¤Î¥Ú¡¼¥¸¤Ï´û¤Ë¹¹¿·¤µ¤ì¤Æ¤¤¤Þ¤¹¡£");\r
+                               }\r
+                       }\r
+                       &Wiki::save_page($page,$source);\r
+                       &redirect($page);\r
+               }\r
+       }\r
+}\r
+\r
+#-------------------------------------------------------------------------------\r
+# ¥Õ¥¡¥¤¥ë¤ÎźÉÕ\r
+#-------------------------------------------------------------------------------\r
+sub attach_file {\r
+       my $page = $in{"p"};\r
+       my $file = $in{"f"};    # ¥Õ¥¡¥¤¥ëÆâÍƤò¼èÆÀ\r
+       my $name = $incfn{"f"}; # ¥Õ¥¡¥¤¥ë̾¤ò¼èÆÀ\r
+       \r
+       if($file eq ""){\r
+               &Util::error("¥Õ¥¡¥¤¥ë¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó¡£");\r
+       }\r
+       \r
+       if($name eq ""){\r
+               return;\r
+       }\r
+       \r
+       $name =~ s/\\/\//g;                        # ¥Ñ¥¹¶èÀÚ¤êʸ»ú¤ò/¤ËÊÑ´¹\r
+       $name = substr($name,rindex($name,"/")+1); # ¥Õ¥¡¥¤¥ë̾¤Î¤ß¤ò¼èÆÀ\r
+       \r
+       my $filename = sprintf("%s/%s.%s",$main::ATTACH_DIR,&Util::url_encode($page),&Util::url_encode($name));\r
+       open(DATA,">$filename");\r
+       binmode(DATA);\r
+       print DATA $file;\r
+       close(DATA);\r
+       \r
+       &redirectURL("$EDIT_SCRIPT?a=edit&p=".&Util::url_encode($page));\r
+}\r
+\r
+#-------------------------------------------------------------------------------\r
+# ÅºÉÕ¥Õ¥¡¥¤¥ë¤Îºï½ü³Îǧ\r
+#-------------------------------------------------------------------------------\r
+sub attach_delete_confirm {\r
+       my $page = $in{"p"};\r
+       my $file = $in{"f"};\r
+       \r
+       if($file eq ""){\r
+               &Util::error("¥Õ¥¡¥¤¥ë¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó¡£");\r
+       }\r
+       \r
+       &print_header("źÉÕ¥Õ¥¡¥¤¥ë¤Îºï½ü");\r
+       printf ("<p><a href=\"$MAIN_SCRIPT?p=%s\">%s</a>¤«¤é".\r
+                       "<a href=\"$DOWNLOAD_SCRIPT?p=%s&f=%s\">%s</a>¤òºï½ü¤·¤Æ¤è¤í¤·¤¤¤Ç¤¹¤«¡©</p>\n",\r
+                       &Util::url_encode($page),&Util::escapeHTML($page),\r
+                       &Util::url_encode($page),&Util::url_encode($file),&Util::escapeHTML($file));\r
+       \r
+       print "<form action=\"$EDIT_SCRIPT\" method=\"POST\">\n";\r
+       print "  <input type=\"submit\" name=\"do_delete\" value=\" ºï ½ü \">\n";\r
+       print "  <input type=\"hidden\" name=\"p\" value=\"".&Util::escapeHTML($page)."\">\n";\r
+       print "  <input type=\"hidden\" name=\"f\" value=\"".&Util::escapeHTML($file)."\">\n";\r
+       print "  <input type=\"hidden\" name=\"a\" value=\"delete\">\n";\r
+       print "</form>\n";\r
+       &print_footer();\r
+}\r
+\r
+#-------------------------------------------------------------------------------\r
+# ÅºÉÕ¥Õ¥¡¥¤¥ë¤Îºï½ü\r
+#-------------------------------------------------------------------------------\r
+sub attach_delete {\r
+       my $page = $in{"p"};\r
+       my $file = $in{"f"};\r
+       \r
+       if($file eq ""){\r
+               &Util::error("¥Õ¥¡¥¤¥ë¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó¡£");\r
+       }\r
+       \r
+       my $filename = sprintf("$ATTACH_DIR/%s.%s",&Util::url_encode($page),&Util::url_encode($file));\r
+       unlink($filename);\r
+       \r
+       &redirectURL("$EDIT_SCRIPT?a=edit&p=".&Util::url_encode($page));\r
+}\r