mirror of
https://github.com/Athou/commafeed.git
synced 2026-03-21 21:37:29 +00:00
use webjars
This commit is contained in:
@@ -1,5 +1,9 @@
|
||||
package com.commafeed.frontend;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.util.jar.JarFile;
|
||||
|
||||
import javax.enterprise.inject.spi.BeanManager;
|
||||
import javax.naming.InitialContext;
|
||||
import javax.naming.NamingException;
|
||||
@@ -24,6 +28,11 @@ import org.apache.wicket.request.Request;
|
||||
import org.apache.wicket.request.Response;
|
||||
import org.apache.wicket.request.cycle.AbstractRequestCycleListener;
|
||||
import org.apache.wicket.request.cycle.RequestCycle;
|
||||
import org.jboss.vfs.VirtualFile;
|
||||
import org.reflections.ReflectionsException;
|
||||
import org.reflections.vfs.SystemDir;
|
||||
import org.reflections.vfs.Vfs;
|
||||
import org.reflections.vfs.ZipDir;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@@ -33,6 +42,9 @@ import com.commafeed.frontend.pages.LogoutPage;
|
||||
import com.commafeed.frontend.pages.SettingsPage;
|
||||
import com.commafeed.frontend.utils.exception.DisplayExceptionPage;
|
||||
|
||||
import de.agilecoders.wicket.Bootstrap;
|
||||
import de.agilecoders.wicket.settings.BootstrapSettings;
|
||||
|
||||
public class CommaFeedApplication extends AuthenticatedWebApplication {
|
||||
|
||||
private Logger log = LoggerFactory.getLogger(CommaFeedApplication.class);
|
||||
@@ -74,7 +86,7 @@ public class CommaFeedApplication extends AuthenticatedWebApplication {
|
||||
new DisplayExceptionPage(ex)), policy);
|
||||
}
|
||||
});
|
||||
|
||||
Bootstrap.install(Application.get(), new BootstrapSettings());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -113,4 +125,54 @@ public class CommaFeedApplication extends AuthenticatedWebApplication {
|
||||
return (CommaFeedApplication) Application.get();
|
||||
}
|
||||
|
||||
/**
|
||||
* Reflections fix for JbossAS7
|
||||
*
|
||||
* https://code.google.com/p/reflections/wiki/JBossIntegration
|
||||
*/
|
||||
static {
|
||||
|
||||
Vfs.addDefaultURLTypes(new Vfs.UrlType() {
|
||||
public boolean matches(URL url) {
|
||||
return url.getProtocol().equals("vfs");
|
||||
}
|
||||
|
||||
public Vfs.Dir createDir(URL url) {
|
||||
VirtualFile content;
|
||||
try {
|
||||
content = (VirtualFile) url.openConnection().getContent();
|
||||
} catch (Throwable e) {
|
||||
throw new ReflectionsException(
|
||||
"could not open url connection as VirtualFile ["
|
||||
+ url + "]", e);
|
||||
}
|
||||
|
||||
Vfs.Dir dir = null;
|
||||
try {
|
||||
dir = createDir(new java.io.File(content.getPhysicalFile()
|
||||
.getParentFile(), content.getName()));
|
||||
} catch (IOException e) { /* continue */
|
||||
}
|
||||
if (dir == null) {
|
||||
try {
|
||||
dir = createDir(content.getPhysicalFile());
|
||||
} catch (IOException e) { /* continue */
|
||||
}
|
||||
}
|
||||
return dir;
|
||||
}
|
||||
|
||||
Vfs.Dir createDir(java.io.File file) {
|
||||
try {
|
||||
return file.exists() && file.canRead() ? file.isDirectory() ? new SystemDir(
|
||||
file) : new ZipDir(new JarFile(file))
|
||||
: null;
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
16
src/main/java/com/commafeed/frontend/pages/BasePage.java
Normal file
16
src/main/java/com/commafeed/frontend/pages/BasePage.java
Normal file
@@ -0,0 +1,16 @@
|
||||
package com.commafeed.frontend.pages;
|
||||
|
||||
import org.apache.wicket.markup.head.IHeaderResponse;
|
||||
import org.apache.wicket.markup.html.WebPage;
|
||||
|
||||
import de.agilecoders.wicket.Bootstrap;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class BasePage extends WebPage {
|
||||
|
||||
@Override
|
||||
public void renderHead(IHeaderResponse response) {
|
||||
super.renderHead(response);
|
||||
Bootstrap.renderHead(response);
|
||||
}
|
||||
}
|
||||
@@ -2,12 +2,6 @@
|
||||
<html xmlns:wicket="http://wicket.apache.org">
|
||||
<head>
|
||||
<title>CommaFeed</title>
|
||||
<link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="vendor/bootstrap/css/bootstrap-responsive.min.css" rel="stylesheet">
|
||||
<link href="vendor/angular-ui/angular-ui.min.css" rel="stylesheet">
|
||||
<link href="vendor/csstreeview/css3-treeview.css" rel="stylesheet">
|
||||
<link href="vendor/select2/select2.css" rel="stylesheet">
|
||||
<link href="css/app.css" rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
<div ng-app="commafeed" id="main" class="main">
|
||||
@@ -34,21 +28,5 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="vendor/jquery/jquery-1.9.1.min.js"></script>
|
||||
<script src="vendor/bootstrap/js/bootstrap.min.js"></script>
|
||||
<script src="vendor/select2/select2.min.js"></script>
|
||||
<script src="vendor/angular/angular.min.js"></script>
|
||||
<script src="vendor/angular/angular-resource.min.js"></script>
|
||||
<script src="vendor/angular/angular-sanitize.min.js"></script>
|
||||
<script src="vendor/angular-upload/ng-upload.min.js"></script>
|
||||
<script src="vendor/angular-infinite-scroll/ng-infinite-scroll.min.js"></script>
|
||||
<script src="vendor/angular-ui/angular-ui.min.js"></script>
|
||||
<script src="vendor/angular-ui-bootstrap/ui-bootstrap-tpls-0.2.0.min.js"></script>
|
||||
<script src="vendor/spin.js/spin.min.js"></script>
|
||||
<script src="js/main.js"></script>
|
||||
<script src="js/controllers.js"></script>
|
||||
<script src="js/directives.js"></script>
|
||||
<script src="js/services.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,12 +1,46 @@
|
||||
package com.commafeed.frontend.pages;
|
||||
|
||||
import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
|
||||
import org.apache.wicket.markup.html.WebPage;
|
||||
import org.apache.wicket.markup.head.CssHeaderItem;
|
||||
import org.apache.wicket.markup.head.IHeaderResponse;
|
||||
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
|
||||
|
||||
import com.commafeed.frontend.pages.auth.Role;
|
||||
import com.commafeed.frontend.references.angular.AngularReference;
|
||||
import com.commafeed.frontend.references.angular.AngularResourceReference;
|
||||
import com.commafeed.frontend.references.angular.AngularSanitizeReference;
|
||||
import com.commafeed.frontend.references.angularui.AngularUIReference;
|
||||
import com.commafeed.frontend.references.angularuibootstrap.AngularUIBootstrapReference;
|
||||
import com.commafeed.frontend.references.csstreeview.CssTreeViewReference;
|
||||
import com.commafeed.frontend.references.nginfinitescroll.NGInfiniteScrollReference;
|
||||
import com.commafeed.frontend.references.ngupload.NGUploadReference;
|
||||
import com.commafeed.frontend.references.select2.Select2Reference;
|
||||
import com.commafeed.frontend.references.spinjs.SpinJSReference;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
@AuthorizeInstantiation(Role.USER)
|
||||
public class HomePage extends WebPage {
|
||||
public class HomePage extends BasePage {
|
||||
|
||||
@Override
|
||||
public void renderHead(IHeaderResponse response) {
|
||||
super.renderHead(response);
|
||||
AngularReference.renderHead(response);
|
||||
AngularResourceReference.renderHead(response);
|
||||
AngularSanitizeReference.renderHead(response);
|
||||
AngularUIReference.renderHead(response);
|
||||
AngularUIBootstrapReference.renderHead(response);
|
||||
NGUploadReference.renderHead(response);
|
||||
NGInfiniteScrollReference.renderHead(response);
|
||||
Select2Reference.renderHead(response);
|
||||
SpinJSReference.renderHead(response);
|
||||
|
||||
CssTreeViewReference.renderHead(response);
|
||||
|
||||
response.render(JavaScriptHeaderItem.forUrl("js/main.js"));
|
||||
response.render(JavaScriptHeaderItem.forUrl("js/controllers.js"));
|
||||
response.render(JavaScriptHeaderItem.forUrl("js/directives.js"));
|
||||
response.render(JavaScriptHeaderItem.forUrl("js/services.js"));
|
||||
|
||||
response.render(CssHeaderItem.forUrl("css/app.css"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.commafeed.frontend.references.angular;
|
||||
|
||||
import org.apache.wicket.markup.head.IHeaderResponse;
|
||||
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
|
||||
|
||||
import de.agilecoders.wicket.webjars.request.resource.WebjarsJavaScriptResourceReference;
|
||||
|
||||
public class AngularReference extends WebjarsJavaScriptResourceReference {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public static final AngularReference INSTANCE = new AngularReference();
|
||||
|
||||
private AngularReference() {
|
||||
super("/angularjs/current/angular.js");
|
||||
}
|
||||
|
||||
public static void renderHead(final IHeaderResponse response) {
|
||||
response.render(JavaScriptHeaderItem.forReference(INSTANCE));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.commafeed.frontend.references.angular;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import org.apache.wicket.markup.head.HeaderItem;
|
||||
import org.apache.wicket.markup.head.IHeaderResponse;
|
||||
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
|
||||
|
||||
import de.agilecoders.wicket.webjars.request.resource.WebjarsJavaScriptResourceReference;
|
||||
|
||||
public class AngularResourceReference extends
|
||||
WebjarsJavaScriptResourceReference {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public static final AngularResourceReference INSTANCE = new AngularResourceReference();
|
||||
|
||||
private AngularResourceReference() {
|
||||
super("/angularjs/current/angular-resource.js");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<? extends HeaderItem> getDependencies() {
|
||||
return Arrays.asList(JavaScriptHeaderItem
|
||||
.forReference(AngularReference.INSTANCE));
|
||||
}
|
||||
|
||||
public static void renderHead(final IHeaderResponse response) {
|
||||
response.render(JavaScriptHeaderItem.forReference(INSTANCE));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.commafeed.frontend.references.angular;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import org.apache.wicket.markup.head.HeaderItem;
|
||||
import org.apache.wicket.markup.head.IHeaderResponse;
|
||||
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
|
||||
|
||||
import de.agilecoders.wicket.webjars.request.resource.WebjarsJavaScriptResourceReference;
|
||||
|
||||
public class AngularSanitizeReference extends
|
||||
WebjarsJavaScriptResourceReference {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public static final AngularSanitizeReference INSTANCE = new AngularSanitizeReference();
|
||||
|
||||
private AngularSanitizeReference() {
|
||||
super("/angularjs/current/angular-sanitize.js");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<? extends HeaderItem> getDependencies() {
|
||||
return Arrays.asList(JavaScriptHeaderItem
|
||||
.forReference(AngularReference.INSTANCE));
|
||||
}
|
||||
|
||||
public static void renderHead(final IHeaderResponse response) {
|
||||
response.render(JavaScriptHeaderItem.forReference(INSTANCE));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.commafeed.frontend.references.angularui;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import org.apache.wicket.markup.head.HeaderItem;
|
||||
import org.apache.wicket.markup.head.IHeaderResponse;
|
||||
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
|
||||
|
||||
import com.commafeed.frontend.utils.WicketUtils;
|
||||
|
||||
import de.agilecoders.wicket.webjars.request.resource.WebjarsJavaScriptResourceReference;
|
||||
|
||||
public class AngularUIReference extends WebjarsJavaScriptResourceReference {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public static final AngularUIReference INSTANCE = new AngularUIReference();
|
||||
|
||||
private AngularUIReference() {
|
||||
super("/angular-ui/current/angular-ui.js");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<? extends HeaderItem> getDependencies() {
|
||||
return Arrays
|
||||
.asList(WicketUtils
|
||||
.buildCssWebJarHeaderItem("/angular-ui/current/angular-ui.css"));
|
||||
}
|
||||
|
||||
public static void renderHead(final IHeaderResponse response) {
|
||||
response.render(JavaScriptHeaderItem.forReference(INSTANCE));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.commafeed.frontend.references.angularuibootstrap;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import org.apache.wicket.markup.head.HeaderItem;
|
||||
import org.apache.wicket.markup.head.IHeaderResponse;
|
||||
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
|
||||
import org.apache.wicket.request.resource.JavaScriptResourceReference;
|
||||
|
||||
import com.commafeed.frontend.references.angular.AngularReference;
|
||||
|
||||
public class AngularUIBootstrapReference extends JavaScriptResourceReference {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public static final AngularUIBootstrapReference INSTANCE = new AngularUIBootstrapReference();
|
||||
|
||||
private AngularUIBootstrapReference() {
|
||||
super(AngularUIBootstrapReference.class, "ui-bootstrap-tpls-0.2.0.js");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<? extends HeaderItem> getDependencies() {
|
||||
return Arrays.asList(JavaScriptHeaderItem
|
||||
.forReference(AngularReference.INSTANCE));
|
||||
}
|
||||
|
||||
public static void renderHead(final IHeaderResponse response) {
|
||||
response.render(JavaScriptHeaderItem.forReference(INSTANCE));
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -0,0 +1,19 @@
|
||||
package com.commafeed.frontend.references.csstreeview;
|
||||
|
||||
import org.apache.wicket.markup.head.CssHeaderItem;
|
||||
import org.apache.wicket.markup.head.IHeaderResponse;
|
||||
import org.apache.wicket.request.resource.CssResourceReference;
|
||||
|
||||
public class CssTreeViewReference extends CssResourceReference {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public static final CssTreeViewReference INSTANCE = new CssTreeViewReference();
|
||||
|
||||
private CssTreeViewReference() {
|
||||
super(CssTreeViewReference.class, "css3-treeview.css");
|
||||
}
|
||||
|
||||
public static void renderHead(final IHeaderResponse response) {
|
||||
response.render(CssHeaderItem.forReference(INSTANCE));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
.css-treeview ul,
|
||||
.css-treeview li
|
||||
{
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.css-treeview input
|
||||
{
|
||||
position: absolute;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.css-treeview
|
||||
{
|
||||
font: normal 11px "Segoe UI", Arial, Sans-serif;
|
||||
-moz-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.css-treeview a
|
||||
{
|
||||
color: #00f;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.css-treeview a:hover
|
||||
{
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.css-treeview input + label + ul
|
||||
{
|
||||
margin: 0 0 0 22px;
|
||||
}
|
||||
|
||||
.css-treeview input ~ ul
|
||||
{
|
||||
display: none;
|
||||
}
|
||||
|
||||
.css-treeview label,
|
||||
.css-treeview label::before
|
||||
{
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.css-treeview input:disabled + label
|
||||
{
|
||||
cursor: default;
|
||||
opacity: .6;
|
||||
}
|
||||
|
||||
.css-treeview input:checked:not(:disabled) ~ ul
|
||||
{
|
||||
display: block;
|
||||
}
|
||||
|
||||
.css-treeview label,
|
||||
.css-treeview label::before
|
||||
{
|
||||
background: url("icons.png") no-repeat;
|
||||
}
|
||||
|
||||
.css-treeview label,
|
||||
.css-treeview a,
|
||||
.css-treeview label::before
|
||||
{
|
||||
display: inline-block;
|
||||
height: 16px;
|
||||
line-height: 16px;,
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.css-treeview label
|
||||
{
|
||||
background-position: 18px 0;
|
||||
}
|
||||
|
||||
.css-treeview label::before
|
||||
{
|
||||
content: "";
|
||||
width: 16px;
|
||||
margin: 0 22px 0 0;
|
||||
vertical-align: middle;
|
||||
background-position: 0 -32px;
|
||||
}
|
||||
|
||||
.css-treeview input:checked + label::before
|
||||
{
|
||||
background-position: 0 -16px;
|
||||
}
|
||||
|
||||
/* webkit adjacent element selector bugfix */
|
||||
@media screen and (-webkit-min-device-pixel-ratio:0)
|
||||
{
|
||||
.css-treeview
|
||||
{
|
||||
-webkit-animation: webkit-adjacent-element-selector-bugfix infinite 1s;
|
||||
}
|
||||
|
||||
@-webkit-keyframes webkit-adjacent-element-selector-bugfix
|
||||
{
|
||||
from
|
||||
{
|
||||
padding: 0;
|
||||
}
|
||||
to
|
||||
{
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 762 B |
@@ -0,0 +1,30 @@
|
||||
package com.commafeed.frontend.references.nginfinitescroll;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import org.apache.wicket.markup.head.HeaderItem;
|
||||
import org.apache.wicket.markup.head.IHeaderResponse;
|
||||
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
|
||||
import org.apache.wicket.request.resource.JavaScriptResourceReference;
|
||||
|
||||
import com.commafeed.frontend.references.angular.AngularReference;
|
||||
|
||||
public class NGInfiniteScrollReference extends JavaScriptResourceReference {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public static final NGInfiniteScrollReference INSTANCE = new NGInfiniteScrollReference();
|
||||
|
||||
private NGInfiniteScrollReference() {
|
||||
super(NGInfiniteScrollReference.class, "ng-infinite-scroll.js");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<? extends HeaderItem> getDependencies() {
|
||||
return Arrays.asList(JavaScriptHeaderItem
|
||||
.forReference(AngularReference.INSTANCE));
|
||||
}
|
||||
|
||||
public static void renderHead(final IHeaderResponse response) {
|
||||
response.render(JavaScriptHeaderItem.forReference(INSTANCE));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
/* ng-infinite-scroll - v1.0.0 - 2013-02-23 */
|
||||
var mod;
|
||||
|
||||
mod = angular.module('infinite-scroll', []);
|
||||
|
||||
mod.directive('infiniteScroll', [
|
||||
'$rootScope', '$window', '$timeout', function($rootScope, $window, $timeout) {
|
||||
return {
|
||||
link: function(scope, elem, attrs) {
|
||||
var checkWhenEnabled, handler, scrollDistance, scrollEnabled;
|
||||
$window = angular.element($window);
|
||||
scrollDistance = 0;
|
||||
if (attrs.infiniteScrollDistance != null) {
|
||||
scope.$watch(attrs.infiniteScrollDistance, function(value) {
|
||||
return scrollDistance = parseInt(value, 10);
|
||||
});
|
||||
}
|
||||
scrollEnabled = true;
|
||||
checkWhenEnabled = false;
|
||||
if (attrs.infiniteScrollDisabled != null) {
|
||||
scope.$watch(attrs.infiniteScrollDisabled, function(value) {
|
||||
scrollEnabled = !value;
|
||||
if (scrollEnabled && checkWhenEnabled) {
|
||||
checkWhenEnabled = false;
|
||||
return handler();
|
||||
}
|
||||
});
|
||||
}
|
||||
handler = function() {
|
||||
var elementBottom, remaining, shouldScroll, windowBottom;
|
||||
windowBottom = $window.height() + $window.scrollTop();
|
||||
elementBottom = elem.offset().top + elem.height();
|
||||
remaining = elementBottom - windowBottom;
|
||||
shouldScroll = remaining <= $window.height() * scrollDistance;
|
||||
if (shouldScroll && scrollEnabled) {
|
||||
if ($rootScope.$$phase) {
|
||||
return scope.$eval(attrs.infiniteScroll);
|
||||
} else {
|
||||
return scope.$apply(attrs.infiniteScroll);
|
||||
}
|
||||
} else if (shouldScroll) {
|
||||
return checkWhenEnabled = true;
|
||||
}
|
||||
};
|
||||
$window.on('scroll', handler);
|
||||
scope.$on('$destroy', function() {
|
||||
return $window.off('scroll', handler);
|
||||
});
|
||||
return $timeout((function() {
|
||||
if (attrs.infiniteScrollImmediateCheck) {
|
||||
if (scope.$eval(attrs.infiniteScrollImmediateCheck)) {
|
||||
return handler();
|
||||
}
|
||||
} else {
|
||||
return handler();
|
||||
}
|
||||
}), 0);
|
||||
}
|
||||
};
|
||||
}
|
||||
]);
|
||||
2
src/main/java/com/commafeed/frontend/references/nginfinitescroll/ng-infinite-scroll.min.js
vendored
Normal file
2
src/main/java/com/commafeed/frontend/references/nginfinitescroll/ng-infinite-scroll.min.js
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
/* ng-infinite-scroll - v1.0.0 - 2013-02-23 */
|
||||
var mod;mod=angular.module("infinite-scroll",[]),mod.directive("infiniteScroll",["$rootScope","$window","$timeout",function(i,n,e){return{link:function(t,l,o){var r,c,f,a;return n=angular.element(n),f=0,null!=o.infiniteScrollDistance&&t.$watch(o.infiniteScrollDistance,function(i){return f=parseInt(i,10)}),a=!0,r=!1,null!=o.infiniteScrollDisabled&&t.$watch(o.infiniteScrollDisabled,function(i){return a=!i,a&&r?(r=!1,c()):void 0}),c=function(){var e,c,u,d;return d=n.height()+n.scrollTop(),e=l.offset().top+l.height(),c=e-d,u=n.height()*f>=c,u&&a?i.$$phase?t.$eval(o.infiniteScroll):t.$apply(o.infiniteScroll):u?r=!0:void 0},n.on("scroll",c),t.$on("$destroy",function(){return n.off("scroll",c)}),e(function(){return o.infiniteScrollImmediateCheck?t.$eval(o.infiniteScrollImmediateCheck)?c():void 0:c()},0)}}}]);
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.commafeed.frontend.references.ngupload;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import org.apache.wicket.markup.head.HeaderItem;
|
||||
import org.apache.wicket.markup.head.IHeaderResponse;
|
||||
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
|
||||
import org.apache.wicket.request.resource.JavaScriptResourceReference;
|
||||
|
||||
import com.commafeed.frontend.references.angular.AngularReference;
|
||||
|
||||
public class NGUploadReference extends JavaScriptResourceReference {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public static final NGUploadReference INSTANCE = new NGUploadReference();
|
||||
|
||||
private NGUploadReference() {
|
||||
super(NGUploadReference.class, "ng-upload.js");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<? extends HeaderItem> getDependencies() {
|
||||
return Arrays.asList(JavaScriptHeaderItem
|
||||
.forReference(AngularReference.INSTANCE));
|
||||
}
|
||||
|
||||
public static void renderHead(final IHeaderResponse response) {
|
||||
response.render(JavaScriptHeaderItem.forReference(INSTANCE));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,107 @@
|
||||
// Version 0.3.2
|
||||
// AngularJS simple file upload directive
|
||||
// this directive uses an iframe as a target
|
||||
// to enable the uploading of files without
|
||||
// losing focus in the ng-app.
|
||||
//
|
||||
// <div ng-app="app">
|
||||
// <div ng-controller="mainCtrl">
|
||||
// <form action="/uploads" ng-upload>
|
||||
// <input type="file" name="avatar"></input>
|
||||
// <input type="submit" value="Upload"
|
||||
// upload-submit="submited(content, completed)"></input>
|
||||
// </form>
|
||||
// </div>
|
||||
// </div>
|
||||
//
|
||||
// angular.module('app', ['ngUpload'])
|
||||
// .controller('mainCtrl', function($scope) {
|
||||
// $scope.submited = function(content, completed) {
|
||||
// if (completed) {
|
||||
// console.log(content);
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
//
|
||||
angular.module('ngUpload', [])
|
||||
.directive('uploadSubmit', ['$parse', function($parse) {
|
||||
return {
|
||||
restrict: 'AC',
|
||||
link: function(scope, element, attrs) {
|
||||
// Options (just 1 for now)
|
||||
// Each option should be prefixed with 'upload-options-' or 'uploadOptions'
|
||||
// {
|
||||
// // specify whether to enable the submit button when uploading forms
|
||||
// enableControls: bool
|
||||
// }
|
||||
var options = {};
|
||||
options.enableControls = attrs.uploadOptionsEnableControls;
|
||||
|
||||
// submit the form - requires jQuery
|
||||
var form = element.parents('form[ng-upload]') || element.parents('form.ng-upload');
|
||||
|
||||
// Retrieve the callback function
|
||||
var fn = $parse(attrs.uploadSubmit);
|
||||
|
||||
if (!angular.isFunction(fn)) {
|
||||
var message = "The expression on the ngUpload directive does not point to a valid function.";
|
||||
throw message + "\n";
|
||||
}
|
||||
|
||||
element.bind('click', function($event) {
|
||||
// prevent default behavior of click
|
||||
$event.preventDefault = true;
|
||||
// create a new iframe
|
||||
var iframe = angular.element("<iframe id='upload_iframe' name='upload_iframe' border='0' width='0' height='0' style='width: 0px; height: 0px; border: none; display: none' />");
|
||||
|
||||
// attach function to load event of the iframe
|
||||
iframe.bind('load', function () {
|
||||
// get content - requires jQuery
|
||||
var content = iframe.contents().find('body').text();
|
||||
// execute the upload response function in the active scope
|
||||
scope.$apply(function () {
|
||||
fn(scope, { content: content, completed: true});
|
||||
});
|
||||
// remove iframe
|
||||
if (content !== "") { // Fixes a bug in Google Chrome that dispose the iframe before content is ready.
|
||||
setTimeout(function () { iframe.remove(); }, 250);
|
||||
}
|
||||
element.attr('disabled', null);
|
||||
element.attr('title', 'Click to start upload.');
|
||||
});
|
||||
|
||||
// add the new iframe to application
|
||||
form.parent().append(iframe);
|
||||
|
||||
scope.$apply(function () {
|
||||
fn(scope, {content: "Please wait...", completed: false });
|
||||
});
|
||||
|
||||
var enabled = true;
|
||||
if (!options.enableControls) {
|
||||
// disable the submit control on click
|
||||
element.attr('disabled', 'disabled');
|
||||
enabled = false;
|
||||
}
|
||||
// why do we need this???
|
||||
element.attr('title', (enabled ? '[ENABLED]: ' : '[DISABLED]: ') + 'Uploading, please wait...');
|
||||
|
||||
form.submit();
|
||||
|
||||
}).attr('title', 'Click to start upload.');
|
||||
}
|
||||
};
|
||||
}])
|
||||
.directive('ngUpload', ['$parse', function ($parse) {
|
||||
return {
|
||||
restrict: 'AC',
|
||||
link: function (scope, element, attrs) {
|
||||
element.attr("target", "upload_iframe");
|
||||
element.attr("method", "post");
|
||||
// Append a timestamp field to the url to prevent browser caching results
|
||||
element.attr("action", element.attr("action") + "?_t=" + new Date().getTime());
|
||||
element.attr("enctype", "multipart/form-data");
|
||||
element.attr("encoding", "multipart/form-data");
|
||||
}
|
||||
};
|
||||
}]);
|
||||
1
src/main/java/com/commafeed/frontend/references/ngupload/ng-upload.min.js
vendored
Normal file
1
src/main/java/com/commafeed/frontend/references/ngupload/ng-upload.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
angular.module("ngUpload",[]).directive("uploadSubmit",["$parse",function(t){return{restrict:"AC",link:function(a,e,n){var o={};o.enableControls=n.uploadOptionsEnableControls;var i=e.parents("form[ng-upload]")||e.parents("form.ng-upload"),r=t(n.uploadSubmit);if(!angular.isFunction(r)){var l="The expression on the ngUpload directive does not point to a valid function.";throw l+"\n"}e.bind("click",function(t){t.preventDefault=!0;var n=angular.element("<iframe id='upload_iframe' name='upload_iframe' border='0' width='0' height='0' style='width: 0px; height: 0px; border: none; display: none' />");n.bind("load",function(){var t=n.contents().find("body").text();a.$apply(function(){r(a,{content:t,completed:!0})}),""!==t&&setTimeout(function(){n.remove()},250),e.attr("disabled",null),e.attr("title","Click to start upload.")}),i.parent().append(n),a.$apply(function(){r(a,{content:"Please wait...",completed:!1})});var l=!0;o.enableControls||(e.attr("disabled","disabled"),l=!1),e.attr("title",(l?"[ENABLED]: ":"[DISABLED]: ")+"Uploading, please wait..."),i.submit()}).attr("title","Click to start upload.")}}}]).directive("ngUpload",["$parse",function(){return{restrict:"AC",link:function(t,a){a.attr("target","upload_iframe"),a.attr("method","post"),a.attr("action",a.attr("action")+"?_t="+(new Date).getTime()),a.attr("enctype","multipart/form-data"),a.attr("encoding","multipart/form-data")}}}]);
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.commafeed.frontend.references.select2;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import org.apache.wicket.markup.head.HeaderItem;
|
||||
import org.apache.wicket.markup.head.IHeaderResponse;
|
||||
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
|
||||
|
||||
import com.commafeed.frontend.utils.WicketUtils;
|
||||
|
||||
import de.agilecoders.wicket.webjars.request.resource.WebjarsJavaScriptResourceReference;
|
||||
|
||||
public class Select2Reference extends WebjarsJavaScriptResourceReference {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public static final Select2Reference INSTANCE = new Select2Reference();
|
||||
|
||||
private Select2Reference() {
|
||||
super("/select2/current/select2.js");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<? extends HeaderItem> getDependencies() {
|
||||
return Arrays.asList(WicketUtils
|
||||
.buildCssWebJarHeaderItem("/select2/current/select2.css"));
|
||||
}
|
||||
|
||||
public static void renderHead(final IHeaderResponse response) {
|
||||
response.render(JavaScriptHeaderItem.forReference(INSTANCE));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.commafeed.frontend.references.spinjs;
|
||||
|
||||
import org.apache.wicket.markup.head.IHeaderResponse;
|
||||
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
|
||||
|
||||
import de.agilecoders.wicket.webjars.request.resource.WebjarsJavaScriptResourceReference;
|
||||
|
||||
public class SpinJSReference extends WebjarsJavaScriptResourceReference {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public static final SpinJSReference INSTANCE = new SpinJSReference();
|
||||
|
||||
private SpinJSReference() {
|
||||
super("/spin-js/current/spin.js");
|
||||
}
|
||||
|
||||
public static void renderHead(final IHeaderResponse response) {
|
||||
response.render(JavaScriptHeaderItem.forReference(INSTANCE));
|
||||
}
|
||||
}
|
||||
@@ -18,6 +18,9 @@ import org.apache.wicket.request.resource.JavaScriptResourceReference;
|
||||
import org.apache.wicket.util.io.IOUtils;
|
||||
import org.apache.wicket.util.template.PackageTextTemplate;
|
||||
|
||||
import de.agilecoders.wicket.webjars.request.resource.WebjarsCssResourceReference;
|
||||
import de.agilecoders.wicket.webjars.request.resource.WebjarsJavaScriptResourceReference;
|
||||
|
||||
public class WicketUtils {
|
||||
|
||||
public static void loadJQuery(IHeaderResponse response) {
|
||||
@@ -31,6 +34,12 @@ public class WicketUtils {
|
||||
.getSimpleName() + ".js"));
|
||||
}
|
||||
|
||||
public static JavaScriptHeaderItem buildJavaScriptWebJarHeaderItem(
|
||||
String name) {
|
||||
return JavaScriptHeaderItem
|
||||
.forReference(new WebjarsJavaScriptResourceReference(name));
|
||||
}
|
||||
|
||||
public static void loadJS(IHeaderResponse response, Class<?> klass) {
|
||||
response.render(buildJavaScriptHeaderItem(klass));
|
||||
}
|
||||
@@ -50,11 +59,20 @@ public class WicketUtils {
|
||||
response.render(result);
|
||||
}
|
||||
|
||||
public static void loadWebJarJS(IHeaderResponse response, String name) {
|
||||
response.render(buildJavaScriptWebJarHeaderItem(name));
|
||||
}
|
||||
|
||||
public static CssHeaderItem buildCssHeaderItem(Class<?> klass) {
|
||||
return CssHeaderItem.forReference(new CssResourceReference(klass, klass
|
||||
.getSimpleName() + ".css"));
|
||||
}
|
||||
|
||||
public static CssHeaderItem buildCssWebJarHeaderItem(String name) {
|
||||
return CssHeaderItem
|
||||
.forReference(new WebjarsCssResourceReference(name));
|
||||
}
|
||||
|
||||
public static void loadCSS(IHeaderResponse response, Class<?> klass) {
|
||||
response.render(buildCssHeaderItem(klass));
|
||||
}
|
||||
@@ -74,6 +92,10 @@ public class WicketUtils {
|
||||
response.render(result);
|
||||
}
|
||||
|
||||
public static void loadWebJarCSS(IHeaderResponse response, String name) {
|
||||
response.render(buildCssWebJarHeaderItem(name));
|
||||
}
|
||||
|
||||
public static HttpServletRequest getHttpServletRequest() {
|
||||
ServletWebRequest servletWebRequest = (ServletWebRequest) RequestCycle
|
||||
.get().getRequest();
|
||||
|
||||
Reference in New Issue
Block a user