steveosoule
2/11/2016 - 9:34 PM

Miva - Minify CSS Files

Miva - Minify CSS Files

<mvt:assign name="l.settings:minify:css:critical:enabled" value="1" />
<mvt:assign name="l.settings:minify:css:critical:file_path" value="'/assets/2015/css/critical.min.css'" />

<mvt:assign name="l.settings:minify:css:files[1]:path" value="'/assets/2015/css/normalize.css'" />
<mvt:assign name="l.settings:minify:css:files[2]:path" value="'/assets/2015/css/base.css'" />
<mvt:assign name="l.settings:minify:css:files[3]:path" value="'/assets/2015/css/scaffolding.css'" />
<mvt:assign name="l.settings:minify:css:files[4]:path" value="'/assets/2015/css/typography.css'" />
<mvt:assign name="l.settings:minify:css:files[5]:path" value="'/assets/2015/css/buttons.css'" />
<mvt:assign name="l.settings:minify:css:files[6]:path" value="'/assets/2015/css/morphing-icons.css'" />
<mvt:assign name="l.settings:minify:css:files[7]:path" value="'/assets/2015/fonts/icomoon-4/style.css'" />
<mvt:assign name="l.settings:minify:css:files[8]:path" value="'/assets/2015/css/fonts.css'" />
<mvt:assign name="l.settings:minify:css:files[9]:path" value="'/assets/2015/css/forms.css'" />
<mvt:assign name="l.settings:minify:css:files[10]:path" value="'/assets/2015/css/tables.css'" />
<mvt:assign name="l.settings:minify:css:files[11]:path" value="'/assets/2015/css/colors.css'" />
<mvt:assign name="l.settings:minify:css:files[12]:path" value="'/assets/2015/css/helpers.css'" />
<mvt:assign name="l.settings:minify:css:files[13]:path" value="'/assets/2015/css/structure.css'" />
<mvt:assign name="l.settings:minify:css:files[14]:path" value="'/assets/2015/css/pages.css'" />
<mvt:assign name="l.settings:minify:css:files[15]:path" value="'/assets/2015/css/print.css'" />

<mvt:comment><!-- Minified Output File Variables --></mvt:comment>
	<mvt:assign name="l.settings:minify:css:output_file:directory" value="'/assets/2015/css/'"/>
	<mvt:assign name="l.settings:minify:css:output_file:name" value="'miva-styles.min.css'"/>
	<mvt:assign name="l.settings:minify:css:output_file:path" value="l.settings:minify:css:output_file:directory $ l.settings:minify:css:output_file:name"/>
	<mvt:assign name="l.settings:minify:css:output_file:contents" value="''" />

<mvt:comment><!-- Critical CSS --></mvt:comment>
	<mvt:if expr="l.settings:minify:css:critical:enabled">
		<mvt:if expr="sexists( l.settings:minify:css:critical:file_path )">
			<mvt:assign name="l.result" value="file_read(l.settings:minify:css:critical:file_path, 'script', l.css)"/>
			<style id="js-critical-css2">
				<mvt:eval expr="l.css"/>
			</style>
			<mvt:comment><!-- loadCSS: load a CSS file asynchronously | https://github.com/filamentgroup/loadCSS --></mvt:comment>
			<script>
				(function(w){var loadCSS=function(href,before,media){var doc=w.document;var ss=doc.createElement("link");var newMedia=media||"all";var ref;if(before)ref=before;else{var refs=(doc.body||doc.getElementsByTagName("head")[0]).childNodes;ref=refs[refs.length-1]}var sheets=doc.styleSheets;ss.rel="stylesheet";ss.href=href;ss.media="only x";ref.parentNode.insertBefore(ss,before?ref:ref.nextSibling);var onloadcssdefined=function(cb){var resolvedHref=ss.href;var i=sheets.length;while(i--)if(sheets[i].href===resolvedHref)return cb();setTimeout(function(){onloadcssdefined(cb)})};if(ss.addEventListener)ss.addEventListener("load",function(){this.media=newMedia});ss.onloadcssdefined=onloadcssdefined;onloadcssdefined(function(){if(ss.media!==newMedia)ss.media=newMedia});return ss};if(typeof exports!=="undefined")exports.loadCSS=loadCSS;else w.loadCSS=loadCSS})(typeof global!=="undefined"?global:this);
			</script>
		</mvt:if>
	</mvt:if>

