Example #1
0
    $csscontent = $theme->get_css_content_editor();
    css_send_uncached_css($csscontent);
}
$chunkurl = new moodle_url($CFG->httpswwwroot . '/theme/styles_debug.php', array('theme' => $themename, 'type' => $type, 'subtype' => $subtype, 'sheet' => $sheet, 'usesvg' => $usesvg));
// We need some kind of caching here because otherwise the page navigation becomes
// way too slow in theme designer mode. Feel free to create full cache definition later...
$key = "{$type} {$subtype} {$sheet} {$usesvg}";
$cache = cache::make_from_params(cache_store::MODE_APPLICATION, 'core', 'themedesigner', array('theme' => $themename));
if ($content = $cache->get($key)) {
    if ($content['created'] > time() - THEME_DESIGNER_CACHE_LIFETIME) {
        $csscontent = $content['data'];
        // We need to chunk the content.
        if ($chunk !== null) {
            $chunks = css_chunk_by_selector_count($csscontent, $chunkurl->out(false));
            $csscontent = $chunk === 0 ? end($chunks) : $chunks[$chunk - 1];
        }
        css_send_uncached_css($csscontent);
    }
}
$csscontent = $theme->get_css_content_debug($type, $subtype, $sheet);
$cache->set($key, array('data' => $csscontent, 'created' => time()));
// We need to chunk the content.
if ($chunk !== null) {
    // The chunks are ordered so that the last chunk is the one containing the @import, and so
    // the first one to be included. All the other chunks are set in the array before that one.
    // See {@link css_chunk_by_selector_count()} for more details.
    $chunks = css_chunk_by_selector_count($csscontent, $chunkurl->out(false));
    $csscontent = $chunk === 0 ? end($chunks) : $chunks[$chunk - 1];
}
css_send_uncached_css($csscontent);
Example #2
0
            // making them slightly evil.
            foreach (array_keys($css['parents']) as $sheet) {
                $sendcss[] = "@import url(styles_debug.php?theme=$themename&type=$type&subtype=$subtype&sheet=$sheet);";
            }
        } else {
            // Build up the CSS for that parent so we can serve it as one file.
            foreach ($css[$subtype][$sheet] as $parent=>$css) {
                $sendcss[] = $css;
            }
        }
        css_send_uncached_css($sendcss);
    } else if ($subtype === 'theme') {
        css_send_uncached_css($css['theme']);
    }

} else if ($type === 'plugin') {
    if (isset($css['plugins'][$subtype])) {
        css_send_uncached_css($css['plugins'][$subtype]);
    }

} else if ($type === 'parent') {
    if (isset($css['parents'][$subtype][$sheet])) {
        css_send_uncached_css($css['parents'][$subtype][$sheet]);
    }

} else if ($type === 'theme') {
    if (isset($css['theme'][$sheet])) {
        css_send_uncached_css($css['theme'][$sheet]);
    }
}
css_send_css_not_found();
Example #3
0
    foreach ($css as $key => $value) {
        foreach ($value as $val) {
            if (is_array($val)) {
                foreach ($val as $k => $v) {
                    $cssfiles[] = $v;
                }
            } else {
                $cssfiles[] = $val;
            }
        }
    }
    css_store_css($theme, "{$candidatedir}/all.css", $cssfiles, true, $chunkurl);
}
// verify nothing failed in cache file creation
clearstatcache();
if (!file_exists($candidatesheet)) {
    // We need to send at least something, IE does not get it chunked properly but who cares.
    $css = '';
    foreach ($cssfiles as $file) {
        $css .= file_get_contents($file) . "\n";
    }
    css_send_uncached_css($css, false);
} else {
    if (!$cache) {
        // Do not pollute browser caches if invalid revision requested.
        css_send_uncached_css(file_get_contents($candidatesheet), false);
    } else {
        // This is the expected result!
        css_send_cached_css($candidatesheet, $etag);
    }
}