reimplement custom css feature

This commit is contained in:
Athou
2014-08-11 05:51:44 +02:00
parent a41ed14fea
commit 397718fbb4
5 changed files with 58 additions and 4 deletions

View File

@@ -98,8 +98,9 @@ gulp.task('serve', function() {
middleware : function() {
var rest = '^/rest/(.*)$ http://localhost:8083/rest/$1 [P]';
var next = '^/next(.*)$ http://localhost:8083/next$1 [P]';
var logout = '^/logout(.*)$ http://localhost:8083/logout$1 [P]';
return [modRewrite([rest, next, logout])];
var logout = '^/logout$ http://localhost:8083/logout [P]';
var custom_css = '^/custom_css.css$ http://localhost:8083/custom_css.css [P]';
return [modRewrite([rest, next, logout, custom_css])];
}
});
});

View File

@@ -31,6 +31,7 @@
<link rel="stylesheet" href="css/app.css" />
<!-- endbuild -->
<link rel="stylesheet" href="custom_css.css" />
</head>
<body>
<div ng-app="commafeed" id="main" class="main">

View File

@@ -76,6 +76,7 @@ import com.commafeed.frontend.resource.FeedREST;
import com.commafeed.frontend.resource.PubSubHubbubCallbackREST;
import com.commafeed.frontend.resource.ServerREST;
import com.commafeed.frontend.resource.UserREST;
import com.commafeed.frontend.servlet.CustomCssServlet;
import com.commafeed.frontend.servlet.LogoutServlet;
import com.commafeed.frontend.servlet.NextUnreadServlet;
@@ -194,8 +195,10 @@ public class CommaFeedApplication extends Application<CommaFeedConfiguration> {
NextUnreadServlet nextUnreadServlet = new NextUnreadServlet(sessionFactory, feedSubscriptionDAO, feedEntryStatusDAO,
feedCategoryDAO, config);
LogoutServlet logoutServlet = new LogoutServlet(config);
CustomCssServlet customCssServlet = new CustomCssServlet(sessionFactory, userSettingsDAO, config);
environment.servlets().addServlet("next", nextUnreadServlet).addMapping("/next");
environment.servlets().addServlet("logout", logoutServlet).addMapping("/logout");
environment.servlets().addServlet("customCss", customCssServlet).addMapping("/custom_css.css");
// Tasks
SchedulingService schedulingService = new SchedulingService();

View File

@@ -1,18 +1,20 @@
package com.commafeed.backend.dao;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
import com.commafeed.backend.model.QUserSettings;
import com.commafeed.backend.model.User;
import com.commafeed.backend.model.UserSettings;
public class UserSettingsDAO extends GenericDAO<UserSettings> {
private QUserSettings settings = QUserSettings.userSettings;
public UserSettingsDAO(SessionFactory sessionFactory) {
super(sessionFactory);
}
public UserSettings findByUser(User user) {
return uniqueResult(criteria().add(Restrictions.eq("user", user)));
return newQuery().from(settings).where(settings.user.eq(user)).uniqueResult(settings);
}
}

View File

@@ -0,0 +1,47 @@
package com.commafeed.frontend.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import org.hibernate.SessionFactory;
import com.commafeed.CommaFeedApplication;
import com.commafeed.CommaFeedConfiguration;
import com.commafeed.backend.dao.UnitOfWork;
import com.commafeed.backend.dao.UserSettingsDAO;
import com.commafeed.backend.model.User;
import com.commafeed.backend.model.UserSettings;
@SuppressWarnings("serial")
@RequiredArgsConstructor
public class CustomCssServlet extends HttpServlet {
private final SessionFactory sessionFactory;
private final UserSettingsDAO userSettingsDAO;
private final CommaFeedConfiguration config;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
final User user = (User) req.getSession().getAttribute(CommaFeedApplication.SESSION_USER);
if (user == null) {
resp.sendRedirect(resp.encodeRedirectURL(config.getApplicationSettings().getPublicUrl()));
return;
}
UserSettings settings = new UnitOfWork<UserSettings>(sessionFactory) {
@Override
protected UserSettings runInSession() {
return userSettingsDAO.findByUser(user);
}
}.run();
resp.setContentType("text/css");
resp.getWriter().write(settings.getCustomCss());
}
}