Enhanced globalization support, added documentation.
git-svn-id: https://svn.libreccm.org/ccm/trunk@2388 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
28834f8c6b
commit
6145059e25
|
|
@ -54,7 +54,7 @@ public class ThreadPageBuilder implements PageBuilder, Constants {
|
|||
|
||||
Page threadPage = PageFactory.buildPage(Constants.FORUM_XML_PREFIX,
|
||||
"Threads", "forumThreadPage");
|
||||
//Output the title in an easy to find place
|
||||
//Output the forum title and introduction test in an easy to find place
|
||||
threadPage.add(new SimpleComponent(){
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
*/
|
||||
package com.arsdigita.forum.ui;
|
||||
|
||||
import com.arsdigita.forum.util.GlobalizationUtil;
|
||||
import java.io.File;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -63,13 +64,14 @@ import com.arsdigita.util.Assert;
|
|||
import com.arsdigita.xml.Element;
|
||||
|
||||
/**
|
||||
* @author Chris Gilbert <a href="mailto:chris.gilbert@westsussex.gov.uk">chris.gilbert@westsussex.gov.uk</a>
|
||||
*
|
||||
* Wizard step to attach files to a post. This step may be bypassed
|
||||
* if a forum administrator changes the forum settings on the UI
|
||||
* Wizard step to attach files to a post. This step may be bypassed if a forum
|
||||
* administrator changes the forum settings on the UI.
|
||||
*
|
||||
* nb - a simpler reuseable generic wizard file attachments step has been created
|
||||
* forum will be refactored to use it in the future. see ccm-wsx-wizard-steps in contrib
|
||||
* forum will be refactored to use it in the future.
|
||||
* see ccm-wsx-wizard-steps in contrib
|
||||
*
|
||||
* @author Chris Gilbert <a href="mailto:chris.gilbert@westsussex.gov.uk">chris.gilbert@westsussex.gov.uk</a>
|
||||
*/
|
||||
public class AttachedFilesStep
|
||||
extends FormStep
|
||||
|
|
@ -104,7 +106,7 @@ public class AttachedFilesStep
|
|||
|
||||
m_upload = new FileUpload("file", true);
|
||||
m_upload.addValidationListener(new NotEmptyValidationListener(
|
||||
Text
|
||||
GlobalizationUtil
|
||||
.gz("forum.ui.validation.file_null")) {
|
||||
public void validate(ParameterEvent e) {
|
||||
// don't fire validation if the next or previous button of the wizard has been pressed
|
||||
|
|
@ -121,12 +123,10 @@ public class AttachedFilesStep
|
|||
m_description = new TextArea("fileDescription");
|
||||
m_description.setCols(20);
|
||||
m_description.setRows(5);
|
||||
|
||||
m_description
|
||||
.addValidationListener(new StringInRangeValidationListener(
|
||||
m_description.addValidationListener(new StringInRangeValidationListener(
|
||||
0,
|
||||
4000,
|
||||
Text.gz("forum.ui.validation.file_description_too_long")) {
|
||||
GlobalizationUtil.gz("forum.ui.validation.file_description_too_long")) {
|
||||
public void validate(ParameterEvent e)
|
||||
throws FormProcessException {
|
||||
// don't fire validation if the next or previous button of the wizard has been pressed
|
||||
|
|
@ -209,9 +209,8 @@ public class AttachedFilesStep
|
|||
if (!m_addFile.isSelected(state)
|
||||
&& StringUtils.isNotBlank((String) m_upload.getValue(state))) {
|
||||
throw new FormProcessException(
|
||||
(String) Text
|
||||
.gz("forum.ui.validation.file_not_uploaded")
|
||||
.localize());
|
||||
(String) GlobalizationUtil.gzAsStr(
|
||||
"forum.ui.validation.file_not_uploaded"));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -304,6 +303,7 @@ public class AttachedFilesStep
|
|||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void register(Page p) {
|
||||
super.register(p);
|
||||
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
*/
|
||||
package com.arsdigita.forum.ui;
|
||||
|
||||
import com.arsdigita.forum.util.GlobalizationUtil;
|
||||
import com.arsdigita.bebop.PageState;
|
||||
import com.arsdigita.bebop.Label;
|
||||
import com.arsdigita.bebop.event.PrintEvent;
|
||||
|
|
@ -58,7 +59,7 @@ public class CategoryWidget extends SingleSelect implements Constants {
|
|||
if (forum.noCategoryPostsAllowed()) {
|
||||
target.addOption(new Option(
|
||||
TOPIC_NONE.toString(),
|
||||
new Label(Text.gz("forum.ui.topic.none"))));
|
||||
new Label(GlobalizationUtil.gz("forum.ui.topic.none"))));
|
||||
}
|
||||
final Category root = forum.getRootCategory();
|
||||
if (root != null) {
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
*/
|
||||
package com.arsdigita.forum.ui;
|
||||
|
||||
import com.arsdigita.forum.util.GlobalizationUtil;
|
||||
import com.arsdigita.forum.ForumContext;
|
||||
import com.arsdigita.forum.Post;
|
||||
import com.arsdigita.forum.ThreadSubscription;
|
||||
|
|
@ -81,7 +82,7 @@ public class DiscussionThreadSimpleView extends ModalContainer implements Consta
|
|||
private ACSObjectSelectionModel m_postModel;
|
||||
|
||||
/**
|
||||
* Default Constructor creates the component of the discussio view.
|
||||
* Default Constructor creates the component of the discussion view.
|
||||
* The discussion page contains three components: a MessageList,
|
||||
* a ThreadEdit component, and a ThreadReply component.
|
||||
*
|
||||
|
|
@ -94,7 +95,7 @@ public class DiscussionThreadSimpleView extends ModalContainer implements Consta
|
|||
}
|
||||
|
||||
/**
|
||||
* Internal helper method for constructor
|
||||
* Internal helper method for constructor.
|
||||
* Add the thread components to the modal container and maintain
|
||||
* references for event manipulation purposes.
|
||||
*/
|
||||
|
|
@ -117,7 +118,8 @@ public class DiscussionThreadSimpleView extends ModalContainer implements Consta
|
|||
Constants.FORUM_XML_NS);
|
||||
|
||||
// Offer links to return to index or control alerts.
|
||||
Link returnLink = new Link(new Label(Text.gz("forum.ui.thread.viewAll")),
|
||||
Link returnLink = new Link(new Label(GlobalizationUtil.gz(
|
||||
"forum.ui.thread.viewAll")),
|
||||
"index.jsp");
|
||||
returnLink.setClassAttr("actionLink");
|
||||
linksPanel.add(returnLink);
|
||||
|
|
@ -166,7 +168,6 @@ public class DiscussionThreadSimpleView extends ModalContainer implements Consta
|
|||
/**
|
||||
* Creates the component for viewing a thread.
|
||||
*/
|
||||
|
||||
private final void addForm(final Form form) {
|
||||
add(form);
|
||||
form.addCompletionListener(new ActionListener() {
|
||||
|
|
@ -190,9 +191,13 @@ public class DiscussionThreadSimpleView extends ModalContainer implements Consta
|
|||
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
private Component createThreadSubscribeLink() {
|
||||
ActionLink subscribeLink = new ActionLink(
|
||||
new Label(Text.gz("forum.ui.thread.subscribe"))) {
|
||||
new Label(GlobalizationUtil.gz("forum.ui.thread.subscribe"))) {
|
||||
public boolean isVisible(PageState s) {
|
||||
Party party = Kernel.getContext().getParty();
|
||||
|
||||
|
|
@ -223,9 +228,13 @@ public class DiscussionThreadSimpleView extends ModalContainer implements Consta
|
|||
return subscribeLink;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
private Component createThreadUnsubscribeLink() {
|
||||
ActionLink unsubscribeLink = new ActionLink(
|
||||
new Label(Text.gz("forum.ui.thread.unsubscribe"))) {
|
||||
new Label(GlobalizationUtil.gz("forum.ui.thread.unsubscribe"))) {
|
||||
@Override
|
||||
public boolean isVisible(PageState s) {
|
||||
Party party = Kernel.getContext().getParty();
|
||||
|
|
@ -259,10 +268,19 @@ public class DiscussionThreadSimpleView extends ModalContainer implements Consta
|
|||
return unsubscribeLink;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
private final ACSObjectSelectionModel getPostModel() {
|
||||
return m_postModel;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param state
|
||||
* @return
|
||||
*/
|
||||
private MessageThread getCurrentMessage(PageState state) {
|
||||
return ForumContext.getContext(state).getMessageThread();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
package com.arsdigita.forum.ui;
|
||||
|
||||
|
||||
import com.arsdigita.forum.util.GlobalizationUtil;
|
||||
import com.arsdigita.bebop.ColumnPanel;
|
||||
import com.arsdigita.bebop.Component;
|
||||
import com.arsdigita.bebop.Form;
|
||||
|
|
@ -85,19 +86,19 @@ class ForumAlertsView extends SimpleContainer implements Constants {
|
|||
Form alertsForm = new Form("instantAlerts", new ColumnPanel(2));
|
||||
|
||||
final RadioGroup instant = new RadioGroup("instant");
|
||||
instant.addOption(new Option(Text.gzAsStr("forum.ui.yes")));
|
||||
instant.addOption(new Option(Text.gzAsStr("forum.ui.no")));
|
||||
alertsForm.add(new Label(Text.gz("forum.ui.receive_instant_alerts")));
|
||||
instant.addOption(new Option(GlobalizationUtil.gzAsStr("forum.ui.yes")));
|
||||
instant.addOption(new Option(GlobalizationUtil.gzAsStr("forum.ui.no")));
|
||||
alertsForm.add(new Label(GlobalizationUtil.gz("forum.ui.receive_instant_alerts")));
|
||||
alertsForm.add(instant);
|
||||
|
||||
final RadioGroup daily = new RadioGroup("daily");
|
||||
daily.addOption(new Option(Text.gzAsStr("forum.ui.yes")));
|
||||
daily.addOption(new Option(Text.gzAsStr("forum.ui.no")));
|
||||
alertsForm.add(new Label(Text.gz("forum.ui.receive_daily_summary")));
|
||||
daily.addOption(new Option(GlobalizationUtil.gzAsStr("forum.ui.yes")));
|
||||
daily.addOption(new Option(GlobalizationUtil.gzAsStr("forum.ui.no")));
|
||||
alertsForm.add(new Label(GlobalizationUtil.gz("forum.ui.receive_daily_summary")));
|
||||
alertsForm.add(daily);
|
||||
|
||||
alertsForm.add(new Label(""));
|
||||
alertsForm.add(new Submit(Text.gz("forum.ui.save")));
|
||||
alertsForm.add(new Submit(GlobalizationUtil.gz("forum.ui.save")));
|
||||
|
||||
alertsForm.addInitListener(new FormInitListener() {
|
||||
public void init(FormSectionEvent e) {
|
||||
|
|
@ -109,17 +110,17 @@ class ForumAlertsView extends SimpleContainer implements Constants {
|
|||
ForumSubscription fSub =
|
||||
ForumSubscription.getFromForum(forum);
|
||||
if (fSub.isSubscribed(party)) {
|
||||
instant.setValue(s,Text.gzAsStr("forum.ui.yes"));
|
||||
instant.setValue(s,GlobalizationUtil.gzAsStr("forum.ui.yes"));
|
||||
} else {
|
||||
instant.setValue(s, Text.gzAsStr("forum.ui.no"));
|
||||
instant.setValue(s, GlobalizationUtil.gzAsStr("forum.ui.no"));
|
||||
}
|
||||
|
||||
DailySubscription dSub = (DailySubscription)
|
||||
DailySubscription.getFromForum(forum);
|
||||
if (dSub.isSubscribed(party)) {
|
||||
daily.setValue(s,Text.gzAsStr("forum.ui.yes"));
|
||||
daily.setValue(s,GlobalizationUtil.gzAsStr("forum.ui.yes"));
|
||||
} else {
|
||||
daily.setValue(s, Text.gzAsStr("forum.ui.no"));
|
||||
daily.setValue(s, GlobalizationUtil.gzAsStr("forum.ui.no"));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
@ -138,9 +139,9 @@ class ForumAlertsView extends SimpleContainer implements Constants {
|
|||
DailySubscription dSub = (DailySubscription)
|
||||
DailySubscription.getFromForum(forum);
|
||||
|
||||
if (data.get("instant").equals(Text.gzAsStr("forum.ui.yes"))) {
|
||||
if (data.get("instant").equals(GlobalizationUtil.gzAsStr("forum.ui.yes"))) {
|
||||
fSub.subscribe(party);
|
||||
} else if (data.get("instant").equals(Text.gzAsStr("forum.ui.no"))) {
|
||||
} else if (data.get("instant").equals(GlobalizationUtil.gzAsStr("forum.ui.no"))) {
|
||||
fSub.unsubscribe(party);
|
||||
} else {
|
||||
throw new FormProcessException(
|
||||
|
|
@ -149,9 +150,9 @@ class ForumAlertsView extends SimpleContainer implements Constants {
|
|||
}
|
||||
fSub.save();
|
||||
|
||||
if (data.get("daily").equals(Text.gzAsStr("forum.ui.yes"))) {
|
||||
if (data.get("daily").equals(GlobalizationUtil.gzAsStr("forum.ui.yes"))) {
|
||||
dSub.subscribe(party);
|
||||
} else if (data.get("daily").equals(Text.gzAsStr("forum.ui.no"))) {
|
||||
} else if (data.get("daily").equals(GlobalizationUtil.gzAsStr("forum.ui.no"))) {
|
||||
dSub.unsubscribe(party);
|
||||
} else {
|
||||
throw new FormProcessException(
|
||||
|
|
@ -180,7 +181,7 @@ class ForumAlertsView extends SimpleContainer implements Constants {
|
|||
new ArrayParameter(new BigDecimalParameter("delete")));
|
||||
form.add(boxes);
|
||||
|
||||
form.add(new Submit(Text.gz("forum.ui.delete")),
|
||||
form.add(new Submit(GlobalizationUtil.gz("forum.ui.delete")),
|
||||
FULL_WIDTH | RIGHT);
|
||||
|
||||
form.addProcessListener(new DeleteProcesser());
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
*/
|
||||
package com.arsdigita.forum.ui;
|
||||
|
||||
import com.arsdigita.forum.util.GlobalizationUtil;
|
||||
import java.io.IOException;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
|
|
@ -265,42 +266,42 @@ public class ForumUserCompactView extends ModalContainer implements Constants {
|
|||
// jensp 2011-10-02: Additional logic added
|
||||
if (forum.isPublic()) {
|
||||
generateModeXML(state, content, MODE_THREADS,
|
||||
Text.gz("forum.ui.modeThreads"));
|
||||
GlobalizationUtil.gz("forum.ui.modeThreads"));
|
||||
} else {
|
||||
if (PermissionService.checkPermission(readPermission)) {
|
||||
generateModeXML(state, content, MODE_THREADS,
|
||||
Text.gz("forum.ui.modeThreads"));
|
||||
GlobalizationUtil.gz("forum.ui.modeThreads"));
|
||||
}
|
||||
}
|
||||
// topics panel is always shown as well if not restricted to admins.
|
||||
if (!Forum.getConfig().topicCreationByAdminOnly()) {
|
||||
generateModeXML(state, content, MODE_TOPICS,
|
||||
Text.gz("forum.ui.modeTopics"));
|
||||
GlobalizationUtil.gz("forum.ui.modeTopics"));
|
||||
}
|
||||
// alerts panel is always shown as well, no private read access avail.
|
||||
generateModeXML(state, content, MODE_ALERTS,
|
||||
Text.gz("forum.ui.modeAlerts"));
|
||||
GlobalizationUtil.gz("forum.ui.modeAlerts"));
|
||||
|
||||
// admin section
|
||||
if (PermissionService.checkPermission(adminPermission)) {
|
||||
// generateModeXML(state, content, MODE_MODERATION,
|
||||
// Text.gz("forum.ui.modeAlerts"));
|
||||
// GlobalizationUtil.gz("forum.ui.modeAlerts"));
|
||||
if (Forum.getConfig().showNewTabs()) {
|
||||
generateModeXML(state, content, MODE_SETUP,
|
||||
Text.gz("forum.ui.modeSetup"));
|
||||
GlobalizationUtil.gz("forum.ui.modeSetup"));
|
||||
generateModeXML(state, content, MODE_PERMISSIONS,
|
||||
Text.gz("forum.ui.modePermissions"));
|
||||
GlobalizationUtil.gz("forum.ui.modePermissions"));
|
||||
} else {
|
||||
// Generate old moderation panel instead of setup
|
||||
generateModeXML(state, content, MODE_MODERATION,
|
||||
Text.gz("forum.ui.modeAlerts"));
|
||||
GlobalizationUtil.gz("forum.ui.modeAlerts"));
|
||||
|
||||
}
|
||||
// In case topic creation is bound to admin (and therefore not
|
||||
// created above) we must create xml here.
|
||||
if (Forum.getConfig().topicCreationByAdminOnly()) {
|
||||
generateModeXML(state, content, MODE_TOPICS,
|
||||
Text.gz("forum.ui.modeTopics"));
|
||||
GlobalizationUtil.gz("forum.ui.modeTopics"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
*/
|
||||
package com.arsdigita.forum.ui;
|
||||
|
||||
import com.arsdigita.forum.util.GlobalizationUtil;
|
||||
import java.io.File;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -101,7 +102,7 @@ public class ImagesStep
|
|||
m_upload = new FileUpload("image", true);
|
||||
m_upload
|
||||
.addValidationListener(new NotEmptyValidationListener(
|
||||
Text
|
||||
GlobalizationUtil
|
||||
.gz("forum.ui.validation.image_file_null")) {
|
||||
public void validate(ParameterEvent e) {
|
||||
if (m_addImage.isSelected(e.getPageState())) {
|
||||
|
|
@ -126,7 +127,7 @@ public class ImagesStep
|
|||
m_description.setRows(5);
|
||||
m_description
|
||||
.addValidationListener(new NotEmptyValidationListener(
|
||||
Text
|
||||
GlobalizationUtil
|
||||
.gz("forum.ui.validation.image_description_null")) {
|
||||
public void validate(ParameterEvent e) {
|
||||
if (m_addImage.isSelected(e.getPageState())) {
|
||||
|
|
@ -138,7 +139,7 @@ public class ImagesStep
|
|||
.addValidationListener(new StringInRangeValidationListener(
|
||||
0,
|
||||
4000,
|
||||
Text.gz("forum.ui.validation.image_description_too_long")) {
|
||||
GlobalizationUtil.gz("forum.ui.validation.image_description_too_long")) {
|
||||
public void validate(ParameterEvent e)
|
||||
throws FormProcessException {
|
||||
if (m_addImage.isSelected(e.getPageState())) {
|
||||
|
|
@ -218,7 +219,7 @@ public class ImagesStep
|
|||
if (!m_addImage.isSelected(state)
|
||||
&& StringUtils.isNotBlank((String) m_upload.getValue(state))) {
|
||||
throw new FormProcessException(
|
||||
(String) Text
|
||||
(String) GlobalizationUtil
|
||||
.gz("forum.ui.validation.image_not_uploaded")
|
||||
.localize());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
*/
|
||||
package com.arsdigita.forum.ui;
|
||||
|
||||
import com.arsdigita.forum.util.GlobalizationUtil;
|
||||
import java.text.DateFormat;
|
||||
import java.util.Date;
|
||||
|
||||
|
|
@ -81,7 +82,7 @@ public abstract class PostTextStep extends FormStep implements Constants {
|
|||
m_subject = new TextField(new StringParameter("subject"));
|
||||
m_subject.addValidationListener(
|
||||
new NotEmptyValidationListener(
|
||||
Text.gz("forum.ui.validation.subject_null")));
|
||||
GlobalizationUtil.gz("forum.ui.validation.subject_null")));
|
||||
m_subject.setMaxLength(250);
|
||||
m_subject.setSize(60);
|
||||
add(m_subject);
|
||||
|
|
@ -114,7 +115,7 @@ public abstract class PostTextStep extends FormStep implements Constants {
|
|||
|
||||
m_body.addValidationListener(
|
||||
new NotEmptyValidationListener(
|
||||
Text.gz("forum.ui.validation.body_null")));
|
||||
GlobalizationUtil.gz("forum.ui.validation.body_null")));
|
||||
|
||||
add(m_body);
|
||||
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
*/
|
||||
package com.arsdigita.forum.ui;
|
||||
|
||||
import com.arsdigita.forum.util.GlobalizationUtil;
|
||||
import com.arsdigita.bebop.Component;
|
||||
import com.arsdigita.bebop.Container;
|
||||
// import com.arsdigita.bebop.Form;
|
||||
|
|
@ -143,7 +144,7 @@ public class ThreadsPanel extends SimpleContainer
|
|||
Container forumOptions = new SimpleContainer(
|
||||
FORUM_XML_PREFIX + ":forumOptions", Constants.FORUM_XML_NS);
|
||||
// XXX APLAWS standard theme currently (2010-09) does not use the label!
|
||||
m_newThreadLink = new ToggleLink(new Label(Text.gz("forum.ui.thread.newPost")));
|
||||
m_newThreadLink = new ToggleLink(new Label(GlobalizationUtil.gz("forum.ui.thread.newPost")));
|
||||
m_newThreadLink.setClassAttr("actionLink");
|
||||
|
||||
// chris.gilbert@westsussex.gov.uk - security container added
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
package com.arsdigita.forum.ui;
|
||||
|
||||
|
||||
import com.arsdigita.forum.util.GlobalizationUtil;
|
||||
import com.arsdigita.bebop.Form;
|
||||
import com.arsdigita.bebop.FormData;
|
||||
import com.arsdigita.bebop.FormProcessException;
|
||||
|
|
@ -72,12 +73,12 @@ public class TopicAddForm extends Form {
|
|||
super("categoryAdd");
|
||||
setRedirecting(true); // clear form and redirect back
|
||||
|
||||
add(new Label(Text.gz("forum.ui.topic.name")));
|
||||
add(new Label(GlobalizationUtil.gz("forum.ui.topic.name")));
|
||||
m_name = new TextField("name");
|
||||
m_name.addValidationListener(new NotNullValidationListener());
|
||||
add(m_name);
|
||||
|
||||
add(new Label(Text.gz("forum.ui.topic.description")));
|
||||
add(new Label(GlobalizationUtil.gz("forum.ui.topic.description")));
|
||||
m_description = new TextArea("description");
|
||||
m_description.setRows(5);
|
||||
m_description.setCols(60);
|
||||
|
|
@ -87,8 +88,8 @@ public class TopicAddForm extends Form {
|
|||
// Cancel button added cg
|
||||
// Would have used a saveCancel section but this would make existing
|
||||
// stylesheets for legacy forums miss the buttons
|
||||
Submit submit = new Submit(Text.gz("forum.ui.topic.save"));
|
||||
final Submit cancel = new Submit(Text.gz("forum.ui.cancel"));
|
||||
Submit submit = new Submit(GlobalizationUtil.gz("forum.ui.topic.save"));
|
||||
final Submit cancel = new Submit(GlobalizationUtil.gz("forum.ui.cancel"));
|
||||
add(submit);
|
||||
add(cancel);
|
||||
addSubmissionListener(new FormSubmissionListener(){
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
*/
|
||||
package com.arsdigita.forum.ui;
|
||||
|
||||
import com.arsdigita.forum.util.GlobalizationUtil;
|
||||
import com.arsdigita.bebop.Component;
|
||||
import com.arsdigita.bebop.Container;
|
||||
import com.arsdigita.bebop.Form;
|
||||
|
|
@ -131,7 +132,7 @@ public class TopicsPanel extends SimpleContainer
|
|||
Constants.FORUM_XML_PREFIX + ":topicOptions",
|
||||
Constants.FORUM_XML_NS);
|
||||
m_addNewTopicLink = new ToggleLink(
|
||||
new Label(Text.gz("forum.ui.topic.newTopic")));
|
||||
new Label(GlobalizationUtil.gz("forum.ui.topic.newTopic")));
|
||||
m_addNewTopicLink.setClassAttr("actionLink");
|
||||
linksPanel.add(m_addNewTopicLink);
|
||||
// add to component
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ import com.arsdigita.bebop.event.FormSectionEvent;
|
|||
|
||||
import com.arsdigita.forum.Forum;
|
||||
import com.arsdigita.forum.ForumContext;
|
||||
import com.arsdigita.forum.ui.Text;
|
||||
import com.arsdigita.forum.util.GlobalizationUtil;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
|
|
@ -59,24 +59,24 @@ public class ModerationFormSection extends FormSection {
|
|||
|
||||
public void addWidgets() {
|
||||
add(new Label(
|
||||
Text.gz("forum.ui.moderate.label")));
|
||||
GlobalizationUtil.gz("forum.ui.moderate.label")));
|
||||
|
||||
m_statusOn = new Label(
|
||||
Text.gz("forum.ui.moderate.status.on"));
|
||||
GlobalizationUtil.gz("forum.ui.moderate.status.on"));
|
||||
m_statusOff = new Label(
|
||||
Text.gz("forum.ui.moderate.status.off"));
|
||||
GlobalizationUtil.gz("forum.ui.moderate.status.off"));
|
||||
add(m_statusOn);
|
||||
add(m_statusOff);
|
||||
|
||||
m_switchOn = new Submit(
|
||||
Text.gz("forum.ui.moderate.switch.on"));
|
||||
GlobalizationUtil.gz("forum.ui.moderate.switch.on"));
|
||||
m_switchOff = new Submit(
|
||||
Text.gz("forum.ui.moderate.switch.off"));
|
||||
GlobalizationUtil.gz("forum.ui.moderate.switch.off"));
|
||||
add(m_switchOn);
|
||||
add(m_switchOff);
|
||||
|
||||
m_warning = new Label(
|
||||
Text.gz("forum.ui.moderate.warning"));
|
||||
GlobalizationUtil.gz("forum.ui.moderate.warning"));
|
||||
add(m_warning, ColumnPanel.FULL_WIDTH);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ import com.arsdigita.bebop.form.TextField;
|
|||
import com.arsdigita.bebop.parameters.IntegerParameter;
|
||||
import com.arsdigita.forum.Forum;
|
||||
import com.arsdigita.forum.ForumContext;
|
||||
import com.arsdigita.forum.ui.Text;
|
||||
import com.arsdigita.forum.util.GlobalizationUtil;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
/**
|
||||
|
|
@ -60,27 +60,27 @@ public class NoticeboardFormSection extends FormSection {
|
|||
|
||||
public void addWidgets() {
|
||||
add(new Label(
|
||||
Text.gz("forum.ui.noticeboard.label")));
|
||||
GlobalizationUtil.gz("forum.ui.noticeboard.label")));
|
||||
|
||||
m_statusOn = new Label(
|
||||
Text.gz("forum.ui.noticeboard.status.on"));
|
||||
GlobalizationUtil.gz("forum.ui.noticeboard.status.on"));
|
||||
m_statusOff = new Label(
|
||||
Text.gz("forum.ui.noticeboard.status.off"));
|
||||
GlobalizationUtil.gz("forum.ui.noticeboard.status.off"));
|
||||
add(m_statusOn);
|
||||
add(m_statusOff);
|
||||
|
||||
m_switchOn = new Submit(
|
||||
Text.gz("forum.ui.noticeboard.switch.on"));
|
||||
GlobalizationUtil.gz("forum.ui.noticeboard.switch.on"));
|
||||
m_switchOff = new Submit(
|
||||
Text.gz("forum.ui.noticeboard.switch.off"));
|
||||
GlobalizationUtil.gz("forum.ui.noticeboard.switch.off"));
|
||||
add(m_switchOn);
|
||||
add(m_switchOff);
|
||||
|
||||
m_expiryLabel = new Label(
|
||||
Text.gz("forum.ui.noticeboard.expiry_after"));
|
||||
GlobalizationUtil.gz("forum.ui.noticeboard.expiry_after"));
|
||||
m_expiry = new TextField(new IntegerParameter("expiry"));
|
||||
m_changeExpiry = new Submit(
|
||||
Text.gz("forum.ui.noticeboard.change_expiry"));
|
||||
GlobalizationUtil.gz("forum.ui.noticeboard.change_expiry"));
|
||||
add(m_expiryLabel);
|
||||
add(m_expiry);
|
||||
add(m_changeExpiry);
|
||||
|
|
|
|||
|
|
@ -45,19 +45,18 @@ import com.arsdigita.bebop.parameters.StringInRangeValidationListener;
|
|||
import com.arsdigita.forum.Forum;
|
||||
import com.arsdigita.forum.ForumContext;
|
||||
import com.arsdigita.forum.ui.Constants;
|
||||
import com.arsdigita.forum.ui.Text;
|
||||
import com.arsdigita.forum.util.GlobalizationUtil;
|
||||
import com.arsdigita.web.Application;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
/**
|
||||
* form that allows forum admin to set options
|
||||
* Form that allows forum admin to set options
|
||||
* that apply to this forum instance
|
||||
*/
|
||||
public class SetupView
|
||||
extends Form
|
||||
implements FormInitListener, FormSubmissionListener, FormProcessListener,
|
||||
Constants {
|
||||
public class SetupView extends Form
|
||||
implements FormInitListener, FormSubmissionListener,
|
||||
FormProcessListener, Constants {
|
||||
|
||||
private static final Logger s_log = Logger.getLogger(SetupView.class);
|
||||
// values for checkboxes
|
||||
|
|
@ -69,65 +68,84 @@ public class SetupView
|
|||
private static final String AUTOSUBSCRIBE_THREAD_STARTERS = "autosubscribe";
|
||||
private static final String NO_CATEGORY_POSTS_ALLOWED = "nocategory";
|
||||
private static final String ANONYMOUS_POSTS_ALLOWED = "anonymous";
|
||||
|
||||
private CheckboxGroup m_settings;
|
||||
private TextField m_expiry;
|
||||
private SaveCancelSection m_saveCancel;
|
||||
private TextArea m_introduction;
|
||||
private TextField m_title;
|
||||
|
||||
/**
|
||||
* Constructor to create the setup panel.
|
||||
*/
|
||||
public SetupView() {
|
||||
super("setupForm", new SimpleContainer("forum:setup", FORUM_XML_NS));
|
||||
|
||||
// preliminary step 1: Create a group of options to determine various
|
||||
// properties of this forum
|
||||
m_settings = new CheckboxGroup("settings");
|
||||
m_settings.addOption(
|
||||
new Option(
|
||||
MODERATED,
|
||||
(String) Text.gz("forum.ui.settings.moderated").localize()));
|
||||
m_settings.addOption(
|
||||
new Option(PUBLIC,
|
||||
(String) Text.gz("forum.ui.settings.public").localize()));
|
||||
m_settings.addOption(
|
||||
new Option(
|
||||
NOTICEBOARD,
|
||||
(String) Text.gz("forum.ui.settings.noticeboard").
|
||||
localize()));
|
||||
m_settings.addOption(
|
||||
new Option(
|
||||
ALLOW_FILES,
|
||||
(String) Text.gz("forum.ui.settings.allowFiles").localize()));
|
||||
m_settings.addOption(
|
||||
new Option(
|
||||
ALLOW_IMAGES,
|
||||
(String) Text.gz("forum.ui.settings.allowImages").localize()));
|
||||
m_settings.addOption(
|
||||
new Option(
|
||||
AUTOSUBSCRIBE_THREAD_STARTERS,
|
||||
(String) Text.gz("forum.ui.settings.autosubscribe").localize()));
|
||||
|
||||
m_settings.addOption(
|
||||
new Option(
|
||||
NO_CATEGORY_POSTS_ALLOWED,
|
||||
(String) Text.gz("forum.ui.settings.noCategoryPosts").localize()));
|
||||
m_settings.addOption(
|
||||
new Option(
|
||||
ANONYMOUS_POSTS_ALLOWED,
|
||||
(String) Text.gz("forum.ui.settings.anonymousPosts").localize()));
|
||||
|
||||
m_settings.addOption(new Option(MODERATED,
|
||||
new Label(GlobalizationUtil.gz(
|
||||
"forum.ui.settings.moderated"))
|
||||
));
|
||||
m_settings.addOption(new Option(PUBLIC,
|
||||
new Label( GlobalizationUtil.gz(
|
||||
"forum.ui.settings.public"))
|
||||
));
|
||||
m_settings.addOption(new Option(NOTICEBOARD,
|
||||
new Label(GlobalizationUtil.gz(
|
||||
"forum.ui.settings.noticeboard"))
|
||||
));
|
||||
m_settings.addOption(new Option(ALLOW_FILES,
|
||||
new Label(GlobalizationUtil.gz(
|
||||
"forum.ui.settings.allowFiles"))
|
||||
));
|
||||
m_settings.addOption(new Option(ALLOW_IMAGES,
|
||||
new Label(GlobalizationUtil.gz(
|
||||
"forum.ui.settings.allowImages"))
|
||||
));
|
||||
m_settings.addOption(new Option(AUTOSUBSCRIBE_THREAD_STARTERS,
|
||||
new Label(GlobalizationUtil.gz(
|
||||
"forum.ui.settings.autosubscribe"))
|
||||
));
|
||||
|
||||
m_settings.addOption(new Option(NO_CATEGORY_POSTS_ALLOWED,
|
||||
new Label(GlobalizationUtil.gz(
|
||||
"forum.ui.settings.noCategoryPosts"))
|
||||
));
|
||||
m_settings.addOption(new Option(ANONYMOUS_POSTS_ALLOWED,
|
||||
new Label(GlobalizationUtil.gz(
|
||||
"forum.ui.settings.anonymousPosts"))
|
||||
));
|
||||
|
||||
// preliminary step 2: Create a widget to determin the expiration limit
|
||||
// for the forum GUI
|
||||
m_expiry = new TextField(new IntegerParameter("expiry"));
|
||||
m_expiry.setMetaDataAttribute("label", (String) Text.gz(
|
||||
m_expiry.setMetaDataAttribute("label", (String) GlobalizationUtil.gz(
|
||||
"forum.ui.noticeboard.expiry_after").localize());
|
||||
|
||||
// preliminary step 3: Create a Save - Discard widget for the pane
|
||||
m_saveCancel = new SaveCancelSection();
|
||||
m_saveCancel.getSaveButton().setButtonLabel(Text.gz(
|
||||
m_saveCancel.getSaveButton().setButtonLabel(GlobalizationUtil.gz(
|
||||
"forum.ui.settings.save"));
|
||||
|
||||
// ////////////////////////////////////////////////////////////////////
|
||||
// Create the pane
|
||||
// ////////////////////////////////////////////////////////////////////
|
||||
|
||||
/* Introductory text fiel */
|
||||
m_introduction = new TextArea("introduction", 8, 60, TextArea.SOFT);
|
||||
m_introduction.addValidationListener(new StringInRangeValidationListener(
|
||||
0, 4000, Text.gz("forum.ui.validation.introduction_too_long")));
|
||||
m_introduction.setMetaDataAttribute("label", (String) Text.gz(
|
||||
m_introduction.addValidationListener(
|
||||
new StringInRangeValidationListener(0, 4000,
|
||||
GlobalizationUtil.gz(
|
||||
"forum.ui.validation.introduction_too_long")
|
||||
));
|
||||
m_introduction.setMetaDataAttribute("label", (String) GlobalizationUtil.gz(
|
||||
"forum.ui.settings.introduction").localize());
|
||||
|
||||
m_title = new TextField("title");
|
||||
m_title.setMetaDataAttribute("label", (String) Text.gz(
|
||||
m_title.setMetaDataAttribute("label", (String) GlobalizationUtil.gz(
|
||||
"forum.ui.settings.title").localize());
|
||||
m_title.setSize(70);
|
||||
|
||||
|
|
|
|||
|
|
@ -16,28 +16,45 @@
|
|||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
package com.arsdigita.forum.ui;
|
||||
package com.arsdigita.forum.util;
|
||||
|
||||
import com.arsdigita.globalization.GlobalizedMessage;
|
||||
|
||||
/**
|
||||
* Contains methods to simplify globalizing keys.
|
||||
* Compilation of methods to simplify the handling of globalizing keys.
|
||||
* Basically it adds the name of package's resource bundle files to the
|
||||
* globalize methods and forwards to GlobalizedMessage, shortening the
|
||||
* method invocation in the various application classes.
|
||||
*
|
||||
*
|
||||
* @author Daniel Berrange
|
||||
*/
|
||||
public class Text {
|
||||
public class GlobalizationUtil {
|
||||
|
||||
/** Name of Java resource files to handle Forum's globalisation. */
|
||||
private static final String BUNDLE_NAME =
|
||||
"com.arsdigita.forum.ui.ForumResources";
|
||||
"com.arsdigita.forum.ForumResources";
|
||||
|
||||
/**
|
||||
* Returns a globalized message using the appropriate bundle.
|
||||
*/
|
||||
public static GlobalizedMessage gz(String key) {
|
||||
return new GlobalizedMessage(key, BUNDLE_NAME);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a String, aplying the loclize() method on the globalized message
|
||||
* using the appropriate bundle.
|
||||
*/
|
||||
public static String gzAsStr(String key) {
|
||||
return (String) new GlobalizedMessage(key, BUNDLE_NAME).localize();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a globalized message object, using the approprate bundle,
|
||||
* takeing in an Object[] of arguments to interpolate into the retrieved
|
||||
* message using the MessageFormat class.
|
||||
*/
|
||||
public static GlobalizedMessage gz(String key, Object[] args) {
|
||||
return new GlobalizedMessage(key, BUNDLE_NAME, args);
|
||||
}
|
||||
Loading…
Reference in New Issue