<mvt:comment><!-- Output <link/> --></mvt:comment>
	<mvt:if expr="g.minify_css_method EQ 'munee'">
		<mvt:foreach iterator="css_file" array="minify:css:files">
			<mvt:assign name="l.index" value="miva_array_insert( l.settings:minify:css:munee:files, l.settings:css_file:path, -1 )" />
		</mvt:foreach>
		<mvt:assign name="l.settings:minify:css:munee:href" value="'/munee/munee.php?files=' $ l.settings:minify:css:munee:files" />
		<link rel="stylesheet" href="&mvt:minify:css:munee:href">
	<mvt:elseif expr="g.minify_css_method EQ 'miva'">
		<mvt:comment><!-- Concatinate Styles --></mvt:comment>
			<mvt:foreach iterator="css_file" array="minify:css:files">
				<mvt:assign name="l.settings:css_file:length" value="file_read(l.settings:css_file:path, 'script', l.settings:css_file:contents)"/>
				<mvt:assign name="l.settings:minify:css:output_file:contents" value="l.settings:minify:css:output_file:contents $ g.newline $ l.settings:css_file:contents" />
			</mvt:foreach>

		<mvt:comment><!-- Determine time of last modified file --></mvt:comment>
			<mvt:assign name="l.settings:minify:css:most_recent_stime" value="0" />
			<mvt:foreach iterator="css_file" array="minify:css:files">
				<mvt:comment>
					<!--
						Miva creates new files and sets their File Modified time in GMT.
						Therefore, if your FTP program sets the File Modified time in your local time,
						then you need to update this accordingly
					-->
				</mvt:comment>
				<mvt:assign name="l.settings:minify:timezone_offset" value="60 * 60 * 8" />
				<mvt:assign name="l.settings:minify:css:current_stime" value="stime(l.settings:css_file:path) + l.settings:minify:timezone_offset" />
				<mvt:assign name="l.settings:css_file:path" value="l.settings:css_file:path $ '?v=' $ l.settings:minify:css:current_stime" />
				<mvt:if expr="l.settings:minify:css:current_stime GT l.settings:minify:css:most_recent_stime">
					<mvt:assign name="l.settings:minify:css:most_recent_stime" value="l.settings:minify:css:current_stime" />
				</mvt:if>
			</mvt:foreach>
			<mvt:assign name="l.settings:minify:css:output_file:stime" value="stime(l.settings:minify:css:output_file:path)" />

		<mvt:comment><!-- Minified Output File CRUD --></mvt:comment>
			<mvt:if expr="l.settings:minify:css:most_recent_stime GT l.settings:minify:css:output_file:stime">
				<mvt:assign name="l.settings:minify:css:output_file:stime" value="l.settings:minify:css:most_recent_stime" />
				<mvt:assign name="l.settings:minify:css:output_file:exists" value="sexists(l.settings:minify:css:output_file:path)"/>
				<mvt:if expr="l.settings:minify:css:output_file:exists">
					<mvt:assign name="l.settings:minify:css:output_file:deleted" value="sdelete(l.settings:minify:css:output_file:path)"/>
					<mvt:if expr="l.settings:minify:css:output_file:deleted">
						<mvt:assign name="l.settings:minify:css:file_created" value="file_create(l.settings:minify:css:output_file:path, 'script', l.settings:minify:css:output_file:contents)"/>
					</mvt:if>
				<mvt:else>
					<mvt:assign name="l.settings:minify:css:file_created" value="file_create(l.settings:minify:css:output_file:path, 'script', l.settings:minify:css:output_file:contents)"/>
				</mvt:if>
			</mvt:if>

		<mvt:assign name="l.settings:minify:css:output_file:path" value="glosub( l.settings:minify:css:output_file:path, '.css', '.' $ l.settings:minify:css:output_file:stime $ '.css' )" />
		<mvt:assign name="l.settings:minify:css:output_file:full_path" value="'//' $ g.domain:name $ l.settings:minify:css:output_file:path"/>
		<mvt:if expr="l.settings:minify:css:critical:enabled">
			<script>
				loadCSS('&mvte:minify:css:output_file:full_path;');
			</script>
			<noscript><link rel="stylesheet" href="&mvte:minify:css:output_file:full_path;"></noscript>
		<mvt:else>
			<link rel="stylesheet" href="&mvte:minify:css:output_file:full_path;">
		</mvt:if>
	<mvt:elseif expr="g.minify_css_method EQ 'php'">
		<mvt:foreach iterator="css_file" array="minify:css:files">
			<mvt:assign name="l.index" value="miva_array_insert( l.settings:minify:css:php:files, l.settings:css_file:path, -1 )" />
		</mvt:foreach>
		<mvt:assign name="l.settings:minify:css:php:href" value="'/assets/2015/css/minify.php?files=' $ l.settings:minify:css:php:files" />
		<mvt:if expr="l.settings:minify:css:critical:enabled">
			<script>
				loadCSS('&mvt:minify:css:php:href;');
			</script>
			<noscript><link rel="stylesheet" href="&mvt:minify:css:php:href;"></noscript>
		<mvt:else>
			<link rel="stylesheet" href="&mvt:minify:css:php:href;">
		</mvt:if>
	<mvt:else>
		<mvt:comment><!-- Ouput Individual Style Files --></mvt:comment>
			<mvt:foreach iterator="css_file" array="minify:css:files">
				<mvt:assign name="l.settings:css_file:path" value="glosub( l.settings:css_file:path, '.css', '.' $ stime(l.settings:css_file:path) $ '.css' )" />
				<link rel="stylesheet" href="//&mvte:global:domain:name;&mvt:css_file:path;">
			</mvt:foreach>
	</mvt:if>

<mvt:assign name="l.settings:minify" value="''" />
<mvt:assign name="l.settings:css_file" value="''" />