示例#1
0
文件: css.php 项目: poppen/p2
/**
 * @return  void  CSS出力
 */
function _printCss($cssFilePath, $skin = null)
{
    global $_conf, $STYLE, $MYSTYLE;
    /*
    // クエリにユニークキーを埋め込んでいるいるので、キャッシュさせてよい
    // ノーマルp2ではまだ含んでないよ
    $now = time();
    header('Expires: ' . http_date($now + 3600));
    header('Last-Modified: ' . http_date($now));
    header('Pragma: cache');
    header('Content-Type: text/css; charset=Shift_JIS');
    */
    $mtime = max(filemtime($cssFilePath), filemtime(_getSkinFilePath($skin)));
    if (file_exists($_conf['conf_user_file'])) {
        $mtime = max($mtime, filemtime($_conf['conf_user_file']));
    }
    header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $mtime) . ' GMT');
    header('Content-Type: text/css; charset=Shift_JIS');
    echo "@charset \"Shift_JIS\";\n\n";
    ob_start();
    include_once $cssFilePath;
    // $STYLEを含む
    // $MYSTYLEでCSSを上書き表示
    require_once P2_LIB_DIR . '/mystyle_css.funcs.php';
    $MYSTYLE = parse_mystyle($MYSTYLE);
    printMystyleCssByFileName($cssFilePath);
    // 空スタイルを除去
    echo preg_replace('/[a-z\\-]+[ \\t]*:[ \\t]*;/', '', ob_get_clean());
}
示例#2
0
特殊な配列のキーとして
'カテゴリ'='*' → すべての *_css.php で !important つきで読み込まれる
'カテゴリ'='all' → すべての *_css.php で読み込まれる
'カテゴリ'='base' → style_css.php に読み込まれる
'セレクタ'='sb_td' → subjectテーブル(偶数列)をまとめて設定
'セレクタ'='sb_td1' → subjectテーブル(奇数列)をまとめて設定
'セレクタ'='@import' → 値をURLとみなし、@import url('値'); とする
がある。

スタイル設定の優先順位は
$MYSTYLE['*'] >>> $MYSTYLE > $MYSTYLE['all'] > $STYLE >> $MYSTYLE['base'] > $STYLE['基本']
ただし、値に !important をつけた場合はそれが最優先で適用される。
$MYSTYLE['*'] および !important つきの値はJavaScriptでの変更が効かないので注意!(ブラウザ依存?)
*/
// {{{ 初期化
$MYSTYLE = parse_mystyle($MYSTYLE);
// }}}
// {{{ parse_mystyle()
/**
 * 旧形式の$MYSTYLEを多次元配列に変換する
 *
 * @param   array   $MYSTYLE
 * @return  array
 */
function parse_mystyle($MYSTYLE)
{
    $unused = array();
    foreach ($MYSTYLE as $key => $value) {
        if (is_string($value) && strstr($key, '<>')) {
            list($category, $selector, $property) = explode('<>', $key);
            if ($category == '*') {