Converted planet config, subscriptions and groups pages to Bootstrap. Code complete!
diff --git a/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetConfig.java b/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetConfig.java
index afa97cf..d110e69 100644
--- a/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetConfig.java
+++ b/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetConfig.java
@@ -18,9 +18,6 @@
package org.apache.roller.weblogger.planet.ui;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.RollerException;
@@ -33,9 +30,12 @@
import org.apache.roller.weblogger.config.runtime.RuntimeConfigDefs;
import org.apache.roller.weblogger.pojos.GlobalPermission;
import org.apache.roller.weblogger.pojos.RuntimeConfigProperty;
-import org.apache.struts2.convention.annotation.AllowedMethods;
import org.apache.struts2.interceptor.ParameterAware;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
/**
* Planet Config Action.
diff --git a/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetSubscriptions.java b/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetGroupSubs.java
similarity index 61%
rename from app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetSubscriptions.java
rename to app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetGroupSubs.java
index 899eaa2..4e78ff0 100644
--- a/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetSubscriptions.java
+++ b/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetGroupSubs.java
@@ -16,77 +16,86 @@
package org.apache.roller.weblogger.planet.ui;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.RollerException;
import org.apache.roller.planet.business.PlanetManager;
import org.apache.roller.planet.business.fetcher.FeedFetcher;
+import org.apache.roller.planet.business.fetcher.FetcherException;
import org.apache.roller.planet.pojos.PlanetGroup;
import org.apache.roller.planet.pojos.Subscription;
import org.apache.roller.weblogger.business.WebloggerFactory;
import org.apache.roller.weblogger.pojos.GlobalPermission;
-import org.apache.struts2.convention.annotation.AllowedMethods;
+import org.apache.struts2.interceptor.ServletRequestAware;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.*;
/**
* Manage planet group subscriptions, default group is "all".
*/
// TODO: make this work @AllowedMethods({"execute","save","delete"})
-public class PlanetSubscriptions extends PlanetUIAction {
-
- private static final Log LOGGER = LogFactory.getLog(PlanetSubscriptions.class);
-
- // id of the group we are working in
- private String groupHandle = null;
-
+public class PlanetGroupSubs extends PlanetUIAction implements ServletRequestAware {
+
+ private static final Log log = LogFactory.getLog(PlanetGroupSubs.class);
+
// the planet group we are working in
private PlanetGroup group = null;
-
+
// the subscription to deal with
private String subUrl = null;
-
-
- public PlanetSubscriptions() {
- this.actionName = "planetSubscriptions";
+
+ private boolean createNew = false;
+
+ public PlanetGroupSubs() {
+ this.actionName = "planetGroupSubs";
this.desiredMenu = "admin";
- this.pageTitle = "planetSubscriptions.title";
}
-
-
+
+
@Override
public List<String> requiredGlobalPermissionActions() {
return Collections.singletonList(GlobalPermission.ADMIN);
}
-
+
@Override
public boolean isWeblogRequired() {
return false;
}
-
-
+
+
@Override
- public void myPrepare() {
-
+ public void setServletRequest(HttpServletRequest request) {
+
PlanetManager pmgr = WebloggerFactory.getWeblogger().getPlanetManager();
-
- // lookup group we are operating on, if none specified then use default
- if (getGroupHandle() == null) {
- setGroupHandle("all");
- }
-
+ String action = null;
try {
- setGroup(pmgr.getGroup(getPlanet(), getGroupHandle()));
- } catch (RollerException ex) {
- LOGGER.error("Error looking up planet group - " + getGroupHandle(), ex);
+ if (request.getParameter("createNew") != null) {
+ createNew = true;
+
+ } else if (request.getParameter("bean.id") != null) {
+ String groupId = request.getParameter("bean.id");
+ action = "looking up planet group by id: " + groupId;
+ setGroup(pmgr.getGroupById(groupId));
+
+ } else if (request.getParameter("groupHandle") != null) {
+ String groupHandle = request.getParameter("groupHandle");
+ action = "looking up planet group by handle: " + groupHandle;
+ setGroup(pmgr.getGroup(getPlanet(), groupHandle));
+
+ } else {
+ action = "getting default group";
+ setGroup(pmgr.getGroup(getPlanet(), "all"));
+ }
+
+ } catch (Exception ex) {
+ log.error("Error " + action, ex);
}
}
-
-
+
+
/**
* Populate page model and forward to subscription page
*/
@@ -94,22 +103,22 @@
return LIST;
}
-
- /**
- * Save subscription, add to current group
+
+ /**
+ * Save subscription, add to current group
*/
public String save() {
-
+
myValidate();
-
- if(!hasActionErrors()) {
+
+ if (!hasActionErrors()) {
try {
PlanetManager pmgr = WebloggerFactory.getWeblogger().getPlanetManager();
// check if this subscription already exists before adding it
Subscription sub = pmgr.getSubscription(getSubUrl());
- if(sub == null) {
- LOGGER.debug("Adding New Subscription - " + getSubUrl());
+ if (sub == null) {
+ log.debug("Adding New Subscription - " + getSubUrl());
// sub doesn't exist yet, so we need to fetch it
FeedFetcher fetcher = WebloggerFactory.getWeblogger().getFeedFetcher();
@@ -117,19 +126,16 @@
// save new sub
pmgr.saveSubscription(sub);
- } else {
- LOGGER.debug("Adding Existing Subscription - " + getSubUrl());
+ } else {
// Subscription already exists
- addMessage("planetSubscription.foundExisting", sub.getTitle());
+ log.debug("Adding Existing Subscription - " + getSubUrl());
}
// add the sub to the group
group.getSubscriptions().add(sub);
sub.getGroups().add(group);
pmgr.saveGroup(group);
-
- // flush changes
WebloggerFactory.getWeblogger().flush();
// clear field after success
@@ -137,22 +143,25 @@
addMessage("planetSubscription.success.saved");
+ } catch (FetcherException ex) {
+ addError("planetGroupSubs.error.fetchingFeed", ex.getRootCauseMessage());
+
} catch (RollerException ex) {
- LOGGER.error("Unexpected error saving subscription", ex);
- addError("planetSubscriptions.error.duringSave", ex.getRootCauseMessage());
+ log.error("Unexpected error saving subscription", ex);
+ addError("planetGroupSubs.error.duringSave", ex.getRootCauseMessage());
}
}
-
+
return LIST;
}
-
- /**
- * Delete subscription, reset form
+
+ /**
+ * Delete subscription, reset form
*/
public String delete() {
-
- if(getSubUrl() != null) {
+
+ if (getSubUrl() != null) {
try {
PlanetManager pmgr = WebloggerFactory.getWeblogger().getPlanetManager();
@@ -170,54 +179,45 @@
addMessage("planetSubscription.success.deleted");
} catch (RollerException ex) {
- LOGGER.error("Error removing planet subscription", ex);
+ log.error("Error removing planet subscription", ex);
addError("planetSubscription.error.deleting");
}
}
return LIST;
}
-
-
- /**
+
+
+ /**
* Validate posted subscription
*/
private void myValidate() {
-
- if(StringUtils.isEmpty(getSubUrl())) {
+
+ if (StringUtils.isEmpty(getSubUrl())) {
addError("planetSubscription.error.feedUrl");
}
}
-
-
+
+
public List<Subscription> getSubscriptions() {
-
+
List<Subscription> subs = Collections.emptyList();
- if(getGroup() != null) {
+ if (getGroup() != null) {
Set<Subscription> subsSet = getGroup().getSubscriptions();
-
+
// iterate over list and build display list
subs = new ArrayList<Subscription>();
for (Subscription sub : subsSet) {
// only include external subs for display
- if(!sub.getFeedURL().startsWith("weblogger:")) {
+ if (!sub.getFeedURL().startsWith("weblogger:")) {
subs.add(sub);
}
}
}
-
+
return subs;
}
-
-
- public String getGroupHandle() {
- return groupHandle;
- }
- public void setGroupHandle(String groupHandle) {
- this.groupHandle = groupHandle;
- }
-
public PlanetGroup getGroup() {
return group;
}
@@ -232,5 +232,36 @@
public void setSubUrl(String subUrl) {
this.subUrl = subUrl;
- }
+ }
+
+ public boolean getCreateNew() {
+ return createNew;
+ }
+
+ public void setCreateNew(boolean createNew) {
+ this.createNew = createNew;
+ }
+
+ public String getGroupHandle() {
+ if (group != null) {
+ return group.getHandle();
+ }
+ return null;
+ }
+
+ @Override
+ public String getPageTitle() {
+ if (pageTitle == null) {
+ if (createNew) {
+ pageTitle = getText("planetGroupSubs.custom.title.new");
+ } else if (getGroup().getHandle().equals("all")) {
+ pageTitle = getText("planetGroupSubs.default.title");
+ } else {
+ pageTitle = getText("planetGroupSubs.custom.title", new String[] { getGroup().getHandle() } );
+ }
+ }
+ return pageTitle;
+ }
}
+
+
diff --git a/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetGroups.java b/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetGroups.java
index f65c480..700d521 100644
--- a/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetGroups.java
+++ b/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetGroups.java
@@ -18,6 +18,8 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
+
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -27,61 +29,76 @@
import org.apache.roller.weblogger.business.Weblogger;
import org.apache.roller.weblogger.business.WebloggerFactory;
import org.apache.struts2.convention.annotation.AllowedMethods;
+import org.apache.struts2.interceptor.ServletRequestAware;
+
+import javax.servlet.http.HttpServletRequest;
/**
* Manage planet groups.
*/
// TODO: make this work @AllowedMethods({"execute","save","delete"})
-public class PlanetGroups extends PlanetUIAction {
-
+public class PlanetGroups extends PlanetUIAction implements ServletRequestAware {
+
private static Log log = LogFactory.getLog(PlanetGroups.class);
-
+
// a bean to manage submitted data
private PlanetGroupsBean bean = new PlanetGroupsBean();
-
+
// the planet group we are working on
private PlanetGroup group = null;
-
-
+
public PlanetGroups() {
this.actionName = "planetGroups";
this.desiredMenu = "admin";
this.pageTitle = "planetGroups.pagetitle";
}
-
-
+
+
@Override
public boolean isWeblogRequired() {
return false;
}
-
-
+
+ @Override
+ public void setServletRequest(HttpServletRequest request) {
+ if (request.getParameter("groupHandle") != null) {
+ bean.setHandle(request.getParameter("groupHandle"));
+ }
+ }
+
@Override
public void myPrepare() {
-
- if(getPlanet() != null && getBean().getId() != null) {
+
+ if (getBean().getId() != null) {
try {
PlanetManager pmgr = WebloggerFactory.getWeblogger().getPlanetManager();
setGroup(pmgr.getGroupById(getBean().getId()));
- } catch(Exception ex) {
- log.error("Error looking up planet group - " + getBean().getId(), ex);
+ } catch (Exception ex) {
+ log.error("Error looking up planet group by id: " + getBean().getId(), ex);
+ }
+
+ } else if (bean.getHandle() != null) {
+ try {
+ PlanetManager pmgr = WebloggerFactory.getWeblogger().getPlanetManager();
+ setGroup(pmgr.getGroup(getPlanet(), bean.getHandle()));
+ } catch (Exception ex) {
+ log.error("Error looking up planet group by handle: " + bean.getHandle(), ex);
}
}
}
-
- /**
+ /**
* Show planet groups page.
*/
public String execute() {
-
+
// if we are loading an existing group then populate the bean
- if(getGroup() != null) {
+ if (getGroup() != null) {
getBean().copyFrom(getGroup());
}
-
- return LIST;
+
+ return "groups_list";
}
@@ -124,70 +141,68 @@
}
}
- return LIST;
+ return "subscriptions_list";
}
-
- /**
- * Delete group, reset form
+
+ /**
+ * Delete group, reset form
*/
public String delete() {
-
- if(getGroup() != null) {
+
+ if (getGroup() != null) {
try {
PlanetManager pmgr = WebloggerFactory.getWeblogger().getPlanetManager();
pmgr.deleteGroup(getGroup());
WebloggerFactory.getWeblogger().flush();
-
+
addMessage("planetSubscription.success.deleted");
setGroup(null);
- } catch(Exception ex) {
- log.error("Error deleting planet group - "+getBean().getId());
+ } catch (Exception ex) {
+ log.error("Error deleting planet group - " + getBean().getId());
addError("Error deleting planet group");
}
}
-
- return LIST;
+
+ return "groups_list";
}
-
-
- /**
- * Validate posted group
+
+
+ /**
+ * Validate posted group
*/
private void myValidate() {
-
- if(StringUtils.isEmpty(getBean().getTitle())) {
+
+ if (StringUtils.isEmpty(getBean().getTitle())) {
addError("planetGroups.error.title");
}
-
- if(StringUtils.isEmpty(getBean().getHandle())) {
+
+ if (StringUtils.isEmpty(getBean().getHandle())) {
addError("planetGroups.error.handle");
}
-
- if(getBean().getHandle() != null && "all".equals(getBean().getHandle())) {
+
+ if (getBean().getHandle() != null && "all".equals(getBean().getHandle())) {
addError("planetGroups.error.nameReserved");
}
-
+
// make sure duplicate group handles are prevented
}
-
-
+
+
public List<PlanetGroup> getGroups() {
List<PlanetGroup> displayGroups = new ArrayList<PlanetGroup>();
-
+
for (PlanetGroup planetGroup : getPlanet().getGroups()) {
- // The "all" group is considered a special group and cannot be
- // managed independently
+ // The "all" group is considered a special group and cannot be managed independently
if (!planetGroup.getHandle().equals("all")) {
displayGroups.add(planetGroup);
}
}
return displayGroups;
}
-
-
+
public PlanetGroupsBean getBean() {
return bean;
}
@@ -195,7 +210,7 @@
public void setBean(PlanetGroupsBean bean) {
this.bean = bean;
}
-
+
public PlanetGroup getGroup() {
return group;
}
@@ -203,5 +218,6 @@
public void setGroup(PlanetGroup group) {
this.group = group;
}
-
+
+
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/util/menu/Menu.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/util/menu/Menu.java
index 8e9804e..dfa330d 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/util/menu/Menu.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/util/menu/Menu.java
@@ -27,10 +27,10 @@
*/
public class Menu {
- private List<MenuTab> tabs = new ArrayList<MenuTab>();
+ private List<MenuTab> tabs = new ArrayList<>();
- public void addTab(MenuTab tab) {
+ void addTab(MenuTab tab) {
this.tabs.add(tab);
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/util/menu/MenuHelper.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/util/menu/MenuHelper.java
index fff06dd..e416bf5 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/util/menu/MenuHelper.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/util/menu/MenuHelper.java
@@ -67,17 +67,13 @@
// parse menus and cache so we can efficiently reuse them
String menu = "editor";
- ParsedMenu editorMenu = unmarshall(
- menu,
- MenuHelper.class
- .getResourceAsStream("/org/apache/roller/weblogger/ui/struts2/editor/editor-menu.xml"));
+ ParsedMenu editorMenu = unmarshall( menu,
+ MenuHelper.class.getResourceAsStream("/org/apache/roller/weblogger/ui/struts2/editor/editor-menu.xml"));
menus.put(menu, editorMenu);
menu = "admin";
- ParsedMenu adminMenu = unmarshall(
- menu,
- MenuHelper.class
- .getResourceAsStream("/org/apache/roller/weblogger/ui/struts2/admin/admin-menu.xml"));
+ ParsedMenu adminMenu = unmarshall( menu,
+ MenuHelper.class.getResourceAsStream("/org/apache/roller/weblogger/ui/struts2/admin/admin-menu.xml"));
menus.put(menu, adminMenu);
} catch (Exception ex) {
@@ -112,8 +108,7 @@
ParsedMenu menuConfig = menus.get(menuId);
if (menuConfig != null) {
try {
- menu = buildMenu(menuId, menuConfig, currentAction, user,
- weblog);
+ menu = buildMenu(menuId, menuConfig, currentAction, user, weblog);
} catch (WebloggerException ex) {
log.error("ERROR: fethcing user roles", ex);
}
@@ -167,16 +162,14 @@
if (configTab.getEnabledProperty() != null) {
includeTab = getBooleanProperty(configTab.getEnabledProperty());
} else if (configTab.getDisabledProperty() != null) {
- includeTab = !getBooleanProperty(configTab
- .getDisabledProperty());
+ includeTab = !getBooleanProperty(configTab.getDisabledProperty());
}
// user roles check
if (includeTab && configTab.getGlobalPermissionActions() != null
&& !configTab.getGlobalPermissionActions().isEmpty()) {
try {
- GlobalPermission perm = new GlobalPermission(
- configTab.getGlobalPermissionActions());
+ GlobalPermission perm = new GlobalPermission( configTab.getGlobalPermissionActions());
if (!umgr.checkPermission(perm, user)) {
includeTab = false;
}
@@ -189,8 +182,7 @@
// weblog permissions check
if (includeTab && configTab.getWeblogPermissionActions() != null
&& !configTab.getWeblogPermissionActions().isEmpty()) {
- WeblogPermission perm = new WeblogPermission(weblog,
- configTab.getWeblogPermissionActions());
+ WeblogPermission perm = new WeblogPermission(weblog, configTab.getWeblogPermissionActions());
includeTab = umgr.checkPermission(perm, user);
}
@@ -211,18 +203,15 @@
boolean includeItem = true;
if (configTabItem.getEnabledProperty() != null) {
- includeItem = getBooleanProperty(configTabItem
- .getEnabledProperty());
+ includeItem = getBooleanProperty(configTabItem.getEnabledProperty());
} else if (configTabItem.getDisabledProperty() != null) {
- includeItem = !getBooleanProperty(configTabItem
- .getDisabledProperty());
+ includeItem = !getBooleanProperty(configTabItem.getDisabledProperty());
}
// user roles check
if (includeItem
&& configTabItem.getGlobalPermissionActions() != null
- && !configTabItem.getGlobalPermissionActions()
- .isEmpty()) {
+ && !configTabItem.getGlobalPermissionActions() .isEmpty()) {
GlobalPermission perm = new GlobalPermission(
configTabItem.getGlobalPermissionActions());
if (!umgr.checkPermission(perm, user)) {
@@ -233,10 +222,8 @@
// weblog permissions check
if (includeItem
&& configTabItem.getWeblogPermissionActions() != null
- && !configTabItem.getWeblogPermissionActions()
- .isEmpty()) {
- WeblogPermission perm = new WeblogPermission(weblog,
- configTabItem.getWeblogPermissionActions());
+ && !configTabItem.getWeblogPermissionActions().isEmpty()) {
+ WeblogPermission perm = new WeblogPermission(weblog, configTabItem.getWeblogPermissionActions());
includeItem = umgr.checkPermission(perm, user);
}
@@ -461,8 +448,7 @@
element.getAttributeValue("globalPerms"), ","));
}
tabItem.setEnabledProperty(element.getAttributeValue("enabledProperty"));
- tabItem.setDisabledProperty(element
- .getAttributeValue("disabledProperty"));
+ tabItem.setDisabledProperty(element.getAttributeValue("disabledProperty"));
return tabItem;
}
diff --git a/app/src/main/resources/ApplicationResources.properties b/app/src/main/resources/ApplicationResources.properties
index 7e6d134..e2b08b9 100644
--- a/app/src/main/resources/ApplicationResources.properties
+++ b/app/src/main/resources/ApplicationResources.properties
@@ -30,6 +30,7 @@
generic.no=No
generic.name=Name
generic.description=Description
+generic.action=Action
generic.save=Save
generic.rename=Rename
generic.edit=Edit
@@ -173,7 +174,7 @@
These are your top-level weblog categories. Roller requires at least one \
category to be defined. \
Categories are used to organize your weblog entries and your readers can \
-choose to subscribe to separate newsfeeds for each of your categories.
+choose to subscribe to separate feeds for each of your categories.
categoriesForm.addCategory=Add Category
categoriesForm.move=Move
categoriesForm.move.confirm=Move selected categories?
@@ -341,8 +342,8 @@
configForm.weblogSettings=Weblog Rendering Settings
configForm.pageMaxEntries=Max number of entries to allow per page
-configForm.newsfeedMaxEntries=Number of entries to provide in newsfeeds
-configForm.styledFeeds=Display styled newsfeeds for browsers
+configForm.newsfeedMaxEntries=Number of entries to provide in feeds
+configForm.styledFeeds=Display styled feeds for browsers
configForm.commentSettings=Comment and Trackback Settings
configForm.enableComments=Allow weblog comments?
@@ -379,10 +380,10 @@
createWebsite.tip.name=The name is the title of your weblog, it will be \
displayed at the top of your weblog page, and in the title field of your \
-weblog''s newsfeed. This field should not include HTML.
+weblog''s feed. This field should not include HTML.
createWebsite.tip.description=The description of your weblog may be displayed \
at the top of your weblog (depending on the theme you choose), and it will be \
-used in description or subtitle field of your newsfeed. This field should not \
+used in description or subtitle field of your feed. This field should not \
include HTML.
createWebsite.tip.handle=The handle is a short one-word name for your \
weblog. It will be used in your URL, so please limit it to simple ASCII \
@@ -1115,18 +1116,16 @@
pingTarget.unknownHost=The hostname in this URL doesn''t seem to exist.
pingTarget.notFound=Ping target id {0} was not found
-# --------------------------------------------------------------- Planet Roller
+# --------------------------------------------------------------- Planet Roller: config
planetConfig.title=Planet Configuration
-planetConfig.subtitle=Configure Roller''s built-in newsfeed aggregator.
-planetConfig.prompt=Set the title, description, email address and site URL \
-to be included in newsfeeds produced by the aggregator. You can also setup a \
-proxy if one is required required by your network.
+planetConfig.subtitle=Configure Roller\'s built-in RSS/Atom feed aggregator.
+planetConfig.prompt=Roller's Planet feature gives you a way to aggregate all of the weblogs on your site along with feeds from other sites. On this page you can set title, description and email addresses that are to be displayed in the RSS or Atom feeds for your aggregation, and to be used in weblog templates that display your site. You can also configure a proxy if you Roller site requires one.
ConfigForm.siteSettings=Planet Settings
-ConfigForm.title=Planet title\t
-ConfigForm.description=Planet description\t\t
-ConfigForm.adminName=Name of Planet administrator \t\t
+ConfigForm.title=Planet title
+ConfigForm.description=Planet description
+ConfigForm.adminName=Name of Planet administrator
ConfigForm.adminEmail=Email of Planet administrator
ConfigForm.absoluteUrl=Absolute URL to Planet page
ConfigForm.proxyHost=Proxy host for feed fetcher
@@ -1140,56 +1139,63 @@
ConfigForm.invalidFloatProperty=Property {0} must be a float: {1}
ConfigForm.invalidProperty=Property {0} is null
-# ----------------------------------------------------- PlanetSubscriptions.jsp
+# ----------------------------------------------------- Planet Roller: group subscriptions
-planetSubscriptions.title=Subscriptions
+planetGroupSubs.default.title=Default Planet Group Subscriptions
+planetGroupSubs.default.subtitle=Manage feed subscriptions for Roller's Default Planet Group
+planetGroupSubs.default.desc=By default, Roller's Planet feature includes all weblogs on this Roller site in the aggregation. On this page you can add RSS and Atom feeds from other sites to this aggregation.
-planetSubscriptions.subtitle.add=\
-Manage newsfeed subscriptions in group [<b>{0}</b>].
-planetSubscriptions.prompt.add=To add a new subscription simply enter a \
-newsfeed URL then click the Save button.
+planetGroupSubs.custom.title=Custom Planet Group {0}
+planetGroupSubs.custom.title.new=New Custom Planet Group
+planetGroupSubs.custom.subtitle=Manage feed subscriptions for Custom Planet Group {0}
+planetGroupSubs.custom.desc=This is a Custom Planet Group. Once you have added one or more RSS/Atom feeds here Roller will create an aggregated feed that containing entries from all of the feeds you add. You can display that aggregated feed in a blog template or access it via URL.
-planetSubscriptions.subtitle.addMain=\
-Managing the main list of newsfeed subscriptions.
-planetSubscriptions.prompt.addMain=Use this page to add \
-subscriptions to the list of newsfeeds that are to be included on the main \
-Planet aggregator page. To add a new subscription simply enter a \
-newsfeed URL then click the Save button.
+planetGroupSubs.addFeed=Add a new RSS/Atom feed subscription
+planetGroupSubs.creatingNewGroup=Before you can add subscriptions you must set a name and handle for your new Custom Planet Feed.
+planetGroupSubs.editingExistingGroup=You can edit the name and handle for the group, but be aware that changing the handle will change the URL of the Planet Group.
-planetSubscriptions.existingTitle=Existing Subscriptions
-planetSubscriptions.column.title=Title
-planetSubscriptions.column.feedUrl=Feed URL
-planetSubscription.feedUrl=Newsfeed URL
+planetGroupSubs.noneDefinedCustom=No feed subscriptions exist for this Custom Planet Group
+planetGroupSubs.noneDefinedDefault=No additional feeds have been added to the Default Planet Group
+
+planetGroupSubs.properties=Properties
+planetGroupSubs.subscriptions=Subscriptions
+planetGroupSubs.column.title=Title
+planetGroupSubs.column.feedUrl=Feed URL
+planetSubscription.feedUrl=Feed URL
planetSubscription.success.deleted=Subscription successfully deleted
planetSubscription.foundExisting=Found existing subscription [{0}], adding it instead
planetSubscription.success.saved=Saved subscription
-planetSubscription.error=Must specify newfeed URL
-planetSubscription.error.feedUrl=Newsfeed URL is required
-planetSubscriptions.error.duringSave=Duplicate subscription? - {0}
+planetSubscription.error=Must specify feed URL
+planetSubscription.error.feedUrl=Feed URL is required
+planetGroupSubs.error.duringSave=Unexpected error saving subscription: {0}
+planetGroupSubs.error.fetchingFeed=Error fetching subscription: {0}
planetSubscription.error.deleting=Error deleting object
-# ------------------------------------------------------------ PlanetGroups.jsp
+planetGroupSubs.delete.confirm=Are you sure you want to delete this subscription?
+
+# ------------------------------------------------------------ Planet Roller: groups
planetGroups.pagetitle=Custom Planet Groups
-planetGroups.subtitle=Add custom aggregation groups, each available as a newsfeed.
+planetGroups.subtitle=Manage Custom Planet Groups, each available for use in weblog templates or as a feed.
-planetGroups.prompt.add=To create a group, \
-just enter a display name and a unique handle to be used in the newsfeed URL \
-then click Save.
-planetGroups.prompt.edit=You are editing a custom aggregation group. Make \
-your changes and then click Save. Or, use click Delete to remove it.
+planetGroups.prompt.add=To create a group, just enter a display name and a unique handle to be used in the feed URL then click Save.
+planetGroups.prompt.edit=You are editing a custom aggregation group. Make your changes and then click Save. Or, use click Delete to remove it.
planetGroups.existingTitle=Existing Custom Aggregation Groups
planetGroups.existingPrompt=Select an existing custom aggregation group to edit.
+planetGroups.noneDefined=No Custom Planet Groups defined.
+
planetGroups.column.title=Title
planetGroups.column.subscriptions=Subscriptions
planetGroups.column.handle=Handle
-planetGroups.tip.title=Title of group
-planetGroups.tip.handle=Handle of this group
+planetGroups.tip.title=Title of the group for display purposes.
+planetGroups.tip.handle=Handle of this group. A simple string with no spaces to be used in the group's URL.
planetGroups.edit.tip=Edit this group
+planetGroupSubs.subscriptionDesc=Add subscriptions to this group via the form on the right.
+
planetGroups.title=Title
planetGroups.handle=Handle
@@ -1202,6 +1208,8 @@
planetGroups.error.handle=Handle is required
planetGroups.error.nameReserved=Can''t use handle ''all''
+planetGroups.delete.confirm=Are you sure you want to remove this group?
+
# ------------------------------------------------------------------ Statistics
statCount.weblogCommentCountType=Weblog comment count
@@ -1290,7 +1298,7 @@
tabbedmenu.planet=Planet Admin
tabbedmenu.admin.planetConfig=Configuration
-tabbedmenu.admin.planetSubscriptions=Subscriptions
+tabbedmenu.admin.planetGroupSubs=Subscriptions
tabbedmenu.admin.planetGroups=Custom Groups
# ---------------------------------------------------------------------- Search
diff --git a/app/src/main/resources/ApplicationResources_de.properties b/app/src/main/resources/ApplicationResources_de.properties
index e5c9cfa..a4f150e 100644
--- a/app/src/main/resources/ApplicationResources_de.properties
+++ b/app/src/main/resources/ApplicationResources_de.properties
@@ -607,15 +607,15 @@
planetSubscription.foundExisting=Abonnement [{0}] exisitiert bereits, es wurde aber trotzdem hinzugef\u00FCgt
planetSubscription.success.deleted=Abonnement erfolgreich gel\u00F6scht
planetSubscription.success.saved=Abonnement gespeichert
-planetSubscriptions.column.feedUrl=Feed-URL
-planetSubscriptions.column.title=Titel
-planetSubscriptions.error.duringSave=Doppeltes Abonnement? - {0}
-planetSubscriptions.existingTitle=Existierende Abonnements
-planetSubscriptions.prompt.add=Um ein neues Abonnement hinzuzuf\u00FCgen geben Sie bitte die URL des Newsfeed ein und klicken dann auf Speichern.
-planetSubscriptions.prompt.addMain=Nutzen Sie diese Seite zum Hinzuf\u00FCgen von Abonnements zu der Liste der Newsfeeds, welche in der Haupt-Planet-Aggregator-Seite enthalten sein sollen. Um ein neues Abonnement hinzuzuf\u00FCgen geben Sie einfach die Adresse des Newsfeed ein und klicken Sie auf Speichern.
-planetSubscriptions.subtitle.add=Verwaltung der Newsfeed Abonnements in der Gruppe [<b>{0}</b>].
-planetSubscriptions.subtitle.addMain=Verwalten der Hauptliste der Newsfeed Abonnements.
-planetSubscriptions.title=Abonnements
+planetGroupSubs.column.feedUrl=Feed-URL
+planetGroupSubs.column.title=Titel
+planetGroupSubs.error.duringSave=Doppeltes Abonnement? - {0}
+planetGroupSubs.existingTitle=Existierende Abonnements
+planetGroupSubs.prompt.add=Um ein neues Abonnement hinzuzuf\u00FCgen geben Sie bitte die URL des Newsfeed ein und klicken dann auf Speichern.
+planetGroupSubs.prompt.addMain=Nutzen Sie diese Seite zum Hinzuf\u00FCgen von Abonnements zu der Liste der Newsfeeds, welche in der Haupt-Planet-Aggregator-Seite enthalten sein sollen. Um ein neues Abonnement hinzuzuf\u00FCgen geben Sie einfach die Adresse des Newsfeed ein und klicken Sie auf Speichern.
+planetGroupSubs.subtitle.add=Verwaltung der Newsfeed Abonnements in der Gruppe [<b>{0}</b>].
+planetGroupSubs.subtitle.addMain=Verwalten der Hauptliste der Newsfeed Abonnements.
+planetGroupSubs.title=Abonnements
searchPager.home=Startseite
searchPager.next=N\u00E4chste Seite
searchPager.prev=Vorige Seite
@@ -637,7 +637,7 @@
tabbedmenu.admin.pingTargets=Ping Ziele
tabbedmenu.admin.planetConfig=Konfiguration
tabbedmenu.admin.planetGroups=Benutzerdefinierte Gruppen
-tabbedmenu.admin.planetSubscriptions=Abonnements
+tabbedmenu.admin.planetGroupSubs=Abonnements
tabbedmenu.admin.userAdmin=Benutzerverwaltung
tabbedmenu.bookmarks.allFolders=Blogroll
tabbedmenu.design=Design
@@ -672,7 +672,7 @@
uploadFiles.error.badPath=Der Pfad [{0}] ist ung\u00FCltig. Pfade d\u00FCrfen keine "/", "", oder ".." enthalten.
uploadFiles.error.upload=Hochladen von [{0}] fehlgeschlagen
uploadFiles.upload=Hochladen
-# ----------------------------------------------------- PlanetSubscriptions.jsp
+# ----------------------------------------------------- PlanetGroupSubs.jsp
uploadFiles.uploadedFile={0}
uploadFiles.uploadedFiles=Hochgeladene Datei(en):
user.account.activation.mail.content=<html><body style="background: white; color: black; font-size: 12px"> <p>Zum Aktivieren Ihres neuen Roller-Benutzerkontos mit dem Benutzernamen [{1}] klicken Sie bitte auf den folgenden Link:</p> <p><a href="{2}">{2}</a></p></body></html>
diff --git a/app/src/main/resources/ApplicationResources_es.properties b/app/src/main/resources/ApplicationResources_es.properties
index bdf6ec7..7799536 100644
--- a/app/src/main/resources/ApplicationResources_es.properties
+++ b/app/src/main/resources/ApplicationResources_es.properties
@@ -338,20 +338,20 @@
planetConfig.subtitle=Configurar agregador de noticias de Roller
planetConfig.prompt=Establecer el t\u00EDtulo, direcci\u00F3n de email y URL del sitio que se incluir\u00E1n en la suscripci\u00F3n de noticias poducida por el agregador. Puede tambi\u00E9n configurar un proxy si es necesario para su red.
planetConfig.title=Configuraci\u00F3n de Planet
-planetSubscriptions.title=Suscripciones
-planetSubscriptions.subtitle.add=Administrar suscripciones de noticias en el grupo [<b>{0}</b>].
-planetSubscriptions.prompt.add=Para a\u00F1adir una nueva suscripci\u00F3n simplemente introduzca el t\u00EDtulo, la URL de la suscripci\u00F3n de noticias y la URL del sitio, finalmente haga click en el bot\u00F3n Guardar.
-planetSubscriptions.subtitle.addMain=Administrando la lista principal de suscripciones de noticias.
-planetSubscriptions.prompt.addMain=Use esta p\u00E1gina para a\u00F1adir y editar suscripciones\: la lista de suscripciones de noticias que se incluye en la p\u00E1gina principal del agregador Planet. Para a\u00F1adir una nueva suscripci\u00F3n simplemente introduzca el t\u00EDtulo, el t\u00EDtulo, la URL de la suscripci\u00F3n de noticias y la URL del sitio, finalmente haga click en el bot\u00F3n Guardar.
-planetSubscriptions.existingTitle=Suscripciones existentes
-planetSubscriptions.column.title=T\u00EDtulo
-planetSubscriptions.column.feedUrl=URL de la suscripci\u00F3n
+planetGroupSubs.title=Suscripciones
+planetGroupSubs.subtitle.add=Administrar suscripciones de noticias en el grupo [<b>{0}</b>].
+planetGroupSubs.prompt.add=Para a\u00F1adir una nueva suscripci\u00F3n simplemente introduzca el t\u00EDtulo, la URL de la suscripci\u00F3n de noticias y la URL del sitio, finalmente haga click en el bot\u00F3n Guardar.
+planetGroupSubs.subtitle.addMain=Administrando la lista principal de suscripciones de noticias.
+planetGroupSubs.prompt.addMain=Use esta p\u00E1gina para a\u00F1adir y editar suscripciones\: la lista de suscripciones de noticias que se incluye en la p\u00E1gina principal del agregador Planet. Para a\u00F1adir una nueva suscripci\u00F3n simplemente introduzca el t\u00EDtulo, el t\u00EDtulo, la URL de la suscripci\u00F3n de noticias y la URL del sitio, finalmente haga click en el bot\u00F3n Guardar.
+planetGroupSubs.existingTitle=Suscripciones existentes
+planetGroupSubs.column.title=T\u00EDtulo
+planetGroupSubs.column.feedUrl=URL de la suscripci\u00F3n
planetSubscription.feedUrl=URL de la suscripci\u00F3n de noticias
planetSubscription.success.deleted=Suscripci\u00F3n eliminada con \u00E9xito
planetSubscription.success.saved=Suscripci\u00F3n guardada
planetSubscription.error=Debe especificar la URL de la suscripci\u00F3n de noticias
planetSubscription.error.feedUrl=La URL de la suscripci\u00F3n de noticias es obligatoria
-planetSubscriptions.error.duringSave=\u00BFSuscripci\u00F3n repetida? - {0}
+planetGroupSubs.error.duringSave=\u00BFSuscripci\u00F3n repetida? - {0}
planetSubscription.error.deleting=Error eliminando objeto
planetGroups.pagetitle=Grupos Planet personalizados
planetGroups.subtitle=A\u00F1adir agregador personalizado de grupos, disponible en forma de suscripci\u00F3n de noticias.
@@ -394,7 +394,7 @@
tabbedmenu.admin.cacheInfo=Informaci\u00F3n de cach\u00E9
tabbedmenu.planet=Administraci\u00F3n de Planet
tabbedmenu.admin.planetConfig=Configuraci\u00F3n
-tabbedmenu.admin.planetSubscriptions=Suscripciones
+tabbedmenu.admin.planetGroupSubs=Suscripciones
tabbedmenu.admin.planetGroups=Grupos personalizados
themeEditor.title=Tema del weblog
themeEditor.subtitle=Seleccionar tema para el weblog <span>{0}</span>
diff --git a/app/src/main/resources/ApplicationResources_fr.properties b/app/src/main/resources/ApplicationResources_fr.properties
index 32cf84a..5332039 100644
--- a/app/src/main/resources/ApplicationResources_fr.properties
+++ b/app/src/main/resources/ApplicationResources_fr.properties
@@ -709,26 +709,26 @@
ConfigForm.proxyPort=Port du serveur Proxy
#pour la récuperation des fils d'information
-# ----------------------------------------------------- PlanetSubscriptions.jsp
+# ----------------------------------------------------- PlanetGroupSubs.jsp
-planetSubscriptions.title=Souscriptions
+planetGroupSubs.title=Souscriptions
-planetSubscriptions.subtitle.add=\
+planetGroupSubs.subtitle.add=\
Gestion des souscriptions aux fils d'information dans le groupe [<b>{0}</b>].
-planetSubscriptions.prompt.add=Pour ajouter une nouvelle souscription, entrez son titre, \
+planetGroupSubs.prompt.add=Pour ajouter une nouvelle souscription, entrez son titre, \
l'adresse URL du fil d'information et celle du site, puis cliquez sur 'Enregistrer'.
-planetSubscriptions.subtitle.addMain=\
+planetGroupSubs.subtitle.addMain=\
Gérer la liste principale de souscriptions aux fils d'information.
-planetSubscriptions.prompt.addMain=Utilisez cette page pour ajouter ou éditer les souscriptions qui \
+planetGroupSubs.prompt.addMain=Utilisez cette page pour ajouter ou éditer les souscriptions qui \
s'ajouterons à la page d'aggrégation de Planet. \
Pour ajouter une nouvelle souscription, entrez son titre, \
l'adresse URL du fil d'information et celle du site, puis cliquez sur 'Enregistrer'.
-planetSubscriptions.existingTitle=Souscriptions existantes
+planetGroupSubs.existingTitle=Souscriptions existantes
-planetSubscriptions.column.title=Titre
-planetSubscriptions.column.feedUrl=URL du fil
+planetGroupSubs.column.title=Titre
+planetGroupSubs.column.feedUrl=URL du fil
planetSubscription.feedUrl=URL du fil d'information
@@ -739,7 +739,7 @@
planetSubscription.error=Vous devez specifier une adresse URL pour le fil d'information
planetSubscription.error.feedUrl=URL du fil requise
-planetSubscriptions.error.duringSave=La souscription {0} semble déjà exister
+planetGroupSubs.error.duringSave=La souscription {0} semble déjà exister
de la souscription.
# ------------------------------------------------------------ PlanetGroups.jsp
@@ -807,7 +807,7 @@
tabbedmenu.planet=Admin. Planet
tabbedmenu.admin.planetConfig=Configuration
-tabbedmenu.admin.planetSubscriptions=Souscriptions
+tabbedmenu.admin.planetGroupSubs=Souscriptions
tabbedmenu.admin.planetGroups=Groupes personnalisés
# ---------------------------------------------------------------------- Search
diff --git a/app/src/main/resources/ApplicationResources_ja.properties b/app/src/main/resources/ApplicationResources_ja.properties
index 03b5a9d..5a210c2 100644
--- a/app/src/main/resources/ApplicationResources_ja.properties
+++ b/app/src/main/resources/ApplicationResources_ja.properties
@@ -548,7 +548,7 @@
planetConfig.subtitle=Roller\u5185\u8535\u306E\u30CB\u30E5\u30FC\u30B9\u30D5\u30A3\u30FC\u30C9\u30FB\u30A2\u30B0\u30EA\u30B2\u30FC\u30BF\u3092\u8A2D\u5B9A
planetConfig.title=Planet \u8A2D\u5B9A
-# ----------------------------------------------------- PlanetSubscriptions.jsp
+# ----------------------------------------------------- PlanetGroupSubs.jsp
planetSubscription.success.saved=\u8CFC\u8AAD\u304C\u4FDD\u5B58\u3055\u308C\u307E\u3057\u305F
@@ -1065,7 +1065,7 @@
categoryForm.changesSaved=\u30AB\u30C6\u30B4\u30EA "{0}" \u304C\u66F4\u65B0\u3055\u308C\u307E\u3057\u305F
mediaFileView.dirPageTip=\u3053\u308C\u306F\u30E1\u30C7\u30A3\u30A2\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u30B5\u30D6\u30D5\u30A9\u30EB\u30C0\u3067\u3059\u3002
userRegister.heading.identification=\u3069\u306E\u3088\u3046\u306B\u8B58\u5225\u3055\u308C\u305F\u3044\u3067\u3059\u304B?
-planetSubscriptions.subtitle.add=\u30B0\u30EB\u30FC\u30D7 [<b>{0}</b>] \u306E\u30CB\u30E5\u30FC\u30B9\u30D5\u30A3\u30FC\u30C9\u30FB\u30B5\u30D6\u30B9\u30AF\u30EA\u30D7\u30B7\u30E7\u30F3\u3092\u7BA1\u7406\u3057\u307E\u3059\u3002
+planetGroupSubs.subtitle.add=\u30B0\u30EB\u30FC\u30D7 [<b>{0}</b>] \u306E\u30CB\u30E5\u30FC\u30B9\u30D5\u30A3\u30FC\u30C9\u30FB\u30B5\u30D6\u30B9\u30AF\u30EA\u30D7\u30B7\u30E7\u30F3\u3092\u7BA1\u7406\u3057\u307E\u3059\u3002
pageForm.launch=\u8868\u793A
error.unexpected=\u4E88\u671F\u305B\u306C\u30A8\u30E9\u30FC\u3067\u3059\u3002\u30A8\u30E9\u30FC\u304C\u518D\u767A\u3059\u308B\u5834\u5408\u3001\u7BA1\u7406\u8005\u306B\u9023\u7D61\u3057\u3066\u304F\u3060\u3055\u3044\u3002
mediaFileView.date=\u65E5\u4ED8
@@ -1115,7 +1115,7 @@
userRegister.tip.openIdUrl=Open ID\u8B58\u5225\u5B50(URL\u5F62\u5F0F)\u3002
pingTarget.editTarget=Ping\u30BF\u30FC\u30B2\u30C3\u30C8\u3092\u7DE8\u96C6\u3059\u308B
mediaFileAdd.directory=\u30D5\u30A9\u30EB\u30C0
-planetSubscriptions.title=\u30B5\u30D6\u30B9\u30AF\u30EA\u30D7\u30B7\u30E7\u30F3
+planetGroupSubs.title=\u30B5\u30D6\u30B9\u30AF\u30EA\u30D7\u30B7\u30E7\u30F3
mediaFileView.size=\u30B5\u30A4\u30BA
stylesheetEdit.tip=\u3053\u306E\u30D5\u30A9\u30FC\u30E0\u3092\u4F7F\u3063\u3066\u3001\u3042\u306A\u305F\u306E\u30C6\u30FC\u30DE\u306E\u30B9\u30BF\u30A4\u30EB\u30B7\u30FC\u30C8\u3092\u7DE8\u96C6\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002
themeEditor.importAndOverwriteTemplates.tooltip=\u3053\u306E\u30D6\u30ED\u30B0\u306F\u3001\u3059\u3067\u306B\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30FB\u30BF\u30D6\u3067\u5B9A\u7FA9\u3055\u308C\u305F\u30AB\u30B9\u30BF\u30E0\u30FB\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u6301\u3063\u3066\u3044\u307E\u3059\u3002\u5171\u6709\u30C6\u30FC\u30DE\u3068\u540C\u540D\u306E\u65E2\u5B58\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u4E0A\u66F8\u304D\u3057\u305F\u3044\u5834\u5408\u306F\u3053\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u65E2\u5B58\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u4F7F\u3063\u3066\u5358\u306B\u30AB\u30B9\u30BF\u30E0\u30FB\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u5207\u308A\u66FF\u3048\u305F\u3044\u5834\u5408\u306F\u9078\u629E\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002
@@ -1157,7 +1157,7 @@
maintenance.message.reset=\u30A2\u30AF\u30BB\u30B9\u30AB\u30A6\u30F3\u30BF\u304C\u6B63\u5E38\u306B\u30EA\u30BB\u30C3\u30C8\u3055\u308C\u307E\u3057\u305F
email.comment.commenter.email=\u30B3\u30E1\u30F3\u30C8\u6295\u7A3F\u8005\u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9
welcome.user.account.not.activated=\u30B7\u30B9\u30C6\u30E0\u306B\u30ED\u30B0\u30A4\u30F3\u3059\u308B\u306B\u306F\u3001\u30E1\u30FC\u30EB\u3067\u9001\u4FE1\u3055\u308C\u305F\u30EA\u30F3\u30AF\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u3042\u306A\u305F\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u3092\u6709\u52B9\u5316\u3057\u306A\u3051\u308C\u3070\u306A\u308A\u307E\u305B\u3093\u3002
-planetSubscriptions.prompt.add=\u65B0\u3057\u3044\u30B5\u30D6\u30B9\u30AF\u30EA\u30D7\u30B7\u30E7\u30F3\u3092\u8FFD\u52A0\u3059\u308B\u306B\u306F\u3001\u30CB\u30E5\u30FC\u30B9\u30D5\u30A3\u30FC\u30C9URL\u3092\u5165\u529B\u3057\u3066\u3001\u4FDD\u5B58\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+planetGroupSubs.prompt.add=\u65B0\u3057\u3044\u30B5\u30D6\u30B9\u30AF\u30EA\u30D7\u30B7\u30E7\u30F3\u3092\u8FFD\u52A0\u3059\u308B\u306B\u306F\u3001\u30CB\u30E5\u30FC\u30B9\u30D5\u30A3\u30FC\u30C9URL\u3092\u5165\u529B\u3057\u3066\u3001\u4FDD\u5B58\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u304F\u3060\u3055\u3044\u3002
MediaFile.error.view=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u8868\u793A\u3059\u308B\u969B\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
mediaFileAdd.multipleNames=(\u8907\u6570\u306E\u540D\u524D)
macro.bookmark.urlFeed=\u30B5\u30A4\u30C8\u306ERSS\u30D5\u30A3\u30FC\u30C9\u306EURL
@@ -1188,10 +1188,10 @@
weblogEdit.enclosureURL=\u30A8\u30F3\u30AF\u30ED\u30FC\u30B8\u30E3URL
userRegister.success.ready=\u30D5\u30A9\u30FC\u30E0\u306F\u554F\u984C\u306A\u304F\u5165\u529B\u3055\u308C\u3066\u3044\u308B\u3088\u3046\u3067\u3059\u3002\u4EE5\u4E0B\u306E\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u304F\u3060\u3055\u3044\u3002
pageForm.tip=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u7DE8\u96C6\u3057\u3066\u3001\u751F\u6210\u3055\u308C\u308B\u30DA\u30FC\u30B8\u3092\u5909\u66F4\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3067\u4F7F\u7528\u3059\u308B\u3053\u3068\u306E\u3067\u304D\u308B\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304A\u3088\u3073\u30B3\u30FC\u30C9\u306B\u3064\u3044\u3066\u306FRoller\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30FB\u30AC\u30A4\u30C9\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u3053\u308C\u306F\u4E0A\u7D1A\u30E6\u30FC\u30B6\u30FC\u306E\u305F\u3081\u306E\u3082\u306E\u3067\u3042\u308A\u3001\u3082\u3057\u3042\u306A\u305F\u304CHTML\u306B\u8A73\u3057\u304F\u306A\u3044\u5834\u5408\u306F\u305D\u306E\u307E\u307E\u306B\u3057\u3066\u304A\u3044\u305F\u65B9\u304C\u826F\u3044\u3067\u3057\u3087\u3046\u3002
-planetSubscriptions.column.feedUrl=\u30D5\u30A3\u30FC\u30C9URL
+planetGroupSubs.column.feedUrl=\u30D5\u30A3\u30FC\u30C9URL
mediaFileSuccess.createPost=\u65B0\u3057\u304F\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u4F7F\u3063\u3066\u65B0\u3057\u3044\u30A8\u30F3\u30C8\u30EA\u3092\u4F5C\u6210\u3059\u308B
bookmarkForm.requiredFields={0}\u3068{1}\u306F\u5FC5\u9808\u3067\u3059\u3002
-planetSubscriptions.column.title=\u30BF\u30A4\u30C8\u30EB
+planetGroupSubs.column.title=\u30BF\u30A4\u30C8\u30EB
bookmarksForm.deleteFolder.confirm=\u30D5\u30A9\u30EB\u30C0\u3068\u3001\u30D5\u30A9\u30EB\u30C0\u306B\u542B\u307E\u308C\u308B\u30D6\u30C3\u30AF\u30DE\u30FC\u30AF\u3092\u524A\u9664\u3057\u3066\u3088\u308D\u3057\u3044\u3067\u3059\u304B?
planetSubscription.error=\u30CB\u30E5\u30FC\u30B9\u30D5\u30A3\u30FC\u30C9URL\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044
mediaFile.update.success=\u30E1\u30C7\u30A3\u30A2\u30FB\u30D5\u30A1\u30A4\u30EB\u306F\u6B63\u5E38\u306B\u66F4\u65B0\u3055\u308C\u307E\u3057\u305F\u3002
@@ -1241,7 +1241,7 @@
createWebsite.disabled=\u7533\u3057\u8A33\u3042\u308A\u307E\u305B\u3093\u304C\u3001\u65B0\u3057\u3044\u30D6\u30ED\u30B0\u306E\u4F5C\u6210\u306F\u3001\u7BA1\u7406\u8005\u306B\u3088\u3063\u3066\u7121\u52B9\u306B\u3055\u308C\u3066\u3044\u307E\u3059\u3002
macro.weblog.postcomment=\u30B3\u30E1\u30F3\u30C8\u3092\u6295\u7A3F
Entry.error.categoryNull=\u30AB\u30C6\u30B4\u30EA\u306F\u5FC5\u9808\u9805\u76EE\u3067\u3059
-planetSubscriptions.prompt.addMain=\u30B5\u30D6\u30B9\u30AF\u30EA\u30D7\u30B7\u30E7\u30F3\u3092\u3001\u30E1\u30A4\u30F3Planet\u30A2\u30B0\u30EA\u30B2\u30FC\u30BF\u30FC\u30FB\u30DA\u30FC\u30B8\u306B\u542B\u307E\u308C\u308B\u30CB\u30E5\u30FC\u30B9\u30D5\u30A3\u30FC\u30C9\u4E00\u89A7\u306B\u8FFD\u52A0\u3059\u308B\u306B\u306F\u3053\u306E\u30DA\u30FC\u30B8\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u65B0\u3057\u3044\u30B5\u30D6\u30B9\u30AF\u30EA\u30D7\u30B7\u30E7\u30F3\u3092\u8FFD\u52A0\u3059\u308B\u306B\u306F\u3001\u30CB\u30E5\u30FC\u30B9\u30D5\u30A3\u30FC\u30C9URL\u3092\u5165\u529B\u3057\u3066\u4FDD\u5B58\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+planetGroupSubs.prompt.addMain=\u30B5\u30D6\u30B9\u30AF\u30EA\u30D7\u30B7\u30E7\u30F3\u3092\u3001\u30E1\u30A4\u30F3Planet\u30A2\u30B0\u30EA\u30B2\u30FC\u30BF\u30FC\u30FB\u30DA\u30FC\u30B8\u306B\u542B\u307E\u308C\u308B\u30CB\u30E5\u30FC\u30B9\u30D5\u30A3\u30FC\u30C9\u4E00\u89A7\u306B\u8FFD\u52A0\u3059\u308B\u306B\u306F\u3053\u306E\u30DA\u30FC\u30B8\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u65B0\u3057\u3044\u30B5\u30D6\u30B9\u30AF\u30EA\u30D7\u30B7\u30E7\u30F3\u3092\u8FFD\u52A0\u3059\u308B\u306B\u306F\u3001\u30CB\u30E5\u30FC\u30B9\u30D5\u30A3\u30FC\u30C9URL\u3092\u5165\u529B\u3057\u3066\u4FDD\u5B58\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u304F\u3060\u3055\u3044\u3002
mediaFileView.audio=\u97F3\u58F0
weblogEdit.mediaCastResponseError=\u30A8\u30F3\u30AF\u30ED\u30FC\u30B8\u30E3\u30FB\u30B5\u30FC\u30D0\u306F\u30A8\u30E9\u30FC\u3092\u8FD4\u3057\u307E\u3057\u305F\u3002\u6B63\u3057\u3044URL\u3067\u3059\u304B?
themeEditor.importRequired=\u4ECA\u56DE\u304C\u521D\u3081\u3066\u306E\u30AB\u30B9\u30BF\u30E0\u30FB\u30C6\u30FC\u30DE\u306E\u4F7F\u7528\u3067\u3042\u308B\u305F\u3081\u3001\u65E2\u5B58\u306E\u30C6\u30FC\u30DE\u304B\u3089\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u30B3\u30D4\u30FC\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
@@ -1262,7 +1262,7 @@
pageForm.templateLanguage=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u8A00\u8A9E
mediaFile.deleteFolder.success=\u30D5\u30A9\u30EB\u30C0\u306F\u6B63\u5E38\u306B\u524A\u9664\u3055\u308C\u307E\u3057\u305F\u3002
mediaFileEdit.includesEnclosure=\u3053\u306E\u30A8\u30F3\u30C8\u30EA\u306F\u4EE5\u4E0B\u306E\u30E1\u30C7\u30A3\u30A2\u30FB\u30D5\u30A1\u30A4\u30EB\u30FB\u30A8\u30F3\u30AF\u30ED\u30FC\u30B8\u30E3\u3092\u542B\u307F\u307E\u3059\:
-planetSubscriptions.error.duringSave=\u91CD\u8907\u3059\u308B\u30B5\u30D6\u30B9\u30AF\u30EA\u30D7\u30B7\u30E7\u30F3? - {0}
+planetGroupSubs.error.duringSave=\u91CD\u8907\u3059\u308B\u30B5\u30D6\u30B9\u30AF\u30EA\u30D7\u30B7\u30E7\u30F3? - {0}
weblogEntry.pendingEntryContent=\u30E6\u30FC\u30B6\u30FC [{0}] \u306F\u3001\u3042\u306A\u305F\u306E\u30EC\u30D3\u30E5\u30FC\u3092\u53D7\u3051\u308B\u305F\u3081\u306B\u65B0\u3057\u3044\u30A8\u30F3\u30C8\u30EA\u30FC\u3092\u9001\u4FE1\u3057\u307E\u3057\u305F\u3002\u3053\u306E\u6295\u7A3F\u3092\u30EC\u30D3\u30E5\u30FC\u3057\u3001\u516C\u958B\u3059\u308B\u304B\u30E6\u30FC\u30B6\u30FC [{1}] \u304C\u518D\u5EA6\u7DE8\u96C6\u3067\u304D\u308B\u3088\u3046\u306B\u4E0B\u66F8\u304D\u3068\u3057\u3066\u4FDD\u5B58\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u30EC\u30D3\u30E5\u30FC\u5F85\u3061\u306E\u6295\u7A3F\u3092\u7DE8\u96C6\u3059\u308B\u305F\u3081\u306E\u30EA\u30F3\u30AF\u306F\u3053\u3061\u3089\u3067\u3059\:<{2}>
websiteSettings.analyticsTrackingCode=\u30C8\u30E9\u30C3\u30AD\u30F3\u30B0\u30FB\u30B3\u30FC\u30C9
mediaFileView.mb=MB
@@ -1295,7 +1295,7 @@
mediaFile.includeInGallery.error=\u30E1\u30C7\u30A3\u30A2\u30FB\u30D5\u30A1\u30A4\u30EB {0} \u3092\u30AE\u30E3\u30E9\u30EA\u30FC\u306B\u8FFD\u52A0\u3059\u308B\u969B\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
WeblogConfig.error.analyticsCodeSize=\u30A2\u30CA\u30EA\u30C6\u30A3\u30AF\u30B9\u30FB\u30C8\u30E9\u30C3\u30AD\u30F3\u30B0\u30FB\u30B3\u30FC\u30C9\u306F1200\u6587\u5B57\u4EE5\u5185\u3067\u306A\u3051\u308C\u3070\u306A\u308A\u307E\u305B\u3093
Entry.error.titleNull=\u30BF\u30A4\u30C8\u30EB\u306F\u5FC5\u9808\u9805\u76EE\u3067\u3059
-planetSubscriptions.subtitle.addMain=\u30CB\u30E5\u30FC\u30B9\u30D5\u30A3\u30FC\u30C9\u30FB\u30B5\u30D6\u30B9\u30AF\u30EA\u30D7\u30B7\u30E7\u30F3\u306E\u30E1\u30A4\u30F3\u30FB\u30EA\u30B9\u30C8\u3092\u7BA1\u7406\u3057\u307E\u3059\u3002
+planetGroupSubs.subtitle.addMain=\u30CB\u30E5\u30FC\u30B9\u30D5\u30A3\u30FC\u30C9\u30FB\u30B5\u30D6\u30B9\u30AF\u30EA\u30D7\u30B7\u30E7\u30F3\u306E\u30E1\u30A4\u30F3\u30FB\u30EA\u30B9\u30C8\u3092\u7BA1\u7406\u3057\u307E\u3059\u3002
mediaFile.move.errors=\u30E1\u30C7\u30A3\u30A2\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u79FB\u52D5\u3059\u308B\u969B\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
mediaFileSuccess.addAnother=\u4ED6\u306E\u30E1\u30C7\u30A3\u30A2\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3059\u308B
pingTarget.pingUrlMissing=Ping URL\u306F\u5FC5\u9808\u9805\u76EE\u3067\u3059
@@ -1389,7 +1389,7 @@
weblogEdit.enclosureLength=\u9577\u3055
weblogEntryQuery.label.startDate=\u958B\u59CB\u65E5
mediaFileEdit.pagetip=\u3053\u306E\u30E1\u30C7\u30A3\u30A2\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u60C5\u5831\u3092\u7DE8\u96C6\u3057\u307E\u3059\u3002\u305D\u308C\u305E\u308C\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u306F\u540D\u524D\u304C\u5FC5\u8981\u3067\u3059\u304C\u3001\u4ED6\u306E\u9805\u76EE\u306F\u7701\u7565\u3067\u304D\u307E\u3059\u3002
-planetSubscriptions.existingTitle=\u65E2\u5B58\u306E\u30B5\u30D6\u30B9\u30AF\u30EA\u30D7\u30B7\u30E7\u30F3
+planetGroupSubs.existingTitle=\u65E2\u5B58\u306E\u30B5\u30D6\u30B9\u30AF\u30EA\u30D7\u30B7\u30E7\u30F3
stylesheetEdit.default.success=\u30B9\u30BF\u30A4\u30EB\u30B7\u30FC\u30C8\u304C\u6B63\u5E38\u306B\u524A\u9664\u3055\u308C\u307E\u3057\u305F\u3002\u5171\u6709\u306E\u30C6\u30FC\u30DE\u30FB\u30C7\u30D5\u30A9\u30EB\u30C8\u304C\u6709\u52B9\u306B\u306A\u308A\u307E\u3057\u305F\u3002
pageRemoves.youSure=\u3053\u306E\u30DA\u30FC\u30B8\u3092\u524A\u9664\u3057\u307E\u3059\u304B\uFF1F
mediaFileAdd.fileLocation=\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u3092\u9078\u629E
@@ -1429,7 +1429,7 @@
mediaFileSuccess.bytes=\u30D0\u30A4\u30C8
mediaFileView.moveSelected=\u9078\u629E\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u30D5\u30A9\u30EB\u30C0\u306B\u79FB\u52D5\:
oauthKeys.urls=OAuth\u306EURL
-tabbedmenu.admin.planetSubscriptions=\u30B5\u30D6\u30B9\u30AF\u30EA\u30D7\u30B7\u30E7\u30F3
+tabbedmenu.admin.planetGroupSubs=\u30B5\u30D6\u30B9\u30AF\u30EA\u30D7\u30B7\u30E7\u30F3
weblogEdit.submittedForReview=\u30A8\u30F3\u30C8\u30EA\u30FC\u304C\u30EC\u30D3\u30E5\u30FC\u3092\u53D7\u3051\u308B\u305F\u3081\u306B\u9001\u4FE1\u3055\u308C\u307E\u3057\u305F
installer.upgradeTables=\u30C6\u30FC\u30D6\u30EB\u3092\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9\u3057\u307E\u3059\u304B?
configForm.none=\u6307\u5B9A\u306A\u3057
diff --git a/app/src/main/resources/ApplicationResources_ko.properties b/app/src/main/resources/ApplicationResources_ko.properties
index 5cad3a1..cc8144a 100644
--- a/app/src/main/resources/ApplicationResources_ko.properties
+++ b/app/src/main/resources/ApplicationResources_ko.properties
@@ -778,24 +778,24 @@
ConfigForm.message.saveSucceeded=\ud50c\ub798\ub2db \ud658\uacbd \uc124\uc815\uc774 \uc800\uc7a5\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
ConfigForm.error.saveFailed=\ud50c\ub798\ub2db \ud658\uacbd \uc124\uc815\uc744 \uc800\uc7a5\ud558\ub294 \uc911\uc5d0 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
-# ----------------------------------------------------- PlanetSubscriptions.jsp
+# ----------------------------------------------------- PlanetGroupSubs.jsp
-planetSubscriptions.title=\uad6c\ub3c5
+planetGroupSubs.title=\uad6c\ub3c5
-planetSubscriptions.subtitle.add=\
+planetGroupSubs.subtitle.add=\
\uadf8\ub8f9, [<b>{0}</b>] \ub0b4\uc758 \ub274\uc2a4\ud53c\ub4dc \uad6c\ub3c5 \uad00\ub9ac.
-planetSubscriptions.prompt.add=\uc0c8\ub85c\uc6b4 \uad6c\ub3c5\uc744 \ucd94\uac00\ud558\ub824\uba74, \
+planetGroupSubs.prompt.add=\uc0c8\ub85c\uc6b4 \uad6c\ub3c5\uc744 \ucd94\uac00\ud558\ub824\uba74, \
\ub274\uc2a4\ud53c\ub4dc URL\uc744 \uc785\ub825\ud558\uc2e0 \ud6c4 \uc800\uc7a5 \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uc2ed\uc2dc\uc624.
-planetSubscriptions.subtitle.addMain=\ub274\uc2a4\ud53c\ub4dc \uad6c\ub3c5 \uba54\uc778 \ubaa9\ub85d \uad00\ub9ac
-planetSubscriptions.prompt.addMain=\uc774 \ud398\uc774\uc9c0\ub97c \uc0ac\uc6a9\ud558\uc5ec \
+planetGroupSubs.subtitle.addMain=\ub274\uc2a4\ud53c\ub4dc \uad6c\ub3c5 \uba54\uc778 \ubaa9\ub85d \uad00\ub9ac
+planetGroupSubs.prompt.addMain=\uc774 \ud398\uc774\uc9c0\ub97c \uc0ac\uc6a9\ud558\uc5ec \
\uba54\uc778 \ud50c\ub798\ub2db \ud1b5\ud569 \uae30\ub2a5 \ud398\uc774\uc9c0\uc5d0 \ud3ec\ud568\ub420 \ub274\uc2a4\ud53c\ub4dc \ubaa9\ub85d\uc5d0 \uad6c\ub3c5\uc744 \ucd94\uac00\ud558\uc2ed\uc2dc\uc624. \
\uc0c8\ub85c\uc6b4 \uad6c\ub3c5\uc744 \ucd94\uac00\ud558\uc2dc\ub824\uba74 \ub274\uc2a4\ud53c\ub4dc URL\uc744 \uc785\ub825\ud558\uc2dc\uace0 \uc800\uc7a5 \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uc2ed\uc2dc\uc624.
-planetSubscriptions.existingTitle=\uae30\uc874 \uad6c\ub3c5
+planetGroupSubs.existingTitle=\uae30\uc874 \uad6c\ub3c5
-planetSubscriptions.column.title=\uc81c\ubaa9
-planetSubscriptions.column.feedUrl=\ud53c\ub4dc URL
+planetGroupSubs.column.title=\uc81c\ubaa9
+planetGroupSubs.column.feedUrl=\ud53c\ub4dc URL
planetSubscription.feedUrl=\ub274\uc2a4\ud53c\ub4dc URL
planetSubscription.success.deleted=\uad6c\ub3c5\uc774 \uc131\uacf5\uc801\uc73c\ub85c \uc0ad\uc81c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
@@ -804,7 +804,7 @@
planetSubscription.error=\ub274\uc2a4\ud53c\ub4dc URL\uc744 \uc124\uc815\ud574\uc57c \ud569\ub2c8\ub2e4.
planetSubscription.error.feedUrl=\ub274\uc2a4\ud53c\ub4dc URL\uc744 \uc785\ub825\ud558\uc2ed\uc2dc\uc624.
-planetSubscriptions.error.duringSave=\uc911\ubcf5\ub41c \uad6c\ub3c5\uc785\ub2c8\ub2e4 - {0}.
+planetGroupSubs.error.duringSave=\uc911\ubcf5\ub41c \uad6c\ub3c5\uc785\ub2c8\ub2e4 - {0}.
planetSubscription.error.deleting=\uac1d\uccb4 \uc0ad\uc81c \uc624\ub958
# ------------------------------------------------------------ PlanetGroups.jsp
@@ -882,7 +882,7 @@
tabbedmenu.admin.cacheInfo=\uce90\uc2dc \uc815\ubcf4
tabbedmenu.planet=\ud50c\ub798\ub2db \uad00\ub9ac\uc790
tabbedmenu.admin.planetConfig=\ud658\uacbd\uc124\uc815
-tabbedmenu.admin.planetSubscriptions=\uad6c\ub3c5
+tabbedmenu.admin.planetGroupSubs=\uad6c\ub3c5
tabbedmenu.admin.planetGroups=\ucee4\uc2a4\ud140 \uadf8\ub8f9
# ---------------------------------------------------------------------- Search
diff --git a/app/src/main/resources/ApplicationResources_ru.properties b/app/src/main/resources/ApplicationResources_ru.properties
index efa850c..ce5c695 100644
--- a/app/src/main/resources/ApplicationResources_ru.properties
+++ b/app/src/main/resources/ApplicationResources_ru.properties
@@ -464,19 +464,19 @@
planetConfig.title=\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 Planet
planetConfig.tip.description=\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E\u0449\u0435\u0435\u0441\u044F \u0432 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0435 \u043D\u043E\u0432\u043E\u0441\u0442\u043D\u043E\u0439 \u043B\u0435\u043D\u0442\u044B
-# ----------------------------------------------------- PlanetSubscriptions.jsp
+# ----------------------------------------------------- PlanetGroupSubs.jsp
-planetSubscriptions.title=\u041F\u043E\u0434\u043F\u0438\u0441\u043A\u0438
-planetSubscriptions.subtitle.add=\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0430\u043C\u0438 \u043D\u043E\u0432\u043E\u0441\u0442\u043D\u044B\u0445 \u043B\u0435\u043D\u0442 \u0432 \u0433\u0440\u0443\u043F\u043F\u0435 [<b>{0}</b>]
-planetSubscriptions.prompt.add=\u0427\u0442\u043E\u0431\u044B \u0434\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043D\u043E\u0432\u0443\u044E \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0443, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u0435, URL \u043D\u043E\u0432\u043E\u0441\u0442\u043D\u043E\u0439 \u043B\u0435\u043D\u0442\u044B, URL \u0441\u0430\u0439\u0442\u0430 \u0438 \u043D\u0430\u0436\u043C\u0438\u0442\u0435 \u043A\u043D\u043E\u043F\u043A\u0443 "\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C"
+planetGroupSubs.title=\u041F\u043E\u0434\u043F\u0438\u0441\u043A\u0438
+planetGroupSubs.subtitle.add=\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0430\u043C\u0438 \u043D\u043E\u0432\u043E\u0441\u0442\u043D\u044B\u0445 \u043B\u0435\u043D\u0442 \u0432 \u0433\u0440\u0443\u043F\u043F\u0435 [<b>{0}</b>]
+planetGroupSubs.prompt.add=\u0427\u0442\u043E\u0431\u044B \u0434\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043D\u043E\u0432\u0443\u044E \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0443, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u0435, URL \u043D\u043E\u0432\u043E\u0441\u0442\u043D\u043E\u0439 \u043B\u0435\u043D\u0442\u044B, URL \u0441\u0430\u0439\u0442\u0430 \u0438 \u043D\u0430\u0436\u043C\u0438\u0442\u0435 \u043A\u043D\u043E\u043F\u043A\u0443 "\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C"
-planetSubscriptions.subtitle.addMain=\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0433\u043B\u0430\u0432\u043D\u044B\u043C \u0441\u043F\u0438\u0441\u043A\u043E\u043C \u043D\u043E\u0432\u043E\u0441\u0442\u043D\u044B\u0445 \u043F\u043E\u0434\u043F\u0438\u0441\u043E\u043A
-planetSubscriptions.prompt.addMain=\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u044D\u0442\u0443 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443 \u0434\u043B\u044F \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u043F\u043E\u0434\u043F\u0438\u0441\u043E\u043A: \u0441\u043F\u0438\u0441\u043E\u043A \u043D\u043E\u0432\u043E\u0441\u0442\u043D\u044B\u0445 \u043B\u0435\u043D\u0442 \u043D\u0430 \u0433\u043B\u0430\u0432\u043D\u043E\u0439 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0435 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043E\u0440\u0430 Planet. \u0427\u0442\u043E\u0431\u044B \u0434\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043D\u043E\u0432\u0443\u044E \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0443, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u0435, URL \u043D\u043E\u0432\u043E\u0441\u0442\u043D\u043E\u0439 \u043B\u0435\u043D\u0442\u044B, URL \u0441\u0430\u0439\u0442\u0430 \u0438 \u043D\u0430\u0436\u043C\u0438\u0442\u0435 \u043A\u043D\u043E\u043F\u043A\u0443 "\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C"
+planetGroupSubs.subtitle.addMain=\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0433\u043B\u0430\u0432\u043D\u044B\u043C \u0441\u043F\u0438\u0441\u043A\u043E\u043C \u043D\u043E\u0432\u043E\u0441\u0442\u043D\u044B\u0445 \u043F\u043E\u0434\u043F\u0438\u0441\u043E\u043A
+planetGroupSubs.prompt.addMain=\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u044D\u0442\u0443 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443 \u0434\u043B\u044F \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u043F\u043E\u0434\u043F\u0438\u0441\u043E\u043A: \u0441\u043F\u0438\u0441\u043E\u043A \u043D\u043E\u0432\u043E\u0441\u0442\u043D\u044B\u0445 \u043B\u0435\u043D\u0442 \u043D\u0430 \u0433\u043B\u0430\u0432\u043D\u043E\u0439 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0435 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043E\u0440\u0430 Planet. \u0427\u0442\u043E\u0431\u044B \u0434\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043D\u043E\u0432\u0443\u044E \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0443, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u0435, URL \u043D\u043E\u0432\u043E\u0441\u0442\u043D\u043E\u0439 \u043B\u0435\u043D\u0442\u044B, URL \u0441\u0430\u0439\u0442\u0430 \u0438 \u043D\u0430\u0436\u043C\u0438\u0442\u0435 \u043A\u043D\u043E\u043F\u043A\u0443 "\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C"
-planetSubscriptions.existingTitle=\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0435 \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0438
+planetGroupSubs.existingTitle=\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0435 \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0438
-planetSubscriptions.column.title=\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A, \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435
-planetSubscriptions.column.feedUrl=URL \u043B\u0435\u043D\u0442\u044B
+planetGroupSubs.column.title=\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A, \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435
+planetGroupSubs.column.feedUrl=URL \u043B\u0435\u043D\u0442\u044B
planetSubscription.feedUrl=URL \u043D\u043E\u0432\u043E\u0441\u043D\u043E\u0439 \u043B\u0435\u043D\u0442\u044B
planetSubscription.success.deleted=\u041F\u043E\u0434\u043F\u0438\u0441\u043A\u0430 \u0443\u0441\u043F\u0435\u0448\u043D\u043E \u0443\u0434\u0430\u043B\u0435\u043D\u0430
@@ -484,7 +484,7 @@
planetSubscription.error=\u0414\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D URL \u043D\u043E\u0432\u043E\u0441\u0442\u043D\u043E\u0439 \u043B\u0435\u043D\u0442\u044B
planetSubscription.error.feedUrl=\u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F URL (\u0430\u0434\u0440\u0435\u0441) \u043D\u043E\u0432\u043E\u0441\u0442\u043D\u043E\u0439 \u043B\u0435\u043D\u0442\u044B
-planetSubscriptions.error.duringSave=\u041F\u0440\u043E\u0434\u0443\u0431\u043B\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0443? {0}
+planetGroupSubs.error.duringSave=\u041F\u0440\u043E\u0434\u0443\u0431\u043B\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0443? {0}
planetSubscription.error.deleting=\u041E\u0448\u0438\u0431\u043A\u0430 \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u0430
# ------------------------------------------------------------ PlanetGroups.jsp
@@ -537,7 +537,7 @@
tabbedmenu.admin.pingTargets=\u0410\u0434\u0440\u0435\u0441\u0430\u0442\u044B \u043F\u0438\u043D\u0433\u0430
tabbedmenu.planet=Planet Admin
tabbedmenu.admin.planetConfig=\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F
-tabbedmenu.admin.planetSubscriptions=\u041F\u043E\u0434\u043F\u0438\u0441\u043A\u0438
+tabbedmenu.admin.planetGroupSubs=\u041F\u043E\u0434\u043F\u0438\u0441\u043A\u0438
tabbedmenu.admin.planetGroups=\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0435 \u0433\u0440\u0443\u043F\u043F\u044B
diff --git a/app/src/main/resources/ApplicationResources_zh_CN.properties b/app/src/main/resources/ApplicationResources_zh_CN.properties
index 470a468..77c7ec8 100644
--- a/app/src/main/resources/ApplicationResources_zh_CN.properties
+++ b/app/src/main/resources/ApplicationResources_zh_CN.properties
@@ -369,15 +369,15 @@
planetSubscription.foundExisting=\u53D1\u73B0\u5DF2\u7ECF\u5B58\u5728\u8BA2\u9605 [{0}] \uFF0C\u66FF\u6362\u5417
planetSubscription.success.deleted=\u8BA2\u9605\u6210\u529F\u5220\u9664
planetSubscription.success.saved=\u8BA2\u9605\u5DF2\u4FDD\u5B58
-planetSubscriptions.column.feedUrl=\u65B0\u95FB\u79CD\u5B50URL
-planetSubscriptions.column.title=\u6807\u9898
-planetSubscriptions.error.duringSave=\u590D\u5236\u8BA2\u9605\uFF1F\uFF0D{0}
-planetSubscriptions.existingTitle=\u5B58\u5728\u7684\u8BA2\u9605
-planetSubscriptions.prompt.add=\u6DFB\u52A0\u4E00\u4E2A\u65B0\u7684\u8BA2\u9605\u5F88\u7B80\u5355\uFF1A\u8F93\u5165\u6807\u9898\u3001\u65B0\u95FB\u79CD\u5B50URL\u7136\u540E\u4FDD\u5B58\u3002
-planetSubscriptions.prompt.addMain=\u5728\u8FD9\u4E2A\u9875\u9762\u4E2D\u6DFB\u52A0\u3001\u7F16\u8F91\u8BA2\u9605\uFF1A\u65B0\u95FB\u79CD\u5B50\u5217\u8868\u5728\u884C\u661F\u65B0\u95FB\u805A\u5408\u5668\u9875\u9762\u4E4B\u4E2D\u3002\u6DFB\u52A0\u4E00\u4E2A\u65B0\u8BA2\u9605\u5F88\u7B80\u5355\uFF1A\u8F93\u5165\u6807\u9898\u3001\u65B0\u95FB\u79CD\u5B50URL\u7136\u540E\u4FDD\u5B58\u3002
-planetSubscriptions.subtitle.add=\u7BA1\u7406\u7FA4\u7EC4 [<b>{0}</b>] \u7684\u8BA2\u9605\u3002
-planetSubscriptions.subtitle.addMain=\u7BA1\u7406\u4E3B\u65B0\u95FB\u8BA2\u9605\u5217\u8868\u3002
-planetSubscriptions.title=\u8BA2\u9605
+planetGroupSubs.column.feedUrl=\u65B0\u95FB\u79CD\u5B50URL
+planetGroupSubs.column.title=\u6807\u9898
+planetGroupSubs.error.duringSave=\u590D\u5236\u8BA2\u9605\uFF1F\uFF0D{0}
+planetGroupSubs.existingTitle=\u5B58\u5728\u7684\u8BA2\u9605
+planetGroupSubs.prompt.add=\u6DFB\u52A0\u4E00\u4E2A\u65B0\u7684\u8BA2\u9605\u5F88\u7B80\u5355\uFF1A\u8F93\u5165\u6807\u9898\u3001\u65B0\u95FB\u79CD\u5B50URL\u7136\u540E\u4FDD\u5B58\u3002
+planetGroupSubs.prompt.addMain=\u5728\u8FD9\u4E2A\u9875\u9762\u4E2D\u6DFB\u52A0\u3001\u7F16\u8F91\u8BA2\u9605\uFF1A\u65B0\u95FB\u79CD\u5B50\u5217\u8868\u5728\u884C\u661F\u65B0\u95FB\u805A\u5408\u5668\u9875\u9762\u4E4B\u4E2D\u3002\u6DFB\u52A0\u4E00\u4E2A\u65B0\u8BA2\u9605\u5F88\u7B80\u5355\uFF1A\u8F93\u5165\u6807\u9898\u3001\u65B0\u95FB\u79CD\u5B50URL\u7136\u540E\u4FDD\u5B58\u3002
+planetGroupSubs.subtitle.add=\u7BA1\u7406\u7FA4\u7EC4 [<b>{0}</b>] \u7684\u8BA2\u9605\u3002
+planetGroupSubs.subtitle.addMain=\u7BA1\u7406\u4E3B\u65B0\u95FB\u8BA2\u9605\u5217\u8868\u3002
+planetGroupSubs.title=\u8BA2\u9605
tabbedmenu.admin=\u670D\u52A1\u5668\u7BA1\u7406
tabbedmenu.admin.cacheInfo=\u7F13\u5B58\u4FE1\u606F
tabbedmenu.admin.commentManagement=\u8BC4\u8BBA
@@ -385,7 +385,7 @@
tabbedmenu.admin.pingTargets=Ping\u76EE\u6807
tabbedmenu.admin.planetConfig=\u914D\u7F6E
tabbedmenu.admin.planetGroups=\u5B9A\u5236\u7FA4\u7EC4
-tabbedmenu.admin.planetSubscriptions=\u8BA2\u9605
+tabbedmenu.admin.planetGroupSubs=\u8BA2\u9605
tabbedmenu.admin.userAdmin=\u7528\u6237\u7BA1\u7406
tabbedmenu.bookmarks=\u4E66\u7B7E
tabbedmenu.bookmarks.allFolders=\u4E66\u7B7E\u5939
diff --git a/app/src/main/resources/org/apache/roller/weblogger/ui/struts2/admin/admin-menu.xml b/app/src/main/resources/org/apache/roller/weblogger/ui/struts2/admin/admin-menu.xml
index d090bdc..2e18a81 100644
--- a/app/src/main/resources/org/apache/roller/weblogger/ui/struts2/admin/admin-menu.xml
+++ b/app/src/main/resources/org/apache/roller/weblogger/ui/struts2/admin/admin-menu.xml
@@ -42,8 +42,8 @@
name="tabbedmenu.admin.planetConfig" />
<!-- globalPerms="admin" -->
- <menu-item action="planetSubscriptions"
- name="tabbedmenu.admin.planetSubscriptions" />
+ <menu-item action="planetGroupSubs"
+ name="tabbedmenu.admin.planetGroupSubs" />
<!-- globalPerms="admin" -->
<menu-item action="planetGroups"
diff --git a/app/src/main/resources/struts.xml b/app/src/main/resources/struts.xml
index 3f302f1..a8ed5cc 100644
--- a/app/src/main/resources/struts.xml
+++ b/app/src/main/resources/struts.xml
@@ -286,14 +286,15 @@
<result name="input" type="tiles">.PlanetConfig</result>
</action>
- <action name="planetSubscriptions"
- class="org.apache.roller.weblogger.planet.ui.PlanetSubscriptions">
- <result name="list" type="tiles">.PlanetSubscriptions</result>
+ <action name="planetGroupSubs"
+ class="org.apache.roller.weblogger.planet.ui.PlanetGroupSubs">
+ <result name="list" type="tiles">.PlanetGroupSubs</result>
</action>
<action name="planetGroups"
class="org.apache.roller.weblogger.planet.ui.PlanetGroups">
- <result name="list" type="tiles">.PlanetGroups</result>
+ <result name="groups_list" type="tiles">.PlanetGroups</result>
+ <result name="subscriptions_list" type="tiles">.PlanetGroupSubs</result>
</action>
</package>
diff --git a/app/src/main/webapp/WEB-INF/jsps/admin/PlanetConfig.jsp b/app/src/main/webapp/WEB-INF/jsps/admin/PlanetConfig.jsp
index c9a6607..936a426 100644
--- a/app/src/main/webapp/WEB-INF/jsps/admin/PlanetConfig.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/admin/PlanetConfig.jsp
@@ -19,67 +19,55 @@
<%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
-<p class="subtitle"><s:text name="planetConfig.subtitle" /></a>
-<p><s:text name="planetConfig.prompt" /></a>
+<p class="subtitle"><s:text name="planetConfig.subtitle"/></p>
+<p><s:text name="planetConfig.prompt"/></p>
-<s:form action="planetConfig!save">
- <s:hidden name="salt" />
- <table class="formtableNoDesc">
-
+<s:form action="planetConfig!save" theme="bootstrap" cssClass="form-horizontal">
+ <s:hidden name="salt"/>
+
<s:iterator var="dg" value="globalConfigDef.displayGroups">
-
- <tr>
- <td colspan="3"><h2><s:text name="%{#dg.key}" /></h2></td>
- </tr>
-
+
+ <h2><s:text name="%{#dg.key}"/></h2>
+
<s:iterator var="pd" value="#dg.propertyDefs">
-
- <tr>
- <td class="label"><s:text name="%{#pd.key}" /></td>
-
- <%-- "string" type means use a simple textbox --%>
- <s:if test="#pd.type == 'string'">
- <td class="field"><input type="text" name='<s:property value="#pd.name"/>' value='<s:property value="properties[#pd.name].value"/>' size="35" /></td>
- </s:if>
-
- <%-- "text" type means use a full textarea --%>
- <s:elseif test="#pd.type == 'text'">
- <td class="field">
- <textarea name='<s:property value="#pd.name"/>' rows="<s:property value="#pd.rows"/>" cols="<s:property value="#pd.cols"/>"><s:property value="properties[#pd.name].value"/></textarea>
- </td>
- </s:elseif>
-
- <%-- "boolean" type means use a checkbox --%>
- <s:elseif test="#pd.type == 'boolean'">
- <s:if test="properties[#pd.name].value == 'true'">
- <td class="field"><input type="checkbox" name='<s:property value="#pd.name"/>' CHECKED></td>
- </s:if>
- <s:else>
- <td class="field"><input type="checkbox" name='<s:property value="#pd.name"/>'></td>
- </s:else>
- </s:elseif>
-
- <%-- if it's something we don't understand then use textbox --%>
- <s:else>
- <td class="field"><input type="text" name='<s:property value="#pd.name"/>' size="50" /></td>
- </s:else>
-
- <td class="description"><%-- <s:text name="" /> --%></td>
- </tr>
-
+
+ <%-- "string" type means use a simple textbox --%>
+ <s:if test="#pd.type == 'string'">
+ <s:textfield name="%{#pd.name}" label="%{getText(#pd.key)}" size="35"
+ value="%{properties[#pd.name].value} "/>
+ </s:if>
+
+ <%-- "text" type means use a full textarea --%>
+ <s:elseif test="#pd.type == 'text'">
+ <s:textarea name="%{#pd.name}" label="%{getText(#pd.key)}" rows="#pd.rows" cols="#pd.cols"
+ value="%{properties[#pd.name].value} "/>
+ </s:elseif>
+
+ <%-- "boolean" type means use a checkbox --%>
+ <s:elseif test="#pd.type == 'boolean'">
+
+ <s:if test="properties[#pd.name].value == 'true'">
+ <s:checkbox name="%{#pd.name}" label="%{getText(#pd.key)}" cssClass="boolean"
+ fieldValue="true" checked="true" onchange="formChanged()"/>
+ </s:if>
+ <s:if test="properties[#pd.name].value != 'true'">
+ <s:checkbox name="%{#pd.name}" label="%{getText(#pd.key)}" cssClass="boolean"
+ fieldValue="false" onchange="formChanged()"/>
+ </s:if>
+
+ </s:elseif>
+
+ <%-- if it's something we don't understand then use textbox --%>
+ <s:else>
+ <s:textfield name="%{#pd.name}" label="%{getText(#pd.key)}" size="35"
+ value="%{properties[#pd.name].value}"/>
+ </s:else>
+
</s:iterator>
-
- <tr>
- <td colspan="2"> </td>
- </tr>
-
+
</s:iterator>
- </table>
-
- <div class="control">
- <input class="buttonBox" type="submit" value="<s:text name="generic.save"/>"/>
- </div>
-
+ <input class="btn btn-default" type="submit" value="<s:text name="generic.save"/>"/>
+
</s:form>
diff --git a/app/src/main/webapp/WEB-INF/jsps/admin/PlanetGroupSidebar.jsp b/app/src/main/webapp/WEB-INF/jsps/admin/PlanetGroupSidebar.jsp
new file mode 100644
index 0000000..8d2a29f
--- /dev/null
+++ b/app/src/main/webapp/WEB-INF/jsps/admin/PlanetGroupSidebar.jsp
@@ -0,0 +1,31 @@
+<%--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. The ASF licenses this file to You
+ under the Apache License, Version 2.0 (the "License"); you may not
+ use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License. For additional information regarding
+ copyright in this work, please see the NOTICE file in the top level
+ directory of this distribution.
+--%>
+<%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
+
+
+<%-- ================================================================== --%>
+<%-- add new custom planet group --%>
+
+<s:url var="createNewUrl" action="planetGroupSubs" namespace="/roller-ui/admin">
+ <s:param name="createNew">true</s:param>
+</s:url>
+
+<s:a href="%{createNewUrl}">
+ <span class="glyphicon glyphicon-plus" aria-hidden="true"> </span>
+ Create new Custom Planet Group
+</s:a>
diff --git a/app/src/main/webapp/WEB-INF/jsps/admin/PlanetGroupSubs.jsp b/app/src/main/webapp/WEB-INF/jsps/admin/PlanetGroupSubs.jsp
new file mode 100644
index 0000000..833d98f
--- /dev/null
+++ b/app/src/main/webapp/WEB-INF/jsps/admin/PlanetGroupSubs.jsp
@@ -0,0 +1,155 @@
+<%--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. The ASF licenses this file to You
+ under the Apache License, Version 2.0 (the "License"); you may not
+ use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License. For additional information regarding
+ copyright in this work, please see the NOTICE file in the top level
+ directory of this distribution.
+--%>
+<%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
+
+
+<%-- ================================================================== --%>
+<%-- add/edit custom planet group form --%>
+
+
+<%-- title for default planet group --%>
+<s:if test="groupHandle == 'all'" >
+ <p class="subtitle"><s:text name="planetGroupSubs.default.subtitle" /></p>
+ <p><s:text name="planetGroupSubs.default.desc" /></p>
+</s:if>
+
+<%-- title for a custom planet group --%>
+<s:else>
+ <p class="subtitle">
+ <s:text name="planetGroupSubs.custom.subtitle" >
+ <s:param value="groupHandle" />
+ </s:text>
+ </p>
+ <p><s:text name="planetGroupSubs.custom.desc" /></p>
+</s:else>
+
+
+<%-- only show edit form for custom group --%>
+<s:if test="groupHandle != 'all'">
+
+ <h3><s:text name="planetGroupSubs.properties"/></h3>
+
+ <s:if test="createNew">
+ <s:text name="planetGroupSubs.creatingNewGroup" />
+ </s:if>
+ <s:else>
+ <s:text name="planetGroupSubs.editingExistingGroup" />
+ </s:else>
+
+ <br/>
+
+ <s:form action="planetGroups!save" theme="bootstrap" cssClass="form-horizontal">
+ <s:hidden name="salt"/>
+ <s:hidden name="bean.id"/>
+
+ <s:textfield name="bean.title" size="40" maxlength="255"
+ onchange="validate()" onkeyup="validate()"
+ label="%{getText('planetGroups.title')}"
+ tooltip="%{getText('planetGroups.tip.title')}"/>
+
+ <s:textfield name="bean.handle" size="40" maxlength="255"
+ onchange="validate()" onkeyup="validate()"
+ label="%{getText('planetGroups.handle')}"
+ tooltip="%{getText('planetGroups.tip.handle')}"/>
+
+
+ <div class="form-group ">
+ <label class="col-sm-3 control-label"></label>
+ <div class="col-sm-9 controls">
+ <s:submit value="%{getText('generic.save')}" cssClass="btn btn-default"/>
+ <input type="button" class="btn"
+ value='<s:text name="generic.cancel" />'
+ onclick="window.location='<s:url action="planetGroups"/>'"/>
+ </div>
+ </div>
+
+ </s:form>
+
+</s:if>
+
+
+<%-- ================================================================== --%>
+<%-- table of planet group's subscription --%>
+
+<s:if test="!createNew">
+
+ <h3><s:text name="planetGroupSubs.subscriptions"/></h3>
+ <s:text name="planetGroupSubs.subscriptionDesc" />
+
+ <s:if test="%{subscriptions.isEmpty()}">
+ <s:if test="groupHandle == 'all'">
+ <s:text name="planetGroupSubs.noneDefinedDefault" />
+ </s:if>
+ <s:else>
+ <s:text name="planetGroupSubs.noneDefinedCustom" />
+ </s:else>
+ </s:if>
+ <s:else>
+
+ <table class="table">
+ <tr>
+ <th width="30%"> <s:text name="planetGroupSubs.column.title"/> </th>
+ <th width="55%"> <s:text name="planetGroupSubs.column.feedUrl"/> </th>
+ <th width="15%"> <s:text name="generic.delete"/> </th>
+ </tr>
+
+ <s:iterator var="sub" value="subscriptions">
+ <tr>
+ <td class="rollertable"><s:property value="#sub.title"/></td>
+ <td><s:set var="feedURL" value="#sub.feedURL"/> ${fn:substring(feedURL, 0, 100)} </td>
+ <td>
+ <a href="javascript: void(0);" onclick="confirmDelete('<s:property value="feedURL"/>')">
+ <span class="glyphicon glyphicon-remove" aria-hidden="true"> </span>
+ <s:text name="generic.delete"/>
+ </a>
+ </td>
+ </tr>
+ </s:iterator>
+ </table>
+
+ <%-- planet subscription delete logic --%>
+
+ <s:form action="planetGroupSubs!delete" id="deleteForm">
+ <input type="hidden" name="salt" value='<s:property value="salt" />' />
+ <input type="hidden" name="subUrl"/>
+ <input type="hidden" name="groupHandle"/>
+ </s:form>
+
+ </s:else>
+
+</s:if>
+
+
+<%-- ================================================================== --%>
+
+<script>
+
+ function confirmDelete(subUrl) {
+ if (window.confirm('<s:text name="planetGroupSubs.delete.confirm" />')) {
+ var form = $("#deleteForm");
+ form.find('input[name="subUrl"]').val(subUrl);
+ form.find('input[name="groupHandle"]').val('<s:property value="groupHandle" />');
+ form.submit();
+ }
+ }
+
+ function validateProperties() {
+
+ }
+
+</script>
\ No newline at end of file
diff --git a/app/src/main/webapp/WEB-INF/jsps/admin/PlanetGroupSubsSidebar.jsp b/app/src/main/webapp/WEB-INF/jsps/admin/PlanetGroupSubsSidebar.jsp
new file mode 100644
index 0000000..578ca58
--- /dev/null
+++ b/app/src/main/webapp/WEB-INF/jsps/admin/PlanetGroupSubsSidebar.jsp
@@ -0,0 +1,50 @@
+<%--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. The ASF licenses this file to You
+ under the Apache License, Version 2.0 (the "License"); you may not
+ use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License. For additional information regarding
+ copyright in this work, please see the NOTICE file in the top level
+ directory of this distribution.
+--%>
+<%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
+
+
+<%-- ================================================================== --%>
+<%-- add new planet feed subscription --%>
+
+<s:if test="!createNew">
+
+ <s:text name="planetGroupSubs.addFeed"/>
+
+ <s:form action="planetGroupSubs!save" theme="bootstrap" cssClass="form-horizontal">
+ <s:hidden name="salt"/>
+ <s:hidden name="groupHandle"/>
+ <s:textfield name="subUrl" size="40" maxlength="255" label="%{getText('planetSubscription.feedUrl')}"/>
+ <s:submit value="%{getText('generic.save')}" cssClass="btn btn-default" />
+ </s:form>
+
+</s:if>
+
+<%-- ================================================================== --%>
+
+<script>
+
+ function isValidUrl(url) {
+ return /^(http|https|ftp):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/i.test(url);
+ }
+
+ function validateUrl() {
+
+ }
+
+</script>
+
diff --git a/app/src/main/webapp/WEB-INF/jsps/admin/PlanetGroups.jsp b/app/src/main/webapp/WEB-INF/jsps/admin/PlanetGroups.jsp
index f518ac6..b84503c 100644
--- a/app/src/main/webapp/WEB-INF/jsps/admin/PlanetGroups.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/admin/PlanetGroups.jsp
@@ -17,109 +17,69 @@
--%>
<%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
-<p class="subtitle"><s:text name="planetGroups.subtitle" /></p>
+<p class="subtitle"><s:text name="planetGroups.subtitle"/></p>
-<p>
- <s:if test="group == null" >
- <s:text name="planetGroups.prompt.add" />
- </s:if>
- <s:else>
- <s:text name="planetGroups.prompt.edit" />
- </s:else>
-</p>
-<s:form action="planetGroups!save">
- <s:hidden name="salt" />
- <s:hidden name="bean.id" />
-
- <div class="formrow">
- <label for="bean.title" class="formrow" /><s:text name="planetGroups.title" /></label>
- <s:textfield name="bean.title" size="40" maxlength="255" />
- <img src="<s:url value="/images/help.png"/>" alt="help" title='<s:text name="planetGroups.tip.title" />' />
- </div>
-
- <div class="formrow">
- <label for="bean.handle" class="formrow" /><s:text name="planetGroups.handle" /></label>
- <s:textfield name="bean.handle" size="40" maxlength="255" />
- <img src="<s:url value="/images/help.png"/>" alt="help" title='<s:text name="planetGroups.tip.handle" />' />
- </div>
-
- <p />
-
- <div class="formrow">
- <label class="formrow" /> </label>
- <s:submit value="%{getText('generic.save')}" />
-
- <input type="button"
- value='<s:text name="generic.cancel" />'
- onclick="window.location='<s:url action="planetGroups"/>'"/>
-
- <s:if test="group != null" >
-
- <s:url var="deleteUrl" action="planetGroups!delete">
- <s:param name="bean.id" value="%{bean.id}" />
- </s:url>
- <input type="button"
- value='<s:text name="generic.delete" />'
- onclick="window.location='<s:property value="%{deleteUrl}"/>'" />
- </s:if>
- </div>
-
-</s:form>
+<%-- ================================================================== --%>
+<%-- table of custom planet groups (excluding the default group) --%>
-<br style="clear:left" />
+<s:if test="%{!groups.isEmpty()}">
-<h2><s:text name="planetGroups.existingTitle" /></h2>
-<p><i><s:text name="planetGroups.existingPrompt" /></i></p>
+ <table class="table">
-<table class="rollertable">
-<tr class="rHeaderTr">
- <th class="rollertable" width="30%">
- <s:text name="planetGroups.column.title" />
- </th>
- <th class="rollertable" width="50%">
- <s:text name="planetGroups.column.handle" />
- </th>
- <th class="rollertable" width="10%">
- <s:text name="generic.edit" />
- </th>
- <th class="rollertable" width="10%">
- <s:text name="planetGroups.column.subscriptions" />
- </th>
-</tr>
+ <tr>
+ <th width="50%"> <s:text name="planetGroups.column.title"/> </th>
+ <th width="20%"> <s:text name="planetGroups.column.handle"/> </th>
+ <th width="15%"> <s:text name="generic.edit"/> </th>
+ <th width="15%"> <s:text name="generic.delete"/> </th>
+ </tr>
-<s:iterator var="group" value="groups" status="rowstatus">
- <s:if test="#rowstatus.odd == true">
- <tr class="rollertable_odd">
- </s:if>
- <s:else>
- <tr class="rollertable_even">
- </s:else>
-
- <td class="rollertable">
- <s:property value="#group.title" />
- </td>
-
- <td class="rollertable">
- <s:property value="#group.handle" />
- </td>
-
- <td class="rollertable">
- <s:url var="groupUrl" action="planetGroups">
- <s:param name="bean.id" value="#group.id" />
- </s:url>
- <s:a href="%{groupUrl}"><img src='<s:url value="/images/page_white_edit.png"/>' border="0" alt="icon"
- title="<s:text name='planetGroups.edit.tip' />" /></s:a>
- </td>
-
- <td class="rollertable">
- <s:url var="subUrl" action="planetSubscriptions">
- <s:param name="groupHandle" value="#group.handle" />
- </s:url>
- <s:a href="%{subUrl}"><img src='<s:url value="/images/page_white_edit.png"/>' border="0" alt="icon"
- title="<s:text name='planetGroups.subscriptions.tip' />" /></s:a>
- </td>
-
- </tr>
-</s:iterator>
-</table>
+ <s:iterator var="group" value="groups">
+ <tr>
+ <td> <s:property value="#group.title"/> </td>
+ <td> <s:property value="#group.handle"/> </td>
+
+ <td>
+ <s:url var="groupUrl" action="planetGroupSubs">
+ <s:param name="bean.id" value="#group.id"/>
+ </s:url>
+ <s:a href="%{groupUrl}">
+ <span class="glyphicon glyphicon-edit" aria-hidden="true"></span>
+ <s:text name='generic.edit'/>
+ </s:a>
+ </td>
+
+ <td>
+ <a href="javascript: void(0);" onclick="confirmDelete('<s:property value="#group.handle"/>')">
+ <span class="glyphicon glyphicon-remove" aria-hidden="true"> </span>
+ <s:text name="generic.delete"/>
+ </a>
+ </td>
+
+ </tr>
+ </s:iterator>
+
+ </table>
+
+ <%-- planet group delete logic --%>
+
+ <s:form action="planetGroups!delete" id="deleteForm">
+ <input type="hidden" name="salt" value='<s:property value="salt" />' />
+ <input type="hidden" name="bean.handle"/>
+ </s:form>
+
+ <script>
+ function confirmDelete(groupHandle) {
+ if (window.confirm('<s:text name="planetGroups.delete.confirm" />')) {
+ var form = $("#deleteForm");
+ form.find('input[name="bean.handle"]').val(groupHandle);
+ form.submit();
+ }
+ }
+ </script>
+
+</s:if>
+<s:else>
+ <s:text name="planetGroups.noneDefined"/>
+</s:else>
+
diff --git a/app/src/main/webapp/WEB-INF/jsps/admin/PlanetSubscriptions.jsp b/app/src/main/webapp/WEB-INF/jsps/admin/PlanetSubscriptions.jsp
deleted file mode 100644
index 32b9e41..0000000
--- a/app/src/main/webapp/WEB-INF/jsps/admin/PlanetSubscriptions.jsp
+++ /dev/null
@@ -1,101 +0,0 @@
-<%--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. The ASF licenses this file to You
- under the Apache License, Version 2.0 (the "License"); you may not
- use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License. For additional information regarding
- copyright in this work, please see the NOTICE file in the top level
- directory of this distribution.
---%>
-<%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
-
-<script>
-function confirmSubDelete(subUrl) {
- if (window.confirm('Are you sure you want to remove this subscription?')) {
- document.location.href='<s:url action="planetSubscriptions!delete" />?groupHandle=<s:property value="groupHandle"/>&subUrl='+encodeURIComponent(subUrl);
- }
-}
-</script>
-
-
-<s:if test="groupHandle == 'all'" >
- <p class="subtitle"><s:text name="planetSubscriptions.subtitle.addMain" /></p>
- <p><s:text name="planetSubscriptions.prompt.addMain" /></p>
-</s:if>
-<s:else>
- <p class="subtitle">
- <s:text name="planetSubscriptions.subtitle.add" >
- <s:param value="groupHandle" />
- </s:text>
- </p>
- <p><s:text name="planetSubscriptions.prompt.add" /></p>
-</s:else>
-
-
-<s:form action="planetSubscriptions!save">
- <s:hidden name="salt" />
- <s:hidden name="groupHandle" />
-
- <div class="formrow">
- <label for="feedURL" class="formrow" /><s:text name="planetSubscription.feedUrl" /></label>
- <s:textfield name="subUrl" size="40" maxlength="255" />
- <s:submit value="%{getText('generic.save')}" />
- </div>
-</s:form>
-
-<br style="clear:left" />
-
-<h2>
- <s:text name="planetSubscriptions.existingTitle" />
- <s:if test="groupHandle != 'all'" >
- [group: <s:property value="groupHandle" />]
- </s:if>
-</h2>
-
-<table class="rollertable">
- <tr class="rHeaderTr">
- <th class="rollertable" width="30%">
- <s:text name="planetSubscriptions.column.title" />
- </th>
- <th class="rollertable" width="60%">
- <s:text name="planetSubscriptions.column.feedUrl" />
- </th>
- <th class="rollertable" width="10%">
- <s:text name="generic.delete" />
- </th>
- </tr>
- <s:iterator var="sub" value="subscriptions" status="rowstatus">
- <s:if test="#rowstatus.odd == true">
- <tr class="rollertable_odd">
- </s:if>
- <s:else>
- <tr class="rollertable_even">
- </s:else>
-
- <td class="rollertable">
- <s:property value="#sub.title" />
- </td>
-
- <td class="rollertable">
- <s:set var="feedURL" value="#sub.feedURL" />
- ${fn:substring(feedURL, 0, 100)}
- </td>
-
- <td class="rollertable">
- <img src='<s:url value="/images/delete.png"/>' />
- <a href="javascript: void(0);" onclick="confirmSubDelete('<s:property value="feedURL"/>')">
- <s:text name="generic.delete"/>
- </a>
- </td>
-
- </tr>
- </s:iterator>
-</table>
diff --git a/app/src/main/webapp/WEB-INF/jsps/core/MainMenuSidebar.jsp b/app/src/main/webapp/WEB-INF/jsps/core/MainMenuSidebar.jsp
index ba13272..29cbb23 100644
--- a/app/src/main/webapp/WEB-INF/jsps/core/MainMenuSidebar.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/core/MainMenuSidebar.jsp
@@ -58,13 +58,6 @@
<a href="<s:url action="globalConfig" namespace="/roller-ui/admin" />"><s:text name="yourWebsites.globalAdmin" /></a></h4>
<p><s:text name="yourWebsites.globalAdmin.desc" /></p>
- <%-- Planet settings --%>
-
- <s:if test="getBooleanProp('planet.aggregator.enabled')">
- <h4><span class="glyphicon glyphicon-globe" aria-hidden="true"></span>
- <a href="<s:url action="planetConfig" namespace="/roller-ui/admin" />"><s:text name="yourWebsites.planetAdmin" /></a></h4>
- <p><s:text name="yourWebsites.planetAdmin.desc" /></p>
- </s:if>
</s:if>
<br />
diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/Bookmarks.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/Bookmarks.jsp
index a68ffd1..0fe20f2 100644
--- a/app/src/main/webapp/WEB-INF/jsps/editor/Bookmarks.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/editor/Bookmarks.jsp
@@ -791,11 +791,7 @@
}
function isValidUrl(url) {
- if (/^(http|https|ftp):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/i.test(url)) {
- return true;
- } else {
- return false;
- }
+ return /^(http|https|ftp):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/i.test(url);
}
function saveBookmark() {
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/bannerStatus.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/bannerStatus.jsp
index f3b3c28..4af4c2e 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/bannerStatus.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/bannerStatus.jsp
@@ -52,6 +52,7 @@
<s:set var="tabMenu" value="menu"/>
<s:if test="#tabMenu != null">
+
<s:iterator var="tab" value="#tabMenu.tabs">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
@@ -70,6 +71,7 @@
</ul>
</li>
</s:iterator>
+
</s:if>
</s:if>
@@ -78,6 +80,7 @@
<s:set var="tabMenu" value="menu"/>
<s:if test="#tabMenu != null">
+
<s:iterator var="tab" value="#tabMenu.tabs">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
@@ -95,6 +98,7 @@
</ul>
</li>
</s:iterator>
+
</s:if>
</s:if>
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-errorpage.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-errorpage.jsp
index 12ecdc6..6b46c64 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-errorpage.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-errorpage.jsp
@@ -31,7 +31,7 @@
<tiles:insertAttribute name="banner" />
</div>
- <div id="wrapper">
+ <div id="wrapper" class="container">
<div id="leftcontent_wrap">
<div id="leftcontent">
</div>
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-installpage.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-installpage.jsp
index 879097e..dfb5bcd 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-installpage.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-installpage.jsp
@@ -31,7 +31,7 @@
<tiles:insertAttribute name="banner" />
</div>
- <div id="wrapper">
+ <div id="wrapper" class="container">
<div id="leftcontent_wrap">
<div id="leftcontent">
</div>
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-loginpage.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-loginpage.jsp
index 83a5022..e9d503f 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-loginpage.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-loginpage.jsp
@@ -32,16 +32,19 @@
<tiles:insertAttribute name="banner"/>
<tiles:insertAttribute name="bannerStatus"/>
-<div class="row">
- <div class="col-md-4"></div>
+<div class="container">
- <div class="col-md-4">
- <h1 class="roller-page-title"><s:property value="pageTitle"/></h1>
- <tiles:insertAttribute name="messages"/>
- <tiles:insertAttribute name="content"/>
+ <div class="row">
+ <div class="col-md-4"></div>
+
+ <div class="col-md-4">
+ <h1 class="roller-page-title"><s:property value="pageTitle"/></h1>
+ <tiles:insertAttribute name="messages"/>
+ <tiles:insertAttribute name="content"/>
+ </div>
+
+ <div class="col-md-4"></div>
</div>
-
- <div class="col-md-4"></div>
</div>
</body>
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-mainmenupage.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-mainmenupage.jsp
index 0c89f15..939bbef 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-mainmenupage.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-mainmenupage.jsp
@@ -33,26 +33,29 @@
<tiles:insertAttribute name="bannerStatus"/>
-<div class="row">
-
- <div class="col-md-3 roller-column-left">
- <div class="panel panel-default">
- <div class="panel-body">
- <tiles:insertAttribute name="sidebar"/>
- </div>
- </div>
- </div>
-
- <div class="col-md-9 roller-column-right">
+<div class="container">
- <div class="panel panel-default">
- <div class="panel-body">
- <h2 class="roller-page-title"><s:property value="pageTitle"/></h2>
- <tiles:insertAttribute name="messages"/>
- <tiles:insertAttribute name="content"/>
+ <div class="row">
+
+ <div class="col-md-3 roller-column-left">
+ <div class="panel panel-default">
+ <div class="panel-body">
+ <tiles:insertAttribute name="sidebar"/>
+ </div>
</div>
</div>
+ <div class="col-md-9 roller-column-right">
+
+ <div class="panel panel-default">
+ <div class="panel-body">
+ <h2 class="roller-page-title"><s:property value="pageTitle"/></h2>
+ <tiles:insertAttribute name="messages"/>
+ <tiles:insertAttribute name="content"/>
+ </div>
+ </div>
+
+ </div>
</div>
</div>
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-popuppage.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-popuppage.jsp
index 91300e3..1455f3d 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-popuppage.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-popuppage.jsp
@@ -27,7 +27,7 @@
<body>
- <div id="wrapper">
+ <div id="wrapper" class="container">
<div id="leftcontent_wrap">
<div id="leftcontent">
</div>
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-simple-tabbedpage.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-simple-tabbedpage.jsp
index a2bff81..4b7197b 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-simple-tabbedpage.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-simple-tabbedpage.jsp
@@ -30,13 +30,16 @@
<tiles:insertAttribute name="bannerStatus"/>
-<div class="row">
- <div class="col-md-12 roller-column-left">
- <div class="panel panel-default">
- <div class="panel-body">
- <tiles:insertAttribute name="messages"/>
- <h2 class="roller-page-title"><s:property value="pageTitle"/></h2>
- <tiles:insertAttribute name="content"/>
+<div class="container">
+
+ <div class="row">
+ <div class="col-md-12 roller-column-left">
+ <div class="panel panel-default">
+ <div class="panel-body">
+ <tiles:insertAttribute name="messages"/>
+ <h2 class="roller-page-title"><s:property value="pageTitle"/></h2>
+ <tiles:insertAttribute name="content"/>
+ </div>
</div>
</div>
</div>
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-simplepage.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-simplepage.jsp
index 21a1d8b..cd11777 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-simplepage.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-simplepage.jsp
@@ -32,20 +32,23 @@
<tiles:insertAttribute name="banner"/>
<tiles:insertAttribute name="bannerStatus"/>
-<div class="row">
- <div class="col-md-2"></div>
+<div class="container">
- <div class="col-md-8">
- <h1 class="roller-page-title"><s:property value="pageTitle"/></h1>
- <tiles:insertAttribute name="messages"/>
- <div class="panel">
- <div class="panel-body">
- <tiles:insertAttribute name="content"/>
+ <div class="row">
+ <div class="col-md-2"></div>
+
+ <div class="col-md-8">
+ <h1 class="roller-page-title"><s:property value="pageTitle"/></h1>
+ <tiles:insertAttribute name="messages"/>
+ <div class="panel">
+ <div class="panel-body">
+ <tiles:insertAttribute name="content"/>
+ </div>
</div>
</div>
- </div>
- <div class="col-md-2"></div>
+ <div class="col-md-2"></div>
+ </div>
</div>
</body>
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-tabbedpage.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-tabbedpage.jsp
index 6bd6ca2..9ac335b 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-tabbedpage.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-tabbedpage.jsp
@@ -29,40 +29,43 @@
</head>
<body>
-<tiles:insertAttribute name="bannerStatus" />
+<tiles:insertAttribute name="bannerStatus"/>
-<tilesx:useAttribute name="sidebar" id="sidebar" classname="java.lang.String" />
+<tilesx:useAttribute name="sidebar" id="sidebar" classname="java.lang.String"/>
+<div class="container">
-<div class="row">
+ <div class="row">
- <div class="col-md-8 roller-column-left">
- <div class="panel panel-default">
- <div class="panel-body">
- <tiles:insertAttribute name="messages"/>
- <h2 class="roller-page-title"><s:property value="pageTitle"/></h2>
- <tiles:insertAttribute name="content"/>
- </div>
- </div>
- </div>
-
- <div class="col-md-4 roller-column-right">
- <div class="panel panel-default">
- <div class="panel-body">
- <s:if test="authenticatedUser != null || actionWeblog != null">
- <tiles:insertAttribute name="userStatus"/>
- </s:if>
- </div>
- </div>
-
- <c:if test="${sidebar != '/WEB-INF/jsps/tiles/empty.jsp'}">
- <s:property value="sidebar" />
+ <div class="col-md-8 roller-column-left">
<div class="panel panel-default">
- <div class="panel-body">
- <tiles:insertAttribute name="sidebar"/>
+ <div class="panel-body" style="min-height: 30em">
+ <tiles:insertAttribute name="messages"/>
+ <h2 class="roller-page-title"><s:property value="pageTitle"/></h2>
+ <tiles:insertAttribute name="content"/>
</div>
</div>
- </c:if>
+ </div>
+
+ <div class="col-md-4 roller-column-right">
+ <div class="panel panel-default">
+ <div class="panel-body">
+ <s:if test="authenticatedUser != null || actionWeblog != null">
+ <tiles:insertAttribute name="userStatus"/>
+ </s:if>
+ </div>
+ </div>
+
+ <c:if test="${sidebar != '/WEB-INF/jsps/tiles/empty.jsp'}">
+ <s:property value="sidebar"/>
+ <div class="panel panel-default">
+ <div class="panel-body">
+ <tiles:insertAttribute name="sidebar"/>
+ </div>
+ </div>
+ </c:if>
+
+ </div>
</div>
diff --git a/app/src/main/webapp/WEB-INF/tiles.xml b/app/src/main/webapp/WEB-INF/tiles.xml
index 1968f67..4f38a19 100644
--- a/app/src/main/webapp/WEB-INF/tiles.xml
+++ b/app/src/main/webapp/WEB-INF/tiles.xml
@@ -204,12 +204,14 @@
<put-attribute name="content" value="/WEB-INF/jsps/admin/PlanetConfig.jsp" />
</definition>
- <definition name=".PlanetSubscriptions" extends=".tiles-tabbedpage" >
- <put-attribute name="content" value="/WEB-INF/jsps/admin/PlanetSubscriptions.jsp" />
+ <definition name=".PlanetGroupSubs" extends=".tiles-tabbedpage" >
+ <put-attribute name="content" value="/WEB-INF/jsps/admin/PlanetGroupSubs.jsp" />
+ <put-attribute name="sidebar" value="/WEB-INF/jsps/admin/PlanetGroupSubsSidebar.jsp" />
</definition>
<definition name=".PlanetGroups" extends=".tiles-tabbedpage" >
<put-attribute name="content" value="/WEB-INF/jsps/admin/PlanetGroups.jsp" />
+ <put-attribute name="sidebar" value="/WEB-INF/jsps/admin/PlanetGroupSidebar.jsp" />
</definition>
<!-- weblog editor pages (and associates) -->
diff --git a/app/src/main/webapp/roller-ui/styles/roller.css b/app/src/main/webapp/roller-ui/styles/roller.css
index 8c8a5fd..fd9a8a5 100644
--- a/app/src/main/webapp/roller-ui/styles/roller.css
+++ b/app/src/main/webapp/roller-ui/styles/roller.css
@@ -22,6 +22,10 @@
border:0;
}
+.container {
+ margin: 1em;
+}
+
.roller-page-title {
margin-top: 0px;
margin-bottom: 5px;
@@ -292,7 +296,6 @@
}
-
/* theme edit */
.row-display-flex {