mirror of
https://github.com/Athou/commafeed.git
synced 2026-03-21 21:37:29 +00:00
concat templates and use build timestamp as cache invalidator
This commit is contained in:
64
pom.xml
64
pom.xml
@@ -424,9 +424,73 @@
|
|||||||
<profile>
|
<profile>
|
||||||
<id>prod</id>
|
<id>prod</id>
|
||||||
<properties>
|
<properties>
|
||||||
|
<timestamp>${maven.build.timestamp}</timestamp>
|
||||||
<production>true</production>
|
<production>true</production>
|
||||||
<jpa.show_sql>false</jpa.show_sql>
|
<jpa.show_sql>false</jpa.show_sql>
|
||||||
</properties>
|
</properties>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.codehaus.gmaven</groupId>
|
||||||
|
<artifactId>gmaven-plugin</artifactId>
|
||||||
|
<version>1.4</version>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-io</groupId>
|
||||||
|
<artifactId>commons-io</artifactId>
|
||||||
|
<version>2.4</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>generate-sources</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>execute</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<properties>
|
||||||
|
<source>${basedir}/src/main/webapp/templates</source>
|
||||||
|
<prefix>templates/</prefix>
|
||||||
|
<destination>${basedir}/target/generated-sources/angularjs/all-templates.html</destination>
|
||||||
|
</properties>
|
||||||
|
<scriptpath>
|
||||||
|
<element>${basedir}/src/main/script</element>
|
||||||
|
</scriptpath>
|
||||||
|
<source>
|
||||||
|
def source = project.properties['source'];
|
||||||
|
def prefix =
|
||||||
|
project.properties['prefix'];
|
||||||
|
def dest =
|
||||||
|
project.properties['destination'];
|
||||||
|
new
|
||||||
|
HTMLConcat().concat(source, prefix, dest);
|
||||||
|
</source>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-war-plugin</artifactId>
|
||||||
|
<version>2.3</version>
|
||||||
|
<configuration>
|
||||||
|
<webResources>
|
||||||
|
<resource>
|
||||||
|
<directory>target/generated-sources/angularjs/</directory>
|
||||||
|
<targetPath>templates</targetPath>
|
||||||
|
</resource>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/script/</directory>
|
||||||
|
<includes>
|
||||||
|
<include>*.js</include>
|
||||||
|
</includes>
|
||||||
|
<targetPath>js</targetPath>
|
||||||
|
<filtering>true</filtering>
|
||||||
|
</resource>
|
||||||
|
</webResources>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
</profile>
|
</profile>
|
||||||
</profiles>
|
</profiles>
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
28
src/main/script/HTMLConcat.groovy
Normal file
28
src/main/script/HTMLConcat.groovy
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import org.apache.commons.io.FileUtils;
|
||||||
|
import org.apache.commons.lang.SystemUtils;
|
||||||
|
|
||||||
|
public class HTMLConcat {
|
||||||
|
public void concat(String source, String prefix, String destination)
|
||||||
|
throws IOException {
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
sb.append("<div>");
|
||||||
|
for (File file : new File(source).listFiles()) {
|
||||||
|
if (file.isFile()) {
|
||||||
|
sb.append(SystemUtils.LINE_SEPARATOR);
|
||||||
|
sb.append(String.format(
|
||||||
|
"<script type=\"text/ng-template\" id=\"%s%s\">",
|
||||||
|
prefix, file.getName()));
|
||||||
|
sb.append(SystemUtils.LINE_SEPARATOR);
|
||||||
|
sb.append(FileUtils.readFileToString(file));
|
||||||
|
sb.append(SystemUtils.LINE_SEPARATOR);
|
||||||
|
sb.append("</script>");
|
||||||
|
sb.append(SystemUtils.LINE_SEPARATOR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sb.append("</div>");
|
||||||
|
FileUtils.writeStringToFile(new File(destination), sb.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
35
src/main/script/template-loader.js
Normal file
35
src/main/script/template-loader.js
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
var app = angular.module('commafeed.services');
|
||||||
|
|
||||||
|
app.factory('$templateCache', ['$cacheFactory', '$http', '$injector', function($cacheFactory, $http, $injector) {
|
||||||
|
var cache = $cacheFactory('templates');
|
||||||
|
var allTplPromise;
|
||||||
|
|
||||||
|
return {
|
||||||
|
get : function(url) {
|
||||||
|
var fromCache = cache.get(url);
|
||||||
|
|
||||||
|
if (fromCache) {
|
||||||
|
return fromCache;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!allTplPromise) {
|
||||||
|
allTplPromise = $http.get('templates/all-templates.html?${timestamp}').then(
|
||||||
|
function(response) {
|
||||||
|
$injector.get('$compile')(response.data);
|
||||||
|
return response;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return allTplPromise.then(function(response) {
|
||||||
|
return {
|
||||||
|
status : response.status,
|
||||||
|
data : cache.get(url)
|
||||||
|
};
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
put : function(key, value) {
|
||||||
|
cache.put(key, value);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}]);
|
||||||
Reference in New Issue
Block a user