OSDN Git Service

Added pkwk_common_headers()
[pukiwiki/pukiwiki.git] / lib / html.php
index ad2c364..c01995c 100644 (file)
@@ -2,7 +2,7 @@
 /////////////////////////////////////////////////
 // PukiWiki - Yet another WikiWikiWeb clone.
 //
-// $Id: html.php,v 1.5 2004/10/11 02:05:12 henoheno Exp $
+// $Id: html.php,v 1.20 2004/12/25 00:38:21 henoheno Exp $
 //
 
 // ËÜʸ¤ò½ÐÎÏ
@@ -10,7 +10,8 @@ function catbody($title,$page,$body)
 {
        global $script, $vars, $arg, $defaultpage, $whatsnew, $help_page, $hr;
        global $related_link, $cantedit, $function_freeze, $search_word_color, $_msg_word;
-       global $foot_explain, $note_hr, $head_tags, $trackback, $referer;
+       global $foot_explain, $note_hr, $head_tags;
+       global $trackback, $trackback_javascript, $referer, $javascript;
        global $_LANG, $_LINK, $_IMAGE;
 
        global $html_transitional; // FALSE:XHTML1.1 TRUE:XHTML1.0 Transitional
@@ -22,7 +23,11 @@ function catbody($title,$page,$body)
        if (! file_exists(SKIN_FILE) || ! is_readable(SKIN_FILE))
                die_message('SKIN_FILE is not found');
 
-       $_LANG = $_LINK = $_IMAGE = array();
+       $_LINK = $_IMAGE = array();
+
+       // Add JavaScript header when ...
+       if ($trackback && $trackback_javascript) $javascript = 1; // Set something If you want
+       if (! PKWK_ALLOW_JAVASCRIPT) unset($javascript);
 
        $_page  = isset($vars['page']) ? $vars['page'] : '';
        $r_page = rawurlencode($_page);
@@ -38,11 +43,14 @@ function catbody($title,$page,$body)
        $_LINK['help']     = "$script?" . rawurlencode($help_page);
        $_LINK['list']     = "$script?cmd=list";
        $_LINK['new']      = "$script?plugin=newpage&refer=$r_page";
+       $_LINK['rdf']      = "$script?cmd=rss&ver=1.0";
        $_LINK['recent']   = "$script?" . rawurlencode($whatsnew);
        $_LINK['refer']    = "$script?plugin=referer&page=$r_page";
        $_LINK['reload']   = "$script?$r_page";
        $_LINK['rename']   = "$script?plugin=rename&refer=$r_page";
-       $_LINK['rss']      = "$script?cmd=rss10";
+       $_LINK['rss']      = "$script?cmd=rss";
+       $_LINK['rss10']    = "$script?cmd=rss&ver=1.0"; // Same as 'rdf'
+       $_LINK['rss20']    = "$script?cmd=rss&ver=2.0";
        $_LINK['search']   = "$script?cmd=search";
        $_LINK['top']      = "$script?" . rawurlencode($defaultpage);
        if ($trackback) {
@@ -52,6 +60,30 @@ function catbody($title,$page,$body)
        $_LINK['unfreeze'] = "$script?cmd=unfreeze&page=$r_page";
        $_LINK['upload']   = "$script?plugin=attach&pcmd=upload&page=$r_page";
 
+       // Compat: Skins for 1.4.4 and before
+       $link_add       = & $_LINK['add'];
+       $link_new       = & $_LINK['new'];      // New!
+       $link_edit      = & $_LINK['edit'];
+       $link_diff      = & $_LINK['diff'];
+       $link_top       = & $_LINK['top'];
+       $link_list      = & $_LINK['list'];
+       $link_filelist  = & $_LINK['filelist'];
+       $link_search    = & $_LINK['search'];
+       $link_whatsnew  = & $_LINK['recent'];
+       $link_backup    = & $_LINK['backup'];
+       $link_help      = & $_LINK['help'];
+       $link_trackback = & $_LINK['trackback'];        // New!
+       $link_rdf       = & $_LINK['rdf'];              // New!
+       $link_rss       = & $_LINK['rss'];
+       $link_rss10     = & $_LINK['rss10'];            // New!
+       $link_rss20     = & $_LINK['rss20'];            // New!
+       $link_freeze    = & $_LINK['freeze'];
+       $link_unfreeze  = & $_LINK['unfreeze'];
+       $link_upload    = & $_LINK['upload'];
+       $link_template  = & $_LINK['copy'];
+       $link_refer     = & $_LINK['refer'];    // New!
+       $link_rename    = & $_LINK['rename'];
+
        // ¥Ú¡¼¥¸¤Îɽ¼¨»þTRUE(¥Ð¥Ã¥¯¥¢¥Ã¥×¤Îɽ¼¨¡¢RecentChanges¤Îɽ¼¨¤ò½ü¤¯)
        $is_page = (is_pagename($_page) && ! arg_check('backup') && $_page != $whatsnew);
 
@@ -196,11 +228,11 @@ $template
   <textarea name="msg" rows="$rows" cols="$cols">$s_postdata</textarea>
   <br />
   <input type="submit" name="preview" value="$btn_preview" accesskey="p" />
-  <input type="submit" name="write"   value="$_btn_update" accesskey="s" /> &nbsp;
-  <input type="submit" name="cancel"  value="$_btn_cancel" accesskey="c" />
+  <input type="submit" name="write"   value="$_btn_update" accesskey="s" />
   $add_top
   <input type="checkbox" name="notimestamp" value="true"$checked_time />
-  <span style="small">$_btn_notchangetimestamp</span>
+  <span style="small">$_btn_notchangetimestamp</span> &nbsp;
+  <input type="submit" name="cancel"  value="$_btn_cancel" accesskey="c" />
   <textarea name="original" rows="1" cols="1" style="display:none">$s_original</textarea>
  </div>
 </form>
@@ -300,13 +332,14 @@ function make_search($page)
        return "<a href=\"$script?cmd=search&amp;word=$r_page\">$s_page</a> ";
 }
 
-// ¸«½Ð¤·¤òÀ¸À® (Ãí¼á¤äHTML¥¿¥°¤ò½üµî)
+// ¸«½Ð¤·¤òÀ¸À® (µÓÃí¤äHTML¥¿¥°¤ò½üµî)
 function make_heading(& $str, $strip = TRUE)
 {
        global $NotePattern;
 
-       // ¸«½Ð¤·¤Î¸ÇÍ­IDÉô¤òºï½ü
+       // Cut fixed-anchors
        $id = '';
+       $matches = array();
        if (preg_match('/^(\*{0,3})(.*?)\[#([A-Za-z][\w-]+)\](.*?)$/m', $str, $matches)) {
                $str = $matches[2] . $matches[4];
                $id  = $matches[3];
@@ -314,9 +347,60 @@ function make_heading(& $str, $strip = TRUE)
                $str = preg_replace('/^\*{0,3}/', '', $str);
        }
 
+       // Cut footnotes and tags
        if ($strip === TRUE)
                $str = strip_htmltag(make_link(preg_replace($NotePattern, '', $str)));
 
        return $id;
 }
+
+// Separate a page-name(or URL or null string) and an anchor
+// (last one standing) without sharp
+function anchor_explode($page, $strict_editable = FALSE)
+{
+       $pos = strrpos($page, '#');
+       if ($pos === FALSE) return array($page, '', FALSE);
+
+       // Ignore the last sharp letter
+       if ($pos + 1 == strlen($page)) {
+               $pos = strpos(substr($page, $pos + 1), '#');
+               if ($pos === FALSE) return array($page, '', FALSE);
+       }
+
+       $s_page = substr($page, 0, $pos);
+       $anchor = substr($page, $pos + 1);
+
+       if($strict_editable === TRUE &&  preg_match('/^[a-z][a-f0-9]{7}$/', $anchor)) {
+               return array ($s_page, $anchor, TRUE); // Seems fixed-anchor
+       } else {
+               return array ($s_page, $anchor, FALSE);
+       }
+}
+
+// Check header()s were sent already, or
+// there're blank lines or something out of php blocks
+function pkwk_headers_sent()
+{
+       if (version_compare(PHP_VERSION, '4.3.0', '>=')) {
+               if (headers_sent($file, $line))
+                   die('Headers already sent at ' .
+                       htmlspecialchars($file) .
+                       ' line ' . $line . '.');
+       } else {
+               if (headers_sent())
+                       die('Headers already sent.');
+       }
+}
+
+function pkwk_common_headers()
+{
+       if (! PKWK_OPTIMISE) pkwk_headers_sent();
+
+       $matches = array();
+       if(ini_get('zlib.output_compression') &&
+           preg_match('/\b(gzip|deflate)\b/i', $_SERVER['HTTP_ACCEPT_ENCODING'], $matches)) {
+               header('Content-Encoding: ' . $matches[1]);
+               header('Vary: Accept-Encoding');
+       }
+}
 ?>