1 ###############################################################################
3 # ¥Ú¡¼¥¸¤òÊÔ½¸¤¹¤ë¥×¥é¥°¥¤¥ó
5 ###############################################################################
6 package plugin::core::EditPage;
8 #==============================================================================
10 #==============================================================================
14 return bless $self,$class;
17 #==============================================================================
19 #==============================================================================
23 my $cgi = $wiki->get_CGI;
25 my $pagename = $cgi->param("page");
26 my $format = $wiki->get_edit_format();
27 my $content = $cgi->param("content");
28 my $sage = $cgi->param("sage");
29 my $template = $cgi->param("template");
30 my $artno = $cgi->param("artno");
31 my $time = $wiki->get_last_modified($pagename);
34 my $login = $wiki->get_login_info();
37 return $wiki->error("¥Ú¡¼¥¸¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó¡£");
39 if($pagename =~ /([\|\[\]])|^:|([^:]:[^:])/){
40 return $wiki->error("¥Ú¡¼¥¸Ì¾¤Ë»ÈÍѤǤ¤Ê¤¤Ê¸»ú¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£");
42 if(!$wiki->can_modify_page($pagename)){
43 return $wiki->error("¥Ú¡¼¥¸¤ÎÊÔ½¸¤Ïµö²Ä¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£");
46 #--------------------------------------------------------------------------
48 if($cgi->param("save") ne ""){
49 if($wiki->page_exists($pagename)){
50 if($cgi->param("lastmodified") != $time){
51 return $wiki->error("¥Ú¡¼¥¸¤Ï´û¤ËÊ̤Υ桼¥¶¤Ë¤è¤Ã¤Æ¹¹¿·¤µ¤ì¤Æ¤¤¤Þ¤¹¡£");
54 #my $save_content = $content;
55 my $mode = $wiki->get_edit_format();
56 my $save_content = $wiki->convert_to_fswiki($content,$mode);
60 $save_content = &make_save_source($wiki->get_page($pagename),$save_content,$artno,$wiki);
63 if($pagename eq $wiki->config("frontpage") && $save_content eq ""){
64 $buf = "<b>".&Util::escapeHTML($wiki->config("frontpage"))."¤Ïºï½ü¤¹¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£</b>\n";
66 # ¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï½èÍý¤ò¼Â¹Ô¤·¤Æ¥á¥Ã¥»¡¼¥¸¤òÊÖµÑ
68 $wiki->save_page($pagename,$save_content,$sage);
71 $wiki->redirect($pagename);
74 $wiki->set_title($pagename."¤òºï½ü¤·¤Þ¤·¤¿");
75 return Util::escapeHTML($pagename)."¤òºï½ü¤·¤Þ¤·¤¿¡£";
77 $wiki->set_title($pagename."¤Î¥Ñ¡¼¥È¤òºï½ü¤·¤Þ¤·¤¿");
78 return Util::escapeHTML($pagename)."¤Î¥Ñ¡¼¥È¤òºï½ü¤·¤Þ¤·¤¿¡£";
82 #--------------------------------------------------------------------------
84 } elsif($cgi->param("preview") ne ""){
85 $time = $cgi->param("lastmodified");
86 $buf = "°Ê²¼¤Î¥×¥ì¥Ó¥å¡¼¤ò³Îǧ¤·¤Æ¤è¤í¤·¤±¤ì¤Ð¡ÖÊݸ¡×¥Ü¥¿¥ó¤ò²¡¤·¤Æ¤¯¤À¤µ¤¤¡£<br>";
88 if($pagename eq $wiki->config("frontpage") && $artno eq ""){
89 $buf = $buf."<b>¡Ê".&Util::escapeHTML($wiki->config("frontpage"))."¤Ïºï½ü¤¹¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£¡Ë</b>";
92 $buf = $buf."<b>¡Ê¥Ú¡¼¥¸ÆâÍƤ϶õ¤Ç¤¹¡£¹¹¿·¤¹¤ë¤È¤³¤Î¥Ú¡¼¥¸¤Ïºï½ü¤µ¤ì¤Þ¤¹¡£¡Ë</b>";
94 $buf = $buf."<b>¡Ê¥Ú¡¼¥¸ÆâÍƤ϶õ¤Ç¤¹¡£¹¹¿·¤¹¤ë¤È¤³¤Î¥Ñ¡¼¥È¤Ïºï½ü¤µ¤ì¤Þ¤¹¡£¡Ë</b>";
98 $content = $wiki->convert_to_fswiki($content,$format);
99 $buf = $buf."<br>".$wiki->process_wiki($content);
101 } elsif($wiki->page_exists($pagename)) {
102 #¥Ú¡¼¥¸¤¬Â¸ºß¤¹¤ë¾ì¹ç
104 $content = $wiki->get_page($pagename);
106 $content = &read_by_part($wiki->get_page($pagename),$artno);
108 } elsif($template ne ""){
109 #¥Æ¥ó¥×¥ì¡¼¥È¤ò»ØÄꤵ¤ì¤¿¾ì¹ç
110 $content = $wiki->get_page($template);
113 #--------------------------------------------------------------------------
115 $wiki->set_title($pagename."¤ÎÊÔ½¸",1);
117 my $tmpl = HTML::Template->new(filename=>$wiki->config('tmpl_dir')."/editform.tmpl",
118 die_on_bad_params => 0);
120 $tmpl->param({SCRIPT_NAME => $wiki->create_url(),
121 PAGE_NAME => $pagename,
122 CONTENT => $wiki->convert_from_fswiki($content,$format),
123 LAST_MODIFIED => $time,
125 EXISTS_PAGE => $wiki->page_exists($pagename),
129 $tmpl->param(OPTIONAL_PARAMS=>[{NAME=>'artno',VALUE=>$artno}]);
132 $buf .= $tmpl->output();
135 $buf .= $wiki->get_editform_plugin();
140 #==============================================================================
141 # ¥Ñ¡¼¥ÈÊÔ½¸¤Î¾ì¹ç¤ÎÊÔ½¸Éôʬ¤Î¼è¤ê½Ð¤·
142 #==============================================================================
150 foreach my $line (split(/\n/,$page)){
151 if($line=~/^(!{1,3})/){
152 if($flag==1 && $level<=length($1)){
168 #==============================================================================
169 # ¥Ñ¡¼¥ÈÊÔ½¸¤Î¾ì¹ç¤ÎÊݸÍÑ¥½¡¼¥¹¤ÎºîÀ®
170 #==============================================================================
171 sub make_save_source {
180 foreach my $line (split(/\n/,$org)){
181 if($line=~/^(!{1,3})/){
182 if($flag==1 && $level<=length($1)){
189 # ºÇ¸å¤¬²þ¹Ô¤Ç¤Ê¤¤¾ì¹ç¤À¤±²þ¹Ô¤òÄɲáʼ¡¤Î¥»¥¯¥·¥ç¥ó¤È¤¯¤Ã¤Ä¤¤¤Æ¤·¤Þ¤¦¤¿¤á¡Ë
190 $buf .= "\n" unless($edit =~ /\n$/);
201 #==============================================================================
202 # ¥Ú¡¼¥¸É½¼¨»þ¤Î¥Õ¥Ã¥¯¥á¥½¥Ã¥É
203 # ¡ÖÊÔ½¸¡×¥á¥Ë¥å¡¼¤ò͸ú¤Ë¤·¤Þ¤¹
204 #==============================================================================
208 my $cgi = $wiki->get_CGI;
210 my $pagename = $cgi->param("page");
211 my $login = $wiki->get_login_info();
214 if($wiki->can_modify_page($pagename)){
215 $wiki->add_menu("ÊÔ½¸",$wiki->create_url({ action=>"EDIT",page=>$pagename }));