You can subscribe to this list here.
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(20) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2010 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
(3) |
Jun
(1) |
Jul
(1) |
Aug
(3) |
Sep
(6) |
Oct
(1) |
Nov
|
Dec
(4) |
2011 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
(2) |
Oct
(4) |
Nov
|
Dec
|
2021 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(14) |
Sep
(9) |
Oct
(9) |
Nov
(15) |
Dec
(5) |
2022 |
Jan
(3) |
Feb
(13) |
Mar
(2) |
Apr
|
May
(3) |
Jun
(4) |
Jul
(4) |
Aug
(1) |
Sep
|
Oct
|
Nov
(7) |
Dec
(3) |
2023 |
Jan
(1) |
Feb
(3) |
Mar
(1) |
Apr
(4) |
May
(1) |
Jun
(5) |
Jul
(3) |
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
2024 |
Jan
(1) |
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
(3) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <udi...@us...> - 2021-09-15 07:13:55
|
Revision: 1389 http://sourceforge.net/p/j-trac/code/1389 Author: udittmer Date: 2021-09-15 07:13:53 +0000 (Wed, 15 Sep 2021) Log Message: ----------- Config UI for auto-linking URLs Modified Paths: -------------- trunk/jtrac/src/main/java/info/jtrac/domain/Config.java trunk/jtrac/src/main/java/info/jtrac/wicket/BasePanel.java trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPanel.java trunk/jtrac/src/main/resources/messages_de.properties trunk/jtrac/src/main/resources/messages_en.properties Modified: trunk/jtrac/src/main/java/info/jtrac/domain/Config.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/domain/Config.java 2021-09-14 18:48:22 UTC (rev 1388) +++ trunk/jtrac/src/main/java/info/jtrac/domain/Config.java 2021-09-15 07:13:53 UTC (rev 1389) @@ -58,6 +58,7 @@ PARAMS.add("attachment.maxsize"); PARAMS.add("pwd.minLength"); PARAMS.add("time.pretty"); + PARAMS.add("urls.autolink"); } public static Set<String> getParams() { Modified: trunk/jtrac/src/main/java/info/jtrac/wicket/BasePanel.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/BasePanel.java 2021-09-14 18:48:22 UTC (rev 1388) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/BasePanel.java 2021-09-15 07:13:53 UTC (rev 1389) @@ -1,66 +1,77 @@ -/* - * Copyright 2002-2005 the original author or authors. - * - * Licensed 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. - */ - -package info.jtrac.wicket; - -import info.jtrac.Jtrac; -import info.jtrac.domain.Space; -import info.jtrac.domain.User; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.StringResourceModel; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * base class for all wicket panels, this provides - * a way to access the spring managed service layer - * as well as other convenience common methods - */ -public class BasePanel extends Panel { - - protected static final Logger logger = LoggerFactory.getLogger(BasePanel.class); - - protected Jtrac getJtrac() { - return JtracApplication.get().getJtrac(); - } - - protected User getPrincipal() { - return JtracSession.get().getUser(); - } - - protected void setCurrentSpace(Space space) { - JtracSession.get().setCurrentSpace(space); - } - - protected Space getCurrentSpace() { - return JtracSession.get().getCurrentSpace(); - } - - protected String localize(String key) { - return getLocalizer().getString(key, null); - } - - protected String localize(String key, Object... params) { - StringResourceModel m = new StringResourceModel(key, null, null, params); - m.setLocalizer(getLocalizer()); - return m.getString(); - } - - public BasePanel(String id) { - super(id); - } - -} +/* + * Copyright 2002-2005 the original author or authors. + * + * Licensed 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. + */ + +package info.jtrac.wicket; + +import info.jtrac.Jtrac; +import info.jtrac.domain.Space; +import info.jtrac.domain.User; + +import org.apache.wicket.markup.html.panel.Panel; +import org.apache.wicket.model.StringResourceModel; + +import org.springframework.util.StringUtils; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * base class for all wicket panels, this provides a way to access the + * Spring managed service layer as well as other convenience common methods + */ +public class BasePanel extends Panel { + + protected static final Logger logger = LoggerFactory.getLogger(BasePanel.class); + + public BasePanel(String id) { + super(id); + } + + protected Jtrac getJtrac() { + return JtracApplication.get().getJtrac(); + } + + protected User getPrincipal() { + return JtracSession.get().getUser(); + } + + protected void setCurrentSpace(Space space) { + JtracSession.get().setCurrentSpace(space); + } + + protected Space getCurrentSpace() { + return JtracSession.get().getCurrentSpace(); + } + + protected String localize(String key) { + return getLocalizer().getString(key, null); + } + + protected String localize(String key, Object... params) { + StringResourceModel m = new StringResourceModel(key, null, null, params); + m.setLocalizer(getLocalizer()); + return m.getString(); + } + + protected boolean autoLinkUrls() { + String autoLink = getJtrac().loadConfig("urls.autolink"); + if (StringUtils.hasText(autoLink)) { + return autoLink.trim().equalsIgnoreCase("true"); + } else { + return false; + } + } +} Modified: trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPanel.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPanel.java 2021-09-14 18:48:22 UTC (rev 1388) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPanel.java 2021-09-15 07:13:53 UTC (rev 1389) @@ -77,6 +77,7 @@ * @param item The {@link Item} to add. */ private void addComponents(final Item item) { + add(new Label("refId", new PropertyModel(item, "refId"))); add(new Link("relate") { @@ -186,7 +187,11 @@ add(new Label("loggedBy", new PropertyModel(item, "loggedBy.name"))); add(new Label("assignedTo", new PropertyModel(item, "assignedTo.name"))); add(new Label("summary", new PropertyModel(item, "summary"))); - add(new Label("detail", ItemUtils.htmlizeUrls(ItemUtils.fixWhiteSpace(item.getDetail()))).setEscapeModelStrings(false)); + String text = ItemUtils.fixWhiteSpace(item.getDetail()); + if (autoLinkUrls()) { + text = ItemUtils.htmlizeUrls(text); + } + add(new Label("detail", text).setEscapeModelStrings(false)); final SimpleAttributeModifier sam = new SimpleAttributeModifier("class", "alt"); final Map<Field.Name, Field> fields = item.getSpace().getMetadata().getFields(); @@ -236,7 +241,11 @@ WebMarkupContainer comment = new WebMarkupContainer("comment"); comment.add(new AttachmentLinkPanel("attachment", h.getAttachment())); - comment.add(new Label("comment", ItemUtils.htmlizeUrls(ItemUtils.fixWhiteSpace(h.getComment()))).setEscapeModelStrings(false)); + String text = ItemUtils.fixWhiteSpace(h.getComment()); + if (autoLinkUrls()) { + text = ItemUtils.htmlizeUrls(text); + } + comment.add(new Label("comment", text).setEscapeModelStrings(false)); listItem.add(comment); listItem.add(new Label("timeStamp", DateUtils.formatTimeStamp(h.getTimeStamp()))); Modified: trunk/jtrac/src/main/resources/messages_de.properties =================================================================== --- trunk/jtrac/src/main/resources/messages_de.properties 2021-09-14 18:48:22 UTC (rev 1388) +++ trunk/jtrac/src/main/resources/messages_de.properties 2021-09-15 07:13:53 UTC (rev 1389) @@ -204,6 +204,7 @@ config.attachment.maxsize = Maximalgr\u00F6\u00DFe f\u00FCr Anlagen in MB, "-1" f\u00FCr Kein-Limit (Default 5) config.pwd.minLength = Minimale L\u00e4nge von Passw\u00f6rtern (Default 8) config.time.pretty = Relative Zeiten anzeigen wie auf Github, Twitter und Facebook (auf true setzen, Default ist false) +config.urls.autolink = URLs in Tickets und Kommentaren automatisch verlinken # config_list (config_form does not have any extra messages) config_list.configurationSettings = Einstellungen Modified: trunk/jtrac/src/main/resources/messages_en.properties =================================================================== --- trunk/jtrac/src/main/resources/messages_en.properties 2021-09-14 18:48:22 UTC (rev 1388) +++ trunk/jtrac/src/main/resources/messages_en.properties 2021-09-15 07:13:53 UTC (rev 1389) @@ -204,6 +204,7 @@ config.attachment.maxsize = Maximum size in MB of file-attachments. (default 5 MB) Use -1 for no-limit config.pwd.minLength = Minimal length of passwords (default is 8) config.time.pretty = Show relative timestamps as on Github, Twitter and Facebook (set to true, default is false) +config.urls.autolink = Auto-link URLs in tickets and comments # config_list (config_form does not have any extra messages) config_list.configurationSettings = Configuration Settings This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <udi...@us...> - 2021-09-14 18:48:24
|
Revision: 1388 http://sourceforge.net/p/j-trac/code/1388 Author: udittmer Date: 2021-09-14 18:48:22 +0000 (Tue, 14 Sep 2021) Log Message: ----------- http(s) URLs are now auto-linked in the details and comments fields Modified Paths: -------------- trunk/jtrac/src/main/java/info/jtrac/util/ItemUtils.java trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPanel.java Modified: trunk/jtrac/src/main/java/info/jtrac/util/ItemUtils.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/util/ItemUtils.java 2021-08-10 09:29:28 UTC (rev 1387) +++ trunk/jtrac/src/main/java/info/jtrac/util/ItemUtils.java 2021-09-14 18:48:22 UTC (rev 1388) @@ -51,7 +51,9 @@ public final class ItemUtils { private static final Logger logger = LoggerFactory.getLogger(ItemUtils.class); - + + public static final String URL_PATTERN = "http(s?)://[:\\p{L}\\p{Digit}\\.\\-_\\/=#\\?]+"; + /** * does HTML escaping, converts tabs to spaces and converts leading * spaces (for each multi-line) to as many ' ' sequences as required @@ -90,7 +92,15 @@ } return sb.toString().replaceAll("\t", " "); } - + + public static String htmlizeUrls (String text) { + if (text == null) { + return null; + } else { + return text.replaceAll(URL_PATTERN, "<a href='$0' target='_blank'>$0</a>"); + } + } + private static String fmt(String key, MessageSource messageSource, Locale locale) { try { return messageSource.getMessage("item_view." + key, null, locale); Modified: trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPanel.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPanel.java 2021-08-10 09:29:28 UTC (rev 1387) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPanel.java 2021-09-14 18:48:22 UTC (rev 1388) @@ -1,257 +1,257 @@ -/* - * Copyright 2002-2005 the original author or authors. - * - * Licensed 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. - */ - -package info.jtrac.wicket; - -import static info.jtrac.domain.ItemItem.*; - -import info.jtrac.domain.Field; -import info.jtrac.domain.History; -import info.jtrac.domain.Item; -import info.jtrac.domain.ItemItem; -import info.jtrac.domain.ItemSearch; -import info.jtrac.util.DateUtils; -import info.jtrac.util.ItemUtils; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import org.apache.wicket.PageParameters; -import org.apache.wicket.behavior.SimpleAttributeModifier; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.link.Link; -import org.apache.wicket.markup.html.list.ListItem; -import org.apache.wicket.markup.html.list.ListView; -import org.apache.wicket.model.PropertyModel; - -/** - * This class is responsible the panel showing the item - * read-only view. - */ -public class ItemViewPanel extends BasePanel { - /** - * Boolean flags to hide links. - */ - private boolean hideLinks; - - /** - * Constructor - * - * @param id - * @param itemId - */ - public ItemViewPanel(String id, long itemId) { - super(id); - addComponents(getJtrac().loadItem(itemId)); - } - - /** - * Constructor - * - * @param id - * @param item - * @param hideLinks - */ - public ItemViewPanel(String id, final Item item, boolean hideLinks) { - super(id); - this.hideLinks = hideLinks; - addComponents(item); - } - - /** - * This method allows to add components (items). - * - * @param item The {@link Item} to add. - */ - private void addComponents(final Item item) { - add(new Label("refId", new PropertyModel(item, "refId"))); - - add(new Link("relate") { - public void onClick() { - /* - * TODO choose specific space for search - */ - ItemSearch itemSearch = new ItemSearch(getPrincipal()); - itemSearch.setRelatingItemRefId(item.getRefId()); - setResponsePage(new ItemSearchFormPage(itemSearch)); - } - }.setVisible(!hideLinks)); - - if (item.getRelatedItems() != null) { - add(new ListView("relatedItems", new ArrayList(item.getRelatedItems())) { - /* (non-Javadoc) - * @see org.apache.wicket.markup.html.list.ListView#populateItem(org.apache.wicket.markup.html.list.ListItem) - */ - protected void populateItem(ListItem listItem) { - final ItemItem itemItem = (ItemItem) listItem.getModelObject(); - String message = null; - - if (itemItem.getType() == DUPLICATE_OF) { - message = localize("item_view.duplicateOf"); - } else if (itemItem.getType() == DEPENDS_ON) { - message = localize("item_view.dependsOn"); - } else if (itemItem.getType() == RELATED) { - message = localize("item_view.relatedTo"); - } - - final String refId = itemItem.getRelatedItem().getRefId(); - if (hideLinks) { - message = message + " " + refId; - } - - listItem.add(new Label("message", message)); - Link link = new Link("link") { - public void onClick() { - setResponsePage(ItemViewPage.class, new PageParameters("0=" + refId)); - } - }; - - link.add(new Label("refId", refId)); - link.setVisible(!hideLinks); - listItem.add(link); - listItem.add(new Link("remove") { - public void onClick() { - setResponsePage(new ItemRelateRemovePage(item.getId(), itemItem)); - } - }.setVisible(!hideLinks)); - } - }); - } else { - add(new WebMarkupContainer("relatedItems").setVisible(false)); - } - - if (item.getRelatingItems() != null) { - add(new ListView("relatingItems", new ArrayList(item.getRelatingItems())) { - /* (non-Javadoc) - * @see org.apache.wicket.markup.html.list.ListView#populateItem(org.apache.wicket.markup.html.list.ListItem) - */ - protected void populateItem(ListItem listItem) { - final ItemItem itemItem = (ItemItem) listItem.getModelObject(); - - /* - * This looks very similar to related items block above - * but the display strings could be different and in - * future handling of the inverse of the bidirectional - * link could be different as well. - */ - String message = null; - if (itemItem.getType() == DUPLICATE_OF) { - message = localize("item_view.duplicateOfThis"); - } else if (itemItem.getType() == DEPENDS_ON) { - message = localize("item_view.dependsOnThis"); - } else if (itemItem.getType() == RELATED) { - message = localize("item_view.relatedToThis"); - } - - final String refId = itemItem.getItem().getRefId(); - if (hideLinks) { - message = refId + " " + message; - } - - listItem.add(new Label("message", message)); - Link link = new Link("link") { - public void onClick() { - setResponsePage(ItemViewPage.class, new PageParameters("0=" + refId)); - } - }; - - link.add(new Label("refId", refId)); - link.setVisible(!hideLinks); - listItem.add(link); - listItem.add(new Link("remove") { - public void onClick() { - setResponsePage(new ItemRelateRemovePage(item.getId(), itemItem)); - } - }.setVisible(!hideLinks)); - } - }); - } else { - add(new WebMarkupContainer("relatingItems").setVisible(false)); - } - - add(new Label("status", new PropertyModel(item, "statusValue"))); - add(new Label("loggedBy", new PropertyModel(item, "loggedBy.name"))); - add(new Label("assignedTo", new PropertyModel(item, "assignedTo.name"))); - add(new Label("summary", new PropertyModel(item, "summary"))); - add(new Label("detail", ItemUtils.fixWhiteSpace(item.getDetail())).setEscapeModelStrings(false)); - - final SimpleAttributeModifier sam = new SimpleAttributeModifier("class", "alt"); - final Map<Field.Name, Field> fields = item.getSpace().getMetadata().getFields(); - add(new ListView("fields", item.getSpace().getMetadata().getFieldOrder()) { - /* (non-Javadoc) - * @see org.apache.wicket.markup.html.list.ListView#populateItem(org.apache.wicket.markup.html.list.ListItem) - */ - protected void populateItem(ListItem listItem) { - if (listItem.getIndex() % 2 == 0) { - listItem.add(sam); - } - - Field.Name fieldName = (Field.Name) listItem.getModelObject(); - Field field = fields.get(fieldName); - listItem.add(new Label("label", field.getLabel())); - listItem.add(new Label("value", item.getCustomValue(fieldName))); - } - }); - - final List<Field> editable = item.getSpace().getMetadata().getEditableFields(); - - add(new ListView("labels", editable) { - /* (non-Javadoc) - * @see org.apache.wicket.markup.html.list.ListView#populateItem(org.apache.wicket.markup.html.list.ListItem) - */ - protected void populateItem(ListItem listItem) { - Field field = (Field) listItem.getModelObject(); - listItem.add(new Label("label", field.getLabel())); - } - }); - - if (item.getHistory() != null) { - List<History> history = new ArrayList(item.getHistory()); - add(new ListView("history", history) { - /* (non-Javadoc) - * @see org.apache.wicket.markup.html.list.ListView#populateItem(org.apache.wicket.markup.html.list.ListItem) - */ - protected void populateItem(ListItem listItem) { - if (listItem.getIndex() % 2 != 0) { - listItem.add(sam); - } - - final History h = (History) listItem.getModelObject(); - listItem.add(new Label("loggedBy", new PropertyModel(h, "loggedBy.name"))); - listItem.add(new Label("status", new PropertyModel(h, "statusValue"))); - listItem.add(new Label("assignedTo", new PropertyModel(h, "assignedTo.name"))); - - WebMarkupContainer comment = new WebMarkupContainer("comment"); - comment.add(new AttachmentLinkPanel("attachment", h.getAttachment())); - comment.add(new Label("comment", ItemUtils.fixWhiteSpace(h.getComment())).setEscapeModelStrings(false)); - listItem.add(comment); - - listItem.add(new Label("timeStamp", DateUtils.formatTimeStamp(h.getTimeStamp()))); - listItem.add(new ListView("fields", editable) { - /* (non-Javadoc) - * @see org.apache.wicket.markup.html.list.ListView#populateItem(org.apache.wicket.markup.html.list.ListItem) - */ - protected void populateItem(ListItem listItem) { - Field field = (Field) listItem.getModelObject(); - listItem.add(new Label("field", h.getCustomValue(field.getName()))); - } - }); - } - }); - } - - } // end method addComponents(Item) -} \ No newline at end of file +/* + * Copyright 2002-2005 the original author or authors. + * + * Licensed 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. + */ + +package info.jtrac.wicket; + +import static info.jtrac.domain.ItemItem.*; + +import info.jtrac.domain.Field; +import info.jtrac.domain.History; +import info.jtrac.domain.Item; +import info.jtrac.domain.ItemItem; +import info.jtrac.domain.ItemSearch; +import info.jtrac.util.DateUtils; +import info.jtrac.util.ItemUtils; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import org.apache.wicket.PageParameters; +import org.apache.wicket.behavior.SimpleAttributeModifier; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.link.Link; +import org.apache.wicket.markup.html.list.ListItem; +import org.apache.wicket.markup.html.list.ListView; +import org.apache.wicket.model.PropertyModel; + +/** + * This class is responsible the panel showing the item read-only view. + */ +public class ItemViewPanel extends BasePanel { + + /** + * Boolean flags to hide links. + */ + private boolean hideLinks; + + /** + * Constructor + * + * @param id + * @param itemId + */ + public ItemViewPanel(String id, long itemId) { + super(id); + addComponents(getJtrac().loadItem(itemId)); + } + + /** + * Constructor + * + * @param id + * @param item + * @param hideLinks + */ + public ItemViewPanel(String id, final Item item, boolean hideLinks) { + super(id); + this.hideLinks = hideLinks; + addComponents(item); + } + + /** + * This method allows to add components (items). + * + * @param item The {@link Item} to add. + */ + private void addComponents(final Item item) { + add(new Label("refId", new PropertyModel(item, "refId"))); + + add(new Link("relate") { + public void onClick() { + /* + * TODO choose specific space for search + */ + ItemSearch itemSearch = new ItemSearch(getPrincipal()); + itemSearch.setRelatingItemRefId(item.getRefId()); + setResponsePage(new ItemSearchFormPage(itemSearch)); + } + }.setVisible(!hideLinks)); + + if (item.getRelatedItems() != null) { + add(new ListView("relatedItems", new ArrayList(item.getRelatedItems())) { + /* (non-Javadoc) + * @see org.apache.wicket.markup.html.list.ListView#populateItem(org.apache.wicket.markup.html.list.ListItem) + */ + protected void populateItem(ListItem listItem) { + final ItemItem itemItem = (ItemItem) listItem.getModelObject(); + String message = null; + + if (itemItem.getType() == DUPLICATE_OF) { + message = localize("item_view.duplicateOf"); + } else if (itemItem.getType() == DEPENDS_ON) { + message = localize("item_view.dependsOn"); + } else if (itemItem.getType() == RELATED) { + message = localize("item_view.relatedTo"); + } + + final String refId = itemItem.getRelatedItem().getRefId(); + if (hideLinks) { + message = message + " " + refId; + } + + listItem.add(new Label("message", message)); + Link link = new Link("link") { + public void onClick() { + setResponsePage(ItemViewPage.class, new PageParameters("0=" + refId)); + } + }; + + link.add(new Label("refId", refId)); + link.setVisible(!hideLinks); + listItem.add(link); + listItem.add(new Link("remove") { + public void onClick() { + setResponsePage(new ItemRelateRemovePage(item.getId(), itemItem)); + } + }.setVisible(!hideLinks)); + } + }); + } else { + add(new WebMarkupContainer("relatedItems").setVisible(false)); + } + + if (item.getRelatingItems() != null) { + add(new ListView("relatingItems", new ArrayList(item.getRelatingItems())) { + /* (non-Javadoc) + * @see org.apache.wicket.markup.html.list.ListView#populateItem(org.apache.wicket.markup.html.list.ListItem) + */ + protected void populateItem(ListItem listItem) { + final ItemItem itemItem = (ItemItem) listItem.getModelObject(); + + /* + * This looks very similar to related items block above + * but the display strings could be different and in + * future handling of the inverse of the bidirectional + * link could be different as well. + */ + String message = null; + if (itemItem.getType() == DUPLICATE_OF) { + message = localize("item_view.duplicateOfThis"); + } else if (itemItem.getType() == DEPENDS_ON) { + message = localize("item_view.dependsOnThis"); + } else if (itemItem.getType() == RELATED) { + message = localize("item_view.relatedToThis"); + } + + final String refId = itemItem.getItem().getRefId(); + if (hideLinks) { + message = refId + " " + message; + } + + listItem.add(new Label("message", message)); + Link link = new Link("link") { + public void onClick() { + setResponsePage(ItemViewPage.class, new PageParameters("0=" + refId)); + } + }; + + link.add(new Label("refId", refId)); + link.setVisible(!hideLinks); + listItem.add(link); + listItem.add(new Link("remove") { + public void onClick() { + setResponsePage(new ItemRelateRemovePage(item.getId(), itemItem)); + } + }.setVisible(!hideLinks)); + } + }); + } else { + add(new WebMarkupContainer("relatingItems").setVisible(false)); + } + + add(new Label("status", new PropertyModel(item, "statusValue"))); + add(new Label("loggedBy", new PropertyModel(item, "loggedBy.name"))); + add(new Label("assignedTo", new PropertyModel(item, "assignedTo.name"))); + add(new Label("summary", new PropertyModel(item, "summary"))); + add(new Label("detail", ItemUtils.htmlizeUrls(ItemUtils.fixWhiteSpace(item.getDetail()))).setEscapeModelStrings(false)); + + final SimpleAttributeModifier sam = new SimpleAttributeModifier("class", "alt"); + final Map<Field.Name, Field> fields = item.getSpace().getMetadata().getFields(); + add(new ListView("fields", item.getSpace().getMetadata().getFieldOrder()) { + /* (non-Javadoc) + * @see org.apache.wicket.markup.html.list.ListView#populateItem(org.apache.wicket.markup.html.list.ListItem) + */ + protected void populateItem(ListItem listItem) { + if (listItem.getIndex() % 2 == 0) { + listItem.add(sam); + } + + Field.Name fieldName = (Field.Name) listItem.getModelObject(); + Field field = fields.get(fieldName); + listItem.add(new Label("label", field.getLabel())); + listItem.add(new Label("value", item.getCustomValue(fieldName))); + } + }); + + final List<Field> editable = item.getSpace().getMetadata().getEditableFields(); + + add(new ListView("labels", editable) { + /* (non-Javadoc) + * @see org.apache.wicket.markup.html.list.ListView#populateItem(org.apache.wicket.markup.html.list.ListItem) + */ + protected void populateItem(ListItem listItem) { + Field field = (Field) listItem.getModelObject(); + listItem.add(new Label("label", field.getLabel())); + } + }); + + if (item.getHistory() != null) { + List<History> history = new ArrayList(item.getHistory()); + add(new ListView("history", history) { + /* (non-Javadoc) + * @see org.apache.wicket.markup.html.list.ListView#populateItem(org.apache.wicket.markup.html.list.ListItem) + */ + protected void populateItem(ListItem listItem) { + if (listItem.getIndex() % 2 != 0) { + listItem.add(sam); + } + + final History h = (History) listItem.getModelObject(); + listItem.add(new Label("loggedBy", new PropertyModel(h, "loggedBy.name"))); + listItem.add(new Label("status", new PropertyModel(h, "statusValue"))); + listItem.add(new Label("assignedTo", new PropertyModel(h, "assignedTo.name"))); + + WebMarkupContainer comment = new WebMarkupContainer("comment"); + comment.add(new AttachmentLinkPanel("attachment", h.getAttachment())); + comment.add(new Label("comment", ItemUtils.htmlizeUrls(ItemUtils.fixWhiteSpace(h.getComment()))).setEscapeModelStrings(false)); + listItem.add(comment); + + listItem.add(new Label("timeStamp", DateUtils.formatTimeStamp(h.getTimeStamp()))); + listItem.add(new ListView("fields", editable) { + /* (non-Javadoc) + * @see org.apache.wicket.markup.html.list.ListView#populateItem(org.apache.wicket.markup.html.list.ListItem) + */ + protected void populateItem(ListItem listItem) { + Field field = (Field) listItem.getModelObject(); + listItem.add(new Label("field", h.getCustomValue(field.getName()))); + } + }); + } + }); + } + + } // end method addComponents(Item) +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <udi...@us...> - 2021-08-10 09:29:31
|
Revision: 1387 http://sourceforge.net/p/j-trac/code/1387 Author: udittmer Date: 2021-08-10 09:29:28 +0000 (Tue, 10 Aug 2021) Log Message: ----------- lint compiler args in POM, obscure displayed passwords Modified Paths: -------------- trunk/jtrac/pom.xml trunk/jtrac/src/main/java/info/jtrac/wicket/ConfigListPage.java Modified: trunk/jtrac/pom.xml =================================================================== --- trunk/jtrac/pom.xml 2021-08-09 09:43:08 UTC (rev 1386) +++ trunk/jtrac/pom.xml 2021-08-10 09:29:28 UTC (rev 1387) @@ -466,6 +466,12 @@ <configuration> <source>1.8</source> <target>1.8</target> + <compilerArgs> + <arg>-Xlint:deprecation</arg> + <!-- + <arg>-Xlint:unchecked</arg> + --> + </compilerArgs> </configuration> <executions> <execution> Modified: trunk/jtrac/src/main/java/info/jtrac/wicket/ConfigListPage.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/ConfigListPage.java 2021-08-09 09:43:08 UTC (rev 1386) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/ConfigListPage.java 2021-08-10 09:29:28 UTC (rev 1387) @@ -1,82 +1,84 @@ -/* - * Copyright 2002-2005 the original author or authors. - * - * Licensed 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. - */ - -package info.jtrac.wicket; - -import info.jtrac.domain.Config; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import org.apache.wicket.behavior.SimpleAttributeModifier; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.link.Link; -import org.apache.wicket.markup.html.list.ListItem; -import org.apache.wicket.markup.html.list.ListView; - -/** - * This class is responsible to list all configuration parameters. - * It also declares which edit forms will be called to modify the - * configuration parameters. - */ -public class ConfigListPage extends BasePage { - /** - * Constructor - * - * @param selectedParam - */ - public ConfigListPage(final String selectedParam) { - - final Map<String, String> configMap = getJtrac().loadAllConfig(); - - List<String> params = new ArrayList(Config.getParams()); - - final SimpleAttributeModifier sam = new SimpleAttributeModifier("class", "alt"); - - add(new ListView("configs", params) { - protected void populateItem(ListItem listItem) { - final String param = (String) listItem.getModelObject(); - final String value = configMap.get(param); - - if (param.equals(selectedParam)) { - listItem.add(new SimpleAttributeModifier("class", "selected")); - } else if(listItem.getIndex() % 2 == 1) { - listItem.add(sam); - } - - listItem.add(new Label("param", param)); - listItem.add(new Label("value", value)); - - if (param.toLowerCase().indexOf("password") != -1) { - // Password value to be edited - listItem.add(new Link("link") { - public void onClick() { - setResponsePage(new ConfigPasswordFormPage(param, value)); - } - }); - } else { - // Normal text value to be edited - listItem.add(new Link("link") { - public void onClick() { - setResponsePage(new ConfigFormPage(param, value)); - } - }); - } - listItem.add(new Label("description", localize("config." + param))); - } - }); - - } -} \ No newline at end of file +/* + * Copyright 2002-2005 the original author or authors. + * + * Licensed 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. + */ + +package info.jtrac.wicket; + +import info.jtrac.domain.Config; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import org.apache.wicket.behavior.SimpleAttributeModifier; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.link.Link; +import org.apache.wicket.markup.html.list.ListItem; +import org.apache.wicket.markup.html.list.ListView; + +/** + * This class is responsible to list all configuration parameters. + * It also declares which edit forms will be called to modify the configuration parameters. + */ + +public class ConfigListPage extends BasePage { + + private static final SimpleAttributeModifier SAM_ALT = new SimpleAttributeModifier("class", "alt"); + private static final SimpleAttributeModifier SAM_SEL = new SimpleAttributeModifier("class", "selected"); + + public ConfigListPage(final String selectedParam) { + + final Map<String, String> configMap = getJtrac().loadAllConfig(); + + List<String> params = new ArrayList(Config.getParams()); + + add(new ListView("configs", params) { + protected void populateItem (ListItem listItem) { + final String param = (String) listItem.getModelObject(); + final String value = configMap.get(param); + + if (param.equals(selectedParam)) { + listItem.add(SAM_SEL); + } else if (listItem.getIndex() % 2 == 1) { + listItem.add(SAM_ALT); + } + + listItem.add(new Label("param", param)); + + if (param.toLowerCase().indexOf("password") != -1) { + // Password value to be edited + + // obscure the password, but give an indication of its length + listItem.add(new Label("value", new String(new char[value.length()]).replaceAll("\0", "*"))); + + listItem.add(new Link("link") { + public void onClick() { + setResponsePage(new ConfigPasswordFormPage(param, value)); + } + }); + } else { + // Normal text value to be edited + + listItem.add(new Label("value", value)); + + listItem.add(new Link("link") { + public void onClick() { + setResponsePage(new ConfigFormPage(param, value)); + } + }); + } + listItem.add(new Label("description", localize("config." + param))); + } + }); + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <udi...@us...> - 2021-08-09 09:43:10
|
Revision: 1386 http://sourceforge.net/p/j-trac/code/1386 Author: udittmer Date: 2021-08-09 09:43:08 +0000 (Mon, 09 Aug 2021) Log Message: ----------- cleanup, set version to 2.2.0-b1 Modified Paths: -------------- trunk/jtrac/pom.xml Modified: trunk/jtrac/pom.xml =================================================================== --- trunk/jtrac/pom.xml 2021-08-09 09:26:39 UTC (rev 1385) +++ trunk/jtrac/pom.xml 2021-08-09 09:43:08 UTC (rev 1386) @@ -4,7 +4,7 @@ <groupId>info.jtrac</groupId> <artifactId>jtrac</artifactId> <packaging>war</packaging> - <version>2.2.0</version> + <version>2.2.0-b1</version> <name>JTrac</name> <description> JTrac is a generic issue-tracking web-application that can be easily customized by adding custom fields @@ -11,8 +11,8 @@ and drop-downs. Features include customizable workflow, field level permissions, e-mail integration, file attachments and a detailed history view. </description> - <url>http://jtrac.info</url> - + <url>https://sourceforge.net/projects/j-trac/</url> + <licenses> <license> <name>The Apache Software License, Version 2.0</name> @@ -19,12 +19,12 @@ <url>license.txt</url> </license> </licenses> - + <scm> <connection>scm:svn:https://j-trac.svn.sourceforge.net/svnroot/j-trac/trunk/jtrac</connection> <url>http://j-trac.svn.sourceforge.net/viewvc/j-trac/trunk/jtrac/</url> </scm> - + <distributionManagement> <site> <id>website</id> @@ -31,7 +31,7 @@ <url>scp://shell.sourceforge.net/home/groups/j/j-/j-trac/htdocs</url> </site> </distributionManagement> - + <mailingLists> <mailingList> <name>JTrac Mailing List</name> @@ -41,7 +41,7 @@ <archive>http://sourceforge.net/mailarchive/forum.php?forum_name=j-trac-users</archive> </mailingList> </mailingLists> - + <developers> <developer> <name>Peter Thomas</name> @@ -56,7 +56,7 @@ <timezone>+1</timezone> </developer> </developers> - + <repositories> <repository> <id>openqa.org</id> @@ -436,7 +436,7 @@ </dependency> --> </dependencies> - + <build> <finalName>jtrac</finalName> <!-- for Wicket HTML files --> @@ -481,8 +481,9 @@ </executions> </plugin> <plugin> - <groupId>org.mortbay.jetty</groupId> + <groupId>org.eclipse.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> + <version>9.4.43.v20210629</version> <configuration> <systemProperties> <systemProperty> @@ -495,6 +496,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> + <version>2.22.2</version> <configuration> <excludes> <exclude>info/jtrac/selenium/**</exclude> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <udi...@us...> - 2021-08-09 09:26:42
|
Revision: 1385 http://sourceforge.net/p/j-trac/code/1385 Author: udittmer Date: 2021-08-09 09:26:39 +0000 (Mon, 09 Aug 2021) Log Message: ----------- fix Hungarian and Turkish translation files Modified Paths: -------------- trunk/jtrac/src/main/resources/messages_hu.properties trunk/jtrac/src/main/resources/messages_tr.properties Modified: trunk/jtrac/src/main/resources/messages_hu.properties =================================================================== --- trunk/jtrac/src/main/resources/messages_hu.properties 2021-08-09 09:12:19 UTC (rev 1384) +++ trunk/jtrac/src/main/resources/messages_hu.properties 2021-08-09 09:26:39 UTC (rev 1385) @@ -2,409 +2,409 @@ # http://j-trac.sourceforge.net/doc/html/dev-guide.html#dev-translating # globals -submit = Ment\xE9s -cancel = M\xE9gsem -delete = T\xF6rl\xE9s +submit = Ment\u00e9s +cancel = M\u00e9gsem +delete = T\u00f6rl\u00e9s back = Vissza -next = K\xF6vetkez\xF5 -edit = M\xF3dos\xEDt +next = K\u00f6vetkez\u00f5 +edit = M\u00f3dos\u00edt view = Mutat search = Keres -new = \xDAj -save = Ment\xE9s +new = \u00daj +save = Ment\u00e9s # override default messages for spring mvc form binding errors -typeMismatch.java.lang.Double = Adjon meg egy \xE9rv\xE9nyes sz\xE1mot -typeMismatch.java.util.Date = Adjon meg egy \xE9rv\xE9nyes d\xE1tumot ebben a form\xE1ban\: yyyy-mm-dd +typeMismatch.java.lang.Double = Adjon meg egy \u00e9rv\u00e9nyes sz\u00e1mot +typeMismatch.java.util.Date = Adjon meg egy \u00e9rv\u00e9nyes d\u00e1tumot ebben a form\u00e1ban\: yyyy-mm-dd # wicket globals null = nullValid = -Required = T\xF6ltse ki a k\xF6telez\xF5en kit\xF6ltend\xF5 mez\xF5ket -IConverter.Double = ${label}\: Adjon meg egy \xE9rv\xE9nyes sz\xE1mot -IConverter.Date = ${label}\: Adjon meg egy \xE9rv\xE9nyes d\xE1tumot ebben a form\xE1ban yyyy-mm-dd +Required = T\u00f6ltse ki a k\u00f6telez\u00f5en kit\u00f6ltend\u00f5 mez\u00f5ket +IConverter.Double = ${label}\: Adjon meg egy \u00e9rv\u00e9nyes sz\u00e1mot +IConverter.Date = ${label}\: Adjon meg egy \u00e9rv\u00e9nyes d\u00e1tumot ebben a form\u00e1ban yyyy-mm-dd # generic form validation message -error.empty = \xC9rt\xE9k Sz\xFCks\xE9ges +error.empty = \u00c9rt\u00e9k Sz\u00fcks\u00e9ges # header navigation -header.dashboard = TER\xDCLETEK -header.new = \xDAJ +header.dashboard = TER\u00dcLETEK +header.new = \u00daJ header.search = KERES -header.options = BE\xC1LL\xCDT\xC1SOK -header.login = BEL\xC9P\xC9S -header.logout = KIL\xC9P\xC9S +header.options = BE\u00c1LL\u00cdT\u00c1SOK +header.login = BEL\u00c9P\u00c9S +header.logout = KIL\u00c9P\u00c9S # dashboard -dashboard.noSpaces = Egy ter\xFClethez sincs joga -dashboard.space = Ter\xFClet -dashboard.action = Akci\xF3 -dashboard.status = St\xE1tusz -dashboard.loggedByMe = \xC1ltalam<br/>R\xF6gz\xEDtve -dashboard.assignedToMe = Hozz\xE1m<br/>Rendelve -dashboard.all = \xD6sszes -dashboard.new = \xDAJ +dashboard.noSpaces = Egy ter\u00fclethez sincs joga +dashboard.space = Ter\u00fclet +dashboard.action = Akci\u00f3 +dashboard.status = St\u00e1tusz +dashboard.loggedByMe = \u00c1ltalam<br/>R\u00f6gz\u00edtve +dashboard.assignedToMe = Hozz\u00e1m<br/>Rendelve +dashboard.all = \u00d6sszes +dashboard.new = \u00daJ dashboard.search = KERES -dashboard.showDetails = R\xE9szletek mutat\xE1sa -dashboard.hideDetails = R\xE9szletek elrejt\xE9se +dashboard.showDetails = R\u00e9szletek mutat\u00e1sa +dashboard.hideDetails = R\u00e9szletek elrejt\u00e9se # item_form -item_form.summary = T\xE1rgy -item_form.detail = R\xE9szletek -item_form.assignTo = Hozz\xE1rendelve -item_form.editReason = Ok m\xF3dos\xEDt\xE1sa -item_form.sendNotifications = email \xE9rtes\xEDt\xE9sek k\xFCld\xE9se -item_form.notifyByEmail = \xC9rtes\xEDtsd Email -ben -item_form.attachment = Csatolm\xE1ny -item_form.error.version = A t\xE9tel m\xE1s felhaszn\xE1l\xF3 m\xF3dos\xEDtotta vagy a b\xF6ng\xE9sz\xF5 VISSZA gombj\xE1t haszn\xE1lta. +item_form.summary = T\u00e1rgy +item_form.detail = R\u00e9szletek +item_form.assignTo = Hozz\u00e1rendelve +item_form.editReason = Ok m\u00f3dos\u00edt\u00e1sa +item_form.sendNotifications = email \u00e9rtes\u00edt\u00e9sek k\u00fcld\u00e9se +item_form.notifyByEmail = \u00c9rtes\u00edtsd Email -ben +item_form.attachment = Csatolm\u00e1ny +item_form.error.version = A t\u00e9tel m\u00e1s felhaszn\u00e1l\u00f3 m\u00f3dos\u00edtotta vagy a b\u00f6ng\u00e9sz\u00f5 VISSZA gombj\u00e1t haszn\u00e1lta. # item_view (note this is rendered within a taglib and not in a JSP) item_view.id = ID -item_view.relatedItems = Vonatkoz\xF3 t\xE9telek -item_view.remove = T\xF6r\xF6l -item_view.relatedTo = kapcsol\xF3dik ehhez -item_view.duplicateOf = m\xE1solata ennek -item_view.dependsOn = f\xFCgg ett\xF5l -item_view.relatedToThis = kapcsol\xF3dik ehhez -item_view.duplicateOfThis = m\xE1solata ennek -item_view.dependsOnThis = f\xFCgg ett\xF5l +item_view.relatedItems = Vonatkoz\u00f3 t\u00e9telek +item_view.remove = T\u00f6r\u00f6l +item_view.relatedTo = kapcsol\u00f3dik ehhez +item_view.duplicateOf = m\u00e1solata ennek +item_view.dependsOn = f\u00fcgg ett\u00f5l +item_view.relatedToThis = kapcsol\u00f3dik ehhez +item_view.duplicateOfThis = m\u00e1solata ennek +item_view.dependsOnThis = f\u00fcgg ett\u00f5l item_view.this = ez -item_view.status = St\xE1tusz -item_view.loggedBy = R\xF6gz\xEDtve -item_view.assignedTo = Hozz\xE1rendelve -item_view.summary = T\xE1rgy -item_view.detail = R\xE9szletek -item_view.history = T\xF6rt\xE9net -item_view.comment = Megjegyz\xE9s -item_view.timeStamp = Id\xF5pont +item_view.status = St\u00e1tusz +item_view.loggedBy = R\u00f6gz\u00edtve +item_view.assignedTo = Hozz\u00e1rendelve +item_view.summary = T\u00e1rgy +item_view.detail = R\u00e9szletek +item_view.history = T\u00f6rt\u00e9net +item_view.comment = Megjegyz\u00e9s +item_view.timeStamp = Id\u00f5pont # item_view_form -item_view_form.relateTo = Kapcsol\xF3djon ez a t\xE9tel ehhez -item_view_form.duplicateOf = m\xE1solata ennek -item_view_form.dependsOn = f\xFCgg ett\xF5l -item_view_form.relatedTo = kapcsol\xF3dik ehhez -item_view_form.newStatus = \xDAj St\xE1tusz -item_view_form.assignTo = Rendeld Hozz\xE1 -item_view_form.comment = Megjegyz\xE9s -item_view_form.sendNotifications = email \xE9rtes\xEDt\xE9sek k\xFCld\xE9se -item_view_form.addRelatedItem = vonatkoz\xF3 t\xE9tel hozz\xE1ad\xE1sa -item_view_form.change = v\xE1ltoz\xE1s -item_view_form.notifyByEmail = \xC9rtes\xEDtsd Email \xFAtj\xE1n -item_view_form.attachment = Csatolm\xE1ny -item_view_form.assignedTo.error = Rendeld Hozz\xE1: Sz\xFCks\xE9ges ha a st\xE1tusz nem {0} -item_view_form.status.error = Sz\xFCks\xE9ges hozz\xE1rendel\xE9skor -item_view_form.chooseStatus = -- v\xE1lasszon st\xE1tuszt -- +item_view_form.relateTo = Kapcsol\u00f3djon ez a t\u00e9tel ehhez +item_view_form.duplicateOf = m\u00e1solata ennek +item_view_form.dependsOn = f\u00fcgg ett\u00f5l +item_view_form.relatedTo = kapcsol\u00f3dik ehhez +item_view_form.newStatus = \u00daj St\u00e1tusz +item_view_form.assignTo = Rendeld Hozz\u00e1 +item_view_form.comment = Megjegyz\u00e9s +item_view_form.sendNotifications = email \u00e9rtes\u00edt\u00e9sek k\u00fcld\u00e9se +item_view_form.addRelatedItem = vonatkoz\u00f3 t\u00e9tel hozz\u00e1ad\u00e1sa +item_view_form.change = v\u00e1ltoz\u00e1s +item_view_form.notifyByEmail = \u00c9rtes\u00edtsd Email \u00fatj\u00e1n +item_view_form.attachment = Csatolm\u00e1ny +item_view_form.assignedTo.error = Rendeld Hozz\u00e1: Sz\u00fcks\u00e9ges ha a st\u00e1tusz nem {0} +item_view_form.status.error = Sz\u00fcks\u00e9ges hozz\u00e1rendel\u00e9skor +item_view_form.chooseStatus = -- v\u00e1lasszon st\u00e1tuszt -- # item_search_form -item_search_form.searchingForRelated = Ehhez kapcsol\xF3d\xF3 t\xE9telek keres\xE9se -item_search_form.viewItemById = T\xE9telek megtekint\xE9se ID szerint -item_search_form.textSearch = Sz\xF6veg Keres\xE9s -item_search_form.resultsPerPage = Eredm\xE9ny / Oldal -item_search_form.noLimit = Nincs Hat\xE1r -item_search_form.sortOnColumn = Oszlop Rendez\xE9s +item_search_form.searchingForRelated = Ehhez kapcsol\u00f3d\u00f3 t\u00e9telek keres\u00e9se +item_search_form.viewItemById = T\u00e9telek megtekint\u00e9se ID szerint +item_search_form.textSearch = Sz\u00f6veg Keres\u00e9s +item_search_form.resultsPerPage = Eredm\u00e9ny / Oldal +item_search_form.noLimit = Nincs Hat\u00e1r +item_search_form.sortOnColumn = Oszlop Rendez\u00e9s item_search_form.id = ID -item_search_form.descending = Cs\xF6kken\xF5 -item_search_form.showDetail = R\xE9szletek Mutat\xE1sa -item_search_form.showHistory = T\xF6rt\xE9net Mutat\xE1sa +item_search_form.descending = Cs\u00f6kken\u00f5 +item_search_form.showDetail = R\u00e9szletek Mutat\u00e1sa +item_search_form.showHistory = T\u00f6rt\u00e9net Mutat\u00e1sa item_search_form.loggedBy = Bejelentkezve -item_search_form.assignedTo = Hozz\xE1rendelve -item_search_form.createdDate = L\xE9trehoz\xE1s D\xE1tuma +item_search_form.assignedTo = Hozz\u00e1rendelve +item_search_form.createdDate = L\u00e9trehoz\u00e1s D\u00e1tuma item_search_form.onOrAfter = On / After item_search_form.onOrBefore = On / Before -item_search_form.status = St\xE1tusz +item_search_form.status = St\u00e1tusz item_search_form.severity = Severity -item_search_form.priority = Priorit\xE1s +item_search_form.priority = Priorit\u00e1s item_search_form.historyUpdatedDate = History Updated Date -item_search_form.space = Ter\xFClet -item_search_form.error.refId.invalid = \xC9rv\xE9nytelen ID -item_search_form.error.refId.notFound = T\xE9tel nem tal\xE1lhat\xF3 -item_search_form.error.summary.invalid = \xC9rv\xE9nytelen Keres\xE9si Felt\xE9tel +item_search_form.space = Ter\u00fclet +item_search_form.error.refId.invalid = \u00c9rv\u00e9nytelen ID +item_search_form.error.refId.notFound = T\u00e9tel nem tal\u00e1lhat\u00f3 +item_search_form.error.summary.invalid = \u00c9rv\u00e9nytelen Keres\u00e9si Felt\u00e9tel # item_list (most rendered within a taglib not JSP, some reused also for excel export) -item_list.searchingForRelated = T\xE9telek keres\xE9se amik erre vonatkoznak -item_list.modifySearch = Keres\xE9s M\xF3dos\xEDt\xE1sa -item_list.recordFound = T\xE9tel Tal\xE1lat -item_list.recordsFound = T\xE9telt Tal\xE1ltam -item_list.exportToExcel = Export\xE1l\xE1s Excel -be +item_list.searchingForRelated = T\u00e9telek keres\u00e9se amik erre vonatkoznak +item_list.modifySearch = Keres\u00e9s M\u00f3dos\u00edt\u00e1sa +item_list.recordFound = T\u00e9tel Tal\u00e1lat +item_list.recordsFound = T\u00e9telt Tal\u00e1ltam +item_list.exportToExcel = Export\u00e1l\u00e1s Excel -be item_list.id = ID -item_list.summary = T\xE1rgy -item_list.detail = R\xE9szletek -item_list.loggedBy = R\xF6gz\xEDtve -item_list.status = St\xE1tusz -item_list.assignedTo = Hozz\xE1rendelve -item_list.timeStamp = Id\xF5pont -item_list.history = T\xF6rt\xE9net -item_list.space = Ter\xFClet +item_list.summary = T\u00e1rgy +item_list.detail = R\u00e9szletek +item_list.loggedBy = R\u00f6gz\u00edtve +item_list.status = St\u00e1tusz +item_list.assignedTo = Hozz\u00e1rendelve +item_list.timeStamp = Id\u00f5pont +item_list.history = T\u00f6rt\u00e9net +item_list.space = Ter\u00fclet # options -options.optionsMenu = Be\xE1ll\xEDt\xE1sok Men\xFC -options.editYourProfile = Felhaszn\xE1l\xF3i Profil M\xF3dos\xEDt\xE1sa -options.manageUsers = Felhaszn\xE1l\xF3k Karbantart\xE1sa -options.manageSpaces = Ter\xFCletek Karbantart\xE1sa -options.manageSettings = \xC1ltal\xE1nos Be\xE1ll\xEDt\xE1sok -options.rebuildIndexes = Index -ek \xDAjra\xE9p\xEDt\xE9se -options.importFromExcel = Bet\xF6lt\xE9s Excel -b\xF5l +options.optionsMenu = Be\u00e1ll\u00edt\u00e1sok Men\u00fc +options.editYourProfile = Felhaszn\u00e1l\u00f3i Profil M\u00f3dos\u00edt\u00e1sa +options.manageUsers = Felhaszn\u00e1l\u00f3k Karbantart\u00e1sa +options.manageSpaces = Ter\u00fcletek Karbantart\u00e1sa +options.manageSettings = \u00c1ltal\u00e1nos Be\u00e1ll\u00edt\u00e1sok +options.rebuildIndexes = Index -ek \u00dajra\u00e9p\u00edt\u00e9se +options.importFromExcel = Bet\u00f6lt\u00e9s Excel -b\u00f5l # user_form -user_form.userDetails = Felhaszn\xE1l\xF3i R\xE9szletek +user_form.userDetails = Felhaszn\u00e1l\u00f3i R\u00e9szletek user_form.loginId = Login ID -user_form.fullName = Teljes N\xE9v +user_form.fullName = Teljes N\u00e9v user_form.emailId = E-Mail ID user_form.language = Nyelv -user_form.passwordMessage = Alap\xE9rtelmez\xE9sk\xE9nt egy jelsz\xF3 gener\xE1l\xF3dni fog \xE9s e-mail \xFAtj\xE1n el lesz k\xFCldve.<br/>A mez\xF5k al\xE1bb opcion\xE1lisan t\xF6ltend\xF5k. -user_form.password = Jelsz\xF3 -user_form.confirmPassword = Jelsz\xF3 Meger\xF5s\xEDt\xE9s -user_form.loginId.error.invalid = A Login ID \xE9rv\xE9nytelen karaktereket tartalmaz -user_form.loginId.error.exists = Login ID m\xE1r l\xE9tezik +user_form.passwordMessage = Alap\u00e9rtelmez\u00e9sk\u00e9nt egy jelsz\u00f3 gener\u00e1l\u00f3dni fog \u00e9s e-mail \u00fatj\u00e1n el lesz k\u00fcldve.<br/>A mez\u00f5k al\u00e1bb opcion\u00e1lisan t\u00f6ltend\u00f5k. +user_form.password = Jelsz\u00f3 +user_form.confirmPassword = Jelsz\u00f3 Meger\u00f5s\u00edt\u00e9s +user_form.loginId.error.invalid = A Login ID \u00e9rv\u00e9nytelen karaktereket tartalmaz +user_form.loginId.error.exists = Login ID m\u00e1r l\u00e9tezik user_form.passwordConfirm.error = A jelszavak nem egyeznek. -user_form.mailPassword = jelsz\xF3 k\xFCld\xE9se e-mail \xFAtj\xE1n -user_form.locked = Z\xE1rolva +user_form.mailPassword = jelsz\u00f3 k\u00fcld\u00e9se e-mail \u00fatj\u00e1n +user_form.locked = Z\u00e1rolva # logout -logout.title = Kil\xE9p\xE9s Sikeres +logout.title = Kil\u00e9p\u00e9s Sikeres logout.home = Haza -logout.message = Kil\xE9p\xE9s Sikeres. Az \xF6sszes akt\xEDv "eml\xE9kezz r\xE1m" kapcsolat megsz\xFBnt. -logout.login = Bel\xE9p\xE9s +logout.message = Kil\u00e9p\u00e9s Sikeres. Az \u00f6sszes akt\u00edv "eml\u00e9kezz r\u00e1m" kapcsolat megsz\u00fbnt. +logout.login = Bel\u00e9p\u00e9s # login login.title = JTrac Login login.home = Home -login.loginName = Felhaszn\xE1l\xF3i azonos\xEDt\xF3 / email ID -login.password = Jelsz\xF3 -login.rememberMe = eml\xE9kezz r\xE1m -login.submit = Bel\xE9p\xE9s -login.error = Hib\xE1s felhaszn\xE1l\xF3i azonos\xEDt\xF3 vagy jelsz\xF3 +login.loginName = Felhaszn\u00e1l\u00f3i azonos\u00edt\u00f3 / email ID +login.password = Jelsz\u00f3 +login.rememberMe = eml\u00e9kezz r\u00e1m +login.submit = Bel\u00e9p\u00e9s +login.error = Hib\u00e1s felhaszn\u00e1l\u00f3i azonos\u00edt\u00f3 vagy jelsz\u00f3 # config explanations (used in both config_list and config_form screens) -config.mail.server.host = SMTP szerver host neve vagy IP c\xEDme az elk\xFCldend\xF5 levelek sz\xE1m\xE1ra -config.mail.server.port = SMTP szerver portja (alap\xE9rtelmez\xE9s 25) -config.mail.server.username = Felhaszn\xE1l\xF3i n\xE9v az SMTP szerver sz\xE1m\xE1ra ha az authetik\xE1ci\xF3t ig\xE9nyel -config.mail.server.password = Jelsz\xF3 az SMTP szerver sz\xE1m\xE1ra ha az authetik\xE1ci\xF3t ig\xE9nyel -config.mail.server.starttls.enable = \xC1ll\xEDtsa "true" -ra a biztons\xE1gos (SSL) kapcsolat haszn\xE1lat\xE1ra ha ezt az SMTP szerver ig\xE9nyli -config.mail.subject.prefix = Email t\xE1rgy sz\xF6veg\xE9nek prefixe (alap\xE9rtelmez\xE9s [jtrac]) -config.mail.session.jndiname = javax.mail.Session JNDI n\xE9v - ha ez be van \xE1ll\xEDtva, akkor ez lesz haszn\xE1lva a fenti SMTP szerver be\xE1ll\xEDt\xE1sok helyett -config.mail.from = E-mail gener\xE1l\xE1s eset\xE9n ez lesz haszn\xE1lva mint a 'k\xFCld\xF5' c\xEDme -config.jtrac.url.base = Alap URL -je a JTrac install\xE1ci\xF3nak ( pl.: http://myserver/jtrac ) az e-mail -ekben l\xE9v\xF5 linkek miatt sz\xFCks\xE9ges -config.locale.default = Alap\xE9rtelmezett nyelv ehhez a JTrac install\xE1ci\xF3hoz pl.: "de" N\xE9met eset\xE9n -config.session.timeout = Percben megadott session timeout (alap\xE9rtelmez\xE9s 30 perc) -config.attachment.maxsize = Maxim\xE1lis m\xE9rete MB -ban a file -ok csatolm\xE1ny\xE1nak. (alap\xE9rtelmez\xE9s 5 MB) Haszn\xE1ljon -1 -et ha nem akar limitet +config.mail.server.host = SMTP szerver host neve vagy IP c\u00edme az elk\u00fcldend\u00f5 levelek sz\u00e1m\u00e1ra +config.mail.server.port = SMTP szerver portja (alap\u00e9rtelmez\u00e9s 25) +config.mail.server.username = Felhaszn\u00e1l\u00f3i n\u00e9v az SMTP szerver sz\u00e1m\u00e1ra ha az authetik\u00e1ci\u00f3t ig\u00e9nyel +config.mail.server.password = Jelsz\u00f3 az SMTP szerver sz\u00e1m\u00e1ra ha az authetik\u00e1ci\u00f3t ig\u00e9nyel +config.mail.server.starttls.enable = \u00c1ll\u00edtsa "true" -ra a biztons\u00e1gos (SSL) kapcsolat haszn\u00e1lat\u00e1ra ha ezt az SMTP szerver ig\u00e9nyli +config.mail.subject.prefix = Email t\u00e1rgy sz\u00f6veg\u00e9nek prefixe (alap\u00e9rtelmez\u00e9s [jtrac]) +config.mail.session.jndiname = javax.mail.Session JNDI n\u00e9v - ha ez be van \u00e1ll\u00edtva, akkor ez lesz haszn\u00e1lva a fenti SMTP szerver be\u00e1ll\u00edt\u00e1sok helyett +config.mail.from = E-mail gener\u00e1l\u00e1s eset\u00e9n ez lesz haszn\u00e1lva mint a 'k\u00fcld\u00f5' c\u00edme +config.jtrac.url.base = Alap URL -je a JTrac install\u00e1ci\u00f3nak ( pl.: http://myserver/jtrac ) az e-mail -ekben l\u00e9v\u00f5 linkek miatt sz\u00fcks\u00e9ges +config.locale.default = Alap\u00e9rtelmezett nyelv ehhez a JTrac install\u00e1ci\u00f3hoz pl.: "de" N\u00e9met eset\u00e9n +config.session.timeout = Percben megadott session timeout (alap\u00e9rtelmez\u00e9s 30 perc) +config.attachment.maxsize = Maxim\u00e1lis m\u00e9rete MB -ban a file -ok csatolm\u00e1ny\u00e1nak. (alap\u00e9rtelmez\u00e9s 5 MB) Haszn\u00e1ljon -1 -et ha nem akar limitet # config_list (config_form does not have any extra messages) -config_list.configurationSettings = Konfigur\xE1ci\xF3s Be\xE1ll\xEDt\xE1sok -config_list.parameter = Param\xE9ter Kulcs -config_list.value = \xC9rt\xE9k -config_list.edit = M\xF3dos\xEDt -config_list.description = Le\xEDr\xE1s +config_list.configurationSettings = Konfigur\u00e1ci\u00f3s Be\u00e1ll\u00edt\u00e1sok +config_list.parameter = Param\u00e9ter Kulcs +config_list.value = \u00c9rt\u00e9k +config_list.edit = M\u00f3dos\u00edt +config_list.description = Le\u00edr\u00e1s # excel_upload -excel_upload.uploadExcelFile = Excel \xC1llom\xE1ny Felt\xF6lt\xE9s -excel_upload.error.invalidFile = Hiba a feldolgoz\xE1s sor\xE1n, lehet hogy az Excel \xE1llom\xE1ny nem \xE9rv\xE9nyes. +excel_upload.uploadExcelFile = Excel \u00c1llom\u00e1ny Felt\u00f6lt\u00e9s +excel_upload.error.invalidFile = Hiba a feldolgoz\u00e1s sor\u00e1n, lehet hogy az Excel \u00e1llom\u00e1ny nem \u00e9rv\u00e9nyes. # excel_view -excel_view.previewImportedData= Import\xE1lt Adatok El\xF5n\xE9zete -excel_view.selectActionToPerform = v\xE1lasszon akci\xF3t -excel_view.deleteSelected = Kiv\xE1lasztott Oszlopok / Sorok T\xF6rl\xE9se -excel_view.convertToDate = Konvert\xE1l\xE1si Form\xE1tuma a Kiv\xE1lasztott Oszlopoknak D\xE1tumm\xE1 -excel_view.concatenateFields = Kiv\xE1lasztott Oszlopok Tartalm\xE1nak \xD6sszef\xFBz\xE9se -excel_view.extractFirstEighty = Tedd ki az Els\xF5 80 Karaktert egy \xFAj Oszlopba +excel_view.previewImportedData= Import\u00e1lt Adatok El\u00f5n\u00e9zete +excel_view.selectActionToPerform = v\u00e1lasszon akci\u00f3t +excel_view.deleteSelected = Kiv\u00e1lasztott Oszlopok / Sorok T\u00f6rl\u00e9se +excel_view.convertToDate = Konvert\u00e1l\u00e1si Form\u00e1tuma a Kiv\u00e1lasztott Oszlopoknak D\u00e1tumm\u00e1 +excel_view.concatenateFields = Kiv\u00e1lasztott Oszlopok Tartalm\u00e1nak \u00d6sszef\u00fbz\u00e9se +excel_view.extractFirstEighty = Tedd ki az Els\u00f5 80 Karaktert egy \u00faj Oszlopba # exception_flow -exception_flow.unsupportedNavigation = Nem T\xE1mogatott Navig\xE1ci\xF3 -exception_flow.line1 = A b\xF6ng\xE9sz\xF5 Vissza gombja / oldal friss\xEDt\xE9s - nem t\xE1mogatott ebben a verzi\xF3ban. -exception_flow.line2 = Ez a hiba nem helyre\xE1ll\xEDthat\xF3 \xE9s vissza kell \xE1ll\xEDtania ez el\xF5z\xF5 oldalt a navig\xE1ci\xF3 haszn\xE1lat\xE1val. -exception_flow.line3 = Hogy elker\xFClje ezt a hib\xE1t, k\xE9rem haszn\xE1lja navig\xE1l\xE1sra a linkeket vagy nyom\xF3gombokat az alkalmaz\xE1sban. +exception_flow.unsupportedNavigation = Nem T\u00e1mogatott Navig\u00e1ci\u00f3 +exception_flow.line1 = A b\u00f6ng\u00e9sz\u00f5 Vissza gombja / oldal friss\u00edt\u00e9s - nem t\u00e1mogatott ebben a verzi\u00f3ban. +exception_flow.line2 = Ez a hiba nem helyre\u00e1ll\u00edthat\u00f3 \u00e9s vissza kell \u00e1ll\u00edtania ez el\u00f5z\u00f5 oldalt a navig\u00e1ci\u00f3 haszn\u00e1lat\u00e1val. +exception_flow.line3 = Hogy elker\u00fclje ezt a hib\u00e1t, k\u00e9rem haszn\u00e1lja navig\u00e1l\u00e1sra a linkeket vagy nyom\u00f3gombokat az alkalmaz\u00e1sban. # index_rebuild_success -index_rebuild.heading = Index -ek \xDAjra\xE9p\xEDt\xE9se +index_rebuild.heading = Index -ek \u00dajra\u00e9p\u00edt\u00e9se # index_rebuild_success -index_rebuild_success.message = Az Index -ek sikeresen \xFAjra\xE9p\xFCltek +index_rebuild_success.message = Az Index -ek sikeresen \u00fajra\u00e9p\u00fcltek # space_allocate -space_allocate.usersAllocatedToSpace = Ter\xFClethez Rendelt Felhaszn\xE1l\xF3k -space_allocate.loginName = Felhaszn\xE1l\xF3i azonos\xEDt\xF3 -space_allocate.fullName = Teljes N\xE9v -space_allocate.role = Szerepk\xF6r -space_allocate.remove = T\xF6rl\xE9s -space_allocate.allocateUser = V\xE1lasszon Felhaszn\xE1l\xF3t \xE9s Szerepk\xF6rt a ment\xE9shez -space_allocate.createNewUser = \xDAj Felhaszn\xE1l\xF3 L\xE9trehoz\xE1sa -space_allocate.user = Felhaszn\xE1l\xF3 -space_allocate.allocate = Ment\xE9s +space_allocate.usersAllocatedToSpace = Ter\u00fclethez Rendelt Felhaszn\u00e1l\u00f3k +space_allocate.loginName = Felhaszn\u00e1l\u00f3i azonos\u00edt\u00f3 +space_allocate.fullName = Teljes N\u00e9v +space_allocate.role = Szerepk\u00f6r +space_allocate.remove = T\u00f6rl\u00e9s +space_allocate.allocateUser = V\u00e1lasszon Felhaszn\u00e1l\u00f3t \u00e9s Szerepk\u00f6rt a ment\u00e9shez +space_allocate.createNewUser = \u00daj Felhaszn\u00e1l\u00f3 L\u00e9trehoz\u00e1sa +space_allocate.user = Felhaszn\u00e1l\u00f3 +space_allocate.allocate = Ment\u00e9s # space_delete -space_delete.confirm = Ter\xFClet T\xF6rl\xE9s Meger\xF5s\xEDt\xE9s -space_delete.line1 = Biztos, hogy t\xF6r\xF6lni akarja ezt a Ter\xFCletet? -space_delete.line2 = Ez az \xF6sszes bejegyz\xE9st t\xF6r\xF6lni fogja ezen a Ter\xFCleten. -space_delete.line3 = Az adatb\xE1zis m\xF3dos\xEDt\xE1sok nem vonhat\xF3k vissza ezek ut\xE1n. +space_delete.confirm = Ter\u00fclet T\u00f6rl\u00e9s Meger\u00f5s\u00edt\u00e9s +space_delete.line1 = Biztos, hogy t\u00f6r\u00f6lni akarja ezt a Ter\u00fcletet? +space_delete.line2 = Ez az \u00f6sszes bejegyz\u00e9st t\u00f6r\u00f6lni fogja ezen a Ter\u00fcleten. +space_delete.line3 = Az adatb\u00e1zis m\u00f3dos\u00edt\u00e1sok nem vonhat\u00f3k vissza ezek ut\u00e1n. # space_field_delete -space_field_delete.confirm = Mez\xF5 T\xF6rl\xE9s Meger\xF5s\xEDt\xE9s -space_field_delete.line1 = Biztos, hogy t\xF6rli ezt a Mez\xF5t? -space_field_delete.line2 = Az \xE9rintett adatb\xE1zis bejegyz\xE9sek sz\xE1ma = {0} -space_field_delete.line3 = Az adatb\xE1zis m\xF3dos\xEDt\xE1sok nem vonhat\xF3k vissza ezek ut\xE1n. +space_field_delete.confirm = Mez\u00f5 T\u00f6rl\u00e9s Meger\u00f5s\u00edt\u00e9s +space_field_delete.line1 = Biztos, hogy t\u00f6rli ezt a Mez\u00f5t? +space_field_delete.line2 = Az \u00e9rintett adatb\u00e1zis bejegyz\u00e9sek sz\u00e1ma = {0} +space_field_delete.line3 = Az adatb\u00e1zis m\u00f3dos\u00edt\u00e1sok nem vonhat\u00f3k vissza ezek ut\u00e1n. # space_field_form -space_field_form.editField = Mez\xF5 M\xF3dos\xEDt\xE1s -space_field_form.internalName = Bels\xF5 N\xE9v +space_field_form.editField = Mez\u00f5 M\u00f3dos\u00edt\u00e1s +space_field_form.internalName = Bels\u00f5 N\u00e9v space_field_form.label = Cimke -space_field_form.optional = Opcion\xE1lis -space_field_form.options = Opci\xF3 -space_field_form.addOption = Opci\xF3 Hozz\xE1ad\xE1s -space_field_form.update = Ment\xE9s -space_field_form.done = K\xE9sz -space_field_form.error.optionExists = Az opci\xF3 m\xE1r l\xE9tezik +space_field_form.optional = Opcion\u00e1lis +space_field_form.options = Opci\u00f3 +space_field_form.addOption = Opci\u00f3 Hozz\u00e1ad\u00e1s +space_field_form.update = Ment\u00e9s +space_field_form.done = K\u00e9sz +space_field_form.error.optionExists = Az opci\u00f3 m\u00e1r l\u00e9tezik # space_field_option_delete -space_field_option_delete.confirm = Opci\xF3 T\xF6rl\xE9s Meger\xF5s\xEDt\xE9s -space_field_option_delete.line1 = Biztos benne, hogy t\xF6rli ezt az Opci\xF3t? -space_field_option_delete.line2 = Az \xE9rintett adatb\xE1zis bejegyz\xE9sek sz\xE1ma = {0} -space_field_option_delete.line3 = Az adatb\xE1zis m\xF3dos\xEDt\xE1sok nem vonhat\xF3k vissza ezek ut\xE1n. +space_field_option_delete.confirm = Opci\u00f3 T\u00f6rl\u00e9s Meger\u00f5s\u00edt\u00e9s +space_field_option_delete.line1 = Biztos benne, hogy t\u00f6rli ezt az Opci\u00f3t? +space_field_option_delete.line2 = Az \u00e9rintett adatb\u00e1zis bejegyz\u00e9sek sz\u00e1ma = {0} +space_field_option_delete.line3 = Az adatb\u00e1zis m\u00f3dos\u00edt\u00e1sok nem vonhat\u00f3k vissza ezek ut\u00e1n. # space_field_option_edit -space_field_option_edit.editOption = Mez\xF5 Opci\xF3 M\xF3dos\xEDt\xE1sa -space_field_option_edit.error.optionEmpty = Az Opci\xF3 nem lehet \xFCres -space_field_option_edit.error.exists = Az Opci\xF3 m\xE1r l\xE9tezik +space_field_option_edit.editOption = Mez\u00f5 Opci\u00f3 M\u00f3dos\u00edt\u00e1sa +space_field_option_edit.error.optionEmpty = Az Opci\u00f3 nem lehet \u00fcres +space_field_option_edit.error.exists = Az Opci\u00f3 m\u00e1r l\u00e9tezik # space_fields -space_fields.customFields = Egyedi Mez\xF5k a Ter\xFCleten +space_fields.customFields = Egyedi Mez\u00f5k a Ter\u00fcleten space_fields.move = Mozgat -space_fields.internalName = Bels\xF5 n\xE9v -space_fields.type = T\xEDpus -space_fields.optional = Opcion\xE1lis +space_fields.internalName = Bels\u00f5 n\u00e9v +space_fields.type = T\u00edpus +space_fields.optional = Opcion\u00e1lis space_fields.label = Cimke -space_fields.optionList = V\xE1laszt\xE9k -space_fields.chooseType = V\xE1lassza ki az Egyedi mez\xF5 T\xEDpus\xE1t a felvitelhez -space_fields.addField = Mez\xF5 hozz\xE1ad\xE1sa -space_fields.type_1 = Severity (Leg\xF6rd\xFCl\xF5) -space_fields.type_2 = Priorit\xE1s (Leg\xF6rd\xFCl\xF5) -space_fields.type_3 = Leg\xF6rd\xFCl\xF5 lista -space_fields.type_4 = Eg\xE9sz sz\xE1m -space_fields.type_5 = Sz\xF6veges Mez\xF5 -space_fields.type_6 = D\xE1tum Mez\xF5 +space_fields.optionList = V\u00e1laszt\u00e9k +space_fields.chooseType = V\u00e1lassza ki az Egyedi mez\u00f5 T\u00edpus\u00e1t a felvitelhez +space_fields.addField = Mez\u00f5 hozz\u00e1ad\u00e1sa +space_fields.type_1 = Severity (Leg\u00f6rd\u00fcl\u00f5) +space_fields.type_2 = Priorit\u00e1s (Leg\u00f6rd\u00fcl\u00f5) +space_fields.type_3 = Leg\u00f6rd\u00fcl\u00f5 lista +space_fields.type_4 = Eg\u00e9sz sz\u00e1m +space_fields.type_5 = Sz\u00f6veges Mez\u00f5 +space_fields.type_6 = D\u00e1tum Mez\u00f5 space_fields.typeRemaining = {0} maradt # space_form -space_form.spaceDetails = Ter\xFClet R\xE9szletei -space_form.displayName = Megjelen\xEDt\xE9si N\xE9v -space_form.spaceKey = Ter\xFClet Kulcs (R\xF6vid N\xE9v) -space_form.description = Le\xEDr\xE1s -space_form.makePublic = Mindenki sz\xE1m\xE1ra el\xE9rhet\xF5 -space_form.allowGuest = Vend\xE9g Sz\xE1m\xE1ra (csak olvashat\xF3) El\xE9rhet\xF5 -space_form.copyExisting = L\xE9tez\xF5 ter\xFClet Lem\xE1sol\xE1sa -space_form.createFresh = L\xE9trehoz\xE1s scratch -b\xF5l -space_form.error.prefixCode.tooShort = Legal\xE1bb 3 karakter hossz\xFAnak kell lennie. -space_form.error.prefixCode.tooLong = Nem adhat meg 10 karaktern\xE9l t\xF6bbet. -space_form.error.prefixCode.invalid = Csak nagybet\xFBket \xE9s sz\xE1mokat adhat meg -space_form.error.prefixCode.exists = Ilyen kuccsal rendelkez\xF5 Ter\xFClet m\xE1r l\xE9tezik +space_form.spaceDetails = Ter\u00fclet R\u00e9szletei +space_form.displayName = Megjelen\u00edt\u00e9si N\u00e9v +space_form.spaceKey = Ter\u00fclet Kulcs (R\u00f6vid N\u00e9v) +space_form.description = Le\u00edr\u00e1s +space_form.makePublic = Mindenki sz\u00e1m\u00e1ra el\u00e9rhet\u00f5 +space_form.allowGuest = Vend\u00e9g Sz\u00e1m\u00e1ra (csak olvashat\u00f3) El\u00e9rhet\u00f5 +space_form.copyExisting = L\u00e9tez\u00f5 ter\u00fclet Lem\u00e1sol\u00e1sa +space_form.createFresh = L\u00e9trehoz\u00e1s scratch -b\u00f5l +space_form.error.prefixCode.tooShort = Legal\u00e1bb 3 karakter hossz\u00fanak kell lennie. +space_form.error.prefixCode.tooLong = Nem adhat meg 10 karaktern\u00e9l t\u00f6bbet. +space_form.error.prefixCode.invalid = Csak nagybet\u00fbket \u00e9s sz\u00e1mokat adhat meg +space_form.error.prefixCode.exists = Ilyen kuccsal rendelkez\u00f5 Ter\u00fclet m\u00e1r l\u00e9tezik # space_list -space_list.spaceList = Ter\xFClet Lista -space_list.createNewSpace = \xDAj Ter\xFClet L\xE9trehoz\xE1sa +space_list.spaceList = Ter\u00fclet Lista +space_list.createNewSpace = \u00daj Ter\u00fclet L\u00e9trehoz\u00e1sa space_list.key = Kulcs -space_list.name = N\xE9v -space_list.edit = M\xF3dos\xEDt -space_list.description = Le\xEDr\xE1s -space_list.users = Felhaszn\xE1l\xF3k +space_list.name = N\u00e9v +space_list.edit = M\u00f3dos\u00edt +space_list.description = Le\u00edr\u00e1s +space_list.users = Felhaszn\u00e1l\u00f3k # space_role_delete -space_role_delete.confirm = Szerepk\xF6r T\xF6rl\xE9s Meger\xF5s\xEDt\xE9s -space_role_delete.line1 = Vannak felhaszn\xE1lok ({0}) ilyen Szerepk\xF6rrel ehhez a Ter\xFClethez. -space_role_delete.line2 = Biztos benne, hogy t\xF6rli ezt a Szerepk\xF6rt? -space_role_delete.line3 = Az adatb\xE1zis m\xF3dos\xEDt\xE1sok nem vonhat\xF3k vissza ezek ut\xE1n. +space_role_delete.confirm = Szerepk\u00f6r T\u00f6rl\u00e9s Meger\u00f5s\u00edt\u00e9s +space_role_delete.line1 = Vannak felhaszn\u00e1lok ({0}) ilyen Szerepk\u00f6rrel ehhez a Ter\u00fclethez. +space_role_delete.line2 = Biztos benne, hogy t\u00f6rli ezt a Szerepk\u00f6rt? +space_role_delete.line3 = Az adatb\u00e1zis m\u00f3dos\u00edt\u00e1sok nem vonhat\u00f3k vissza ezek ut\u00e1n. # space_role_form -space_role_form.editRoleName = Szerepk\xF6r N\xE9v M\xF3dos\xEDt\xE1s -space_role_form.error.role.invalid = A Szerepk\xF6r csak nagybet\xFBket \xE9s sz\xE1mokat tartalmazhat -space_role_form.error.role.exists = Ilyen nev\xFB Szerepk\xF6r m\xE1r l\xE9tezik +space_role_form.editRoleName = Szerepk\u00f6r N\u00e9v M\u00f3dos\u00edt\u00e1s +space_role_form.error.role.invalid = A Szerepk\u00f6r csak nagybet\u00fbket \u00e9s sz\u00e1mokat tartalmazhat +space_role_form.error.role.exists = Ilyen nev\u00fb Szerepk\u00f6r m\u00e1r l\u00e9tezik # space_role_form_confirm -space_role_form_confirm.confirm = Szerepk\xF6r \xC1tnevez\xE9s Meger\xF5s\xEDt\xE9s: {0} -t erre: {1} -space_role_form_confirm.line1 = Biztos benn, hogy \xE1tnevezi ezt a Szerepk\xF6rt? -space_role_form_confirm.line2 = Az adatb\xE1zis m\xF3dos\xEDt\xE1sok nem vonhat\xF3k vissza ezek ut\xE1n. +space_role_form_confirm.confirm = Szerepk\u00f6r \u00c1tnevez\u00e9s Meger\u00f5s\u00edt\u00e9s: {0} -t erre: {1} +space_role_form_confirm.line1 = Biztos benn, hogy \u00e1tnevezi ezt a Szerepk\u00f6rt? +space_role_form_confirm.line2 = Az adatb\u00e1zis m\u00f3dos\u00edt\u00e1sok nem vonhat\u00f3k vissza ezek ut\u00e1n. # space_roles -space_roles.spaceRoles = Ter\xFClet Szerepk\xF6r\xF6k \xE9s St\xE1tusz-Be\xE1ll\xEDt\xE1sok (Workflow) a Ter\xFCleten -space_roles.addState = St\xE1tusz Hozz\xE1ad\xE1sa -space_roles.addRole = Szerepk\xF6r Hozz\xE1ad\xE1sa -space_roles.nextAllowedState = K\xF6vetkez\xF5 El\xE9rhet\xF5 St\xE1tusz -space_roles.fieldLevelPermissions = Mez\xF5 Szint\xFB Jogosults\xE1gok -space_roles.state = St\xE1tusz -space_roles.role = Szerepk\xF6r -space_roles.mandatory = K\xF6telez\xF5 -space_roles.optional = Opcion\xE1lis -space_roles.readonly = Csak-Olvashat\xF3 +space_roles.spaceRoles = Ter\u00fclet Szerepk\u00f6r\u00f6k \u00e9s St\u00e1tusz-Be\u00e1ll\u00edt\u00e1sok (Workflow) a Ter\u00fcleten +space_roles.addState = St\u00e1tusz Hozz\u00e1ad\u00e1sa +space_roles.addRole = Szerepk\u00f6r Hozz\u00e1ad\u00e1sa +space_roles.nextAllowedState = K\u00f6vetkez\u00f5 El\u00e9rhet\u00f5 St\u00e1tusz +space_roles.fieldLevelPermissions = Mez\u00f5 Szint\u00fb Jogosults\u00e1gok +space_roles.state = St\u00e1tusz +space_roles.role = Szerepk\u00f6r +space_roles.mandatory = K\u00f6telez\u00f5 +space_roles.optional = Opcion\u00e1lis +space_roles.readonly = Csak-Olvashat\u00f3 # space_state_delete -space_state_delete.confirm = St\xE1tusz T\xF6rl\xE9s Meger\xF5s\xEDt\xE9s -space_state_delete.line1 = Biztos benne, hogy t\xF6rli ezt a St\xE1tuszt? -space_state_delete.line2 = Az \xE9rintett adatb\xE1zis bejegyz\xE9sek sz\xE1ma = {0} -space_state_delete.line3 = Az adatb\xE1zis m\xF3dos\xEDt\xE1sok nem vonhat\xF3k vissza ezek ut\xE1n. +space_state_delete.confirm = St\u00e1tusz T\u00f6rl\u00e9s Meger\u00f5s\u00edt\u00e9s +space_state_delete.line1 = Biztos benne, hogy t\u00f6rli ezt a St\u00e1tuszt? +space_state_delete.line2 = Az \u00e9rintett adatb\u00e1zis bejegyz\u00e9sek sz\u00e1ma = {0} +space_state_delete.line3 = Az adatb\u00e1zis m\u00f3dos\u00edt\u00e1sok nem vonhat\u00f3k vissza ezek ut\u00e1n. # space_state_form -space_state_form.editState = St\xE1tusz M\xF3dos\xEDt\xE1sa -space_state_form.error.state.invalid = A St\xE1tusznak r\xF6vid\xEDt\xE9snek kell lennie k\xF6t\xF5jelesen ('-'), hogy elv\xE1lassza a szavakat pl. 'Fixed', 'On-Hold' or 'Work-In-Progress' -space_state_form.error.state.exists = Ilyen nev\xFB St\xE1tusz m\xE1r l\xE9tezik +space_state_form.editState = St\u00e1tusz M\u00f3dos\u00edt\u00e1sa +space_state_form.error.state.invalid = A St\u00e1tusznak r\u00f6vid\u00edt\u00e9snek kell lennie k\u00f6t\u00f5jelesen ('-'), hogy elv\u00e1lassza a szavakat pl. 'Fixed', 'On-Hold' or 'Work-In-Progress' +space_state_form.error.state.exists = Ilyen nev\u00fb St\u00e1tusz m\u00e1r l\u00e9tezik # user_allocate_space -user_allocate_space.spacesAllocated = Ter\xFClet be\xE1ll\xEDtva a Felhaszn\xE1l\xF3nak -user_allocate_space.space = Ter\xFClet -user_allocate_space.role = Szerpk\xF6r -user_allocate_space.remove = T\xF6r\xF6l -user_allocate_space.chooseSpace = V\xE1lasszon egy Ter\xFCletet ennek a Felhaszn\xE1l\xF3nak -user_allocate_space.makeUserAdmin = Legyen ez a felhaszn\xE1l\xF3 egy Adminisztr\xE1tor (minden Ter\xFCleten) -user_allocate_space.makeAdmin = Legyen Adminisztr\xE1tor +user_allocate_space.spacesAllocated = Ter\u00fclet be\u00e1ll\u00edtva a Felhaszn\u00e1l\u00f3nak +user_allocate_space.space = Ter\u00fclet +user_allocate_space.role = Szerpk\u00f6r +user_allocate_space.remove = T\u00f6r\u00f6l +user_allocate_space.chooseSpace = V\u00e1lasszon egy Ter\u00fcletet ennek a Felhaszn\u00e1l\u00f3nak +user_allocate_space.makeUserAdmin = Legyen ez a felhaszn\u00e1l\u00f3 egy Adminisztr\u00e1tor (minden Ter\u00fcleten) +user_allocate_space.makeAdmin = Legyen Adminisztr\u00e1tor # user_allocate_space_role -user_allocate_space_role.allocateRole = Szerepk\xF6r Be\xE1ll\xEDt\xE1s a(z) {0} Felhaszn\xE1l\xF3 sz\xE1m\xE1ra a Ter\xFCleten bel\xFCl -user_allocate_space_role.allocate = Be\xE1ll\xEDt +user_allocate_space_role.allocateRole = Szerepk\u00f6r Be\u00e1ll\u00edt\u00e1s a(z) {0} Felhaszn\u00e1l\u00f3 sz\u00e1m\u00e1ra a Ter\u00fcleten bel\u00fcl +user_allocate_space_role.allocate = Be\u00e1ll\u00edt # user_list -user_list.usersAndSpaces = Felhaszn\xE1l\xF3k \xE9s a hozz\xE1rendelt Ter\xFCletek -user_list.createNewUser = \xDAj Felhaszn\xE1l\xF3 L\xE9trehoz\xE1s -user_list.userName = Felhaszn\xE1l\xF3 Neve -user_list.loginName = Bejelentkez\xE9si N\xE9v -user_list.editProfile = Profil m\xF3dos\xEDt\xE1s -user_list.locked = Felf\xFCggesztett -user_list.spaceRole = Ter\xFClet (Szerepk\xF6r) -user_list.allocateSpaceRole = Ter\xFClet / Szerepk\xF6r<br/>Be\xE1ll\xEDt\xE1s +user_list.usersAndSpaces = Felhaszn\u00e1l\u00f3k \u00e9s a hozz\u00e1rendelt Ter\u00fcletek +user_list.createNewUser = \u00daj Felhaszn\u00e1l\u00f3 L\u00e9trehoz\u00e1s +user_list.userName = Felhaszn\u00e1l\u00f3 Neve +user_list.loginName = Bejelentkez\u00e9si N\u00e9v +user_list.editProfile = Profil m\u00f3dos\u00edt\u00e1s +user_list.locked = Felf\u00fcggesztett +user_list.spaceRole = Ter\u00fclet (Szerepk\u00f6r) +user_list.allocateSpaceRole = Ter\u00fclet / Szerepk\u00f6r<br/>Be\u00e1ll\u00edt\u00e1s user_list.locale = Nyelv user_list.email = E Mail -user_list.filterBy = Sz\xFBrve +user_list.filterBy = Sz\u00fbrve # mail_sender (this is in the mail sending code, not a JSP) -mail_sender.loginMailSubject = JTrac bel\xE9p\xE9si r\xE9szletek +mail_sender.loginMailSubject = JTrac bel\u00e9p\u00e9si r\u00e9szletek mail_sender.loginMailGreeting = Hello -mail_sender.loginMailLine1 = Az \xD6n bel\xE9p\xE9si r\xE9szletei elk\xE9sz\xFCltek / m\xF3dosultak a k\xF6vetkez\xF5 k\xE9ppen: -mail_sender.loginName = Bejelentkez\xE9si N\xE9v -mail_sender.password = Jelsz\xF3 -mail_sender.loginMailLine2 = Haszn\xE1lja a linket al\xE1bb a bel\xE9p\xE9shez: +mail_sender.loginMailLine1 = Az \u00d6n bel\u00e9p\u00e9si r\u00e9szletei elk\u00e9sz\u00fcltek / m\u00f3dosultak a k\u00f6vetkez\u00f5 k\u00e9ppen: +mail_sender.loginName = Bejelentkez\u00e9si N\u00e9v +mail_sender.password = Jelsz\u00f3 +mail_sender.loginMailLine2 = Haszn\u00e1lja a linket al\u00e1bb a bel\u00e9p\u00e9shez: # new item_relate_remove -item_relate_remove.heading = Kapcsolat t\xF6rl\xE9s meger\xF5s\xEDt\xE9s +item_relate_remove.heading = Kapcsolat t\u00f6rl\u00e9s meger\u00f5s\u00edt\u00e9s # item_delete -item_delete.confirm = Bejegyz\xE9s T\xF6rl\xE9s Meger\xF5s\xEDt\xE9s -item_delete.line1 = Biztos, hogy t\xF6rli ezt a bejegyz\xE9st? -item_delete.line2 = Az adatb\xE1zis m\xF3dos\xEDt\xE1sok nem vonhat\xF3k vissza ezek ut\xE1n. +item_delete.confirm = Bejegyz\u00e9s T\u00f6rl\u00e9s Meger\u00f5s\u00edt\u00e9s +item_delete.line1 = Biztos, hogy t\u00f6rli ezt a bejegyz\u00e9st? +item_delete.line2 = Az adatb\u00e1zis m\u00f3dos\u00edt\u00e1sok nem vonhat\u00f3k vissza ezek ut\u00e1n. # user_delete -user_delete.confirm = Felhaszn\xE1l\xF3 T\xF6rl\xE9s Meger\xF5s\xEDt\xE9s -user_delete.line1 = Biztos, hogy t\xF6rli ezt a Felhaszn\xE1l\xF3t? -user_delete.line2 = Az adatb\xE1zis m\xF3dos\xEDt\xE1sok nem vonhat\xF3k vissza ezek ut\xE1n. -user_delete.notPossible = Erre a felhaszn\xE1l\xF3ra bejegyz\xE9sek hivatkoznak \xE9s nem t\xF6r\xF6lhet\xF5. Pr\xF3b\xE1lja meg felf\xFCggeszteni ezt a felhaszn\xE1l\xF3t vagy t\xF6r\xF6lni a r\xE1 vonatkoz\xF3 bejegyz\xE9seket. +user_delete.confirm = Felhaszn\u00e1l\u00f3 T\u00f6rl\u00e9s Meger\u00f5s\u00edt\u00e9s +user_delete.line1 = Biztos, hogy t\u00f6rli ezt a Felhaszn\u00e1l\u00f3t? +user_delete.line2 = Az adatb\u00e1zis m\u00f3dos\u00edt\u00e1sok nem vonhat\u00f3k vissza ezek ut\u00e1n. +user_delete.notPossible = Erre a felhaszn\u00e1l\u00f3ra bejegyz\u00e9sek hivatkoznak \u00e9s nem t\u00f6r\u00f6lhet\u00f5. Pr\u00f3b\u00e1lja meg felf\u00fcggeszteni ezt a felhaszn\u00e1l\u00f3t vagy t\u00f6r\u00f6lni a r\u00e1 vonatkoz\u00f3 bejegyz\u00e9seket. # generic error messages -error.itemBelongsToUnallocatedSpace = \xD6nnek nincs joga megtekinteni ezt a bejegyz\xE9st +error.itemBelongsToUnallocatedSpace = \u00d6nnek nincs joga megtekinteni ezt a bejegyz\u00e9st # item search filter wizard -item_filter.showColumn = Mutasd a List\xE1ban -item_filter.expression = Keres\xE9si Felt\xE9tel -item_filter.expandAll = (\xF6sszes kinyit\xE1s) +item_filter.showColumn = Mutasd a List\u00e1ban +item_filter.expression = Keres\u00e9si Felt\u00e9tel +item_filter.expandAll = (\u00f6sszes kinyit\u00e1s) item_filter.in = benne vannak item_filter.notIn = nincsenek benne item_filter.like = tartalmazza -item_filter.equal = egyenl\xF5 -item_filter.notEqual = nem egyenl\xF5 +item_filter.equal = egyenl\u00f5 +item_filter.notEqual = nem egyenl\u00f5 item_filter.greaterThan = nagyobb mint item_filter.lessThan = kissebb mint -item_filter.between = k\xF6z\xF6tt +item_filter.between = k\u00f6z\u00f6tt Modified: trunk/jtrac/src/main/resources/messages_tr.properties =================================================================== --- trunk/jtrac/src/main/resources/messages_tr.properties 2021-08-09 09:12:19 UTC (rev 1384) +++ trunk/jtrac/src/main/resources/messages_tr.properties 2021-08-09 09:26:39 UTC (rev 1385) @@ -1,407 +1,407 @@ -# contributed by Murat Akbay and Ali \xD6zkan \xD6zeren - -# globals -submit = G\xF6nder -cancel = \xDDptal -delete = Sil -back = Geri -next = Sonraki -edit = D\xFCzenle -view = G\xF6ster -search = Arama -new = Yeni -save = Sakla - -# override default messages for spring mvc form binding errors -typeMismatch.java.lang.Double = L\xFCtfen ge\xE7erli bir say\xFD giriniz -typeMismatch.java.util.Date = L\xFCtfen tarihi belirtilen formatta giriniz\: yyyy-mm-dd - -# wicket globals -null = -nullValid = -Required = L\xFCtfen zorunlu alanlar\xFD giriniz -IConverter.Double = ${label}\: L\xFCtfen ge\xE7erli bir say\xFD giriniz -IConverter.Date = ${label}\: L\xFCtfen tarihi belirtilen formatta giriniz yyyy-mm-dd - -# generic form validation message -error.empty = De\xF0er girilmeli - -# header navigation -header.dashboard = \xDDSTEK/HATA PANOSU -header.new = YEN\xDD -header.search = ARAMA -header.options = SE\xC7ENEKLER -header.login = G\xDDR\xDD\xDE -header.logout = \xC7IKI\xDE - -# dashboard -dashboard.noSpaces = Her hangi bir yere y\xF6nlendirilmemi\xFEsiniz... -dashboard.space = Yer -dashboard.action = Hareket -dashboard.status = Durum -dashboard.loggedByMe = Benim<br/>kayd\xFDm -dashboard.assignedToMe = Bana<br/>atanan -dashboard.all = Hepsi -dashboard.new = YEN\xDD -dashboard.search = ARAMA -dashboard.showDetails = Ayr\xFDnt\xFDlar\xFD G\xF6ster -dashboard.hideDetails = Ayr\xFDnt\xFDlar\xFD Gizle - -# item_form -item_form.summary = \xD6zet -item_form.detail = Ayr\xFDnt\xFD -item_form.assignTo = Atand\xFD\xF0\xFD Ki\xFEi -item_form.editReason = Nedeni D\xFCzenle -item_form.sendNotifications = e-posta bildirisi g\xF6nder -item_form.notifyByEmail = e-posta ile bildir -item_form.attachment = Eklenti -item_form.error.version = Kay\xFDt ba\xFEka bir kullan\xFDc\xFD taraf\xFDndan g\xFCncellendi ya da taray\xFDc\xFDn\xFDn geri tu\xFEunu kulland\xFDn\xFDz. - -# item_view (note this is rendered within a taglib and not in a JSP) -item_view.id = ID -item_view.relatedItems = \xDDli\xFEkili Kay\xFDtlar -item_view.remove = \xC7\xFDkar -item_view.relatedTo = ile alakal\xFD -item_view.duplicateOf = ile tekrar etmi\xFE -item_view.dependsOn = ile ba\xF0l\xFD -item_view.relatedToThis = bununla ili\xFEkili -item_view.duplicateOfThis = bunun tekrar etmi\xFEi -item_view.dependsOnThis = buna ba\xF0l\xFD -item_view.this = bu -item_view.status = Durum -item_view.loggedBy = Kay\xFDt d\xFC\xFEen ki\xFEi -item_view.assignedTo = Atanan ki\xFEi -item_view.summary = \xD6zet -item_view.detail = Ayr\xFDnt\xFD -item_view.history = Tarih\xE7e -item_view.comment = Yorum -item_view.timeStamp = Zaman - -# item_view_form -item_view_form.relateTo = ili\xFEkilendir -item_view_form.duplicateOf = ile tekrar etmi\xFE -item_view_form.dependsOn = buna ba\xF0l\xFD -item_view_form.relatedTo = bununla ili\xFEkili -item_view_form.newStatus = Yeni Durum -item_view_form.assignTo = Ata -item_view_form.comment = Yorum -item_view_form.sendNotifications = e-posta bildirisi g\xF6nder -item_view_form.addRelatedItem = ili\xFEkili kay\xFDt ata -item_view_form.change = de\xF0i\xFEtir -item_view_form.notifyByEmail = e-posta ile bildir -item_view_form.attachment = Eklenti -item_view_form.assignedTo.error = Ata: Durum {0} dan farkl\xFD ise gerekli -item_view_form.status.error = E\xF0er atan\xFDyorsa gerekli -item_view_form.chooseStatus = -- durum se\xE7 -- - -# item_search_form -item_search_form.searchingForRelated = \xDDli\xFEkili kay\xFDtlar aran\xFDyor : -item_search_form.viewItemById = ID'ye g\xF6re g\xF6ster -item_search_form.textSearch = Metin Arama -item_search_form.resultsPerPage = Sonu\xE7lar / Sayfa -item_search_form.noLimit = S\xFDn\xFDrs\xFDz -item_search_form.sortOnColumn = S\xFCtuna g\xF6re s\xFDrala -item_search_form.id = ID -item_search_form.descending = Azalan -item_search_form.showDetail = Ayr\xFDnt\xFD G\xF6ster -item_search_form.showHistory = Tarih\xE7e G\xF6ster -item_search_form.loggedBy = Kay\xFDt D\xFC\xFEen -item_search_form.assignedTo = Atanan -item_search_form.createdDate = Yarat\xFDld\xFD\xF0\xFD Tarih -item_search_form.onOrAfter = On / Sonras\xFD -item_search_form.onOrBefore = On / \xD6ncesi -item_search_form.status = Durum -item_search_form.severity = \xD6nemi -item_search_form.priority = \xD6nceli\xF0i -item_search_form.historyUpdatedDate = Tarih\xE7e g\xFCncelleme tarihi -item_search_form.space = Yer -item_search_form.error.refId.invalid = Ge\xE7ersiz ID -item_search_form.error.refId.notFound = Kay\xFDt bulunamad\xFD -item_search_form.error.summary.invalid = Ge\xE7ersiz arama dizgisi - -# item_list (most rendered within a taglib not JSP, some reused also for excel export) -item_list.searchingForRelated = \xDDli\xFEkili kay\xFDtlar aran\xFDyor : -item_list.modifySearch = Aramay\xFD De\xF0i\xFEtir -item_list.recordFound = Kay\xFDt Bulundu -item_list.recordsFound = Kay\xFDtlar Bulundu -item_list.exportToExcel = Excel'e Al -item_list.id = ID -item_list.summary = \xD6zet -item_list.detail = Ayr\xFDnt\xFD -item_list.loggedBy = Kay\xFDt d\xFC\xFEen ki\xFEi -item_list.status = Durum -item_list.assignedTo = Atanan Ki\xFEi -item_list.timeStamp = Zaman -item_list.history = Tarih\xE7e -item_list.space = Yer - -# options -options.optionsMenu = Se\xE7enekler -options.editYourProfile = Kullan\xFDc\xFD Profili D\xFCzenle -options.manageUsers = Kullan\xFDc\xFDlar\xFD Y\xF6net -options.manageSpaces = Yerleri Y\xF6net -options.manageSettings = Ayarlar\xFD Y\xF6net -options.rebuildIndexes = Dizinleri Yeniden Olu\xFEtur -options.importFromExcel = Excel'den Al - -# user_form -user_form.userDetails = Kullan\xFDc\xFD Ayr\xFDnt\xFDlar\xFD -user_form.loginId = Login ID -user_form.fullName = Uzun Ad -user_form.emailId = E-Posta ID -user_form.language = Dil -user_form.passwordMessage = Parola olu\xFEturulup e-posta ile g\xF6nderilecek<br/>A\xFEa\xF0\xFDdaki alanar\xFDn giri\xFEi zorunlu de\xF0ildir. -user_form.password = Parola -user_form.confirmPassword = Parola Tekrar -user_form.loginId.error.invalid = Login ID ge\xE7ersiz karakterler i\xE7eriyor -user_form.loginId.error.exists = Login ID kullan\xFDl\xFDyor. -user_form.passwordConfirm.error = Girilen parolalar e\xFEle\xFEmiyor. -user_form.mailPassword = parola e-posta ile g\xF6nderildi -user_form.locked = Engelli - -# logout -logout.title = \xC7\xFDk\xFD\xFE ba\xFEar\xFDyla tamamland\xFD -logout.home = Ana Sayfa -logout.message = \xC7\xFDk\xFD\xFE ba\xFEar\xFDyla tamamland\xFD. Aktif "beni hat\xFDrla" oturumlar\xFD etkisiz hale getirildi. -logout.login = Giri\xFE - -# login -login.title = JTrac Giri\xFE -login.home = Ana Sayfa -login.loginName = Giri\xFE Ad\xFD/ e-posta ID -login.password = Parola -login.rememberMe = beni hat\xFDrla -login.submit = G\xF6nder -login.error = Ge\xE7ersiz giri\xFE bilgisi - -# config explanations (used in both config_list and config_form screens) -config.mail.server.host = e-posta g\xF6nderilmesi i\xE7in kullan\xFDlan SMTP sunucusunun ad\xFD ya da IP'si -config.mail.server.port = SMTP sunucusunun portu(varsay\xFDlan 25) -config.mail.server.username = Kimlik denetimi varsa SMTP sunucunun kullan\xFDc\xFD ad\xFD -config.mail.server.password = Kimlik denetimi varsa SMTP sunucunun parolas\xFD -config.mail.server.starttls.enable = SMTP sunucusu taraf\xFDndan gerekli ise, g\xFCvenli (SSL) ba\xF0lant\xFD i\xE7in "do\xF0ru" se\xE7ene\xF0ini se\xE7iniz -config.mail.subject.prefix = E-posta konu sat\xFDr\xFDna eklenecek \xF6n yaz\xFD (varsay\xFDlan [jtrac]) -config.mail.from = Yeni e-posta olu\xFEturulurken, 'g\xF6nderen' adres alan\xFDnda bu kullan\xFDlacak -config.jtrac.url.base = JTrac kurulum dizini ( \xF6r: http://sunucum/jtrac ) e-postalardaki ba\xF0lant\xFDlar\xFDn \xE7al\xFD\xFEmas\xFD i\xE7in gerekli -config.locale.default = Bu Jtrac kurulumu i\xE7in varsay\xFDlan dil kullan\xFDld\xFD. \xF6r: "de" Almanca i\xE7in -config.session.timeout = Kullan\xFDc\xFD oturumunun sonlanacagi zaman a\xFE\xFDm\xFD s\xFCresinin dakika t\xFCr\xFCnden de\xF0eri (varsay\xFDlan 30 dakika) -config.attachment.maxsize = Dosya eklerinde MB t\xFCr\xFCnden izin verilen azami boyut. (default 5 MB) S\xFDn\xFDrs\xFDz olmas\xFD i\xE7in -1 kullan\xFDn - -# config_list (config_form does not have any extra messages) -config_list.configurationSettings = Konfig\xFCrasyon Ayarlar\xFD -config_list.parameter = Parametre Anahtar\xFD -config_list.value = De\xF0er -config_list.edit = D\xFCzenle -config_list.description = Tan\xFDm - -# excel_upload -excel_upload.uploadExcelFile = Excel dosyas\xFDn\xFD aktar -excel_upload.error.invalidFile = Dosyay\xFD i\xFElerken hata olu\xFEtu, ge\xE7erli bir Excel dosyas\xFD olmayabilir. - -# excel_view -excel_view.previewImportedData= D\xFD\xFEardan al\xFDnan veriyi \xF6nizleme -excel_view.selectActionToPerform = ger\xE7ekle\xFEtirilecek eylemi se\xE7iniz -excel_view.deleteSelected = Se\xE7ilen S\xFCtunlar\xFD / Sat\xFDrlar\xFD Sil -excel_view.convertToDate = Se\xE7ilen S\xFCtunlar\xFD Tarih Format\xFDna \xC7evir -excel_view.concatenateFields = Se\xE7ilen S\xFCtunlar\xFDn \xDD\xE7eri\xF0ini Birle\xFEtir -excel_view.extractFirstEighty = \xDDlk 80 Karakteri Yeni S\xFCtuna \xC7ek - -# exception_flow -exception_flow.unsupportedNavigation = Desteklenmeyen Dola\xFE\xFDm -exception_flow.line1 = Web taray\xFDc\xFD geri d\xFC\xF0mesi / sayfa yenile - bu versiyonda desteklenmiyor. -exception_flow.line2 = Bu hata geri al\xFDnam\xFDyor, bir \xF6nceki sayfaya geri d\xF6nmeniz gerekiyor. -exception_flow.line3 = Bu hatay\xFD engellemek i\xE7in l\xFCtfen uygulamadaki ba\xF0lant\xFDlar\xFD veya d\xFC\xF0meleri kullan\xFDn. - -# index_rebuild_success -index_rebuild.heading = Dizinleri yeniden olu\xFEtur. - -# index_rebuild_success -index_rebuild_success.message = Dizinler Ba\xFEar\xFD ile Yeniden Olu\xFEturuldu - -# space_allocate -space_allocate.usersAllocatedToSpace = Kullan\xFDc\xFDlar\xFDn Atand\xFD\xF0\xFD Yer -space_allocate.loginName = Giri\xFE Ad\xFD -space_allocate.fullName = Uzun Ad\xFD -space_allocate.role = Rol -space_allocate.remove = Kald\xFDr -space_allocate.allocateUser = Atamak i\xE7in Kullan\xFDc\xFD ve Rol Se\xE7in -space_allocate.createNewUser = Yeni Kullan\xFDc\xFD Yarat -space_allocate.user = Kullan\xFDc\xFD -space_allocate.allocate = Ata - -# space_delete -space_delete.confirm = Yer Silme \xDD\xFElemini Onaylay\xFDn -space_delete.line1 = Bu yeri silmek istedi\xF0inize emin misiniz? -space_delete.line2 = Bu yerdeki t\xFCm nesneler silinecektir. -space_delete.line3 = Bu i\xFElem i\xE7in veritaban\xFD de\xF0i\xFEikliklerini geri alamazs\xFDn\xFDz. - -# space_field_delete -space_field_delete.confirm = Alan Silme \xDD\xFElemini Onaylay\xFDn -space_field_delete.line1 = Bu alan\xFD silmek istedi\xF0inize emin misiniz? -space_field_delete.line2 = Veritaban\xFDnda etkilenen kay\xFDt numaras\xFD = {0} -space_field_delete.line3 = Bu i\xFElem i\xE7in veritaban\xFD de\xF0i\xFEikliklerini geri alamazs\xFDn\xFDz. - -# space_field_form -space_field_form.editField = Alan\xFD D\xFCzenle -space_field_form.internalName = Ad -space_field_form.label = Etiket -space_field_form.optional = \xDDste\xF0e Ba\xF0l\xFD -space_field_form.options = Se\xE7enekler -space_field_form.addOption = Se\xE7enek Ekle -space_field_form.update = G\xFCncelle -space_field_form.done = Tamam -space_field_form.error.optionExists = Se\xE7enek daha \xF6nceden tan\xFDmlanm\xFD\xFE - -# space_field_option_delete -space_field_option_delete.confirm = Se\xE7enek Silme \xDD\xFElemini Onaylay\xFDn -space_field_option_delete.line1 = Bu se\xE7ene\xF0i silmek istedi\xF0inize emin misiniz? -space_field_option_delete.line2 = Veritaban\xFDnda etkilenen kay\xFDt numaras\xFD = {0} -space_field_option_delete.line3 = Bu i\xFElem i\xE7in veritaban\xFD de\xF0i\xFEikliklerini geri alamazs\xFDn\xFDz. - -# space_field_option_edit -space_field_option_edit.editOption = Alan Se\xE7ene\xF0ini D\xFCzenle -space_field_option_edit.error.optionEmpty = Se\xE7enek bo\xFE olamaz -space_field_option_edit.error.exists = Se\xE7enek daha \xF6nceden tan\xFDmlanm\xFD\xFE - -# space_fields -space_fields.customFields = Yer i\xE7in \xD6zel Alanlar -space_fields.move = Ta\xFE\xFD -space_fields.internalName = Ad -space_fields.type = T\xFCr -space_fields.optional = \xDDste\xF0e Ba\xF0l\xFD -space_fields.label = Etiket -space_fields.optionList = Se\xE7enek Listesi -space_fields.chooseType = Eklenecek Alan\xFDn T\xFCr\xFCn\xFC Se\xE7iniz -space_fields.addField = Alan Ekle -space_fields.type_1 = \xD6nem (A\xE7\xFDlan) -space_fields.type_2 = \xD6ncelik (A\xE7\xFDlan) -space_fields.type_3 = A\xE7\xFDlan Liste -space_fields.type_4 = Ondal\xFDk Say\xFD -space_fields.type_5 = Serbest Metin Alan\xFD -space_fields.type_6 = Tarih Alan\xFD -space_fields.typeRemaining = {0} kald\xFD - -# space_form -space_form.spaceDetails = Yer Detaylar\xFD -space_form.displayName = G\xF6r\xFCnt\xFC Ad\xFD -space_form.spaceKey = Yer Anahtar\xFD (K\xFDsa Ad) -space_form.description = Tan\xFDm -space_form.makePublic = Genel Yap -space_form.allowGuest = Ziyaret\xE7i Eri\xFEimine \xDDzin Ver (Salt Okunur) -space_form.copyExisting = Mevcut Yeri Kopyala -space_form.createFresh = s\xFDf\xFDrla -space_form.error.prefixCode.tooShort = Uzunluk en az 3 karakter olmal\xFDd\xFDr. -space_form.error.prefixCode.tooLong = Uzunluk 10 karakterden daha fazla olamaz. -space_form.error.prefixCode.invalid = Sadece b\xFCy\xFCk harfler ve say\xFDsal karakterler ge\xE7erli -space_form.error.prefixCode.exists = Bu anahtara sahip Yer daha \xF6nce yarat\xFDld\xFD - -# space_list -space_list.spaceList = Yer Listesi -space_list.createNewSpace = Yeni Yer Yarat -space_list.key = Anahtar -space_list.name = Ad -space_list.edit = D\xFCzenle -space_list.description = Tan\xFDm -space_list.users = Kullan\xFDc\xFDlar - -# space_role_delete -space_role_delete.confirm = Rol Silme \xDD\xFElemini Onaylay\xFDn -space_role_delete.line1 = Bu rol ile yere atanm\xFD\xFE ({0}) kullan\xFDc\xFDlar bulunmaktad\xFDr. -space_role_delete.line2 = Bu rol\xFC silmek istedi\xF0inizden emin misiniz? -space_role_delete.line3 = Bu i\xFElem i\xE7in veritaban\xFD de\xF0i\xFEikliklerini geri alamazs\xFDn\xFDz. - -# space_role_form -space_role_form.editRoleName = Rol ad\xFDn\xFD g\xFCncelle -space_role_form.error.role.invalid = Rol ad\xFD b\xFCy\xFCk harfler veya say\xFDsal karakterlerden olu\xFEmal\xFDd\xFDr -space_role_form.error.role.exists = Bu isimde bir Rol daha \xF6nce tan\xFDmlanm\xFD\xFE - -# space_role_form_confirm -space_role_form_confirm.confirm = Rol\xFCn isim de\xF0i\xFEikli\xF0ini onaylay\xFDn: {0} -> {1} -space_role_form_confirm.line1 = Bu rol\xFC yeniden adland\xFDrmak istedi\xF0inize emin misiniz? -space_role_form_confirm.line2 = Bu i\xFElem i\xE7in veritaban\xFD de\xF0i\xFEikliklerini geri alamazs\xFDn\xFDz. - -# space_roles -space_roles.spaceRoles = Yer i\xE7in Roller ve \xDD\xFE Ak\xFD\xFElar\xFD -space_roles.addState = Durum Ekle -space_roles.addRole = Rol Ekle -space_roles.nextAllowedState = \xDDzin Verilen Sonraki Durum -space_roles.fieldLevelPermissions = Alan Seviyesinde \xDDzinler -space_roles.state = Durum -space_roles.role = Rol -space_roles.mandatory = Zorunlu -space_roles.optional = \xDDste\xF0e Ba\xF0l\xFD -space_roles.readonly = Salt Okunur - -# space_state_delete -space_state_delete.confirm = Durum Silme \xDD\xFElemini Onaylay\xFDn -space_state_delete.line1 = Bu Durumu silmek istedi\xF0inize emin misiniz? -space_state_delete.line2 = Veritaban\xFDnda etkilenen kay\xFDt numaras\xFD = {0} -space_state_delete.line3 = Bu i\xFElem i\xE7in veritaban\xFD de\xF0i\xFEikliklerini geri alamazs\xFDn\xFDz. - -# space_state_form -space_state_form.editState = Durumu D\xFCzenle -space_state_form.error.state.invalid = Durum ad\xFD b\xFCy\xFCk harf ile ba\xFElamal\xFDd\xFDr. Ayra\xE7 olarak ('-') kullan\xFDlmal\xFDd\xFDr. \xF6r: 'Fixed', 'On-Hold' veya 'Work-In-Progress' -space_state_form.error.state.exists = Bu isimde bir Durum daha \xF6nceden tan\xFDmlanm\xFD\xFEt\xFDr - -# user_allocate_space -user_allocate_space.spacesAllocated = Kullan\xFDc\xFDya Atanm\xFD\xFE Yerler -user_allocate_space.space = Yer -user_allocate_space.role = Rol -user_allocate_space.remove = Kald\xFDr -user_allocate_space.chooseSpace = Kullan\xFDc\xFDya atamak i\xE7in Yer se\xE7iniz -user_allocate_space.makeUserAdmin = Kullan\xFDc\xFDy\xFD y\xF6netici yap (t\xFCm yerler i\xE7in) -user_allocate_space.makeAdmin = Kullan\xFDc\xFDy\xFD Yetkili Kullan\xFDc\xFD Yap - -# user_allocate_space_role -user_allocate_space_role.allocateRole = {0} kullan\xFDc\xFDs\xFDn\xFD yere ata -user_allocate_space_role.allocate = Ata - -# user_list -user_list.usersAndSpaces = Kullan\xFDc\xFDlar ve atanan yerler -user_list.createNewUser = Yeri kullan\xFDc\xFD yarat -user_list.userName = Kullan\xFDc\xFD Ad\xFD -user_list.loginName = Giri\xFE Ad\xFD -user_list.editProfile = Profili D\xFCzenle -user_list.locked = Kilitli -user_list.spaceRole = Yer (Rol) -user_list.allocateSpaceRole = Yer / Rol<br/>Ata -user_list.locale = Dil -user_list.email = E-posta -user_list.filterBy = Filtreleme kriteri : - -# mail_sender (this is in the mail sending code, not a JSP) -mail_sender.loginMailSubject = JTrac giri\xFE detaylar\xFD -mail_sender.loginMailGreeting = Selam -mail_sender.loginMailLine1 = Giri\xFE detaylar\xFDn\xFDz a\xFEa\xF0\xFDdaki gibi yarat\xFDld\xFD / g\xFCncellendi: -mail_sender.loginName = Giri\xFE Ad\xFD -mail_sender.password = Parola -mail_sender.loginMailLine2 = Giri\xFE yapmak i\xE7in a\xFEa\xF0\xFDdaki ba\xF0lant\xFDy\xFD kullan\xFDn: - -# new item_relate_remove -item_relate_remove.heading = \xDDli\xFEkiyi Silme \xDD\xFElemini Onaylay\xFDn - -# item_delete -item_delete.confirm = Nesne Silme \xDD\xFElemini Onaylay\xFDn -item_delete.line1 = Bu Nesneyi silmek istedi\xF0inize emin misiniz? -item_delete.line2 = Bu i\xFElem i\xE7in veritaban\xFD de\xF0i\xFEikliklerini geri alamazs\xFDn\xFDz. - -# user_delete -user_delete.confirm = Kullan\xFDc\xFD Silme \xDD\xFElemini Onaylay\xFDn -user_delete.line1 = Bu kullan\xFDc\xFDy\xFD silmek istedi\xF0inize emin misiniz? -user_delete.line2 = Bu i\xFElem i\xE7in veritaban\xFD de\xF0i\xFEikliklerini geri alamazs\xFDn\xFDz. -user_delete.notPossible = Bu kullan\xFDc\xFDn\xFDn referans g\xF6sterildi\xF0i ba\xFEka nesneler oldu\xF0u i\xE7in silinemedi. Kullan\xFDc\xFDy\xFD kilitlemeyi deneyin veya \xF6nce referans g\xF6steren nesneleri silin. - -# generic error messages -error.itemBelongsToUnallocatedSpace = Bu nesneyi g\xF6r\xFCnt\xFClemek i\xE7in hakk\xFDn\xFDz yok - -# item search filter wizard -item_filter.showColumn = Sonu\xE7larda g\xF6ster -item_filter.expression = Arama Filtresi -item_filter.in = de\xF0eri olan -item_filter.notIn = de\xF0eri olmayan -item_filter.like = metni i\xE7eren -item_filter.equal = e\xFEit -item_filter.notEqual = e\xFEit de\xF0il -item_filter.greaterThan = b\xFCy\xFCkt\xFCr -item_filter.lessThan = k\xFC\xE7\xFCkt\xFCr -item_filter.between = aras\xFDnda \ No newline at end of file +# contributed by Murat Akbay and Ali \u00d6zkan \u00d6zeren + +# globals +submit = G\u00f6nder +cancel = \u00ddptal +delete = Sil +back = Geri +next = Sonraki +edit = D\u00fczenle +view = G\u00f6ster +search = Arama +new = Yeni +save = Sakla + +# override default messages for spring mvc form binding errors +typeMismatch.java.lang.Double = L\u00fctfen ge\u00e7erli bir say\u00fd giriniz +typeMismatch.java.util.Date = L\u00fctfen tarihi belirtilen formatta giriniz\: yyyy-mm-dd + +# wicket globals +null = +nullValid = +Required = L\u00fctfen zorunlu alanlar\u00fd giriniz +IConverter.Double = ${label}\: L\u00fctfen ge\u00e7erli bir say\u00fd giriniz +IConverter.Date = ${label}\: L\u00fctfen tarihi belirtilen formatta giriniz yyyy-mm-dd + +# generic form validation message +error.empty = De\u00f0er girilmeli + +# header navigation +header.dashboard = \u00ddSTEK/HATA PANOSU +header.new = YEN\u00dd +header.search = ARAMA +header.options = SE\u00c7ENEKLER +header.login = G\u00ddR\u00dd\u00de +header.logout = \u00c7IKI\u00de + +# dashboard +dashboard.noSpaces = Her hangi bir yere y\u00f6nlendirilmemi\u00fesiniz... +dashboard.space = Yer +dashboard.action = Hareket +dashboard.status = Durum +dashboard.loggedByMe = Benim<br/>kayd\u00fdm +dashboard.assignedToMe = Bana<br/>atanan +dashboard.all = Hepsi +dashboard.new = YEN\u00dd +dashboard.search = ARAMA +dashboard.showDetails = Ayr\u00fdnt\u00fdlar\u00fd G\u00f6st... [truncated message content] |
From: <udi...@us...> - 2021-08-09 09:12:22
|
Revision: 1384 http://sourceforge.net/p/j-trac/code/1384 Author: udittmer Date: 2021-08-09 09:12:19 +0000 (Mon, 09 Aug 2021) Log Message: ----------- set source encoding to UTF-8; use Servlet API 3.1 web.xml header Modified Paths: -------------- trunk/jtrac/pom.xml trunk/jtrac/src/main/webapp/WEB-INF/web.xml Modified: trunk/jtrac/pom.xml =================================================================== --- trunk/jtrac/pom.xml 2021-08-09 09:03:17 UTC (rev 1383) +++ trunk/jtrac/pom.xml 2021-08-09 09:12:19 UTC (rev 1384) @@ -502,8 +502,6 @@ </excludes> </configuration> </plugin> - <!-- - --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-site-plugin</artifactId> @@ -516,6 +514,7 @@ </build> <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <timestamp>${maven.build.timestamp}</timestamp> <maven.build.timestamp.format>yyyy-MM-dd HH:mm z</maven.build.timestamp.format> </properties> Modified: trunk/jtrac/src/main/webapp/WEB-INF/web.xml =================================================================== --- trunk/jtrac/src/main/webapp/WEB-INF/web.xml 2021-08-09 09:03:17 UTC (rev 1383) +++ trunk/jtrac/src/main/webapp/WEB-INF/web.xml 2021-08-09 09:12:19 UTC (rev 1384) @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> -<web-app xmlns="http://java.sun.com/xml/ns/j2ee" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" - version="2.4"> +<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" + version="3.1"> <!-- Spring context config location(s) --> <context-param> @@ -132,7 +132,7 @@ </resource-ref> --> - <!-- +<!-- <security-constraint> <display-name>HTTPS</display-name> <web-resource-collection> @@ -143,7 +143,7 @@ <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint> - --> +--> <welcome-file-list> <welcome-file>index.html</welcome-file> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <udi...@us...> - 2021-08-09 09:03:19
|
Revision: 1383 http://sourceforge.net/p/j-trac/code/1383 Author: udittmer Date: 2021-08-09 09:03:17 +0000 (Mon, 09 Aug 2021) Log Message: ----------- version 2.2.0; remove nabble.com as mailing list archive; fix Norwegian translation file Modified Paths: -------------- trunk/jtrac/pom.xml trunk/jtrac/src/main/resources/messages_no.properties Modified: trunk/jtrac/pom.xml =================================================================== --- trunk/jtrac/pom.xml 2021-08-08 10:56:51 UTC (rev 1382) +++ trunk/jtrac/pom.xml 2021-08-09 09:03:17 UTC (rev 1383) @@ -4,7 +4,7 @@ <groupId>info.jtrac</groupId> <artifactId>jtrac</artifactId> <packaging>war</packaging> - <version>2.2.0-b1</version> + <version>2.2.0</version> <name>JTrac</name> <description> JTrac is a generic issue-tracking web-application that can be easily customized by adding custom fields @@ -39,9 +39,6 @@ <unsubscribe>-</unsubscribe> <post>-</post> <archive>http://sourceforge.net/mailarchive/forum.php?forum_name=j-trac-users</archive> - <otherArchives> - <otherArchive>http://www.nabble.com/j-trac-users-f20276.html</otherArchive> - </otherArchives> </mailingList> </mailingLists> Modified: trunk/jtrac/src/main/resources/messages_no.properties =================================================================== --- trunk/jtrac/src/main/resources/messages_no.properties 2021-08-08 10:56:51 UTC (rev 1382) +++ trunk/jtrac/src/main/resources/messages_no.properties 2021-08-09 09:03:17 UTC (rev 1383) @@ -9,7 +9,7 @@ next = Neste edit = Rediger view = Visning -search = S\xBFk +search = S\u00f8k new = Ny save = Lagre @@ -20,24 +20,24 @@ # wicket globals null = nullValid = -Required = Fyll inn n\xBFdvendige felt +Required = Fyll inn n\u00f8dvendige felt IConverter.Double = ${label}\: Legg inn et gyldig tall IConverter.Date = ${label}\: Legg inn en gyldig dato i formatet\: yyyy-mm-dd # generic form validation message -error.empty = M\x8C fylles ut +error.empty = M\u00e5 fylles ut # header navigation header.dashboard = Oversikt header.new = Ny -header.search = S\xBFk +header.search = S\u00f8k header.options = Alternativer header.login = Logg inn header.logout = Logg ut # dashboard -dashboard.noSpaces = Du er ikke koblet til noen omr\x8Cder -dashboard.space = Omr\x8Cde +dashboard.noSpaces = Du er ikke koblet til noen omr\u00e5der +dashboard.space = Omr\u00e5de dashboard.action = Handling dashboard.status = Status dashboard.loggedByMe = Lagt inn<br/>av meg @@ -44,7 +44,7 @@ dashboard.assignedToMe = Tildelt<br/>meg dashboard.all = Alle dashboard.new = Ny -dashboard.search = S\xBFk +dashboard.search = S\u00f8k dashboard.showDetails = Vis detaljer dashboard.hideDetails = Skjul detaljer @@ -52,7 +52,7 @@ item_form.summary = Overskrift item_form.detail = Beskrivelse item_form.assignTo = Tildelt -item_form.editReason = Rediger \x8Crsak +item_form.editReason = Rediger \u00e5rsak item_form.sendNotifications = send epost meldinger item_form.notifyByEmail = Varsle med epost item_form.attachment = Vedlegg @@ -91,17 +91,17 @@ item_view_form.change = endre item_view_form.notifyByEmail = Varsle med epost item_view_form.attachment = Vedlegg -item_view_form.assignedTo.error = Tildeles: P\x8Ckrevd hvis status annet enn {0} -item_view_form.status.error = P\x8Ckrevd ved fordeling +item_view_form.assignedTo.error = Tildeles: P\u00e5krevd hvis status annet enn {0} +item_view_form.status.error = P\u00e5krevd ved fordeling item_view_form.chooseStatus = -- velg status -- # item_search_form -item_search_form.searchingForRelated = S\xBFk etter emner relatert til +item_search_form.searchingForRelated = S\u00f8k etter emner relatert til item_search_form.viewItemById = Se emner etter id -item_search_form.textSearch = Teksts\xBFk +item_search_form.textSearch = Teksts\u00f8k item_search_form.resultsPerPage = Resultater / Side item_search_form.noLimit = Ingen begrensning -item_search_form.sortOnColumn = Sorter p\x8C en kolonne +item_search_form.sortOnColumn = Sorter p\u00e5 en kolonne item_search_form.id = ID item_search_form.descending = Fallende item_search_form.showDetail = Vis detalj @@ -109,20 +109,20 @@ item_search_form.loggedBy = Registrert av item_search_form.assignedTo = Tildelt item_search_form.createdDate = Opprettet dato -item_search_form.onOrAfter = P\x8C / Etter -item_search_form.onOrBefore = P\x8C / F\xBFr +item_search_form.onOrAfter = P\u00e5 / Etter +item_search_form.onOrBefore = P\u00e5 / F\u00f8r item_search_form.status = Status item_search_form.severity = Alvorlighet item_search_form.priority = Prioritering item_search_form.historyUpdatedDate = Historie oppdatert dato -item_search_form.space = Omr\x8Cde +item_search_form.space = Omr\u00e5de item_search_form.error.refId.invalid = Ugyldig id item_search_form.error.refId.notFound = Post ble ikke funnet -item_search_form.error.summary.invalid = Ugyldig s\xBFkestreng +item_search_form.error.summary.invalid = Ugyldig s\u00f8kestreng # item_list (most rendered within a taglib not JSP, some reused also for excel export) -item_list.searchingForRelated = S\xBFker etter emner relatert til -item_list.modifySearch = Endre s\xBFk +item_list.searchingForRelated = S\u00f8ker etter emner relatert til +item_list.modifySearch = Endre s\u00f8k item_list.recordFound = post funnet item_list.recordsFound = poster funnet item_list.exportToExcel = Excel @@ -135,15 +135,15 @@ item_list.assignedTo = Tildelt item_list.timeStamp = Tid item_list.history = Historie -item_list.space = Omr\x8Cde +item_list.space = Omr\u00e5de # options options.optionsMenu = Alternativer meny options.editYourProfile = Rediger brukerprofil options.manageUsers = Administrer brukere -options.manageSpaces = Administrer omr\x8Cder +options.manageSpaces = Administrer omr\u00e5der options.manageSettings = Administrer innstillinger -options.rebuildIndexes = Bygg indekser p\x8C nytt +options.rebuildIndexes = Bygg indekser p\u00e5 nytt options.importFromExcel = Importer fra Excel # user_form @@ -151,15 +151,15 @@ user_form.loginId = Logginn id user_form.fullName = Fullt navn user_form.emailId = E-post id -user_form.language = Spr\x8Ck +user_form.language = Spr\u00e5k user_form.passwordMessage = Et passord vil bli generert og sendt pr epost automatisk.<br/>Feltene under er valgfrie user_form.password = Passord user_form.confirmPassword = Bekreft passord user_form.loginId.error.invalid = Logginn id inneholder ugyldige tegn -user_form.loginId.error.exists = Logginn id finnes fra f\xBFr +user_form.loginId.error.exists = Logginn id finnes fra f\u00f8r user_form.passwordConfirm.error = Passordene er ikke like user_form.mailPassword = send passord med epost -user_form.locked = L\x8Cst +user_form.locked = L\u00e5st # logout logout.title = Utloggingen var vellykket @@ -177,7 +177,7 @@ login.error = Ugyldig brukernavn og/eller passord # config explanations (used in both config_list and config_form screens) -config.mail.server.host = Vertsnavn eller ip-adresse til SMTP-serveren som skal brukes til \x8C sende epost +config.mail.server.host = Vertsnavn eller ip-adresse til SMTP-serveren som skal brukes til \u00e5 sende epost config.mail.server.port = Port-nr brukt av SMTP-server (default 25) config.mail.server.username = Brukernavn for SMTP-server hvis denne krever autentisering config.mail.server.password = Passord for SMTP-server hvis denne krever autentisering @@ -184,18 +184,18 @@ config.mail.server.starttls.enable = Bruk "true" for sikker (SSL) forbindelse hvis SMTP-serveren krever det config.mail.subject.prefix = Tekst som vil bli lagt til i starten av epost tittel (standard [jtrac]) config.mail.session.jndiname = javax.mail.Session JNDI navn - hvis angitt vil denne bli brukt i stedet for SMTP-detaljene over -config.mail.from = N\x8Cr epost genereres, vil denne bli brukt i stedet for 'fra' adressen -config.jtrac.url.base = Basis URL for JTrac installasjonen ( f.eks http://myserver/jtrac ) n\xBFdvendig for at linker i epost skal virke +config.mail.from = N\u00e5r epost genereres, vil denne bli brukt i stedet for 'fra' adressen +config.jtrac.url.base = Basis URL for JTrac installasjonen ( f.eks http://myserver/jtrac ) n\u00f8dvendig for at linker i epost skal virke config.jtrac.header.picture = Individuelt header-bilde config.jtrac.header.text = Individuell header-tekst config.jtrac.edit.item = Skal eieren av dette emnet redigere sine elementer? -config.locale.default = Standard spr\x8Ck for enne JTrac installasjonen f.eks "no" for Norsk +config.locale.default = Standard spr\u00e5k for enne JTrac installasjonen f.eks "no" for Norsk config.session.timeout = Tid i minutter for bruker-sesjonen (standard 30 minutter) -config.attachment.maxsize = Max str i MB p\x8C filvedlegg. (standard 5 MB) Bruk -1 for ingen begrensning +config.attachment.maxsize = Max str i MB p\u00e5 filvedlegg. (standard 5 MB) Bruk -1 for ingen begrensning # config_list (config_form does not have any extra messages) config_list.configurationSettings = Konfigurasjonssettinger -config_list.parameter = Parameter N\xBFkkel +config_list.parameter = Parameter N\u00f8kkel config_list.value = Verdi config_list.edit = Rediger config_list.description = Beskrivelse @@ -202,34 +202,34 @@ # excel_upload excel_upload.uploadExcelFile = Last opp Excel fil -excel_upload.error.invalidFile = Feil ved prosessering av fil, kan v\xBEre at det ikke er en gyldig Excel-fil. +excel_upload.error.invalidFile = Feil ved prosessering av fil, kan v\u00e6re at det ikke er en gyldig Excel-fil. # excel_view -excel_view.previewImportedData = Forh\x8Cndsvisning av importerte data -excel_view.selectActionToPerform = -- valg handling \x8C utf\xBFre -- +excel_view.previewImportedData = Forh\u00e5ndsvisning av importerte data +excel_view.selectActionToPerform = -- valg handling \u00e5 utf\u00f8re -- excel_view.deleteSelected = Slett valgte kolonner / rader excel_view.convertToDate = Konverter formatet i valgte kolonner til dato -excel_view.concatenateFields = Sl\x8C sammen innholdet i valgte kolonner -excel_view.extractFirstEighty = Trekk ut f\xBFrste 80 tegn til en ny kolonne +excel_view.concatenateFields = Sl\u00e5 sammen innholdet i valgte kolonner +excel_view.extractFirstEighty = Trekk ut f\u00f8rste 80 tegn til en ny kolonne excel_view.duplicateColumn = Dupliser valgte kolonne -excel_view.mapToField = Knytt valgte kolonne til omr\x8Cde-felt +excel_view.mapToField = Knytt valgte kolonne til omr\u00e5de-felt excel_view.editRow = Rediger data for valgt rad -excel_view.import = Importer til valgt omr\x8Cde +excel_view.import = Importer til valgt omr\u00e5de -excel_view.error.noActionSelected = Velg en handling \x8C utf\xBFre -excel_view.error.noSpaceSelected = Velg et omr\x8Cde f\xBFrst +excel_view.error.noActionSelected = Velg en handling \u00e5 utf\u00f8re +excel_view.error.noSpaceSelected = Velg et omr\u00e5de f\u00f8rst excel_view.error.noColumnSelected = Velg en kolonne excel_view.error.noRowSelected = Velg en rad excel_view.error.noColumnOrRowSelected = Velg kolonner/rader excel_view.error.atLeastTwoColumns = Velg minst to kolonner excel_view.error.duplicateMapping = Feltet er brukt mer enn to ganger: '{0}' -excel_view.error.notMapped = Feltet m\x8C knyttes opp mot noe: '{0}' +excel_view.error.notMapped = Feltet m\u00e5 knyttes opp mot noe: '{0}' excel_view.error.invalidValue = Noen celler har ugyldige data -excel_view.selectSpace = Velg omr\x8Cde -excel_view.selectedSpace = Valgt omr\x8Cde -excel_view.noSpaceSelected = (Ikke noe omr\x8Cde valgt) -excel_view.preview = Forh\x8Cndsvisning +excel_view.selectSpace = Velg omr\u00e5de +excel_view.selectedSpace = Valgt omr\u00e5de +excel_view.noSpaceSelected = (Ikke noe omr\u00e5de valgt) +excel_view.preview = Forh\u00e5ndsvisning excel_view.distinctValues = Bestemte verdier excel_view.mapTo = Knytt til excel_view.columnData = Kolonnedata @@ -238,13 +238,13 @@ excel_view.importSuccess = Import av poster var vellykket # exception_flow -exception_flow.unsupportedNavigation = Ikke st\xBFtte for denne navigasjonen -exception_flow.line1 = Nettleserens tilbakeknapp / relasting av side - er ikke st\xBFttet i denne versjonen. -exception_flow.line2 = Kan ikke rette opp denne feilen, s\x8C du m\x8C start denne navigasjonen p\x8C nytt -exception_flow.line3 = For \x8C unng\x8C denne feilen m\x8C du bruke knapper og linker i applikasjonen. +exception_flow.unsupportedNavigation = Ikke st\u00f8tte for denne navigasjonen +exception_flow.line1 = Nettleserens tilbakeknapp / relasting av side - er ikke st\u00f8ttet i denne versjonen. +exception_flow.line2 = Kan ikke rette opp denne feilen, s\u00e5 du m\u00e5 start denne navigasjonen p\u00e5 nytt +exception_flow.line3 = For \u00e5 unng\u00e5 denne feilen m\u00e5 du bruke knapper og linker i applikasjonen. # index_rebuild_success -index_rebuild.heading = Bygg indekser p\x8C nytt +index_rebuild.heading = Bygg indekser p\u00e5 nytt index_rebuild.warning = Dette kan ta lang tid og det anbefales at ingen andre brukere er innlogget. # index_rebuild_success @@ -251,7 +251,7 @@ index_rebuild_success.message = Bygging av indekser var vellykket # space_allocate -space_allocate.usersAllocatedToSpace = Brukere tilknyttet omr\x8Cdet +space_allocate.usersAllocatedToSpace = Brukere tilknyttet omr\u00e5det space_allocate.loginName = Logginn navn space_allocate.fullName = Fullt navn space_allocate.role = Rolle @@ -262,7 +262,7 @@ space_allocate.allocate = Sett sammen # space_delete -space_delete.confirm = Bekreft sletting av omr\x8Cde +space_delete.confirm = Bekreft sletting av omr\u00e5de space_delete.line1 = Are you sure that you want to delete this Space? space_delete.line2 = This will delete all items within this Space. space_delete.line3 = You cannot undo database updates for this operation. @@ -269,9 +269,9 @@ # space_field_delete space_field_delete.confirm = Confirm Field Delete -space_field_delete.line1 = Er du sikker p\x8C at du vil slette dette omr\x8Cdet? -space_field_delete.line2 = Antall p\x8Cvirkede databaseregistreringer = {0} -space_field_delete.line3 = Du kan ikke gj\xBFre om endringer i databasen for denne operasjonen. +space_field_delete.line1 = Er du sikker p\u00e5 at du vil slette dette omr\u00e5det? +space_field_delete.line2 = Antall p\u00e5virkede databaseregistreringer = {0} +space_field_delete.line3 = Du kan ikke gj\u00f8re om endringer i databasen for denne operasjonen. # space_field_form space_field_form.editField = Rediger felt @@ -292,11 +292,11 @@ # space_field_option_edit space_field_option_edit.editOption = Rediger alternativer for felt -space_field_option_edit.error.optionEmpty = Alternativ kan ikke v\xBEre tomt +space_field_option_edit.error.optionEmpty = Alternativ kan ikke v\u00e6re tomt space_field_option_edit.error.exists = Alternativ finnes allerede # space_fields -space_fields.customFields = Egendefinerte felt for omr\x8Cde +space_fields.customFields = Egendefinerte felt for omr\u00e5de space_fields.move = Flytt space_fields.internalName = Internt navn space_fields.type = Type @@ -314,23 +314,23 @@ space_fields.typeRemaining = {0} igjen # space_form -space_form.spaceDetails = Omr\x8Cdedetaljer +space_form.spaceDetails = Omr\u00e5dedetaljer space_form.displayName = Visningsnavn -space_form.spaceKey = Omr\x8Cden\xBFkkel (Kort navn) +space_form.spaceKey = Omr\u00e5den\u00f8kkel (Kort navn) space_form.description = Beskrivelse -space_form.makePublic = Gj\xBFr offentlig +space_form.makePublic = Gj\u00f8r offentlig space_form.allowGuest = Gi gjest kun lesetilgang -space_form.copyExisting = Kopier eksisterende omr\x8Cde -space_form.createFresh = opprett fra tomt omr\x8Cde -space_form.error.prefixCode.tooShort = Lengde skal v\xBEre minst 3 tegn. -space_form.error.prefixCode.tooLong = Lengde skal ikke v\xBEre mer enn 10 tegn +space_form.copyExisting = Kopier eksisterende omr\u00e5de +space_form.createFresh = opprett fra tomt omr\u00e5de +space_form.error.prefixCode.tooShort = Lengde skal v\u00e6re minst 3 tegn. +space_form.error.prefixCode.tooLong = Lengde skal ikke v\u00e6re mer enn 10 tegn space_form.error.prefixCode.invalid = Bare store bokstaver og tall er tillatt -space_form.error.prefixCode.exists = Et omr\x8Cde med denne n\xBFkkelen finnes allerede +space_form.error.prefixCode.exists = Et omr\u00e5de med denne n\u00f8kkelen finnes allerede # space_list -space_list.spaceList = Omr\x8Cdeliste -space_list.createNewSpace = Opprett nytt omr\x8Cde -space_list.key = N\xBFkkel +space_list.spaceList = Omr\u00e5deliste +space_list.createNewSpace = Opprett nytt omr\u00e5de +space_list.key = N\u00f8kkel space_list.name = Navn space_list.edit = Rediger space_list.description = Beskrivelse @@ -338,68 +338,68 @@ # space_role_delete space_role_delete.confirm = Bekreft sletting av rolle -space_role_delete.line1 = Det finnes brukere knyttet til dett omr\x8Cdet ({0}) med denne rollen. -space_role_delete.line2 = Er du sikker p\x8C at du vil slette denne rollen? -space_role_delete.line3 = Du kan ikke gj\xBFre om databaseoppdateringer for denne operasjonen. +space_role_delete.line1 = Det finnes brukere knyttet til dett omr\u00e5det ({0}) med denne rollen. +space_role_delete.line2 = Er du sikker p\u00e5 at du vil slette denne rollen? +space_role_delete.line3 = Du kan ikke gj\u00f8re om databaseoppdateringer for denne operasjonen. # space_role_form space_role_form.editRoleName = Rediger rollenavn -space_role_form.error.role.invalid = Rollenavn m\x8C v\xBEre store bokstaver eller tall ('_' tillatt inni) +space_role_form.error.role.invalid = Rollenavn m\u00e5 v\u00e6re store bokstaver eller tall ('_' tillatt inni) space_role_form.error.role.exists = En rolle med dette navnet ekstisterer allerede space_role_form.error.role.reserved = Dette rollenavnet er reservert til intern bruk # space_role_form_confirm space_role_form_confirm.confirm = Bekreft rollenavn: {0} til {1} -space_role_form_confirm.line1 = Er du sikker p\x8C at du vil gi denne rollen nytt navn? -space_role_form_confirm.line2 = Du kan ikke gj\xBFre om databaseoppdateringer for denne operasjonen. +space_role_form_confirm.line1 = Er du sikker p\u00e5 at du vil gi denne rollen nytt navn? +space_role_form_confirm.line2 = Du kan ikke gj\u00f8re om databaseoppdateringer for denne operasjonen. # space_roles -space_roles.spaceRoles = Omr\x8Cderoller og statusforandringer (Arbeidsflyt) for omr\x8Cde +space_roles.spaceRoles = Omr\u00e5deroller og statusforandringer (Arbeidsflyt) for omr\u00e5de space_roles.addState = Legg til status space_roles.addRole = Legg til rolle space_roles.nextAllowedState = Neste tillatte status -space_roles.fieldLevelPermissions = Tillatelser p\x8C feltniv\x8C +space_roles.fieldLevelPermissions = Tillatelser p\u00e5 feltniv\u00e5 space_roles.state = Status space_roles.role = Rolle -space_roles.mandatory = P\x8Ckrevd +space_roles.mandatory = P\u00e5krevd space_roles.optional = Valgfri space_roles.readonly = Kun lese # space_state_delete space_state_delete.confirm = Bekreft sletting av status -space_state_delete.line1 = Er du sikker p\x8C at du vil slette denne statusen? +space_state_delete.line1 = Er du sikker p\u00e5 at du vil slette denne statusen? space_state_delete.line2 = Antall endrede databaseregistreringer = {0} -space_state_delete.line3 = Du kan ikke gj\xBFre om databaseoppdateringer for denne operasjonen. +space_state_delete.line3 = Du kan ikke gj\u00f8re om databaseoppdateringer for denne operasjonen. # space_state_form space_state_form.editState = Rediger status -space_state_form.error.state.invalid = Statusnavn m\x8C v\xBEre "Camel-Case - Status-Navn" med bindestrek ('-') for \x8C skille ord. 'Fast', 'P\x8C-Vent' eller 'Under-Arbeid' +space_state_form.error.state.invalid = Statusnavn m\u00e5 v\u00e6re "Camel-Case - Status-Navn" med bindestrek ('-') for \u00e5 skille ord. 'Fast', 'P\u00e5-Vent' eller 'Under-Arbeid' space_state_form.error.state.exists = En status med dette navnet eksisterer allerede # user_allocate_space -user_allocate_space.spacesAllocated = Omr\x8Cder knyttet til denne brukeren -user_allocate_space.space = Omr\x8Cde +user_allocate_space.spacesAllocated = Omr\u00e5der knyttet til denne brukeren +user_allocate_space.space = Omr\u00e5de user_allocate_space.role = Rolle user_allocate_space.remove = Fjern -user_allocate_space.chooseSpace = Velg et omr\x8Cde \x8C knytte til denne brukeren -user_allocate_space.makeUserAdmin = Gj\xBFr denne brukeren til en Administrator (for alle omr\x8Cder) -user_allocate_space.makeAdmin = Gj\xBFr til Admin -user_allocate_space.allSpaces = (alle omr\x8Cder) +user_allocate_space.chooseSpace = Velg et omr\u00e5de \u00e5 knytte til denne brukeren +user_allocate_space.makeUserAdmin = Gj\u00f8r denne brukeren til en Administrator (for alle omr\u00e5der) +user_allocate_space.makeAdmin = Gj\u00f8r til Admin +user_allocate_space.allSpaces = (alle omr\u00e5der) # user_allocate_space_role -user_allocate_space_role.allocateRole = Knytt rolle til bruker {0} innen omr\x8Cde +user_allocate_space_role.allocateRole = Knytt rolle til bruker {0} innen omr\u00e5de user_allocate_space_role.allocate = Knytt # user_list -user_list.usersAndSpaces = Brukere og tilknyttede omr\x8Cder +user_list.usersAndSpaces = Brukere og tilknyttede omr\u00e5der user_list.createNewUser = Opprett ny bruker user_list.userName = Brukernavn user_list.loginName = Logginn navn user_list.editProfile = Rediger profil -user_list.locked = L\x8Cst -user_list.spaceRole = Omr\x8Cde (Rolle) -user_list.allocateSpaceRole = Tilknytt<br/>Omr\x8Cde / Rolle -user_list.locale = Spr\x8Ck +user_list.locked = L\u00e5st +user_list.spaceRole = Omr\u00e5de (Rolle) +user_list.allocateSpaceRole = Tilknytt<br/>Omr\u00e5de / Rolle +user_list.locale = Spr\u00e5k user_list.email = Epost user_list.filterBy = Filtrer med @@ -409,7 +409,7 @@ mail_sender.loginMailLine1 = Dine logginn detaljer har blitt opprettet / oppdatert slik: mail_sender.loginName = Logginn navn mail_sender.password = Passord -mail_sender.loginMailLine2 = Bruk linken under til \x8C logge inn: +mail_sender.loginMailLine2 = Bruk linken under til \u00e5 logge inn: # new item_relate_remove item_relate_remove.heading = Bekreft sletting av relasjon @@ -416,21 +416,21 @@ # item_delete item_delete.confirm = Bekreft sletting av post -item_delete.line1 = Er du sikker p\x8C at du vil slette denne posten? -item_delete.line2 = Du kan ikke gj\xBFre om databaseoppdateringer for denne operasjonen. +item_delete.line1 = Er du sikker p\u00e5 at du vil slette denne posten? +item_delete.line2 = Du kan ikke gj\u00f8re om databaseoppdateringer for denne operasjonen. # user_delete user_delete.confirm = Bekreft sletting av bruker -user_delete.line1 = Er du sikker p\x8C at du vil slette denne brukeren? -user_delete.line2 = Du kan ikke gj\xBFre om databaseoppdateringer for denne operasjonen. -user_delete.notPossible = Denne brukeren er brukt i poster og kan ikke slettes. Pr\xBFv \x8C l\x8Cse brukeren eller slette postene f\xBFrst. +user_delete.line1 = Er du sikker p\u00e5 at du vil slette denne brukeren? +user_delete.line2 = Du kan ikke gj\u00f8re om databaseoppdateringer for denne operasjonen. +user_delete.notPossible = Denne brukeren er brukt i poster og kan ikke slettes. Pr\u00f8v \u00e5 l\u00e5se brukeren eller slette postene f\u00f8rst. # generic error messages -error.itemBelongsToUnallocatedSpace = Du har ikke adgang til \x8C se denne posten +error.itemBelongsToUnallocatedSpace = Du har ikke adgang til \u00e5 se denne posten # item search filter wizard item_filter.showColumn = Vis i resultat -item_filter.expression = S\xBFkefilter +item_filter.expression = S\u00f8kefilter item_filter.expandAll = (ekspander alle) item_filter.in = har verdier item_filter.notIn = har ikke verdier @@ -437,6 +437,6 @@ item_filter.like = inneholder tekst item_filter.equal = er lik item_filter.notEqual = er ikke lik -item_filter.greaterThan = st\xBFrre enn +item_filter.greaterThan = st\u00f8rre enn item_filter.lessThan = mindre enn item_filter.between = mellom This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <udi...@us...> - 2021-08-08 10:56:55
|
Revision: 1382 http://sourceforge.net/p/j-trac/code/1382 Author: udittmer Date: 2021-08-08 10:56:51 +0000 (Sun, 08 Aug 2021) Log Message: ----------- make SSL-only optional, additional repos for Selenium Modified Paths: -------------- trunk/jtrac/pom.xml trunk/jtrac/src/main/webapp/WEB-INF/web.xml Modified: trunk/jtrac/pom.xml =================================================================== --- trunk/jtrac/pom.xml 2021-08-05 12:29:09 UTC (rev 1381) +++ trunk/jtrac/pom.xml 2021-08-08 10:56:51 UTC (rev 1382) @@ -65,6 +65,10 @@ <id>openqa.org</id> <name>selenium snapshot</name> <url>https://repo.spring.io/plugins-release/</url> + <!-- + <url>http://maven.geomajas.org/</url> + <url>https://maven.onehippo.com/maven2/</url> + --> <snapshots> <enabled>true</enabled> <updatePolicy>always</updatePolicy> @@ -479,7 +483,6 @@ </execution> </executions> </plugin> - <!-- <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> @@ -502,6 +505,7 @@ </excludes> </configuration> </plugin> + <!-- --> <plugin> <groupId>org.apache.maven.plugins</groupId> Modified: trunk/jtrac/src/main/webapp/WEB-INF/web.xml =================================================================== --- trunk/jtrac/src/main/webapp/WEB-INF/web.xml 2021-08-05 12:29:09 UTC (rev 1381) +++ trunk/jtrac/src/main/webapp/WEB-INF/web.xml 2021-08-08 10:56:51 UTC (rev 1382) @@ -132,6 +132,7 @@ </resource-ref> --> + <!-- <security-constraint> <display-name>HTTPS</display-name> <web-resource-collection> @@ -142,6 +143,7 @@ <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint> + --> <welcome-file-list> <welcome-file>index.html</welcome-file> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <udi...@us...> - 2021-08-05 12:29:12
|
Revision: 1381 http://sourceforge.net/p/j-trac/code/1381 Author: udittmer Date: 2021-08-05 12:29:09 +0000 (Thu, 05 Aug 2021) Log Message: ----------- empty properties Modified Paths: -------------- trunk/jtrac/src/main/resources/jtrac-init.properties Modified: trunk/jtrac/src/main/resources/jtrac-init.properties =================================================================== --- trunk/jtrac/src/main/resources/jtrac-init.properties 2021-08-05 11:18:30 UTC (rev 1380) +++ trunk/jtrac/src/main/resources/jtrac-init.properties 2021-08-05 12:29:09 UTC (rev 1381) @@ -2,11 +2,3 @@ # of the JTrac "home" directory e.g. jtrac.home=C:/jtrac # please refer the documentation at http://j-trac.sourceforge.net/ -#jtrac.home=/Users/ulf/Development/Java/jtrac-2.1.0/live-data -#jtrac.url.base=https://trac.ulf:8443/ - -jtrac.home=/home/udittmer/tomcat/webapps/jtrac-data -jtrac.url.base=https://trac.care-with-care.com/ - -locale.default=en - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <udi...@us...> - 2021-08-05 11:18:35
|
Revision: 1380 http://sourceforge.net/p/j-trac/code/1380 Author: udittmer Date: 2021-08-05 11:18:30 +0000 (Thu, 05 Aug 2021) Log Message: ----------- purge the hijacked domain jtrac.info from source code, add automated version and timestamp properties Modified Paths: -------------- trunk/jtrac/pom.xml trunk/jtrac/src/main/java/info/jtrac/wicket/BasePage.html trunk/jtrac/src/main/java/info/jtrac/wicket/LoginPage.html trunk/jtrac/src/main/java/info/jtrac/wicket/LogoutPage.html trunk/jtrac/src/main/resources/jtrac-init.properties trunk/jtrac/src/main/resources/messages_cs.properties trunk/jtrac/src/main/resources/messages_el.properties trunk/jtrac/src/main/resources/messages_es.properties trunk/jtrac/src/main/resources/messages_fr.properties trunk/jtrac/src/main/resources/messages_hu.properties trunk/jtrac/src/main/resources/messages_ko.properties trunk/jtrac/src/main/resources/messages_nl.properties trunk/jtrac/src/main/resources/messages_no.properties trunk/jtrac/src/main/resources/messages_pl.properties trunk/jtrac/src/main/resources/messages_sl.properties trunk/jtrac/src/main/resources/messages_zh_CN.properties trunk/jtrac/src/main/webapp/WEB-INF/applicationContext-acegi-cas.xml trunk/jtrac/src/site/site.xml Added Paths: ----------- trunk/jtrac/src/main/resources/jtrac-version.properties Modified: trunk/jtrac/pom.xml =================================================================== --- trunk/jtrac/pom.xml 2021-08-04 13:32:09 UTC (rev 1379) +++ trunk/jtrac/pom.xml 2021-08-05 11:18:30 UTC (rev 1380) @@ -442,6 +442,7 @@ <resources> <resource> <directory>src/main/resources</directory> + <filtering>true</filtering> <includes> <include>**</include> </includes> @@ -512,4 +513,9 @@ </plugin> </plugins> </build> + + <properties> + <timestamp>${maven.build.timestamp}</timestamp> + <maven.build.timestamp.format>yyyy-MM-dd HH:mm z</maven.build.timestamp.format> + </properties> </project> Modified: trunk/jtrac/src/main/java/info/jtrac/wicket/BasePage.html =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/BasePage.html 2021-08-04 13:32:09 UTC (rev 1379) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/BasePage.html 2021-08-05 11:18:30 UTC (rev 1380) @@ -15,7 +15,7 @@ <table width="100%" class="jtrac"> <tr class="alt"> <td align="right"> - <i>powered by <a href="http://jtrac.info" target="_blank">JTrac</a> <span wicket:id="version"></span></i> + <i>powered by <a href="http://j-trac.sourceforge.net/" target="_blank">JTrac</a> <span wicket:id="version"></span></i> </td> </tr> </table> Modified: trunk/jtrac/src/main/java/info/jtrac/wicket/LoginPage.html =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/LoginPage.html 2021-08-04 13:32:09 UTC (rev 1379) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/LoginPage.html 2021-08-05 11:18:30 UTC (rev 1380) @@ -41,7 +41,7 @@ <table width="100%" class="jtrac"> <tr class="alt"> <td align="right"> - <i>powered by <a href="http://jtrac.info" target="_blank">JTrac</a> <span wicket:id="version"></span></i> + <i>powered by <a href="http://j-trac.sourceforge.net/" target="_blank">JTrac</a> <span wicket:id="version"></span></i> </td> </tr> </table> Modified: trunk/jtrac/src/main/java/info/jtrac/wicket/LogoutPage.html =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/LogoutPage.html 2021-08-04 13:32:09 UTC (rev 1379) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/LogoutPage.html 2021-08-05 11:18:30 UTC (rev 1380) @@ -30,7 +30,7 @@ <table width="100%" class="jtrac"> <tr class="alt"> <td align="right"> - <i>powered by <a href="http://jtrac.info" target="_blank">JTrac</a> <span wicket:id="version"></span></i> + <i>powered by <a href="http://j-trac.sourceforge.net/" target="_blank">JTrac</a> <span wicket:id="version"></span></i> </td> </tr> </table> Modified: trunk/jtrac/src/main/resources/jtrac-init.properties =================================================================== --- trunk/jtrac/src/main/resources/jtrac-init.properties 2021-08-04 13:32:09 UTC (rev 1379) +++ trunk/jtrac/src/main/resources/jtrac-init.properties 2021-08-05 11:18:30 UTC (rev 1380) @@ -1,3 +1,12 @@ # uncomment / edit this file to customize the location # of the JTrac "home" directory e.g. jtrac.home=C:/jtrac # please refer the documentation at http://j-trac.sourceforge.net/ + +#jtrac.home=/Users/ulf/Development/Java/jtrac-2.1.0/live-data +#jtrac.url.base=https://trac.ulf:8443/ + +jtrac.home=/home/udittmer/tomcat/webapps/jtrac-data +jtrac.url.base=https://trac.care-with-care.com/ + +locale.default=en + Added: trunk/jtrac/src/main/resources/jtrac-version.properties =================================================================== --- trunk/jtrac/src/main/resources/jtrac-version.properties (rev 0) +++ trunk/jtrac/src/main/resources/jtrac-version.properties 2021-08-05 11:18:30 UTC (rev 1380) @@ -0,0 +1,3 @@ +version=${pom.version} +timestamp=${timestamp} + Modified: trunk/jtrac/src/main/resources/messages_cs.properties =================================================================== --- trunk/jtrac/src/main/resources/messages_cs.properties 2021-08-04 13:32:09 UTC (rev 1379) +++ trunk/jtrac/src/main/resources/messages_cs.properties 2021-08-05 11:18:30 UTC (rev 1380) @@ -1,439 +1,439 @@ -# please refer documentation before starting work on a translation: -# http://jtrac.info/doc/html/dev-guide.html#dev-translating - -# globals -submit = Vlo\u017Eit -cancel = Zru\u0161it -delete = Vymazat -back = Zp\u011Bt -next = Dal\u0161\u00ED -edit = Upravit -view = N\u00E1hled -search = Vyhledat -new = Nov\u00FD -save = Ulo\u017Eit - -# override default messages for spring mvc form binding errors -typeMismatch.java.lang.Double = Pros\u00EDm, zadejte spr\u00E1vn\u00E9 \u010D\u00EDslo. -typeMismatch.java.util.Date = Pros\u00EDm, zadejte spr\u00E1vn\u00FD datum ve form\u00E1tu\: rrrr-mm-dd - -# wicket globals -null = -nullValid = -Required = Pros\u00EDm, vypl\u0148te povinn\u00E1 pole. -IConverter.Double = ${label}\: Pros\u00EDm, zadejte spr\u00E1vn\u00E9 \u010D\u00EDslo -IConverter.Date = ${label}\: Pros\u00EDm, zadejte spr\u00E1vn\u00FD datum ve form\u00E1tu\: rrrr-mm-dd - -# generic form validation message -error.empty = Nutno zadat hodnotu - -# header navigation -header.dashboard = N\u00C1HLED -header.new = NOV\u00DD -header.search = HLEDAT -header.options = MO\u017DNOSTI -header.login = P\u0158IHL\u00C1SIT -header.logout = ODHL\u00C1SIT - -# dashboard -dashboard.noSpaces = Nejste p\u0159id\u011Blen k \u017E\u00E1dn\u00E9mu projektu -dashboard.space = Projekt -dashboard.action = Akce -dashboard.status = Status -dashboard.loggedByMe = Mnou<br/>Otev\u0159en -dashboard.assignedToMe = Mn\u011B<br/>P\u0159id\u011Blen -dashboard.all = V\u0161e -dashboard.new = Nov\u00E9 -dashboard.search = HLEDAT -dashboard.showDetails = Uka\u017E Detaily -dashboard.hideDetails = Skryj Detaily - -# item_form -item_form.summary = Zhrnut\u00ED -item_form.detail = Detailn\u00ED popis -item_form.assignTo = Komu P\u0159edat -item_form.editReason = D\u016Fvod opravy -item_form.sendNotifications = po\u0161li upozorn\u011Bn\u00ED emailem -item_form.notifyByEmail = Upozorni Emailem -item_form.attachment = P\u0159\u00EDloha -item_form.error.version = Pr\u00E1v\u011B je opravov\u00E1no jin\u00FDm u\u017Eivatelem nebo jste pou\u017Eil zp\u011Btn\u00E9 tla\u010D\u00EDtko v prohl\u00ED\u017Ee\u010Di. - -# item_view (note this is rendered within a taglib and not in a JSP) -item_view.id = Kl\u00ED\u010D -item_view.relatedItems = Podobn\u00E9 p\u0159\u00EDpady -item_view.remove = Vymazat -item_view.relatedTo = souvis\u00ED s -item_view.duplicateOf = je kopie -item_view.dependsOn = z\u00E1vis\u00ED na -item_view.relatedToThis = souvis\u00ED s t\u00EDmto -item_view.duplicateOfThis = je kopie tohoto -item_view.dependsOnThis = z\u00E1vis\u00ED na tomto -item_view.this = Toto -item_view.status = Status -item_view.loggedBy = Zapsal -item_view.assignedTo = P\u0159id\u011Bleno -item_view.summary = Souhrn -item_view.detail = Detail -item_view.history = Historie -item_view.comment = Koment\u00E1\u0159 -item_view.timeStamp = Zaznamen\u00E1no - -# item_view_form -item_view_form.relateTo = Vztvo\u0159 souvislost s jin\u00FDm p\u0159\u00EDpadem -item_view_form.duplicateOf = je kopie tohoto -item_view_form.dependsOn = z\u00E1vis\u00ED na tomto -item_view_form.relatedTo = souvis\u00ED s t\u00EDmto -item_view_form.newStatus = Nov\u00FD Status -item_view_form.assignTo = P\u0159id\u011Bl -item_view_form.comment = Koment\u00E1\u0159 -item_view_form.sendNotifications = po\u0161li e-mailov\u00E9 upozorn\u011Bn\u00ED -item_view_form.addRelatedItem = p\u0159idej souvisej\u00EDc\u00ED p\u0159\u00EDpad -item_view_form.change = zm\u011Bna -item_view_form.notifyByEmail = Upozorn\u011Bn\u00ED e-mailem -item_view_form.attachment = P\u0159\u00EDloha -item_view_form.assignedTo.error = P\u0159id\u011Bl: Nutn\u00E9 pokud Status je jin\u00FD ne\u017E {0} -item_view_form.status.error = Nutn\u00E9 p\u0159i p\u0159id\u011Blov\u00E1n\u00ED -item_view_form.chooseStatus = -- vyber status -- - -# item_search_form -item_search_form.searchingForRelated = Hled\u00E1n\u00ED p\u0159\u00EDpad\u016F souvisej\u00EDc\u00EDch s -item_search_form.viewItemById = Prohl\u00ED\u017Een\u00ED p\u0159\u00EDpad\u016F podle kl\u00ED\u010De -item_search_form.textSearch = Textov\u00E9 Vzhled\u00E1v\u00E1n\u00ED -item_search_form.resultsPerPage = V\u00FDsledk\u016F na Stranu -item_search_form.noLimit = Bez Limitu -item_search_form.sortOnColumn = T\u0159\u00EDd\u011Bn\u00ED podle Sloupce -item_search_form.id = Kl\u00ED\u010D -item_search_form.descending = Sestupn\u011B -item_search_form.showDetail = Uka\u017E Detaily -item_search_form.showHistory = Uka\u017E Historii -item_search_form.loggedBy = Otev\u0159eno -item_search_form.assignedTo = P\u0159id\u011Bleno -item_search_form.createdDate = Vztvo\u0159eno Dne -item_search_form.onOrAfter = Od / Pot\u00E9 -item_search_form.onOrBefore = Do / P\u0159ed -item_search_form.status = Status -item_search_form.severity = D\u016Fle\u017Eitost -item_search_form.priority = Priorita -item_search_form.historyUpdatedDate = Datum z\u00E1pisu -item_search_form.space = Projekt -item_search_form.error.refId.invalid = Neplatn\u00FD kl\u00ED\u010D -item_search_form.error.refId.notFound = P\u0159\u00EDpad nebyl nalezen -item_search_form.error.summary.invalid = \u0160patn\u00FD hledan\u00FD text - -# item_list (most rendered within a taglib not JSP, some reused also for excel export) -item_list.searchingForRelated = Held\u00E1n\u00ED souvisej\u00EDc\u00EDch p\u0159\u00EDpad\u016F -item_list.modifySearch = Zm\u011Bn Vyhled\u00E1v\u00E1n\u00ED -item_list.recordFound = Z\u00E1znam\u016F nelezeno -item_list.recordsFound = Z\u00E1znam\u016F nelezeno -item_list.exportToExcel = Excel -item_list.exportToXml = XML -item_list.id = ID -item_list.summary = Souhrn -item_list.detail = Detaily -item_list.loggedBy = Zapsal -item_list.status = Status -item_list.assignedTo = P\u0159id\u011Bleno -item_list.timeStamp = Zaznamen\u00E1no -item_list.history = Historie -item_list.space = Projekt - -# options -options.optionsMenu = Mo\u017Enosti -options.editYourProfile = Oprava Profilu U\u017Eivatele -options.manageUsers = Zpr\u00E1va U\u017Eivatel\u016F -options.manageSpaces = Zpr\u00E1va Projekt\u016F -options.manageSettings = Zpr\u00E1va Mo\u017Enost\u00ED -options.rebuildIndexes = Re-Indexace -options.importFromExcel = Na\u010Dten\u00ED z Excelu - -# user_form -user_form.userDetails = Detaily U\u017Eivatele -user_form.loginId = U\u017Eivatel -user_form.fullName = Pln\u00E9 jm\u00E9no -user_form.emailId = E-Mailov\u00E1 adresa -user_form.language = Jazyk -user_form.passwordMessage = Nov\u011B Vygenerovan\u00E9 Heslo v\u00E1m bude zasl\u00E1no e-mailem.<br/>N\u00E1sleduj\u00EDc\u00ED pole nejsou nutn\u00E1. -user_form.password = Heslo -user_form.confirmPassword = Potvr\u010F heslo -user_form.loginId.error.invalid = U\u017Eivatelsk\u00E9 jm\u00E9no obsahuje nedovolen\u00E9 znaky -user_form.loginId.error.exists = U\u017Eivatelsk\u00E9 jm\u00E9no ji\u017E existuje. -user_form.passwordConfirm.error = Hesla jsou r\u016Fzn\u00E1. -user_form.mailPassword = po\u0161li heslo e-mailem -user_form.locked = Zablokov\u00E1n - -# logout -logout.title = \u00DAsp\u011B\u0161n\u00E9 odhl\u00E1\u0161en\u00ED -logout.home = Dom\u016F -logout.message = \u00DAsp\u011B\u0161n\u00E9 odhl\u00E1\u0161en\u00ED. Nastaven\u00ED jak\u00E9koli aktivn\u00ED "zapamatuj si mne" slu\u017Eby bylo vymaz\u00E1no. -logout.login = P\u0159ihl\u00E1\u0161en\u00ED - -# login -login.title = JTrac P\u0159ihl\u00E1\u0161en\u00ED -login.home = Dom\u016F -login.loginName = U\u017Eivatelsk\u00E9 jm\u00E9no / email -login.password = Heslo -login.rememberMe = zapamatuj si mne -login.submit = Vlo\u017E -login.error = \u0160patn\u00E9 jm\u00E9no nebo heslo - -# config explanations (used in both config_list and config_form screens) -config.mail.server.host = Jm\u00E9no nebo IP adresa SMTP serveru, kter\u00FD bude pou\u017Eit k zas\u00EDlan\u00ED e-mail\u016F -config.mail.server.port = Port SMTP serveru (oby\u010Dejn\u011B 25) -config.mail.server.username = U\u017Eivatelsk\u00E9 jm\u00E9no, pokud SMTP server vy\u017Eaduje authentikaci -config.mail.server.password = Heslo, pokud SMTP server vy\u017Eaduje authentikaci -config.mail.server.starttls.enable = Vlo\u017E "true", pokud SMTP server vy\u017Eaduje beype\u010Dn\u00E9 (SSL) p\u0159ipojen\u00ED -config.mail.subject.prefix = Text, kter\u00FD bude p\u0159edch\u00E1zet ka\u017Ed\u00E9mu subjektu v e-mailech (oby\u010Dejn\u011B [jtrac]) -config.mail.session.jndiname = javax.mail.Session JNDI jm\u00E9no - pokud je vzpln\u00EDte, tak bude pou\u017Eito m\u00EDsto SMTP serveru -config.mail.from = Generovan\u00E9 e-maily jsou posl\u00E1ny z t\u00E9to 'from' adresy -config.jtrac.url.base = Z\u00E1kladn\u00ED URL va\u0161\u00ED JTrac instalace ( nap\u0159. http://mujserver/jtrac ) = je zapot\u0159eb\u00ED pro spr\u00E1vnou funkc\u00ED odeslan\u00FDch e-mail\u016F -config.locale.default = Z\u00E1kladn\u00ED jazyk t\u00E9to JTrac instalce nap\u0159. "cz" pro \u010Ce\u0161tinu -config.session.timeout = \u010Cas v minut\u00E1ch po jeho\u017E ub\u011Bhnut\u00ED bude zru\u0161eno u\u017Eivatelsk\u00E9 spojen\u00ED (oby\u010Dejn\u011B 30 minut) -config.attachment.maxsize = Maxim\u00E1ln\u00ED velikost p\u0159\u00EDloh v MB. (obz\u010Dejn\u011B 5 MB) Vlo\u017E -1 pro neomezenou velikost. - -# config_list (config_form does not have any extra messages) -config_list.configurationSettings = Nastaven\u00ED konfigurace -config_list.parameter = Parameter -config_list.value = Hodnota -config_list.edit = Oprava -config_list.description = Popis - -# excel_upload -excel_upload.uploadExcelFile = Nahr\u00E1t soubor v Excelu -excel_upload.error.invalidFile = Probl\u00E9m se zpracov\u00E1n\u00EDm souboru, mo\u017En\u00E1 to nen\u00ED platn\u00FD Excel form\u00E1t. - -# excel_view -excel_view.previewImportedData= N\u00E1hled na Importovan\u00E1 Data -excel_view.selectActionToPerform = -- vyber akci k v\u00FDkonu -- -excel_view.deleteSelected = Vyma\u017E vzbran\u00E9 Sloupce / \u0158ady -excel_view.convertToDate = Zm\u011B\u0148 Format vybran\u00FDch Sloupc\u016F na Date -excel_view.concatenateFields = Spoj obsah vybran\u00FDch Sloupc\u016F -excel_view.extractFirstEighty = Vyber prvn\u00EDch 80 znak\u016F do nov\u00E9ho Sloupce -excel_view.duplicateColumn = Duplikuj Vybran\u00FD Sloupec -excel_view.mapToField = Zmapuj Vybran\u00FD Sloupec s Polem v Projektu -excel_view.editRow = Oprav Vybran\u00FD \u0158adek Dat -excel_view.import = Import do Vybran\u00E9ho Projektu - -excel_view.error.noActionSelected = Pros\u00EDm, zvolte akci k v\u00FDkonu -excel_view.error.noSpaceSelected = Pros\u00EDm, zvolte nejd\u0159\u00EDve projekt -excel_view.error.noColumnSelected = Pros\u00EDm, vyberte sloupec -excel_view.error.noRowSelected = Pros\u00EDm, vyberte \u0159adu -excel_view.error.noColumnOrRowSelected = Pros\u00EDm, vyberte sloupce / \u0159ady -excel_view.error.atLeastTwoColumns = Pros\u00EDm, vyberte alespo\u0148 dva sloupce -excel_view.error.duplicateMapping = Pole zmapov\u00E1no v\u00EDce ne\u017E jednou: '{0}' -excel_view.error.notMapped = Pole mus\u00ED b\u00FDt zmapov\u00E1no: '{0}' -excel_view.error.invalidValue = N\u011Bkter\u00E9 skl\u00EDpky obsahuj\u00ED \u0161patn\u00E1 data. - -excel_view.selectSpace = Zvol Projekt -excel_view.selectedSpace = Zvolen\u00FD Projekt -excel_view.noSpaceSelected = (\u017E\u00E1dn\u00FD projekt nebyl vybr\u00E1n) -excel_view.preview = N\u00E1hled -excel_view.distinctValues = R\u016Fzn\u00E9 Hodnoty -excel_view.mapTo = Zmapuj s -excel_view.columnData = Sloupec Dat -excel_view.selectedColumn = Vybran\u00FD Sloupec: -excel_view.update = Zm\u011B\u0148 -excel_view.importSuccess = Pr\u00EDpady byly \u00FAsp\u011B\u0161n\u011B Importov\u00E1ny - -# exception_flow -exception_flow.unsupportedNavigation = Nepodporovan\u00E1 Navigace -exception_flow.line1 = Zp\u011Btn\u00E9 tla\u010D\u00EDtko Prohl\u00ED\u017Ee\u010De / obnova strany - nen\u00ED v t\u00E9to verzi podporov\u00E1na. -exception_flow.line2 = Tento probl\u00E9m nelze vy\u0159e\u0161it a budete muset zopakovat p\u0159edch\u00E1zej\u00EDc\u00ED \u00FAkon. -exception_flow.line3 = Abzchom se vyhnuli tomuto probl\u00E9mu, pou\u017E\u00EDvejte, pros\u00EDm, pouze tla\u010D\u00EDtka v t\u00E9to aplikaci. - -# index_rebuild_success -index_rebuild.heading = Re-Indexeace -index_rebuild.warning = Tohle m\u016F\u017Ee trvat del\u0161\u00ED dobu a nedoporu\u010Duje se, aby byli ve stejnou dobu p\u0159ihl\u00E1\u0161eni jin\u00ED u\u017Eivatel\u00E9. - -# index_rebuild_success -index_rebuild_success.message = Re-Indexace prob\u011Bhla \u00FAsp\u011B\u0161n\u011B - -# space_allocate -space_allocate.usersAllocatedToSpace = U\u017Eivatel\u00E9 p\u0159i\u0159azeni k Projektu -space_allocate.loginName = U\u017Eivatelsk\u00E9 jm\u00E9no -space_allocate.fullName = Jm\u00E9no a P\u0159ijmen\u00ED -space_allocate.role = Role -space_allocate.remove = Vymazat -space_allocate.allocateUser = Vyber U\u017Eivatele a Roli k p\u0159i\u0159azen\u00ED -space_allocate.createNewUser = Vytvo\u0159 nov\u00E9ho U\u017Eivatele -space_allocate.user = U\u017Eivatel -space_allocate.allocate = P\u0159i\u0159a\u010F - -# space_delete -space_delete.confirm = Potvr\u010F vymaz\u00E1n\u00ED Projektu -space_delete.line1 = Jste si jisti, \u017Ee chcete vymazat tento Projekt? -space_delete.line2 = Tohle vyma\u017Ee v\u0161echny p\u0159\u00EDpady tohoto Projektu. -space_delete.line3 = Z\u00E1pisy do datab\u00E1ze z t\u00E9to operace nelze vr\u00E1tit. - -# space_field_delete -space_field_delete.confirm = Potvr\u010Fte vymaz\u00E1n\u00ED tohoto pole -space_field_delete.line1 = Jste si jisti, \u017Ee chcete vymazat toto pole? -space_field_delete.line2 = Po\u010Det zm\u011Bn\u011Bn\u00FDch z\u00E1znam\u016F v datab\u00E1zi = {0} -space_field_delete.line3 = Z\u00E1pisy do datab\u00E1ze z t\u00E9to operace nelze vr\u00E1tit. - -# space_field_form -space_field_form.editField = Oprava Pole -space_field_form.internalName = Intern\u00ED jm\u00E9no -space_field_form.label = Ozna\u010Den\u00ED -space_field_form.optional = Nen\u00ED nutn\u00E9 -space_field_form.options = Mo\u017Enosti -space_field_form.addOption = P\u0159idej Mo\u017Enost -space_field_form.update = Zapsat -space_field_form.done = Hotovo -space_field_form.error.optionExists = Takov\u00E1 Mo\u017Enost ji\u017E existuje - -# space_field_option_delete -space_field_option_delete.confirm = Potvr\u010Fte vymaz\u00E1n\u00ED t\u00E9to mo\u017Enosti -space_field_option_delete.line1 = Jste si jisti, \u017Ee chcete vymazat tuto Mo\u017Enost? -space_field_option_delete.line2 = Po\u010Det zm\u011Bn\u011Bn\u00FDch z\u00E1znam\u016F v datab\u00E1zi = {0} -space_field_option_delete.line3 = Z\u00E1pisy do datab\u00E1ze z t\u00E9to operace nelze vr\u00E1tit. - -# space_field_option_edit -space_field_option_edit.editOption = Oprava Mo\u017Enost\u00ED tohoto Pole -space_field_option_edit.error.optionEmpty = Tato Mo\u017Enost nem\u016F\u017Ee b\u00FDt pr\u00E1zdn\u00E1 -space_field_option_edit.error.exists = Takov\u00E1 Mo\u017Enost ji\u017E existuje - -# space_fields -space_fields.customFields = Specialn\u00ED Pole tohoto Projektu -space_fields.move = Posu\u0148 -space_fields.internalName = Intern\u00ED jm\u00E9no -space_fields.type = Typ -space_fields.optional = Nen\u00ED nutn\u00E9 -space_fields.label = Ozna\u010Den\u00ED -space_fields.optionList = Seznam Mo\u017Enost\u00ED -space_fields.chooseType = Vzber tzp p\u0159id\u00E1van\u00E9ho Pole -space_fields.addField = P\u0159idej Pole -space_fields.type_1 = D\u016Fle\u017Eitost (Drop Down) -space_fields.type_2 = Priorita (Drop Down) -space_fields.type_3 = Drop Down Seznam -space_fields.type_4 = Decimaln\u00ED \u010C\u00EDslo -space_fields.type_5 = Textov\u00E9 Pole -space_fields.type_6 = Datum -space_fields.typeRemaining = {0} zb\u00FDv\u00E1 - -# space_form -space_form.spaceDetails = Detaily Projektu -space_form.displayName = Jm\u00E9no -space_form.spaceKey = Kl\u00ED\u010D Projektu (kr\u00E1tk\u00E9 jm\u00E9no) -space_form.description = Popis -space_form.makePublic = Opublikovat -space_form.allowGuest = Povol p\u0159\u00EDstup host\u016Fm (pouze pro \u010Dten\u00ED) -space_form.copyExisting = Zkop\u00EDruj Existuj\u00EDc\u00ED Projekt -space_form.createFresh = vztvo\u0159 zcela nov\u00FD -space_form.error.prefixCode.tooShort = D\u00E9lka mus\u00ED b\u00FDt minim\u00E1ln\u011B 3 znaky. -space_form.error.prefixCode.tooLong = D\u00E9lka by nem\u011Bla b\u00FDt v\u00EDc ne\u017E 10 znak\u016F. -space_form.error.prefixCode.invalid = Povolena jsou pouze velk\u00E1 p\u00EDsmena a \u010D\u00EDslice -space_form.error.prefixCode.exists = Projekt s t\u00EDmto kl\u00ED\u010Dem ji\u017E existuje - -# space_list -space_list.spaceList = Seznam Projekt\u016F -space_list.createNewSpace = Vytvo\u0159 nov\u00FD Projekt -space_list.key = Kl\u00ED\u010D -space_list.name = Jm\u00E9no -space_list.edit = Oprav -space_list.description = Popis -space_list.users = U\u017Eivatel\u00E9 - -# space_role_delete -space_role_delete.confirm = Potvr\u010Fte vymaz\u00E1n\u00ED t\u00E9to Role -space_role_delete.line1 = Existuj\u00ED u\u017Eivatel\u00E9 p\u0159i\u0159azeni k tomuto Projektu ({0}) s touto Rol\u00ED. -space_role_delete.line2 = Jste si jisti, \u017Ee chcete vymazat tuto Roli? -space_role_delete.line3 = Z\u00E1pisy do datab\u00E1ze z t\u00E9to operace nelze vr\u00E1tit. - -# space_role_form -space_role_form.editRoleName = Oprava Jm\u00E9na Role -space_role_form.error.role.invalid = Jm\u00E9no Role m\u00E1 povolena pouze velk\u00E1 p\u00EDsmena a \u010D\u00EDslice ('_' je povoleno uvnit\u0159 jm\u00E9na) -space_role_form.error.role.exists = Role s t\u00EDmto jm\u00E9nem ji\u017E existuje -space_role_form.error.role.reserved = Toto jm\u00E9no Role je reservov\u00E1no k vnit\u0159n\u00EDmu pou\u017Eit\u00ED - -# space_role_form_confirm -space_role_form_confirm.confirm = Potvr\u010F zm\u011Bnu jm\u00E9na Role : {0} na {1} -space_role_form_confirm.line1 = Jste si jisti, \u017Ee chcete p\u0159ejmenovat tuto Roli? -space_role_form_confirm.line2 = Z\u00E1pisy do datab\u00E1ze z t\u00E9to operace nelze vr\u00E1tit. - -# space_roles -space_roles.spaceRoles = Role v Projektu a Zm\u011Bny Stavu (Workflow State-Transitions) pro Projekt -space_roles.addState = P\u0159idej Stav -space_roles.addRole = P\u0159idej Roli -space_roles.nextAllowedState = P\u0159\u00ED\u0161t\u00ED povolen\u00FD Stav -space_roles.fieldLevelPermissions = Pravomoce na \u00FArovni pole -space_roles.state = Stav -space_roles.role = Role -space_roles.mandatory = Povinn\u00FD -space_roles.optional = Nepovinn\u00FD -space_roles.readonly = Pouze pro \u010Dten\u00ED - -# space_state_delete -space_state_delete.confirm = Potvr\u010Fte vymaz\u00E1n\u00ED tohoto Stavu -space_state_delete.line1 = Jste si jisti, \u017Ee chcete vymazat tento Stav? -space_state_delete.line2 = Po\u010Det zm\u011Bn\u011Bn\u00FDch z\u00E1znam\u016F v datab\u00E1zi = {0} -space_state_delete.line3 = Z\u00E1pisy do datab\u00E1ze z t\u00E9to operace nelze vr\u00E1tit. - -# space_state_form -space_state_form.editState = Oprava Stavu -space_state_form.error.state.invalid = Jm\u00E9no Stavu mus\u00ED pou\u017E\u00EDt znak minus ('-') k odd\u011Blen\u00ED slov nap\u0159. 'Opraveno', 'Pozastaven' nebo 'Pracuje-se-na-tom' -space_state_form.error.state.exists = Stav tohoto jm\u00E9na ji\u017E existuje - -# user_allocate_space -user_allocate_space.spacesAllocated = Projekty p\u0159i\u0159azen\u00E9 U\u017Eivateli -user_allocate_space.space = Projekt -user_allocate_space.role = Role -user_allocate_space.remove = Vymazat -user_allocate_space.chooseSpace = Vzber Projekt k p\u0159i\u0159azen\u00ED tomuto U\u017Eivateli -user_allocate_space.makeUserAdmin = Udelej tohoto U\u017Eivatele Administratorem (v\u0161ech Projekt\u016F) -user_allocate_space.makeAdmin = Ud\u011Blej Adminem -user_allocate_space.allSpaces = (v\u0161echny projekty) - -# user_allocate_space_role -user_allocate_space_role.allocateRole = P\u0159i\u0159a\u010F Roli U\u017Eivateli {0} v r\u00E1mci Projektu -user_allocate_space_role.allocate = P\u0159i\u0159a\u010F - -# user_list -user_list.usersAndSpaces = U\u017Eivatel\u00E9 a p\u0159i\u0159azen\u00E9 Projekty -user_list.createNewUser = Vytvo\u0159 Nov\u00E9ho U\u017Eivatele -user_list.userName = U\u017Eivatelsk\u00E9 jm\u00E9no -user_list.loginName = U\u017Eivatel -user_list.editProfile = Oprav Profil -user_list.locked = Zablokov\u00E1n -user_list.spaceRole = Projekt (Role) -user_list.allocateSpaceRole = P\u0159i\u0159a\u010F<br/>Projekt / Roli -user_list.locale = Jazyk -user_list.email = E Mail -user_list.filterBy = Filtrovat - -# mail_sender (this is in the mail sending code, not a JSP) -mail_sender.loginMailSubject = JTrac detaily nutn\u00E9 k p\u0159ihl\u011B\u0161en\u00ED -mail_sender.loginMailGreeting = Ahoj -mail_sender.loginMailLine1 = Nasleduj\u00ED tvoje nov\u00E9 / opraven\u00E9 detaily nutn\u00E9 k p\u0159ihl\u011B\u0161en\u00ED: -mail_sender.loginName = U\u017Eivatelsk\u00E9 jm\u00E9no -mail_sender.password = Heslo -mail_sender.loginMailLine2 = Pou\u017Eij tento link k p\u0159ihl\u00E1\u0161en\u00ED: - -# new item_relate_remove -item_relate_remove.heading = Potvr\u010Fte vymaz\u00E1n\u00ED t\u00E9to souvislosti - -# item_delete -item_delete.confirm = Potvr\u010Fte vymaz\u00E1n\u00ED tohoto P\u0159\u00EDpadu -item_delete.line1 = Jste si jisti, \u017Ee chcete vymazat tento P\u0159\u00EDpad? -item_delete.line2 = Z\u00E1pisy do datab\u00E1ze z t\u00E9to operace nelze vr\u00E1tit. - -# user_delete -user_delete.confirm = Potvr\u010Fte vymaz\u00E1n\u00ED tohoto U\u017Eivatele -user_delete.line1 = Jste si jisti, \u017Ee chcete vymazat tohoto U\u017Eivatele? -user_delete.line2 = Z\u00E1pisy do datab\u00E1ze z t\u00E9to operace nelze vr\u00E1tit. -user_delete.notPossible = Tento U\u017Eivatel je uveden v n\u011Bkolika P\u0159\u00EDpadech. Pokuste se ho zablokovat nebo zma\u017Ete prvn\u011B takov\u00E9 P\u0159\u00EDpady. - -# generic error messages -error.itemBelongsToUnallocatedSpace = Nem\u00E1te opr\u00E1vn\u011Bn\u00ED prohl\u00E9dnout si tento P\u0159\u00EDpad - -# item search filter wizard -item_filter.showColumn = Uka\u017E ve V\u00FDsledc\u00EDch -item_filter.expression = Vzhled\u00E1vac\u00ED Filtr -item_filter.expandAll = (uka\u017E v\u0161e) -item_filter.in = m\u00E1 hotnoty -item_filter.notIn = nem\u00E1 hotnoty -item_filter.like = obsahuje text -item_filter.equal = je shodn\u00FD s -item_filter.notEqual = nen\u00ED shodn\u00FD s -item_filter.greaterThan = v\u011Bt\u0161\u00ED ne\u017E -item_filter.lessThan = men\u0161\u00ED ne\u017E -item_filter.between = mezi \ No newline at end of file +# please refer documentation before starting work on a translation: +# http://j-trac.sourceforge.net/doc/html/dev-guide.html#dev-translating + +# globals +submit = Vlo\u017Eit +cancel = Zru\u0161it +delete = Vymazat +back = Zp\u011Bt +next = Dal\u0161\u00ED +edit = Upravit +view = N\u00E1hled +search = Vyhledat +new = Nov\u00FD +save = Ulo\u017Eit + +# override default messages for spring mvc form binding errors +typeMismatch.java.lang.Double = Pros\u00EDm, zadejte spr\u00E1vn\u00E9 \u010D\u00EDslo. +typeMismatch.java.util.Date = Pros\u00EDm, zadejte spr\u00E1vn\u00FD datum ve form\u00E1tu\: rrrr-mm-dd + +# wicket globals +null = +nullValid = +Required = Pros\u00EDm, vypl\u0148te povinn\u00E1 pole. +IConverter.Double = ${label}\: Pros\u00EDm, zadejte spr\u00E1vn\u00E9 \u010D\u00EDslo +IConverter.Date = ${label}\: Pros\u00EDm, zadejte spr\u00E1vn\u00FD datum ve form\u00E1tu\: rrrr-mm-dd + +# generic form validation message +error.empty = Nutno zadat hodnotu + +# header navigation +header.dashboard = N\u00C1HLED +header.new = NOV\u00DD +header.search = HLEDAT +header.options = MO\u017DNOSTI +header.login = P\u0158IHL\u00C1SIT +header.logout = ODHL\u00C1SIT + +# dashboard +dashboard.noSpaces = Nejste p\u0159id\u011Blen k \u017E\u00E1dn\u00E9mu projektu +dashboard.space = Projekt +dashboard.action = Akce +dashboard.status = Status +dashboard.loggedByMe = Mnou<br/>Otev\u0159en +dashboard.assignedToMe = Mn\u011B<br/>P\u0159id\u011Blen +dashboard.all = V\u0161e +dashboard.new = Nov\u00E9 +dashboard.search = HLEDAT +dashboard.showDetails = Uka\u017E Detaily +dashboard.hideDetails = Skryj Detaily + +# item_form +item_form.summary = Zhrnut\u00ED +item_form.detail = Detailn\u00ED popis +item_form.assignTo = Komu P\u0159edat +item_form.editReason = D\u016Fvod opravy +item_form.sendNotifications = po\u0161li upozorn\u011Bn\u00ED emailem +item_form.notifyByEmail = Upozorni Emailem +item_form.attachment = P\u0159\u00EDloha +item_form.error.version = Pr\u00E1v\u011B je opravov\u00E1no jin\u00FDm u\u017Eivatelem nebo jste pou\u017Eil zp\u011Btn\u00E9 tla\u010D\u00EDtko v prohl\u00ED\u017Ee\u010Di. + +# item_view (note this is rendered within a taglib and not in a JSP) +item_view.id = Kl\u00ED\u010D +item_view.relatedItems = Podobn\u00E9 p\u0159\u00EDpady +item_view.remove = Vymazat +item_view.relatedTo = souvis\u00ED s +item_view.duplicateOf = je kopie +item_view.dependsOn = z\u00E1vis\u00ED na +item_view.relatedToThis = souvis\u00ED s t\u00EDmto +item_view.duplicateOfThis = je kopie tohoto +item_view.dependsOnThis = z\u00E1vis\u00ED na tomto +item_view.this = Toto +item_view.status = Status +item_view.loggedBy = Zapsal +item_view.assignedTo = P\u0159id\u011Bleno +item_view.summary = Souhrn +item_view.detail = Detail +item_view.history = Historie +item_view.comment = Koment\u00E1\u0159 +item_view.timeStamp = Zaznamen\u00E1no + +# item_view_form +item_view_form.relateTo = Vztvo\u0159 souvislost s jin\u00FDm p\u0159\u00EDpadem +item_view_form.duplicateOf = je kopie tohoto +item_view_form.dependsOn = z\u00E1vis\u00ED na tomto +item_view_form.relatedTo = souvis\u00ED s t\u00EDmto +item_view_form.newStatus = Nov\u00FD Status +item_view_form.assignTo = P\u0159id\u011Bl +item_view_form.comment = Koment\u00E1\u0159 +item_view_form.sendNotifications = po\u0161li e-mailov\u00E9 upozorn\u011Bn\u00ED +item_view_form.addRelatedItem = p\u0159idej souvisej\u00EDc\u00ED p\u0159\u00EDpad +item_view_form.change = zm\u011Bna +item_view_form.notifyByEmail = Upozorn\u011Bn\u00ED e-mailem +item_view_form.attachment = P\u0159\u00EDloha +item_view_form.assignedTo.error = P\u0159id\u011Bl: Nutn\u00E9 pokud Status je jin\u00FD ne\u017E {0} +item_view_form.status.error = Nutn\u00E9 p\u0159i p\u0159id\u011Blov\u00E1n\u00ED +item_view_form.chooseStatus = -- vyber status -- + +# item_search_form +item_search_form.searchingForRelated = Hled\u00E1n\u00ED p\u0159\u00EDpad\u016F souvisej\u00EDc\u00EDch s +item_search_form.viewItemById = Prohl\u00ED\u017Een\u00ED p\u0159\u00EDpad\u016F podle kl\u00ED\u010De +item_search_form.textSearch = Textov\u00E9 Vzhled\u00E1v\u00E1n\u00ED +item_search_form.resultsPerPage = V\u00FDsledk\u016F na Stranu +item_search_form.noLimit = Bez Limitu +item_search_form.sortOnColumn = T\u0159\u00EDd\u011Bn\u00ED podle Sloupce +item_search_form.id = Kl\u00ED\u010D +item_search_form.descending = Sestupn\u011B +item_search_form.showDetail = Uka\u017E Detaily +item_search_form.showHistory = Uka\u017E Historii +item_search_form.loggedBy = Otev\u0159eno +item_search_form.assignedTo = P\u0159id\u011Bleno +item_search_form.createdDate = Vztvo\u0159eno Dne +item_search_form.onOrAfter = Od / Pot\u00E9 +item_search_form.onOrBefore = Do / P\u0159ed +item_search_form.status = Status +item_search_form.severity = D\u016Fle\u017Eitost +item_search_form.priority = Priorita +item_search_form.historyUpdatedDate = Datum z\u00E1pisu +item_search_form.space = Projekt +item_search_form.error.refId.invalid = Neplatn\u00FD kl\u00ED\u010D +item_search_form.error.refId.notFound = P\u0159\u00EDpad nebyl nalezen +item_search_form.error.summary.invalid = \u0160patn\u00FD hledan\u00FD text + +# item_list (most rendered within a taglib not JSP, some reused also for excel export) +item_list.searchingForRelated = Held\u00E1n\u00ED souvisej\u00EDc\u00EDch p\u0159\u00EDpad\u016F +item_list.modifySearch = Zm\u011Bn Vyhled\u00E1v\u00E1n\u00ED +item_list.recordFound = Z\u00E1znam\u016F nelezeno +item_list.recordsFound = Z\u00E1znam\u016F nelezeno +item_list.exportToExcel = Excel +item_list.exportToXml = XML +item_list.id = ID +item_list.summary = Souhrn +item_list.detail = Detaily +item_list.loggedBy = Zapsal +item_list.status = Status +item_list.assignedTo = P\u0159id\u011Bleno +item_list.timeStamp = Zaznamen\u00E1no +item_list.history = Historie +item_list.space = Projekt + +# options +options.optionsMenu = Mo\u017Enosti +options.editYourProfile = Oprava Profilu U\u017Eivatele +options.manageUsers = Zpr\u00E1va U\u017Eivatel\u016F +options.manageSpaces = Zpr\u00E1va Projekt\u016F +options.manageSettings = Zpr\u00E1va Mo\u017Enost\u00ED +options.rebuildIndexes = Re-Indexace +options.importFromExcel = Na\u010Dten\u00ED z Excelu + +# user_form +user_form.userDetails = Detaily U\u017Eivatele +user_form.loginId = U\u017Eivatel +user_form.fullName = Pln\u00E9 jm\u00E9no +user_form.emailId = E-Mailov\u00E1 adresa +user_form.language = Jazyk +user_form.passwordMessage = Nov\u011B Vygenerovan\u00E9 Heslo v\u00E1m bude zasl\u00E1no e-mailem.<br/>N\u00E1sleduj\u00EDc\u00ED pole nejsou nutn\u00E1. +user_form.password = Heslo +user_form.confirmPassword = Potvr\u010F heslo +user_form.loginId.error.invalid = U\u017Eivatelsk\u00E9 jm\u00E9no obsahuje nedovolen\u00E9 znaky +user_form.loginId.error.exists = U\u017Eivatelsk\u00E9 jm\u00E9no ji\u017E existuje. +user_form.passwordConfirm.error = Hesla jsou r\u016Fzn\u00E1. +user_form.mailPassword = po\u0161li heslo e-mailem +user_form.locked = Zablokov\u00E1n + +# logout +logout.title = \u00DAsp\u011B\u0161n\u00E9 odhl\u00E1\u0161en\u00ED +logout.home = Dom\u016F +logout.message = \u00DAsp\u011B\u0161n\u00E9 odhl\u00E1\u0161en\u00ED. Nastaven\u00ED jak\u00E9koli aktivn\u00ED "zapamatuj si mne" slu\u017Eby bylo vymaz\u00E1no. +logout.login = P\u0159ihl\u00E1\u0161en\u00ED + +# login +login.title = JTrac P\u0159ihl\u00E1\u0161en\u00ED +login.home = Dom\u016F +login.loginName = U\u017Eivatelsk\u00E9 jm\u00E9no / email +login.password = Heslo +login.rememberMe = zapamatuj si mne +login.submit = Vlo\u017E +login.error = \u0160patn\u00E9 jm\u00E9no nebo heslo + +# config explanations (used in both config_list and config_form screens) +config.mail.server.host = Jm\u00E9no nebo IP adresa SMTP serveru, kter\u00FD bude pou\u017Eit k zas\u00EDlan\u00ED e-mail\u016F +config.mail.server.port = Port SMTP serveru (oby\u010Dejn\u011B 25) +config.mail.server.username = U\u017Eivatelsk\u00E9 jm\u00E9no, pokud SMTP server vy\u017Eaduje authentikaci +config.mail.server.password = Heslo, pokud SMTP server vy\u017Eaduje authentikaci +config.mail.server.starttls.enable = Vlo\u017E "true", pokud SMTP server vy\u017Eaduje beype\u010Dn\u00E9 (SSL) p\u0159ipojen\u00ED +config.mail.subject.prefix = Text, kter\u00FD bude p\u0159edch\u00E1zet ka\u017Ed\u00E9mu subjektu v e-mailech (oby\u010Dejn\u011B [jtrac]) +config.mail.session.jndiname = javax.mail.Session JNDI jm\u00E9no - pokud je vzpln\u00EDte, tak bude pou\u017Eito m\u00EDsto SMTP serveru +config.mail.from = Generovan\u00E9 e-maily jsou posl\u00E1ny z t\u00E9to 'from' adresy +config.jtrac.url.base = Z\u00E1kladn\u00ED URL va\u0161\u00ED JTrac instalace ( nap\u0159. http://mujserver/jtrac ) = je zapot\u0159eb\u00ED pro spr\u00E1vnou funkc\u00ED odeslan\u00FDch e-mail\u016F +config.locale.default = Z\u00E1kladn\u00ED jazyk t\u00E9to JTrac instalce nap\u0159. "cz" pro \u010Ce\u0161tinu +config.session.timeout = \u010Cas v minut\u00E1ch po jeho\u017E ub\u011Bhnut\u00ED bude zru\u0161eno u\u017Eivatelsk\u00E9 spojen\u00ED (oby\u010Dejn\u011B 30 minut) +config.attachment.maxsize = Maxim\u00E1ln\u00ED velikost p\u0159\u00EDloh v MB. (obz\u010Dejn\u011B 5 MB) Vlo\u017E -1 pro neomezenou velikost. + +# config_list (config_form does not have any extra messages) +config_list.configurationSettings = Nastaven\u00ED konfigurace +config_list.parameter = Parameter +config_list.value = Hodnota +config_list.edit = Oprava +config_list.description = Popis + +# excel_upload +excel_upload.uploadExcelFile = Nahr\u00E1t soubor v Excelu +excel_upload.error.invalidFile = Probl\u00E9m se zpracov\u00E1n\u00EDm souboru, mo\u017En\u00E1 to nen\u00ED platn\u00FD Excel form\u00E1t. + +# excel_view +excel_view.previewImportedData= N\u00E1hled na Importovan\u00E1 Data +excel_view.selectActionToPerform = -- vyber akci k v\u00FDkonu -- +excel_view.deleteSelected = Vyma\u017E vzbran\u00E9 Sloupce / \u0158ady +excel_view.convertToDate = Zm\u011B\u0148 Format vybran\u00FDch Sloupc\u016F na Date +excel_view.concatenateFields = Spoj obsah vybran\u00FDch Sloupc\u016F +excel_view.extractFirstEighty = Vyber prvn\u00EDch 80 znak\u016F do nov\u00E9ho Sloupce +excel_view.duplicateColumn = Duplikuj Vybran\u00FD Sloupec +excel_view.mapToField = Zmapuj Vybran\u00FD Sloupec s Polem v Projektu +excel_view.editRow = Oprav Vybran\u00FD \u0158adek Dat +excel_view.import = Import do Vybran\u00E9ho Projektu + +excel_view.error.noActionSelected = Pros\u00EDm, zvolte akci k v\u00FDkonu +excel_view.error.noSpaceSelected = Pros\u00EDm, zvolte nejd\u0159\u00EDve projekt +excel_view.error.noColumnSelected = Pros\u00EDm, vyberte sloupec +excel_view.error.noRowSelected = Pros\u00EDm, vyberte \u0159adu +excel_view.error.noColumnOrRowSelected = Pros\u00EDm, vyberte sloupce / \u0159ady +excel_view.error.atLeastTwoColumns = Pros\u00EDm, vyberte alespo\u0148 dva sloupce +excel_view.error.duplicateMapping = Pole zmapov\u00E1no v\u00EDce ne\u017E jednou: '{0}' +excel_view.error.notMapped = Pole mus\u00ED b\u00FDt zmapov\u00E1no: '{0}' +excel_view.error.invalidValue = N\u011Bkter\u00E9 skl\u00EDpky obsahuj\u00ED \u0161patn\u00E1 data. + +excel_view.selectSpace = Zvol Projekt +excel_view.selectedSpace = Zvolen\u00FD Projekt +excel_view.noSpaceSelected = (\u017E\u00E1dn\u00FD projekt nebyl vybr\u00E1n) +excel_view.preview = N\u00E1hled +excel_view.distinctValues = R\u016Fzn\u00E9 Hodnoty +excel_view.mapTo = Zmapuj s +excel_view.columnData = Sloupec Dat +excel_view.selectedColumn = Vybran\u00FD Sloupec: +excel_view.update = Zm\u011B\u0148 +excel_view.importSuccess = Pr\u00EDpady byly \u00FAsp\u011B\u0161n\u011B Importov\u00E1ny + +# exception_flow +exception_flow.unsupportedNavigation = Nepodporovan\u00E1 Navigace +exception_flow.line1 = Zp\u011Btn\u00E9 tla\u010D\u00EDtko Prohl\u00ED\u017Ee\u010De / obnova strany - nen\u00ED v t\u00E9to verzi podporov\u00E1na. +exception_flow.line2 = Tento probl\u00E9m nelze vy\u0159e\u0161it a budete muset zopakovat p\u0159edch\u00E1zej\u00EDc\u00ED \u00FAkon. +exception_flow.line3 = Abzchom se vyhnuli tomuto probl\u00E9mu, pou\u017E\u00EDvejte, pros\u00EDm, pouze tla\u010D\u00EDtka v t\u00E9to aplikaci. + +# index_rebuild_success +index_rebuild.heading = Re-Indexeace +index_rebuild.warning = Tohle m\u016F\u017Ee trvat del\u0161\u00ED dobu a nedoporu\u010Duje se, aby byli ve stejnou dobu p\u0159ihl\u00E1\u0161eni jin\u00ED u\u017Eivatel\u00E9. + +# index_rebuild_success +index_rebuild_success.message = Re-Indexace prob\u011Bhla \u00FAsp\u011B\u0161n\u011B + +# space_allocate +space_allocate.usersAllocatedToSpace = U\u017Eivatel\u00E9 p\u0159i\u0159azeni k Projektu +space_allocate.loginName = U\u017Eivatelsk\u00E9 jm\u00E9no +space_allocate.fullName = Jm\u00E9no a P\u0159ijmen\u00ED +space_allocate.role = Role +space_allocate.remove = Vymazat +space_allocate.allocateUser = Vyber U\u017Eivatele a Roli k p\u0159i\u0159azen\u00ED +space_allocate.createNewUser = Vytvo\u0159 nov\u00E9ho U\u017Eivatele +space_allocate.user = U\u017Eivatel +space_allocate.allocate = P\u0159i\u0159a\u010F + +# space_delete +space_delete.confirm = Potvr\u010F vymaz\u00E1n\u00ED Projektu +space_delete.line1 = Jste si jisti, \u017Ee chcete vymazat tento Projekt? +space_delete.line2 = Tohle vyma\u017Ee v\u0161echny p\u0159\u00EDpady tohoto Projektu. +space_delete.line3 = Z\u00E1pisy do datab\u00E1ze z t\u00E9to operace nelze vr\u00E1tit. + +# space_field_delete +space_field_delete.confirm = Potvr\u010Fte vymaz\u00E1n\u00ED tohoto pole +space_field_delete.line1 = Jste si jisti, \u017Ee chcete vymazat toto pole? +space_field_delete.line2 = Po\u010Det zm\u011Bn\u011Bn\u00FDch z\u00E1znam\u016F v datab\u00E1zi = {0} +space_field_delete.line3 = Z\u00E1pisy do datab\u00E1ze z t\u00E9to operace nelze vr\u00E1tit. + +# space_field_form +space_field_form.editField = Oprava Pole +space_field_form.internalName = Intern\u00ED jm\u00E9no +space_field_form.label = Ozna\u010Den\u00ED +space_field_form.optional = Nen\u00ED nutn\u00E9 +space_field_form.options = Mo\u017Enosti +space_field_form.addOption = P\u0159idej Mo\u017Enost +space_field_form.update = Zapsat +space_field_form.done = Hotovo +space_field_form.error.optionExists = Takov\u00E1 Mo\u017Enost ji\u017E existuje + +# space_field_option_delete +space_field_option_delete.confirm = Potvr\u010Fte vymaz\u00E1n\u00ED t\u00E9to mo\u017Enosti +space_field_option_delete.line1 = Jste si jisti, \u017Ee chcete vymazat tuto Mo\u017Enost? +space_field_option_delete.line2 = Po\u010Det zm\u011Bn\u011Bn\u00FDch z\u00E1znam\u016F v datab\u00E1zi = {0} +space_field_option_delete.line3 = Z\u00E1pisy do datab\u00E1ze z t\u00E9to operace nelze vr\u00E1tit. + +# space_field_option_edit +space_field_option_edit.editOption = Oprava Mo\u017Enost\u00ED tohoto Pole +space_field_option_edit.error.optionEmpty = Tato Mo\u017Enost nem\u016F\u017Ee b\u00FDt pr\u00E1zdn\u00E1 +space_field_option_edit.error.exists = Takov\u00E1 Mo\u017Enost ji\u017E existuje + +# space_fields +space_fields.customFields = Specialn\u00ED Pole tohoto Projektu +space_fields.move = Posu\u0148 +space_fields.internalName = Intern\u00ED jm\u00E9no +space_fields.type = Typ +space_fields.optional = Nen\u00ED nutn\u00E9 +space_fields.label = Ozna\u010Den\u00ED +space_fields.optionList = Seznam Mo\u017Enost\u00ED +space_fields.chooseType = Vzber tzp p\u0159id\u00E1van\u00E9ho Pole +space_fields.addField = P\u0159idej Pole +space_fields.type_1 = D\u016Fle\u017Eitost (Drop Down) +space_fields.type_2 = Priorita (Drop Down) +space_fields.type_3 = Drop Down Seznam +space_fields.type_4 = Decimaln\u00ED \u010C\u00EDslo +space_fields.type_5 = Textov\u00E9 Pole +space_fields.type_6 = Datum +space_fields.typeRemaining = {0} zb\u00FDv\u00E1 + +# space_form +space_form.spaceDetails = Detaily Projektu +space_form.displayName = Jm\u00E9no +space_form.spaceKey = Kl\u00ED\u010D Projektu (kr\u00E1tk\u00E9 jm\u00E9no) +space_form.description = Popis +space_form.makePublic = Opublikovat +space_form.allowGuest = Povol p\u0159\u00EDstup host\u016Fm (pouze pro \u010Dten\u00ED) +space_form.copyExisting = Zkop\u00EDruj Existuj\u00EDc\u00ED Projekt +space_form.createFresh = vztvo\u0159 zcela nov\u00FD +space_form.error.prefixCode.tooShort = D\u00E9lka mus\u00ED b\u00FDt minim\u00E1ln\u011B 3 znaky. +space_form.error.prefixCode.tooLong = D\u00E9lka by nem\u011Bla b\u00FDt v\u00EDc ne\u017E 10 znak\u016F. +space_form.error.prefixCode.invalid = Povolena jsou pouze velk\u00E1 p\u00EDsmena a \u010D\u00EDslice +space_form.error.prefixCode.exists = Projekt s t\u00EDmto kl\u00ED\u010Dem ji\u017E existuje + +# space_list +space_list.spaceList = Seznam Projekt\u016F +space_list.createNewSpace = Vytvo\u0159 nov\u00FD Projekt +space_list.key = Kl\u00ED\u010D +space_list.name = Jm\u00E9no +space_list.edit = Oprav +space_list.description = Popis +space_list.users = U\u017Eivatel\u00E9 + +# space_role_delete +space_role_delete.confirm = Potvr\u010Fte vymaz\u00E1n\u00ED t\u00E9to Role +space_role_delete.line1 = Existuj\u00ED u\u017Eivatel\u00E9 p\u0159i\u0159azeni k tomuto Projektu ({0}) s touto Rol\u00ED. +space_role_delete.line2 = Jste si jisti, \u017Ee chcete vymazat tuto Roli? +space_role_delete.line3 = Z\u00E1pisy do datab\u00E1ze z t\u00E9to operace nelze vr\u00E1tit. + +# space_role_form +space_role_form.editRoleName = Oprava Jm\u00E9na Role +space_role_form.error.role.invalid = Jm\u00E9no Role m\u00E1 povolena pouze velk\u00E1 p\u00EDsmena a \u010D\u00EDslice ('_' je povoleno uvnit\u0159 jm\u00E9na) +space_role_form.error.role.exists = Role s t\u00EDmto jm\u00E9nem ji\u017E existuje +space_role_form.error.role.reserved = Toto jm\u00E9no Role je reservov\u00E1no k vnit\u0159n\u00EDmu pou\u017Eit\u00ED + +# space_role_form_confirm +space_role_form_confirm.confirm = Potvr\u010F zm\u011Bnu jm\u00E9na Role : {0} na {1} +space_role_form_confirm.line1 = Jste si jisti, \u017Ee chcete p\u0159ejmenovat tuto Roli? +space_role_form_confirm.line2 = Z\u00E1pisy do datab\u00E1ze z t\u00E9to operace nelze vr\u00E1tit. + +# space_roles +space_roles.spaceRoles = Role v Projektu a Zm\u011Bny Stavu (Workflow State-Transitions) pro Projekt +space_roles.addState = P\u0159idej Stav +space_roles.addRole = P\u0159idej Roli +space_roles.nextAllowedState = P\u0159\u00ED\u0161t\u00ED povolen\u00FD Stav +space_roles.fieldLevelPermissions = Pravomoce na \u00FArovni pole +space_roles.state = Stav +space_roles.role = Role +space_roles.mandatory = Povinn\u00FD +space_roles.optional = Nepovinn\u00FD +space_roles.readonly = Pouze pro \u010Dten\u00ED + +# space_state_delete +space_state_delete.confirm = Potvr\u010Fte vymaz\u00E1n\u00ED tohoto Stavu +space_state_delete.line1 = Jste si jisti, \u017Ee chcete vymazat tento Stav? +space_state_delete.line2 = Po\u010Det zm\u011Bn\u011Bn\u00FDch z\u00E1znam\u016F v datab\u00E1zi = {0} +space_state_delete.line3 = Z\u00E1pisy do datab\u00E1ze z t\u00E9to operace nelze vr\u00E1tit. + +# space_state_form +space_state_form.editState = Oprava Stavu +space_state_form.error.state.invalid = Jm\u00E9no Stavu mus\u00ED pou\u017E\u00EDt znak minus ('-') k odd\u011Blen\u00ED slov nap\u0159. 'Opraveno', 'Pozastaven' nebo 'Pracuje-se-na-tom' +space_state_form.error.state.exists = Stav tohoto jm\u00E9na ji\u017E existuje + +# user_allocate_space +user_allocate_space.spacesAllocated = Projekty p\u0159i\u0159azen\u00E9 U\u017Eivateli +user_allocate_space.space = Projekt +user_allocate_space.role = Role +user_allocate_space.remove = Vymazat +user_allocate_space.chooseSpace = Vzber Projekt k p\u0159i\u0159azen\u00ED tomuto U\u017Eivateli +user_allocate_space.makeUserAdmin = Udelej tohoto U\u017Eivatele Administratorem (v\u0161ech Projekt\u016F) +user_allocate_space.makeAdmin = Ud\u011Blej Adminem +user_allocate_space.allSpaces = (v\u0161echny projekty) + +# user_allocate_space_role +user_allocate_space_role.allocateRole = P\u0159i\u0159a\u010F Roli U\u017Eivateli {0} v r\u00E1mci Projektu +user_allocate_space_role.allocate = P\u0159i\u0159a\u010F + +# user_list +user_list.usersAndSpaces = U\u017Eivatel\u00E9 a p\u0159i\u0159azen\u00E9 Projekty +user_list.createNewUser = Vytvo\u0159 Nov\u00E9ho U\u017Eivatele +user_list.userName = U\u017Eivatelsk\u00E9 jm\u00E9no +user_list.loginName = U\u017Eivatel +user_list.editProfile = Oprav Profil +user_list.locked = Zablokov\u00E1n +user_list.spaceRole = Projekt (Role) +user_list.allocateSpaceRole = P\u0159i\u0159a\u010F<br/>Projekt / Roli +user_list.locale = Jazyk +user_list.email = E Mail +user_list.filterBy = Filtrovat + +# mail_sender (this is in the mail sending code, not a JSP) +mail_sender.loginMailSubject = JTrac detaily nutn\u00E9 k p\u0159ihl\u011B\u0161en\u00ED +mail_sender.loginMailGreeting = Ahoj +mail_sender.loginMailLine1 = Nasleduj\u00ED tvoje nov\u00E9 / opraven\u00E9 detaily nutn\u00E9 k p\u0159ihl\u011B\u0161en\u00ED: +mail_sender.loginName = U\u017Eivatelsk\u00E9 jm\u00E9no +mail_sender.password = Heslo +mail_sender.loginMailLine2 = Pou\u017Eij tento link k p\u0159ihl\u00E1\u0161en\u00ED: + +# new item_relate_remove +item_relate_remove.heading = Potvr\u010Fte vymaz\u00E1n\u00ED t\u00E9to souvislosti + +# item_delete +item_delete.confirm = Potvr\u010Fte vymaz\u00E1n\u00ED tohoto P\u0159\u00EDpadu +item_delete.line1 = Jste si jisti, \u017Ee chcete vymazat tento P\u0159\u00EDpad? +item_delete.line2 = Z\u00E1pisy do datab\u00E1ze z t\u00E9to operace nelze vr\u00E1tit. + +# user_delete +user_delete.confirm = Potvr\u010Fte vymaz\u00E1n\u00ED tohoto U\u017Eivatele +user_delete.line1 = Jste si jisti, \u017Ee chcete vymazat tohoto U\u017Eivatele? +user_delete.line2 = Z\u00E1pisy do datab\u00E1ze z t\u00E9to operace nelze vr\u00E1tit. +user_delete.notPossible = Tento U\u017Eivatel je uveden v n\u011Bkolika P\u0159\u00EDpadech. Pokuste se ho zablokovat nebo zma\u017Ete prvn\u011B takov\u00E9 P\u0159\u00EDpady. + +# generic error messages +error.itemBelongsToUnallocatedSpace = Nem\u00E1te opr\u00E1vn\u011Bn\u00ED prohl\u00E9dnout si tento P\u0159\u00EDpad + +# item search filter wizard +item_filter.showColumn = Uka\u017E ve V\u00FDsledc\u00EDch +item_filter.expression = Vzhled\u00E1vac\u00ED Filtr +item_filter.expandAll = (uka\u017E v\u0161e) +item_filter.in = m\u00E1 hotnoty +item_filter.notIn = nem\u00E1 hotnoty +item_filter.like = obsahuje text +item_filter.equal = je shodn\u00FD s +item_filter.notEqual = nen\u00ED shodn\u00FD s +item_filter.greaterThan = v\u011Bt\u0161\u00ED ne\u017E +item_filter.lessThan = men\u0161\u00ED ne\u017E +item_filter.between = mezi Modified: trunk/jtrac/src/main/resources/messages_el.properties =================================================================== --- trunk/jtrac/src/main/resources/messages_el.properties 2021-08-04 13:32:09 UTC (rev 1379) +++ trunk/jtrac/src/main/resources/messages_el.properties 2021-08-05 11:18:30 UTC (rev 1380) @@ -1,5 +1,5 @@ # please refer documentation before starting work on a translation: -# http://jtrac.info/doc/html/dev-guide.html#dev-translating +# http://j-trac.sourceforge.net/doc/html/dev-guide.html#dev-translating # Initial version contributed by manos batsis, Abiss.gr. See http://dev.abiss.gr # globals Modified: trunk/jtrac/src/main/resources/messages_es.properties =================================================================== --- trunk/jtrac/src/main/resources/messages_es.properties 2021-08-04 13:32:09 UTC (rev 1379) +++ trunk/jtrac/src/main/resources/messages_es.properties 2021-08-05 11:18:30 UTC (rev 1380) @@ -1,407 +1,408 @@ -# please refer documentation before starting work on a translation: -# http://jtrac.info/doc/html/dev-guide.html#dev-translating -# globals -submit = Aceptar -cancel = Cancelar -delete = Borrar -back = Atr\xE1s -next = Siguiente -edit = Editar -view = Ver -search = Buscar -new = Nuevo -save = Guardar - -# override default messages for spring mvc form binding errors -typeMismatch.java.lang.Double = Por favor, introduzca un valor num\xE9rico v\xE1lido -typeMismatch.java.util.Date = Por favor, introduzca un valor de fecha v\xE1lido. Formato\: aaaa-mm-dd - -# wicket globals -null = -nullValid = -Required = Por favor, rellene los campos obligatorios -IConverter.Double = ${label}\: Por favor, introduzca un n\xFAmero v\xE1lido -IConverter.Date = ${label}\: Por favor, introduzca una fecha v\xE1lida con el formato aaaa-mm-dd -# generic form validation message -error.empty = Valor requerido - -# header navigation -header.dashboard = PORTADA -header.new = NUEVO -header.search = BUSCAR -header.options = OPCIONES -header.login = ENTRAR -header.logout = DESCONECTAR - -# dashboard -dashboard.noSpaces = No est\xE1 asignado a ning\xFAn Proyecto -dashboard.space = Proyecto -dashboard.action = Acci\xF3n -dashboard.status = Estado -dashboard.loggedByMe = Mis<br/>incidencias -dashboard.assignedToMe = Asignada<br/>a mi -dashboard.all = Todos -dashboard.new = NUEVO -dashboard.search = BUSCAR -dashboard.showDetails = Mostrar Detalles -dashboard.hideDetails = Ocultar Detalles - -# item_form -item_form.summary = Resumen -item_form.detail = Detalles -item_form.assignTo = Asignar A -item_form.editReason = Editar Motivo -item_form.sendNotifications = enviar notificaciones por e-mail -item_form.notifyByEmail = Notificar por e-mail -item_form.attachment = Anexo -item_form.error.version = Incidencia modificada por otro usuario o se utiliz\xF3 el bot\xF3n "Atr\xE1s" del navegador. - -# item_view (note this is rendered within a taglib and not in a JSP) -item_view.id = ID -item_view.relatedItems = Incidencias Relacionadas -item_view.remove = Eliminar -item_view.relatedTo = est\xE1 relacionada con -item_view.duplicateOf = es un duplicado de -item_view.dependsOn = depende de -item_view.relatedToThis = est\xE1 relacionada con \xE9sta -item_view.duplicateOfThis = es duplicado de \xE9sta -item_view.dependsOnThis = depende de \xE9sta -item_view.this = este -item_view.status = Estado -item_view.loggedBy = Autor -item_view.assignedTo = Asignado a -item_view.summary = Resumen -item_view.detail = Detalles -item_view.history = Hist\xF3rico -item_view.comment = Comentario -item_view.timeStamp = Marca de Tiempo - -# item_view_form -item_view_form.relateTo = Relacionar esta incidencia con -item_view_form.duplicateOf = es duplicado de \xE9sta -item_view_form.dependsOn = depende de \xE9sta -item_view_form.relatedTo = est\xE1 relacionada con \xE9sta -item_view_form.newStatus = Nuevo Estado -item_view_form.assignTo = Asignar A -item_view_form.comment = Comentario -item_view_form.sendNotifications = enviar notificaciones por e-mail -item_view_form.addRelatedItem = a\xF1adir incidencia relacionada -item_view_form.change = cambiar -item_view_form.notifyByEmail = Notificar por E-mail -item_view_form.attachment = Anexo -item_view_form.assignedTo.error = Oligatorio si el estado es distinto de Cerrado -item_view_form.status.error = Oligatorio si se est\xE1 asignando -item_view_form.chooseStatus = -- seleccione Estado -- - -# item_search_form -item_search_form.searchingForRelated = Buscando incidencias relacionadas con -item_search_form.viewItemById = Ver incidencia por ID -item_search_form.textSearch = Busqueda de Texto -item_search_form.resultsPerPage = Resultados / P\xE1gina -item_search_form.noLimit = Sin L\xEDmite -item_search_form.sortOnColumn = Ordenar por columna -item_search_form.id = ID -item_search_form.descending = Descendente -item_search_form.showDetail = Mostrar Detalles -item_search_form.showHistory = Mostrar Hist\xF3rico -item_search_form.loggedBy = Logado Por -item_search_form.assignedTo = Asignado A -item_search_form.createdDate = Fecha de Creaci\xF3n -item_search_form.onOrAfter = En / Despu\xE9s de -item_search_form.onOrBefore = En / Antes de -item_search_form.status = Estado -item_search_form.severity = Urgencia -item_search_form.priority = Prioridad -item_search_form.historyUpdatedDate = Fecha de modificaci\xF3n del Hist\xF3rico -item_search_form.space = Proyecto -item_search_form.error.refId.invalid = ID no v\xE1lido -item_search_form.error.refId.notFound = Incidencia no encontrado -item_search_form.error.summary.invalid = Cadena de b\xFAsqueda no v\xE1lida - -# item_list (most rendered within a taglib not JSP, some reused also for excel export) -item_list.searchingForRelated = Buscando incidencias relacionadas con -item_list.modifySearch = Modificar B\xFAsqueda -item_list.recordFound = Registro Encontrado -item_list.recordsFound = Registros Encontrados -item_list.exportToExcel = Exportar a Excel -item_list.id = ID -item_list.summary = Resumen -item_list.detail = Detalles -item_list.loggedBy = Autor -item_list.status = Estado -item_list.assignedTo = Asignado A -item_list.timeStamp = Marca de Tiempo -item_list.history = Hist\xF3rico -item_list.space = Proyecto - -# options -options.optionsMenu = Men\xFA de Opciones -options.editYourProfile = Edite su perfil -options.manageUsers = Gesti\xF3n de Usuarios -options.manageSpaces = Gesti\xF3n de Proyectos -options.manageSettings = Gesti\xF3n de Configuraci\xF3n -options.rebuildIndexes = Reconstruir \xEDndices -options.importFromExcel = Importar de un Excel - -# user_form -user_form.userDetails = Detalles de Usuario -user_form.loginId = Login ID -user_form.fullName = Nombre Completo -user_form.emailId = E-Mail ID -user_form.language = Lenguaje -user_form.passwordMessage = Un password ser\xE1 generado y enviado a su e-mail por defecto.</br>Los campos a continuacion son opcionales -user_form.password = Password -user_form.confirmPassword = Confirme Password -user_form.loginId.error.invalid = S\xF3lo min\xFAsculas y n\xFAmeros permitidos -user_form.loginId.error.exists = El Login ID ya existe -user_form.passwordConfirm.error = Confirmaci\xF3n de Password Incorrecta -user_form.mailPassword = enviar password por e-mail -user_form.locked = Bloqueado - -# logout -logout.title = Desconectado -logout.home = Inicio -logout.message = Desconectado. Cualquier sesi\xF3n "recu\xE9rdeme" ha sido deshabilitada. -logout.login = Login - -# login -login.title = JTrac Login -login.home = Inicio -login.loginName = Login / email ID -login.password = Password -login.rememberMe = recu\xE9rdeme -login.submit = Aceptar -login.error = Credenciales err\xF3neas - -# config explanations (used in both config_list and config_form screens) -config.mail.server.host = Nombre del Host o direcci\xF3n IP del servidor SMTP usado para el env\xEDo de e-mail -config.mail.server.port = Puerto usado por el servidor SMTP (por defecto 25) -config.mail.server.username = Nombre de usuario para el servidor SMTP, si \xE9ste requiere autenticaci\xF3n -config.mail.server.password = Password para el servidor SMTP, si \xE9ste requiere autenticaci\xF3n -config.mail.server.starttls.enable = Usar "Verdadero" para conexiones seguras (SSL) , si se requiere en el servidor SMTP -config.mail.subject.prefix = Texto prefijo para el asunto de los e-mail (por defecto [jtrac]) -config.mail.from = Cuando se genere un e-mail, \xE9sta ser\xE1 la direcci\xF3n 'from' -config.jtrac.url.base = URB base de la instalaci\xF3n JTrac (p.e. http://miservidor/jtrac), requerido para el funcionamiento correcto de los enlaces en los e-mail -config.locale.default = Lenguaje por defecto usado en esta instalaci\xF3n de JTrac (p.e. "es" para Espa\xF1ol) -config.session.timeout = Tiempo en minutos para la expiraci\xF3n de la sesi\xF3n (por defecto 30 minutos) -config.attachment.maxsize = Tama\xF1o m\xE1ximo en MB de los ficheros adjuntos (por defecto 5 MB). Use -1 para no tener l\xEDmite - -# config_list (config_form does not have any extra messages) -config_list.configurationSettings = Configuraci\xF3n -config_list.parameter = Clave del Parametro -config_list.value = Valor -config_list.edit = Editar -config_list.description = Descripci\xF3n - -# excel_upload -excel_upload.uploadExcelFile = Subir fichero Excel -excel_upload.error.invalidFile = Error procesando el fichero, puede que no sea un fichero Excel v\xE1lido. - -# excel_view -excel_view.previewImportedData= Preview de los Datos Importados -excel_view.selectActionToPerform = seleccione la acci\xF3n a realizar -excel_view.deleteSelected = Borrar las filas/columnas seleccionadas -excel_view.convertToDate = Convertir el formato de las columnas seleccionadas a Fecha -excel_view.concatenateFields = Concatenar el contenido de las columnas seleccionadas -excel_view.extractFirstEighty = Extraer los primeros 80 caracteres a una nueva columna - -# exception_flow -... [truncated message content] |
From: <udi...@us...> - 2021-08-04 13:32:11
|
Revision: 1379 http://sourceforge.net/p/j-trac/code/1379 Author: udittmer Date: 2021-08-04 13:32:09 +0000 (Wed, 04 Aug 2021) Log Message: ----------- base pretty timestamps on user locale, not system default locale Modified Paths: -------------- trunk/jtrac/src/main/java/info/jtrac/util/DateUtils.java Modified: trunk/jtrac/src/main/java/info/jtrac/util/DateUtils.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/util/DateUtils.java 2021-08-04 13:06:48 UTC (rev 1378) +++ trunk/jtrac/src/main/java/info/jtrac/util/DateUtils.java 2021-08-04 13:32:09 UTC (rev 1379) @@ -16,10 +16,13 @@ package info.jtrac.util; +import info.jtrac.domain.User; import info.jtrac.wicket.JtracApplication; +import info.jtrac.wicket.JtracSession; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.Locale; import org.springframework.util.StringUtils; @@ -28,9 +31,8 @@ /** * Date Formatting helper, currently date formats are hard-coded for the entire app * hence the use of static SimpleDateFormat instances, although they are known not to be synchronized - * - * TODO: for pretty printing, instead of using the system default locale, use the user's locale */ + public class DateUtils { private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); @@ -45,11 +47,20 @@ } } + private static PrettyTime getPrettyTime() { + User user = JtracSession.get().getUser(); + if (user != null) { + return new PrettyTime(new Locale(user.getLocale())); + } else { + return new PrettyTime(new Locale(JtracApplication.get().getJtrac().getDefaultLocale())); + } + } + public static String format (Date date) { return date == null ? "" : (showPretty() - ? new PrettyTime(JtracApplication.get().getJtrac().getDefaultLocale()).format(date) + ? getPrettyTime().format(date) : dateFormat.format(date)); } @@ -57,7 +68,7 @@ return date == null ? "" : (showPretty() - ? new PrettyTime(JtracApplication.get().getJtrac().getDefaultLocale()).format(date) + ? getPrettyTime().format(date) : dateTimeFormat.format(date)); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <udi...@us...> - 2021-08-04 13:06:51
|
Revision: 1378 http://sourceforge.net/p/j-trac/code/1378 Author: udittmer Date: 2021-08-04 13:06:48 +0000 (Wed, 04 Aug 2021) Log Message: ----------- add {U+201C}time.pretty{U+201D} setting for displaying dates and times in a relative format rather than in absolute times Modified Paths: -------------- trunk/jtrac/pom.xml trunk/jtrac/src/main/java/info/jtrac/domain/Config.java trunk/jtrac/src/main/java/info/jtrac/util/DateUtils.java trunk/jtrac/src/main/resources/messages.properties trunk/jtrac/src/main/resources/messages_de.properties trunk/jtrac/src/main/resources/messages_en.properties Modified: trunk/jtrac/pom.xml =================================================================== --- trunk/jtrac/pom.xml 2021-08-04 10:45:46 UTC (rev 1377) +++ trunk/jtrac/pom.xml 2021-08-04 13:06:48 UTC (rev 1378) @@ -191,6 +191,11 @@ <artifactId>utils-mail-dkim</artifactId> <version>1.4.0</version> </dependency> + <dependency> + <groupId>org.ocpsoft.prettytime</groupId> + <artifactId>prettytime</artifactId> + <version>5.0.1.Final</version> + </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> @@ -455,6 +460,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> + <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> @@ -499,6 +505,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-site-plugin</artifactId> + <version>3.9.1</version> <configuration> <templateFile>src/site/resources/template/maven-site.vm</templateFile> </configuration> Modified: trunk/jtrac/src/main/java/info/jtrac/domain/Config.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/domain/Config.java 2021-08-04 10:45:46 UTC (rev 1377) +++ trunk/jtrac/src/main/java/info/jtrac/domain/Config.java 2021-08-04 13:06:48 UTC (rev 1378) @@ -57,6 +57,7 @@ PARAMS.add("session.timeout"); PARAMS.add("attachment.maxsize"); PARAMS.add("pwd.minLength"); + PARAMS.add("time.pretty"); } public static Set<String> getParams() { Modified: trunk/jtrac/src/main/java/info/jtrac/util/DateUtils.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/util/DateUtils.java 2021-08-04 10:45:46 UTC (rev 1377) +++ trunk/jtrac/src/main/java/info/jtrac/util/DateUtils.java 2021-08-04 13:06:48 UTC (rev 1378) @@ -1,47 +1,71 @@ -/* - * Copyright 2002-2005 the original author or authors. - * - * Licensed 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. - */ - -package info.jtrac.util; - -import java.text.SimpleDateFormat; -import java.util.Date; - -/** - * Date Formatting helper, currently date formats are hard-coded for the entire app - * hence the use of static SimpleDateFormat instances, although they are known not to be synchronized - */ -public class DateUtils { - - private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); - private static SimpleDateFormat dateTimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - - public static String format(Date date) { - return date == null ? "" : dateFormat.format(date); - } - - public static String formatTimeStamp(Date date) { - return date == null ? "" : dateTimeFormat.format(date); - } - - public static Date convert(String s) { - try { - return dateFormat.parse(s); - } catch(Exception e) { - throw new RuntimeException(e); - } - } - -} +/* + * Copyright 2002-2005 the original author or authors. + * + * Licensed 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. + */ + +package info.jtrac.util; + +import info.jtrac.wicket.JtracApplication; + +import java.text.SimpleDateFormat; +import java.util.Date; + +import org.springframework.util.StringUtils; + +import org.ocpsoft.prettytime.PrettyTime; + +/** + * Date Formatting helper, currently date formats are hard-coded for the entire app + * hence the use of static SimpleDateFormat instances, although they are known not to be synchronized + * + * TODO: for pretty printing, instead of using the system default locale, use the user's locale + */ +public class DateUtils { + + private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + private static SimpleDateFormat dateTimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + private static boolean showPretty() { + String pretty = JtracApplication.get().getJtrac().loadConfig("time.pretty"); + if (StringUtils.hasText(pretty)) { + return pretty.trim().equalsIgnoreCase("true"); + } else { + return false; + } + } + + public static String format (Date date) { + return date == null + ? "" + : (showPretty() + ? new PrettyTime(JtracApplication.get().getJtrac().getDefaultLocale()).format(date) + : dateFormat.format(date)); + } + + public static String formatTimeStamp (Date date) { + return date == null + ? "" + : (showPretty() + ? new PrettyTime(JtracApplication.get().getJtrac().getDefaultLocale()).format(date) + : dateTimeFormat.format(date)); + } + + public static Date convert (String s) { + try { + return dateFormat.parse(s); + } catch(Exception e) { + throw new RuntimeException(e); + } + } +} Modified: trunk/jtrac/src/main/resources/messages.properties =================================================================== --- trunk/jtrac/src/main/resources/messages.properties 2021-08-04 10:45:46 UTC (rev 1377) +++ trunk/jtrac/src/main/resources/messages.properties 2021-08-04 13:06:48 UTC (rev 1378) @@ -1,5 +1,5 @@ # please refer documentation before starting work on a translation: -# http://jtrac.info/doc/html/dev-guide.html#dev-translating +# http://j-trac.sourceforge.net/doc/html/dev-guide.html#dev-translating # globals submit = Submit @@ -203,6 +203,7 @@ config.session.timeout = Time in minutes after which user session expires (default 30 minutes) config.attachment.maxsize = Maximum size in MB of file-attachments. (default 5 MB) Use -1 for no-limit config.pwd.minLength = Minimal length of passwords (default is 8) +config.time.pretty = Show relative timestamps as on Github, Twitter and Facebook (set to true, default is false) # config_list (config_form does not have any extra messages) config_list.configurationSettings = Configuration Settings Modified: trunk/jtrac/src/main/resources/messages_de.properties =================================================================== --- trunk/jtrac/src/main/resources/messages_de.properties 2021-08-04 10:45:46 UTC (rev 1377) +++ trunk/jtrac/src/main/resources/messages_de.properties 2021-08-04 13:06:48 UTC (rev 1378) @@ -1,4 +1,5 @@ -# german translation last updated by Manfred Wolff +# Bitte hier lesen bevor Du an einer \xDCbersetzung arbeitest: +# http://j-trac.sourceforge.net/doc/html/dev-guide.html#dev-translating # globals submit = OK @@ -197,11 +198,12 @@ config.jtrac.url.base = URL dieser Installation ( zB. http://myserver/jtrac ) wird ben\u00F6tigt f\u00FCr Links in den eMails config.jtrac.header.picture = Inidividuelles Bild config.jtrac.header.text = Individueller Text -config.jtrac.edit.item = Soll der Ersteller eines Eintrages diesen editieren k\xF6nnen? (setzte auf true, default ist false) +config.jtrac.edit.item = Soll der Ersteller eines Eintrages diesen editieren k\xF6nnen? (auf true setzen, Default ist false) config.locale.default = Default Sprache zB. "de" f\u00FCr Deutsch config.session.timeout = Session Timeout in Minuten (Default 30 Minuten) config.attachment.maxsize = Maximalgr\u00F6\u00DFe f\u00FCr Anlagen in MB, "-1" f\u00FCr Kein-Limit (Default 5) config.pwd.minLength = Minimale L\u00e4nge von Passw\u00f6rtern (Default 8) +config.time.pretty = Relative Zeiten anzeigen wie auf Github, Twitter und Facebook (auf true setzen, Default ist false) # config_list (config_form does not have any extra messages) config_list.configurationSettings = Einstellungen Modified: trunk/jtrac/src/main/resources/messages_en.properties =================================================================== --- trunk/jtrac/src/main/resources/messages_en.properties 2021-08-04 10:45:46 UTC (rev 1377) +++ trunk/jtrac/src/main/resources/messages_en.properties 2021-08-04 13:06:48 UTC (rev 1378) @@ -1,5 +1,5 @@ # please refer documentation before starting work on a translation: -# http://jtrac.info/doc/html/dev-guide.html#dev-translating +# http://j-trac.sourceforge.net/doc/html/dev-guide.html#dev-translating # globals submit = Submit @@ -203,6 +203,7 @@ config.session.timeout = Time in minutes after which user session expires (default 30 minutes) config.attachment.maxsize = Maximum size in MB of file-attachments. (default 5 MB) Use -1 for no-limit config.pwd.minLength = Minimal length of passwords (default is 8) +config.time.pretty = Show relative timestamps as on Github, Twitter and Facebook (set to true, default is false) # config_list (config_form does not have any extra messages) config_list.configurationSettings = Configuration Settings This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <udi...@us...> - 2021-08-04 10:45:48
|
Revision: 1377 http://sourceforge.net/p/j-trac/code/1377 Author: udittmer Date: 2021-08-04 10:45:46 +0000 (Wed, 04 Aug 2021) Log Message: ----------- no default settings Modified Paths: -------------- trunk/jtrac/src/main/resources/jtrac-init.properties Modified: trunk/jtrac/src/main/resources/jtrac-init.properties =================================================================== --- trunk/jtrac/src/main/resources/jtrac-init.properties 2021-08-04 10:44:01 UTC (rev 1376) +++ trunk/jtrac/src/main/resources/jtrac-init.properties 2021-08-04 10:45:46 UTC (rev 1377) @@ -1,12 +1,3 @@ # uncomment / edit this file to customize the location # of the JTrac "home" directory e.g. jtrac.home=C:/jtrac # please refer the documentation at http://j-trac.sourceforge.net/ - -jtrac.home=/Users/ulf/Development/Java/jtrac-2.1.0/live-data -jtrac.url.base=https://trac.ulf:8443/ - -#jtrac.home=/home/udittmer/tomcat/webapps/jtrac-data -#jtrac.url.base=https://trac.care-with-care.com/ - -locale.default=en - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <udi...@us...> - 2021-08-04 10:44:04
|
Revision: 1376 http://sourceforge.net/p/j-trac/code/1376 Author: udittmer Date: 2021-08-04 10:44:01 +0000 (Wed, 04 Aug 2021) Log Message: ----------- new setting pwd.minLength to set a minimum password length Modified Paths: -------------- trunk/jtrac/src/main/java/info/jtrac/domain/Config.java trunk/jtrac/src/main/java/info/jtrac/wicket/UserFormPage.java trunk/jtrac/src/main/resources/messages.properties trunk/jtrac/src/main/resources/messages_de.properties trunk/jtrac/src/main/resources/messages_en.properties Modified: trunk/jtrac/src/main/java/info/jtrac/domain/Config.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/domain/Config.java 2021-08-04 09:26:42 UTC (rev 1375) +++ trunk/jtrac/src/main/java/info/jtrac/domain/Config.java 2021-08-04 10:44:01 UTC (rev 1376) @@ -56,8 +56,9 @@ PARAMS.add("locale.default"); PARAMS.add("session.timeout"); PARAMS.add("attachment.maxsize"); + PARAMS.add("pwd.minLength"); } - + public static Set<String> getParams() { return PARAMS; } Modified: trunk/jtrac/src/main/java/info/jtrac/wicket/UserFormPage.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/UserFormPage.java 2021-08-04 09:26:42 UTC (rev 1375) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/UserFormPage.java 2021-08-04 10:44:01 UTC (rev 1376) @@ -1,317 +1,329 @@ -/* - * Copyright 2002-2005 the original author or authors. - * - * Licensed 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. - */ - -package info.jtrac.wicket; - -import info.jtrac.domain.User; -import info.jtrac.util.ValidationUtils; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import org.apache.wicket.behavior.HeaderContributor; -import org.apache.wicket.markup.html.IHeaderContributor; -import org.apache.wicket.markup.html.IHeaderResponse; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.WebPage; -import org.apache.wicket.markup.html.form.Button; -import org.apache.wicket.markup.html.form.CheckBox; -import org.apache.wicket.markup.html.form.DropDownChoice; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.html.form.FormComponent; -import org.apache.wicket.markup.html.form.IChoiceRenderer; -import org.apache.wicket.markup.html.form.PasswordTextField; -import org.apache.wicket.markup.html.form.TextField; -import org.apache.wicket.markup.html.form.validation.AbstractFormValidator; -import org.apache.wicket.markup.html.link.Link; -import org.apache.wicket.markup.html.panel.FeedbackPanel; -import org.apache.wicket.model.BoundCompoundPropertyModel; -import org.apache.wicket.validation.IValidatable; -import org.apache.wicket.validation.validator.AbstractValidator; - -/** - * user edit form - */ -public class UserFormPage extends BasePage { - - private WebPage previous; - - public void setPrevious(WebPage previous) { - this.previous = previous; - } - - public UserFormPage() { - User user = new User(); - user.setLocale(getJtrac().getDefaultLocale()); - add(new UserForm("form", user)); - } - - public UserFormPage(User user) { - add(new UserForm("form", user)); - } - - /** - * wicket form - */ - private class UserForm extends Form { - - private User user; - private String password; - private String passwordConfirm; - private boolean sendNotifications; - - private JtracFeedbackMessageFilter filter; - - public User getUser() { - return user; - } - - public void setUser(User user) { - this.user = user; - } - - public String getPassword() { - return password; - } - - public void setPassword(String password) { - this.password = password; - } - - public String getPasswordConfirm() { - return passwordConfirm; - } - - public void setPasswordConfirm(String passwordConfirm) { - this.passwordConfirm = passwordConfirm; - } - - public boolean isSendNotifications() { - return sendNotifications; - } - - public void setSendNotifications(boolean sendNotifications) { - this.sendNotifications = sendNotifications; - } - - public UserForm(String id, final User user) { - - super(id); - this.user = user; - if(user.getId() == 0) { - sendNotifications = true; - } - FeedbackPanel feedback = new FeedbackPanel("feedback"); - filter = new JtracFeedbackMessageFilter(); - feedback.setFilter(filter); - add(feedback); - - final BoundCompoundPropertyModel model = new BoundCompoundPropertyModel(this); - setModel(model); - - // delete button only if edit ====================================== - Button delete = new Button("delete") { - @Override - public void onSubmit() { - int count = getJtrac().loadCountOfHistoryInvolvingUser(user); - if(count > 0) { - UserForm.this.error(localize("user_delete.notPossible")); - return; - } - String heading = localize("user_delete.confirm"); - String line1 = localize("user_delete.line1"); - String warning = localize("user_delete.line2"); - ConfirmPage confirm = new ConfirmPage(UserFormPage.this, heading, warning, new String[] {line1}) { - public void onConfirm() { - getJtrac().removeUser(user); - // logged in user may have been allocated to space with this user assigned - JtracSession.get().refreshPrincipal(); - setResponsePage(new UserListPage()); - } - }; - setResponsePage(confirm); - } - }; - delete.setDefaultFormProcessing(false); - // only way you can delete someone else is if you are an admin - // and of course, don't allow deleting self or the slightly special default admin user - if(!getPrincipal().isSuperUser() || user.getId() == getPrincipal().getId() || user.getId() <= 1) { - delete.setVisible(false); - } - add(delete); - - // login name ====================================================== - final TextField loginName = new TextField("user.loginName"); - loginName.setRequired(true); - loginName.add(new ErrorHighlighter()); - loginName.setOutputMarkupId(true); - add(new HeaderContributor(new IHeaderContributor() { - public void renderHead(IHeaderResponse response) { - response.renderOnLoadJavascript("document.getElementById('" + loginName.getMarkupId() + "').focus()"); - } - })); - // validation: does user already exist with same loginName? - loginName.add(new AbstractValidator() { - protected void onValidate(IValidatable v) { - String s = (String) v.getValue(); - User temp = getJtrac().loadUser(s); - if(temp != null && temp.getId() != user.getId()) { - error(v); - } - } - @Override - protected String resourceKey() { - return "user_form.loginId.error.exists"; - } - }); - // validation no strange characters - loginName.add(new AbstractValidator() { - protected void onValidate(IValidatable v) { - String s = (String) v.getValue(); - if(!ValidationUtils.isValidLoginName(s)) { - error(v); - } - } - @Override - protected String resourceKey() { - return "user_form.loginId.error.invalid"; - } - }); - add(loginName); - // locked ========================================================== - WebMarkupContainer locked = new WebMarkupContainer("locked"); - // don't show the locked checkbox when creating new user - // only way you can edit someone else is if you are an admin - // and of course, don't allow locking self - if(user.getId() != 0 && user.getId() != getPrincipal().getId()) { - locked.add(new CheckBox("user.locked")); - } else { - locked.setVisible(false); - } - add(locked); - // name ============================================================ - add(new TextField("user.name").setRequired(true).add(new ErrorHighlighter())); - // email =========================================================== - add(new TextField("user.email").setRequired(true).add(new ErrorHighlighter())); - // locale ========================================================== - final Map<String, String> locales = getJtrac().getLocales(); - List<String> localeKeys = new ArrayList<String>(locales.keySet()); - DropDownChoice localeChoice = new DropDownChoice("user.locale", localeKeys, new IChoiceRenderer() { - public Object getDisplayValue(Object o) { - return locales.get(o); - } - public String getIdValue(Object o, int i) { - return o.toString(); - } - }); - add(localeChoice); - // hide e-mail message if edit ===================================== - WebMarkupContainer hide = new WebMarkupContainer("hide"); - if(user.getId() > 0) { - hide.setVisible(false); - } - add(hide); - // password ======================================================== - final PasswordTextField passwordField = new PasswordTextField("password"); - add(passwordField); - passwordField.setRequired(false); - // confirm password ================================================ - final PasswordTextField confirmPasswordField = new PasswordTextField("passwordConfirm"); - confirmPasswordField.setRequired(false); - confirmPasswordField.add(new ErrorHighlighter()); - add(confirmPasswordField); - // validation, do the passwords match - add(new AbstractFormValidator() { - public FormComponent[] getDependentFormComponents() { - return new FormComponent[] {passwordField, confirmPasswordField}; - } - public void validate(Form form) { - String a = (String) passwordField.getConvertedInput(); - String b = (String) confirmPasswordField.getConvertedInput(); - if((a != null && !a.equals(b)) || (b!= null && !b.equals(a))) { - confirmPasswordField.error(localize("user_form.passwordConfirm.error")); - } - } - }); - // send notifications ============================================== - WebMarkupContainer hideSendNotifications = new WebMarkupContainer("hideSendNotifications"); - add(hideSendNotifications); - if(getPrincipal().getId() != user.getId()) { - hideSendNotifications.add(new CheckBox("sendNotifications")); - } else { - hideSendNotifications.setVisible(false); - } - // cancel link - add(new Link("cancel") { - public void onClick() { - if(previous == null) { - setResponsePage(new OptionsPage()); - } else { - if (previous instanceof UserListPage) { - ((UserListPage) previous).setSelectedUserId(user.getId()); - } - setResponsePage(previous); - } - } - }); - } - - // load form backing object in same transaction as onSubmit - // and avoid lazy initialization exception - @Override - public boolean process() { - if(user.getId() > 0) { - user = getJtrac().loadUser(user.getId()); - } - return super.process(); - } - - @Override - protected void validate() { - filter.reset(); - super.validate(); - } - - @Override - protected void onSubmit() { - if(password != null) { - getJtrac().storeUser(user, password, sendNotifications); - } else if(user.getId() == 0) { - // new user, generate password and send mail - getJtrac().storeUser(user, null, true); - } else { - getJtrac().storeUser(user); - } - JtracSession.get().refreshPrincipalIfSameAs(user); - if(previous == null) { - UserListPage page = new UserListPage(); - page.setSelectedUserId(user.getId()); - setResponsePage(page); - } else { - if (previous instanceof UserListPage) { - ((UserListPage) previous).setSelectedUserId(user.getId()); - } - if (previous instanceof SpaceAllocatePage) { - SpaceAllocatePage sap = (SpaceAllocatePage) previous; - // TODO refactor this better, but for now this is so that the newly created user - // appears in the drop down for allocation and is preselected - previous = new SpaceAllocatePage(sap.getSpaceId(), sap.getPrevious(), user.getId()); - } - setResponsePage(previous); - } - } - } - -} +/* + * Copyright 2002-2005 the original author or authors. + * + * Licensed 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. + */ + +package info.jtrac.wicket; + +import info.jtrac.domain.User; +import info.jtrac.util.ValidationUtils; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.apache.wicket.behavior.HeaderContributor; +import org.apache.wicket.markup.html.IHeaderContributor; +import org.apache.wicket.markup.html.IHeaderResponse; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.WebPage; +import org.apache.wicket.markup.html.form.Button; +import org.apache.wicket.markup.html.form.CheckBox; +import org.apache.wicket.markup.html.form.DropDownChoice; +import org.apache.wicket.markup.html.form.Form; +import org.apache.wicket.markup.html.form.FormComponent; +import org.apache.wicket.markup.html.form.IChoiceRenderer; +import org.apache.wicket.markup.html.form.PasswordTextField; +import org.apache.wicket.markup.html.form.TextField; +import org.apache.wicket.markup.html.form.validation.AbstractFormValidator; +import org.apache.wicket.markup.html.link.Link; +import org.apache.wicket.markup.html.panel.FeedbackPanel; +import org.apache.wicket.model.BoundCompoundPropertyModel; +import org.apache.wicket.validation.IValidatable; +import org.apache.wicket.validation.validator.AbstractValidator; + +import org.springframework.util.StringUtils; + +/** + * user edit form + */ +public class UserFormPage extends BasePage { + + private WebPage previous; + + public void setPrevious(WebPage previous) { + this.previous = previous; + } + + public UserFormPage() { + User user = new User(); + user.setLocale(getJtrac().getDefaultLocale()); + add(new UserForm("form", user)); + } + + public UserFormPage(User user) { + add(new UserForm("form", user)); + } + + /** + * wicket form + */ + private class UserForm extends Form { + + private User user; + private String password; + private String passwordConfirm; + private boolean sendNotifications; + + private JtracFeedbackMessageFilter filter; + + public User getUser() { + return user; + } + + public void setUser(User user) { + this.user = user; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getPasswordConfirm() { + return passwordConfirm; + } + + public void setPasswordConfirm(String passwordConfirm) { + this.passwordConfirm = passwordConfirm; + } + + public boolean isSendNotifications() { + return sendNotifications; + } + + public void setSendNotifications(boolean sendNotifications) { + this.sendNotifications = sendNotifications; + } + + public UserForm(String id, final User user) { + + super(id); + this.user = user; + if(user.getId() == 0) { + sendNotifications = true; + } + FeedbackPanel feedback = new FeedbackPanel("feedback"); + filter = new JtracFeedbackMessageFilter(); + feedback.setFilter(filter); + add(feedback); + + final BoundCompoundPropertyModel model = new BoundCompoundPropertyModel(this); + setModel(model); + + // delete button only if edit ====================================== + Button delete = new Button("delete") { + @Override + public void onSubmit() { + int count = getJtrac().loadCountOfHistoryInvolvingUser(user); + if(count > 0) { + UserForm.this.error(localize("user_delete.notPossible")); + return; + } + String heading = localize("user_delete.confirm"); + String line1 = localize("user_delete.line1"); + String warning = localize("user_delete.line2"); + ConfirmPage confirm = new ConfirmPage(UserFormPage.this, heading, warning, new String[] {line1}) { + public void onConfirm() { + getJtrac().removeUser(user); + // logged in user may have been allocated to space with this user assigned + JtracSession.get().refreshPrincipal(); + setResponsePage(new UserListPage()); + } + }; + setResponsePage(confirm); + } + }; + delete.setDefaultFormProcessing(false); + // only way you can delete someone else is if you are an admin + // and of course, don't allow deleting self or the slightly special default admin user + if(!getPrincipal().isSuperUser() || user.getId() == getPrincipal().getId() || user.getId() <= 1) { + delete.setVisible(false); + } + add(delete); + + // login name ====================================================== + final TextField loginName = new TextField("user.loginName"); + loginName.setRequired(true); + loginName.add(new ErrorHighlighter()); + loginName.setOutputMarkupId(true); + add(new HeaderContributor(new IHeaderContributor() { + public void renderHead(IHeaderResponse response) { + response.renderOnLoadJavascript("document.getElementById('" + loginName.getMarkupId() + "').focus()"); + } + })); + // validation: does user already exist with same loginName? + loginName.add(new AbstractValidator() { + protected void onValidate(IValidatable v) { + String s = (String) v.getValue(); + User temp = getJtrac().loadUser(s); + if(temp != null && temp.getId() != user.getId()) { + error(v); + } + } + @Override + protected String resourceKey() { + return "user_form.loginId.error.exists"; + } + }); + // validation no strange characters + loginName.add(new AbstractValidator() { + protected void onValidate(IValidatable v) { + String s = (String) v.getValue(); + if(!ValidationUtils.isValidLoginName(s)) { + error(v); + } + } + @Override + protected String resourceKey() { + return "user_form.loginId.error.invalid"; + } + }); + add(loginName); + // locked ========================================================== + WebMarkupContainer locked = new WebMarkupContainer("locked"); + // don't show the locked checkbox when creating new user + // only way you can edit someone else is if you are an admin + // and of course, don't allow locking self + if(user.getId() != 0 && user.getId() != getPrincipal().getId()) { + locked.add(new CheckBox("user.locked")); + } else { + locked.setVisible(false); + } + add(locked); + // name ============================================================ + add(new TextField("user.name").setRequired(true).add(new ErrorHighlighter())); + // email =========================================================== + add(new TextField("user.email").setRequired(true).add(new ErrorHighlighter())); + // locale ========================================================== + final Map<String, String> locales = getJtrac().getLocales(); + List<String> localeKeys = new ArrayList<String>(locales.keySet()); + DropDownChoice localeChoice = new DropDownChoice("user.locale", localeKeys, new IChoiceRenderer() { + public Object getDisplayValue(Object o) { + return locales.get(o); + } + public String getIdValue(Object o, int i) { + return o.toString(); + } + }); + add(localeChoice); + // hide e-mail message if edit ===================================== + WebMarkupContainer hide = new WebMarkupContainer("hide"); + if(user.getId() > 0) { + hide.setVisible(false); + } + add(hide); + // password ======================================================== + final PasswordTextField passwordField = new PasswordTextField("password"); + add(passwordField); + passwordField.setRequired(false); + // confirm password ================================================ + final PasswordTextField confirmPasswordField = new PasswordTextField("passwordConfirm"); + confirmPasswordField.setRequired(false); + confirmPasswordField.add(new ErrorHighlighter()); + add(confirmPasswordField); + // validation, do the passwords match + add(new AbstractFormValidator() { + public FormComponent[] getDependentFormComponents() { + return new FormComponent[] {passwordField, confirmPasswordField}; + } + public void validate(Form form) { + String a = (String) passwordField.getConvertedInput(); + String b = (String) confirmPasswordField.getConvertedInput(); + if ((a != null && !a.equals(b)) || (b!= null && !b.equals(a))) { + confirmPasswordField.error(localize("user_form.passwordConfirm.error")); + } else if (a != null && b != null) { + int pwdMinLength = 8; + String pwdMinLenStr = getJtrac().loadConfig("pwd.minLength"); + if (StringUtils.hasText(pwdMinLenStr)) + try { + pwdMinLength = Integer.parseInt(pwdMinLenStr); + } catch (NumberFormatException nfex) { /* ignore */ } + if (a.length() < pwdMinLength) + confirmPasswordField.error(localize("user_form.passwordTooShort.error", Integer.valueOf(pwdMinLength))); + } + } + }); + // send notifications ============================================== + WebMarkupContainer hideSendNotifications = new WebMarkupContainer("hideSendNotifications"); + add(hideSendNotifications); + if(getPrincipal().getId() != user.getId()) { + hideSendNotifications.add(new CheckBox("sendNotifications")); + } else { + hideSendNotifications.setVisible(false); + } + // cancel link + add(new Link("cancel") { + public void onClick() { + if(previous == null) { + setResponsePage(new OptionsPage()); + } else { + if (previous instanceof UserListPage) { + ((UserListPage) previous).setSelectedUserId(user.getId()); + } + setResponsePage(previous); + } + } + }); + } + + // load form backing object in same transaction as onSubmit + // and avoid lazy initialization exception + @Override + public boolean process() { + if(user.getId() > 0) { + user = getJtrac().loadUser(user.getId()); + } + return super.process(); + } + + @Override + protected void validate() { + filter.reset(); + super.validate(); + } + + @Override + protected void onSubmit() { + if(password != null) { + getJtrac().storeUser(user, password, sendNotifications); + } else if(user.getId() == 0) { + // new user, generate password and send mail + getJtrac().storeUser(user, null, true); + } else { + getJtrac().storeUser(user); + } + JtracSession.get().refreshPrincipalIfSameAs(user); + if(previous == null) { + UserListPage page = new UserListPage(); + page.setSelectedUserId(user.getId()); + setResponsePage(page); + } else { + if (previous instanceof UserListPage) { + ((UserListPage) previous).setSelectedUserId(user.getId()); + } + if (previous instanceof SpaceAllocatePage) { + SpaceAllocatePage sap = (SpaceAllocatePage) previous; + // TODO refactor this better, but for now this is so that the newly created user + // appears in the drop down for allocation and is preselected + previous = new SpaceAllocatePage(sap.getSpaceId(), sap.getPrevious(), user.getId()); + } + setResponsePage(previous); + } + } + } + +} Modified: trunk/jtrac/src/main/resources/messages.properties =================================================================== --- trunk/jtrac/src/main/resources/messages.properties 2021-08-04 09:26:42 UTC (rev 1375) +++ trunk/jtrac/src/main/resources/messages.properties 2021-08-04 10:44:01 UTC (rev 1376) @@ -158,6 +158,7 @@ user_form.loginId.error.invalid = Login ID contains invalid characters user_form.loginId.error.exists = Login ID already exists user_form.passwordConfirm.error = Passwords do not match. +user_form.passwordTooShort.error = The password must be at least {0} characters long. user_form.mailPassword = send password by e-mail user_form.locked = Locked @@ -201,6 +202,7 @@ config.locale.default = Default language used for this JTrac installation e.g. "de" for German config.session.timeout = Time in minutes after which user session expires (default 30 minutes) config.attachment.maxsize = Maximum size in MB of file-attachments. (default 5 MB) Use -1 for no-limit +config.pwd.minLength = Minimal length of passwords (default is 8) # config_list (config_form does not have any extra messages) config_list.configurationSettings = Configuration Settings Modified: trunk/jtrac/src/main/resources/messages_de.properties =================================================================== --- trunk/jtrac/src/main/resources/messages_de.properties 2021-08-04 09:26:42 UTC (rev 1375) +++ trunk/jtrac/src/main/resources/messages_de.properties 2021-08-04 10:44:01 UTC (rev 1376) @@ -157,6 +157,7 @@ user_form.loginId.error.invalid = Nur Kleinbuchstaben und Zahlen sind erlaubt user_form.loginId.error.exists = Die Benutzer-ID ist bereits vergeben user_form.passwordConfirm.error = Das wiederholte Passwort ist nicht korrekt +user_form.passwordTooShort.error = Das Passwort muss mindestens {0} Zeichen lang sein. user_form.mailPassword = Passwort per eMail versenden user_form.locked = Gesperrt @@ -200,6 +201,7 @@ config.locale.default = Default Sprache zB. "de" f\u00FCr Deutsch config.session.timeout = Session Timeout in Minuten (Default 30 Minuten) config.attachment.maxsize = Maximalgr\u00F6\u00DFe f\u00FCr Anlagen in MB, "-1" f\u00FCr Kein-Limit (Default 5) +config.pwd.minLength = Minimale L\u00e4nge von Passw\u00f6rtern (Default 8) # config_list (config_form does not have any extra messages) config_list.configurationSettings = Einstellungen Modified: trunk/jtrac/src/main/resources/messages_en.properties =================================================================== --- trunk/jtrac/src/main/resources/messages_en.properties 2021-08-04 09:26:42 UTC (rev 1375) +++ trunk/jtrac/src/main/resources/messages_en.properties 2021-08-04 10:44:01 UTC (rev 1376) @@ -158,6 +158,7 @@ user_form.loginId.error.invalid = Login ID contains invalid characters user_form.loginId.error.exists = Login ID already exists user_form.passwordConfirm.error = Passwords do not match. +user_form.passwordTooShort.error = The password must be at least {0} characters long. user_form.mailPassword = send password by e-mail user_form.locked = Locked @@ -201,6 +202,7 @@ config.locale.default = Default language used for this JTrac installation e.g. "de" for German config.session.timeout = Time in minutes after which user session expires (default 30 minutes) config.attachment.maxsize = Maximum size in MB of file-attachments. (default 5 MB) Use -1 for no-limit +config.pwd.minLength = Minimal length of passwords (default is 8) # config_list (config_form does not have any extra messages) config_list.configurationSettings = Configuration Settings This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <udi...@us...> - 2021-08-04 09:26:45
|
Revision: 1375 http://sourceforge.net/p/j-trac/code/1375 Author: udittmer Date: 2021-08-04 09:26:42 +0000 (Wed, 04 Aug 2021) Log Message: ----------- implement DKIM, add Ukrainian translation Modified Paths: -------------- trunk/jtrac/pom.xml trunk/jtrac/src/main/java/info/jtrac/domain/Config.java trunk/jtrac/src/main/java/info/jtrac/mail/MailSender.java trunk/jtrac/src/main/resources/jtrac-init.properties trunk/jtrac/src/main/resources/messages.properties trunk/jtrac/src/main/resources/messages_de.properties trunk/jtrac/src/main/resources/messages_en.properties trunk/jtrac/src/main/resources/messages_hu.properties trunk/jtrac/src/main/webapp/WEB-INF/log4j.properties Added Paths: ----------- trunk/jtrac/src/main/resources/messages_uk.properties Modified: trunk/jtrac/pom.xml =================================================================== --- trunk/jtrac/pom.xml 2021-08-03 17:12:52 UTC (rev 1374) +++ trunk/jtrac/pom.xml 2021-08-04 09:26:42 UTC (rev 1375) @@ -186,6 +186,11 @@ <artifactId>jakarta.mail</artifactId> <version>1.6.7</version> </dependency> + <dependency> + <groupId>net.markenwerk</groupId> + <artifactId>utils-mail-dkim</artifactId> + <version>1.4.0</version> + </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> Modified: trunk/jtrac/src/main/java/info/jtrac/domain/Config.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/domain/Config.java 2021-08-03 17:12:52 UTC (rev 1374) +++ trunk/jtrac/src/main/java/info/jtrac/domain/Config.java 2021-08-04 09:26:42 UTC (rev 1375) @@ -45,6 +45,10 @@ PARAMS.add("mail.from"); PARAMS.add("mail.smtp.localhost"); PARAMS.add("mail.session.jndiname"); + PARAMS.add("mail.dkim.signingDomain"); + PARAMS.add("mail.dkim.selector"); + PARAMS.add("mail.dkim.derFile"); + PARAMS.add("mail.dkim.identity"); PARAMS.add("jtrac.url.base"); PARAMS.add("jtrac.header.picture"); PARAMS.add("jtrac.header.text"); Modified: trunk/jtrac/src/main/java/info/jtrac/mail/MailSender.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/mail/MailSender.java 2021-08-03 17:12:52 UTC (rev 1374) +++ trunk/jtrac/src/main/java/info/jtrac/mail/MailSender.java 2021-08-04 09:26:42 UTC (rev 1375) @@ -21,6 +21,7 @@ import info.jtrac.domain.User; import info.jtrac.util.ItemUtils; +import java.io.File; import java.util.ArrayList; import java.util.Collections; import java.util.Date; @@ -34,8 +35,9 @@ import javax.mail.Session; import javax.mail.internet.MimeMessage; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import net.markenwerk.utils.mail.dkim.DkimMessage; +import net.markenwerk.utils.mail.dkim.DkimSigner; + import org.springframework.context.MessageSource; import org.springframework.jndi.JndiObjectFactoryBean; import org.springframework.mail.javamail.JavaMailSenderImpl; @@ -42,6 +44,9 @@ import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.util.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * Class to handle sending of E-mail and pre-formatted messages */ @@ -56,6 +61,12 @@ private MessageSource messageSource; private Locale defaultLocale; + // for DKIM + private String signingDomain; + private String selector; + private String derFile; + private String identity; + public MailSender(Map<String, String> config, MessageSource messageSource, String defaultLocale) { // initialize email sender this.messageSource = messageSource; @@ -96,7 +107,27 @@ logger.debug("send mail thread start"); try { try { - sender.send(message); + MimeMessage signedMessage = message; + + // no point in trying DKIM if the relevant properties have not been set + if (StringUtils.hasText(signingDomain) && StringUtils.hasText(derFile)) { + try { + DkimSigner dkimSigner = new DkimSigner(signingDomain, selector, new File(derFile)); + dkimSigner.setIdentity(identity); + /* + dkimSigner.setHeaderCanonicalization(Canonicalization.SIMPLE); + dkimSigner.setBodyCanonicalization(Canonicalization.RELAXED); + dkimSigner.setSigningAlgorithm(SigningAlgorithm.SHA256_WITH_RSA); + dkimSigner.setLengthParam(true); + dkimSigner.setCopyHeaderFields(false); + */ + signedMessage = new DkimMessage(signedMessage, dkimSigner); + } catch (Exception ex) { + logger.warn("Can't use DKIM: "+ex.getMessage()); + } + } + + sender.send(signedMessage); logger.debug("send mail thread successfull"); } catch (Exception e) { logger.error("send mail thread failed", e); @@ -332,6 +363,15 @@ sender.setJavaMailProperties(props); } + signingDomain = config.get("mail.dkim.signingDomain"); + selector = config.get("mail.dkim.selector"); + if (! StringUtils.hasText(selector)) + selector = "default"; + derFile = config.get("mail.dkim.derFile"); + identity = config.get("mail.dkim.identity"); + if (! StringUtils.hasText(identity)) + identity = from; + logger.info("email sender initialized from config: host = '" + host + "', port = '" + p + "'"); } Modified: trunk/jtrac/src/main/resources/jtrac-init.properties =================================================================== --- trunk/jtrac/src/main/resources/jtrac-init.properties 2021-08-03 17:12:52 UTC (rev 1374) +++ trunk/jtrac/src/main/resources/jtrac-init.properties 2021-08-04 09:26:42 UTC (rev 1375) @@ -1,5 +1,12 @@ -# uncomment / edit this file to customize the location -# of the JTrac "home" directory e.g. jtrac.home=C:/jtrac -# please refer the documentation at http://jtrac.info/doc/html/installation.html - -# jtrac.home=C:/jtrac +# uncomment / edit this file to customize the location +# of the JTrac "home" directory e.g. jtrac.home=C:/jtrac +# please refer the documentation at http://j-trac.sourceforge.net/ + +jtrac.home=/Users/ulf/Development/Java/jtrac-2.1.0/live-data +jtrac.url.base=https://trac.ulf:8443/ + +#jtrac.home=/home/udittmer/tomcat/webapps/jtrac-data +#jtrac.url.base=https://trac.care-with-care.com/ + +locale.default=en + Modified: trunk/jtrac/src/main/resources/messages.properties =================================================================== --- trunk/jtrac/src/main/resources/messages.properties 2021-08-03 17:12:52 UTC (rev 1374) +++ trunk/jtrac/src/main/resources/messages.properties 2021-08-04 09:26:42 UTC (rev 1375) @@ -1,452 +1,460 @@ -# please refer documentation before starting work on a translation: -# http://jtrac.info/doc/html/dev-guide.html#dev-translating - -# globals -submit = Submit -cancel = Cancel -delete = Delete -back = Back -next = Next -edit = Edit -view = View -search = Search -new = New -save = Save - -# override default messages for spring mvc form binding errors -typeMismatch.java.lang.Double = Please enter a valid number -typeMismatch.java.util.Date = Please enter a valid date in the format\: yyyy-mm-dd - -# wicket globals -null = -nullValid = -Required = Please enter mandatory fields -IConverter.Double = ${label}\: Please enter a valid number -IConverter.Date = ${label}\: Please enter a valid date in the format yyyy-mm-dd - -# generic form validation message -error.empty = Value Required - -# header navigation -header.dashboard = DASHBOARD -header.new = NEW -header.search = SEARCH -header.options = OPTIONS -header.login = LOGIN -header.logout = LOGOUT - -# dashboard -dashboard.noSpaces = You are not mapped to any Spaces -dashboard.space = Space -dashboard.action = Action -dashboard.status = Status -dashboard.loggedByMe = Logged<br/>By Me -dashboard.assignedToMe = Assigned<br/>To Me -dashboard.all = All -dashboard.new = NEW -dashboard.search = SEARCH -dashboard.showDetails = Show Details -dashboard.hideDetails = Hide Details - -# item_form -item_form.summary = Summary -item_form.detail = Detail -item_form.assignTo = Assign To -item_form.editReason = Edit Reason -item_form.sendNotifications = send email notifications -item_form.notifyByEmail = Notify By Email -item_form.attachment = Attachment -item_form.error.version = Item modified by another user or you used the browser back-button. - -# item_view (note this is rendered within a taglib and not in a JSP) -item_view.id = ID -item_view.relatedItems = Related Items -item_view.remove = Remove -item_view.relatedTo = is related to -item_view.duplicateOf = is duplicate of -item_view.dependsOn = depends on -item_view.relatedToThis = is related to this -item_view.duplicateOfThis = is duplicate of this -item_view.dependsOnThis = depends on this -item_view.this = this -item_view.status = Status -item_view.loggedBy = Logged By -item_view.assignedTo = Assigned To -item_view.summary = Summary -item_view.detail = Detail -item_view.history = History -item_view.comment = Comment -item_view.timeStamp = Time Stamp - -# item_view_form -item_view_form.relateTo = Relate this item to -item_view_form.duplicateOf = is duplicate of this -item_view_form.dependsOn = depends on this -item_view_form.relatedTo = is related to this -item_view_form.newStatus = New Status -item_view_form.assignTo = Assign To -item_view_form.comment = Comment -item_view_form.sendNotifications = send email notifications -item_view_form.addRelatedItem = add related item -item_view_form.change = change -item_view_form.notifyByEmail = Notify By Email -item_view_form.attachment = Attachment -item_view_form.assignedTo.error = Assign To: Required if Status other than {0} -item_view_form.status.error = Required if Assigning -item_view_form.chooseStatus = -- choose status -- - -# item_search_form -item_search_form.searchingForRelated = Searching for items related to -item_search_form.viewItemById = View Item by ID -item_search_form.textSearch = Text Search -item_search_form.resultsPerPage = Results / Page -item_search_form.noLimit = No Limit -item_search_form.sortOnColumn = Sort On Column -item_search_form.id = ID -item_search_form.descending = Descending -item_search_form.showDetail = Show Detail -item_search_form.showHistory = Show History -item_search_form.loggedBy = Logged By -item_search_form.assignedTo = Assigned To -item_search_form.createdDate = Created Date -item_search_form.onOrAfter = On / After -item_search_form.onOrBefore = On / Before -item_search_form.status = Status -item_search_form.severity = Severity -item_search_form.priority = Priority -item_search_form.historyUpdatedDate = History Updated Date -item_search_form.space = Space -item_search_form.error.refId.invalid = Invalid ID -item_search_form.error.refId.notFound = Item not found -item_search_form.error.summary.invalid = Invalid Search String - -# item_list (most rendered within a taglib not JSP, some reused also for excel export) -item_list.searchingForRelated = Searching for items related to -item_list.modifySearch = Modify Search -item_list.recordFound = Record Found -item_list.recordsFound = Records Found -item_list.exportToExcel = Excel -item_list.exportToXml = XML -item_list.id = ID -item_list.summary = Summary -item_list.detail = Detail -item_list.loggedBy = Logged By -item_list.status = Status -item_list.assignedTo = Assigned To -item_list.timeStamp = Time Stamp -item_list.history = History -item_list.space = Space - -# options -options.optionsMenu = Options Menu -options.editYourProfile = Edit User Profile -options.manageUsers = Manage Users -options.manageSpaces = Manage Spaces -options.manageSettings = Manage Settings -options.rebuildIndexes = Rebuild Indexes -options.importFromExcel = Import From Excel - -# user_form -user_form.userDetails = User Details -user_form.loginId = Login ID -user_form.fullName = Full Name -user_form.emailId = E-Mail ID -user_form.language = Language -user_form.passwordMessage = A password will be generated and e-mailed by default.<br/>The fields below are optional. -user_form.password = Password -user_form.confirmPassword = Confirm Password -user_form.loginId.error.invalid = Login ID contains invalid characters -user_form.loginId.error.exists = Login ID already exists -user_form.passwordConfirm.error = Passwords do not match. -user_form.mailPassword = send password by e-mail -user_form.locked = Locked - -# logout -logout.title = Logout Successful -logout.home = Home -logout.message = Logout Successful. Any active "remember me" sessions have been disabled. -logout.login = Login - -# login -login.title = JTrac Login -login.home = Home -login.loginName = Login Name / email ID -login.password = Password -login.rememberMe = remember me -login.submit = Submit -login.error = Bad Credentials - -# config explanations (used in both config_list and config_form screens) -config.mail.server.host = Hostname or IP address of the SMTP server to be used for sending e-mail -config.mail.server.port = Port used by the SMTP server (default 25) -config.mail.server.username = Username for the SMTP server if it requires authentication -config.mail.server.password = Password for the SMTP server if it requires authentication -config.mail.server.starttls.enable = Use "true" for secure (SSL) connection if required by the SMTP server -config.mail.subject.prefix = Text that will be prefixed to the e-mail subject-line (default [jtrac]) -config.mail.session.jndiname = javax.mail.Session JNDI name - if present, this will be used instead of the SMTP server details above -config.mail.from = When generating e-mail, this will be used as the 'from' address -config.mail.smtp.localhost = Override for the HELO setting of very strict SMPT relays -config.jtrac.url.base = Base URL of your JTrac installation ( e.g. http://myserver/jtrac ) required for links in the e-mails to work -config.jtrac.header.picture = Individual header picture -config.jtrac.header.text = Individual header text -config.jtrac.edit.item = Should the owner of the task edit their items? -config.locale.default = Default language used for this JTrac installation e.g. "de" for German -config.session.timeout = Time in minutes after which user session expires (default 30 minutes) -config.attachment.maxsize = Maximum size in MB of file-attachments. (default 5 MB) Use -1 for no-limit - -# config_list (config_form does not have any extra messages) -config_list.configurationSettings = Configuration Settings -config_list.parameter = Parameter Key -config_list.value = Value -config_list.edit = Edit -config_list.description = Description - -# excel_upload -excel_upload.uploadExcelFile = Upload Excel File -excel_upload.error.invalidFile = Error processing file, may not be valid Excel file. - -# excel_view -excel_view.previewImportedData= Preview Imported Data -excel_view.selectActionToPerform = -- select action to perform -- -excel_view.deleteSelected = Delete Selected Columns / Rows -excel_view.convertToDate = Convert Format of Selected Columns to Date -excel_view.concatenateFields = Concatenate Content of Selected Columns -excel_view.extractFirstEighty = Extract First 80 Characters into new Column -excel_view.duplicateColumn = Duplicate Selected Column -excel_view.mapToField = Map Selected Column to Space Field -excel_view.editRow = Edit Selected Row Data -excel_view.import = Import into Selected Space - -excel_view.error.noActionSelected = Please select an action to perform -excel_view.error.noSpaceSelected = Please choose a space first -excel_view.error.noColumnSelected = Please select a column -excel_view.error.noRowSelected = Please select a row -excel_view.error.noColumnOrRowSelected = Please select columns / rows -excel_view.error.atLeastTwoColumns = Please select at least two columns -excel_view.error.duplicateMapping = Field mapped more than once: '{0}' -excel_view.error.notMapped = Field has to be mapped: '{0}' -excel_view.error.invalidValue = Some cells have invalid data - -excel_view.selectSpace = Choose Space -excel_view.selectedSpace = Selected Space -excel_view.noSpaceSelected = (no space selected) -excel_view.preview = Preview -excel_view.distinctValues = Distinct Values -excel_view.mapTo = Map To -excel_view.columnData = Column Data -excel_view.selectedColumn = Selected Column: -excel_view.update = Update -excel_view.importSuccess = Items Imported Successfully - -# exception_flow -exception_flow.unsupportedNavigation = Unsupported Navigation -exception_flow.line1 = Browser back button / page refresh - is not supported in this version. -exception_flow.line2 = This error is not recoverable and you have to re-start your previous navigation. -exception_flow.line3 = To avoid this error, please use the links or buttons within the application to navigate. - -# index_rebuild_success -index_rebuild.heading = Rebuild Indexes -index_rebuild.warning = This may take a long time and it is recommended that no other users be logged in. - -# index_rebuild_success -index_rebuild_success.message = Indexes Rebuilt Successfully - -# space_allocate -space_allocate.usersAllocatedToSpace = Users Allocated To Space -space_allocate.loginName = Login Name -space_allocate.fullName = Full Name -space_allocate.role = Role -space_allocate.remove = Remove -space_allocate.allocateUser = Choose User and Role to allocate -space_allocate.createNewUser = Create New User -space_allocate.user = User -space_allocate.allocate = Allocate - -# space_delete -space_delete.confirm = Confirm Space Delete -space_delete.line1 = Are you sure that you want to delete this Space? -space_delete.line2 = This will delete all items within this Space. -space_delete.line3 = You cannot undo database updates for this operation. - -# space_field_delete -space_field_delete.confirm = Confirm Field Delete -space_field_delete.line1 = Are you sure that you want to delete this Field? -space_field_delete.line2 = No of affected database records = {0} -space_field_delete.line3 = You cannot undo database updates for this operation. - -# space_field_form -space_field_form.editField = Edit Field -space_field_form.internalName = Internal Name -space_field_form.label = Label -space_field_form.optional = Optional -space_field_form.options = Options -space_field_form.addOption = Add Option -space_field_form.update = Update -space_field_form.done = Done -space_field_form.error.optionExists = Option already exists - -# space_field_option_delete -space_field_option_delete.confirm = Confirm Option Delete -space_field_option_delete.line1 = Are you sure that you want to delete this Option? -space_field_option_delete.line2 = No of affected database records = {0} -space_field_option_delete.line3 = You cannot undo database updates for this operation. - -# space_field_option_edit -space_field_option_edit.editOption = Edit Option for Field -space_field_option_edit.error.optionEmpty = Option cannot be empty -space_field_option_edit.error.exists = Option already exists - -# space_fields -space_fields.customFields = Custom Fields for Space -space_fields.move = Move -space_fields.internalName = Internal Name -space_fields.type = Type -space_fields.optional = Optional -space_fields.label = Label -space_fields.optionList = Option List -space_fields.chooseType = Choose Type of Custom Field to add -space_fields.addField = Add Field -space_fields.type_1 = Severity (Drop Down) -space_fields.type_2 = Priority (Drop Down) -space_fields.type_3 = Drop Down List -space_fields.type_4 = Decimal Number -space_fields.type_5 = Free Text Field -space_fields.type_6 = Date Field -space_fields.typeRemaining = {0} left - -# space_form -space_form.spaceDetails = Space Details -space_form.displayName = Display Name -space_form.spaceKey = Space Key (Short Name) -space_form.description = Description -space_form.makePublic = Make Public -space_form.allowGuest = Allow Guest (read only) Access -space_form.copyExisting = Copy Existing Space -space_form.createFresh = create from scratch -space_form.error.prefixCode.tooShort = Length should be at least 3 characters. -space_form.error.prefixCode.tooLong = Length should not be greater than 10 characters. -space_form.error.prefixCode.invalid = Only capital letters and numeric characters allowed -space_form.error.prefixCode.exists = A Space with this Key already exists - -# space_list -space_list.spaceList = Space List -space_list.createNewSpace = Create New Space -space_list.key = Key -space_list.name = Name -space_list.edit = Edit -space_list.description = Description -space_list.users = Users - -# space_role_delete -space_role_delete.confirm = Confirm Role Delete -space_role_delete.line1 = There are users allocated to this space ({0}) with this Role. -space_role_delete.line2 = Are you sure that you want to delete this Role? -space_role_delete.line3 = You cannot undo database updates for this operation. - -# space_role_form -space_role_form.editRoleName = Edit Role Name -space_role_form.error.role.invalid = Role name has to be all capital letters or digits ('_' allowed within) -space_role_form.error.role.exists = A Role with that name already exists -space_role_form.error.role.reserved = This Role name is reserved for internal use - -# space_role_form_confirm -space_role_form_confirm.confirm = Confirm Role Rename: {0} to {1} -space_role_form_confirm.line1 = Are you sure that you want to rename this Role? -space_role_form_confirm.line2 = You cannot undo database updates for this operation. - -# space_roles -space_roles.spaceRoles = Space Roles and State-Transitions (Workflow) for Space -space_roles.addState = Add State -space_roles.addRole = Add Role -space_roles.nextAllowedState = Next Allowed State -space_roles.fieldLevelPermissions = Field Level Permissions -space_roles.state = State -space_roles.role = Role -space_roles.mandatory = Mandatory -space_roles.optional = Optional -space_roles.readonly = Read-Only - -# space_state_delete -space_state_delete.confirm = Confirm State Delete -space_state_delete.line1 = Are you sure that you want to delete this State? -space_state_delete.line2 = No of affected database records = {0} -space_state_delete.line3 = You cannot undo database updates for this operation. - -# space_state_form -space_state_form.editState = Edit State -space_state_form.error.state.invalid = State name has to be Camel-Case with dashes ('-') to separate words e.g. 'Fixed', 'On-Hold' or 'Work-In-Progress' -space_state_form.error.state.exists = A State with that name already exists - -# user_allocate_space -user_allocate_space.spacesAllocated = Spaces Allocated to User -user_allocate_space.space = Space -user_allocate_space.role = Role -user_allocate_space.remove = Remove -user_allocate_space.chooseSpace = Choose a Space to allocate to this User -user_allocate_space.makeUserAdmin = Make this user an Administrator (for all Spaces) -user_allocate_space.makeAdmin = Make Admin -user_allocate_space.allSpaces = (all spaces) - -# user_allocate_space_role -user_allocate_space_role.allocateRole = Allocate Role for User {0} within Space -user_allocate_space_role.allocate = Allocate - -# user_list -user_list.usersAndSpaces = Users and allocated Spaces -user_list.createNewUser = Create New User -user_list.userName = User Name -user_list.loginName = Login Name -user_list.editProfile = Edit Profile -user_list.locked = Locked -user_list.spaceRole = Space (Role) -user_list.allocateSpaceRole = Allocate<br/>Space / Role -user_list.locale = Language -user_list.email = E Mail -user_list.filterBy = Filter by - -# mail_sender (this is in the mail sending code, not a JSP) -mail_sender.loginMailSubject = JTrac login details -mail_sender.loginMailGreeting = Hi -mail_sender.loginMailLine1 = Your login details have been created / updated as follows: -mail_sender.loginName = Login Name -mail_sender.password = Password -mail_sender.loginMailLine2 = Use the link below to log in: - -# new item_relate_remove -item_relate_remove.heading = Confirm relationship delete - -# item_delete -item_delete.confirm = Confirm Item Delete -item_delete.line1 = Are you sure that you want to delete this Item? -item_delete.line2 = You cannot undo database updates for this operation. - -# user_delete -user_delete.confirm = Confirm User Delete -user_delete.line1 = Are you sure that you want to delete this User? -user_delete.line2 = You cannot undo database updates for this operation. -user_delete.notPossible = This user is referenced by items and cannot be deleted. Try locking this user or deleting the items involved first. - -# generic error messages -error.itemBelongsToUnallocatedSpace = You do not have permissions to view this item - -# item search filter wizard -item_filter.showColumn = Show in Results -item_filter.expression = Search Filter -item_filter.expandAll = (expand all) -item_filter.in = has values -item_filter.notIn = does not have values -item_filter.like = contains text -item_filter.equal = equal to -item_filter.notEqual = not equal to -item_filter.greaterThan = greater than -item_filter.lessThan = less than -item_filter.between = between - -# rest API messages -rest_multi_action_controller.anExceptionOcurred.error=An exception ocurred.\ -rest_multi_action_controller.itemNotFound.error=Item not found:\ -rest_multi_action_controller.newStatusNotPermitted.error=The new status is not permitted from the current status -rest_multi_action_controller.requiredParameterNotFound.error=The required parameter was not found in the request:\ -rest_multi_action_controller.spaceNotFound.error=Space not found:\ -rest_multi_action_controller.userNotAbleToTransition.error=The user is not authorized to do the transition from the current status to the new status:\ -rest_multi_action_controller.userNotRegistered.error=User not registered:\ +# please refer documentation before starting work on a translation: +# http://jtrac.info/doc/html/dev-guide.html#dev-translating + +# globals +submit = Submit +cancel = Cancel +delete = Delete +back = Back +next = Next +edit = Edit +view = View +search = Search +new = New +save = Save + +# override default messages for spring mvc form binding errors +typeMismatch.java.lang.Double = Please enter a valid number +typeMismatch.java.util.Date = Please enter a valid date in the format\: yyyy-mm-dd + +# wicket globals +null = +nullValid = +Required = Please enter mandatory fields +IConverter.Double = ${label}\: Please enter a valid number +IConverter.Date = ${label}\: Please enter a valid date in the format yyyy-mm-dd + +# generic form validation message +error.empty = Value Required + +# header navigation +header.dashboard = DASHBOARD +header.new = NEW +header.search = SEARCH +header.options = OPTIONS +header.login = LOGIN +header.logout = LOGOUT + +# dashboard +dashboard.noSpaces = You are not mapped to any Spaces +dashboard.space = Space +dashboard.action = Action +dashboard.status = Status +dashboard.loggedByMe = Logged<br/>By Me +dashboard.assignedToMe = Assigned<br/>To Me +dashboard.all = All +dashboard.new = NEW +dashboard.search = SEARCH +dashboard.showDetails = Show Details +dashboard.hideDetails = Hide Details + +# item_form +item_form.summary = Summary +item_form.detail = Detail +item_form.assignTo = Assign To +item_form.editReason = Edit Reason +item_form.sendNotifications = send email notifications +item_form.notifyByEmail = Notify By Email +item_form.attachment = Attachment +item_form.error.version = Item modified by another user or you used the browser back-button. + +# item_view (note this is rendered within a taglib and not in a JSP) +item_view.id = ID +item_view.relatedItems = Related Items +item_view.remove = Remove +item_view.relatedTo = is related to +item_view.duplicateOf = is duplicate of +item_view.dependsOn = depends on +item_view.relatedToThis = is related to this +item_view.duplicateOfThis = is duplicate of this +item_view.dependsOnThis = depends on this +item_view.this = this +item_view.status = Status +item_view.loggedBy = Logged By +item_view.assignedTo = Assigned To +item_view.summary = Summary +item_view.detail = Detail +item_view.history = History +item_view.comment = Comment +item_view.timeStamp = Time Stamp + +# item_view_form +item_view_form.relateTo = Relate this item to +item_view_form.duplicateOf = is duplicate of this +item_view_form.dependsOn = depends on this +item_view_form.relatedTo = is related to this +item_view_form.newStatus = New Status +item_view_form.assignTo = Assign To +item_view_form.comment = Comment +item_view_form.sendNotifications = send email notifications +item_view_form.addRelatedItem = add related item +item_view_form.change = change +item_view_form.notifyByEmail = Notify By Email +item_view_form.attachment = Attachment +item_view_form.assignedTo.error = Assign To: Required if Status other than {0} +item_view_form.status.error = Required if Assigning +item_view_form.chooseStatus = -- choose status -- + +# item_search_form +item_search_form.searchingForRelated = Searching for items related to +item_search_form.viewItemById = View Item by ID +item_search_form.textSearch = Text Search +item_search_form.resultsPerPage = Results / Page +item_search_form.noLimit = No Limit +item_search_form.sortOnColumn = Sort On Column +item_search_form.id = ID +item_search_form.descending = Descending +item_search_form.showDetail = Show Detail +item_search_form.showHistory = Show History +item_search_form.loggedBy = Logged By +item_search_form.assignedTo = Assigned To +item_search_form.createdDate = Created Date +item_search_form.onOrAfter = On / After +item_search_form.onOrBefore = On / Before +item_search_form.status = Status +item_search_form.severity = Severity +item_search_form.priority = Priority +item_search_form.historyUpdatedDate = History Updated Date +item_search_form.space = Space +item_search_form.error.refId.invalid = Invalid ID +item_search_form.error.refId.notFound = Item not found +item_search_form.error.summary.invalid = Invalid Search String + +# item_list (most rendered within a taglib not JSP, some reused also for excel export) +item_list.searchingForRelated = Searching for items related to +item_list.modifySearch = Modify Search +item_list.recordFound = Record Found +item_list.recordsFound = Records Found +item_list.exportToExcel = Excel +item_list.exportToXml = XML +item_list.id = ID +item_list.summary = Summary +item_list.detail = Detail +item_list.loggedBy = Logged By +item_list.status = Status +item_list.assignedTo = Assigned To +item_list.timeStamp = Time Stamp +item_list.history = History +item_list.space = Space + +# options +options.optionsMenu = Options Menu +options.editYourProfile = Edit User Profile +options.manageUsers = Manage Users +options.manageSpaces = Manage Spaces +options.manageSettings = Manage Settings +options.rebuildIndexes = Rebuild Indexes +options.importFromExcel = Import From Excel + +# user_form +user_form.userDetails = User Details +user_form.loginId = Login ID +user_form.fullName = Full Name +user_form.emailId = E-Mail ID +user_form.language = Language +user_form.passwordMessage = A password will be generated and e-mailed by default.<br/>The fields below are optional. +user_form.password = Password +user_form.confirmPassword = Confirm Password +user_form.loginId.error.invalid = Login ID contains invalid characters +user_form.loginId.error.exists = Login ID already exists +user_form.passwordConfirm.error = Passwords do not match. +user_form.mailPassword = send password by e-mail +user_form.locked = Locked + +# logout +logout.title = Logout Successful +logout.home = Home +logout.message = Logout Successful. Any active "remember me" sessions have been disabled. +logout.login = Login + +# login +login.title = JTrac Login +login.home = Home +login.loginName = Login Name / email ID +login.password = Password +login.rememberMe = remember me +login.submit = Submit +login.error = Bad Credentials + +# config explanations (used in both config_list and config_form screens) +config.mail.server.host = Hostname or IP address of the SMTP server to be used for sending e-mail +config.mail.server.port = Port used by the SMTP server (default 25) +config.mail.server.username = Username for the SMTP server if it requires authentication +config.mail.server.password = Password for the SMTP server if it requires authentication +config.mail.server.starttls.enable = Use "true" for secure (SSL) connection if required by the SMTP server +config.mail.server.ssl.enable = Use "true" for secure (SSL) connection if required by the SMTP server +config.mail.subject.prefix = Text that will be prefixed to the e-mail subject-line (default [jtrac]) +config.mail.session.jndiname = javax.mail.Session JNDI name - if present, this will be used instead of the SMTP server details above +config.mail.from = When generating e-mail, this will be used as the 'from' address +config.mail.smtp.localhost = Override for the HELO setting of very strict SMTP relays + +# DKIM properties for additional mail authenticity +config.mail.dkim.signingDomain = Signing domain +config.mail.dkim.selector = Selector (default is "default") +config.mail.dkim.derFile = Path to the DER encoded RSA private key +config.mail.dkim.identity = Identity (default is "mail.from") + +config.jtrac.url.base = Base URL of your JTrac installation ( e.g. http://myserver/jtrac ) required for links in the e-mails to work +config.jtrac.header.picture = Individual header picture +config.jtrac.header.text = Individual header text +config.jtrac.edit.item = Should the owner of the task edit their items? (set to true, default is false) +config.locale.default = Default language used for this JTrac installation e.g. "de" for German +config.session.timeout = Time in minutes after which user session expires (default 30 minutes) +config.attachment.maxsize = Maximum size in MB of file-attachments. (default 5 MB) Use -1 for no-limit + +# config_list (config_form does not have any extra messages) +config_list.configurationSettings = Configuration Settings +config_list.parameter = Parameter Key +config_list.value = Value +config_list.edit = Edit +config_list.description = Description + +# excel_upload +excel_upload.uploadExcelFile = Upload Excel File +excel_upload.error.invalidFile = Error processing file, may not be valid Excel file. + +# excel_view +excel_view.previewImportedData= Preview Imported Data +excel_view.selectActionToPerform = -- select action to perform -- +excel_view.deleteSelected = Delete Selected Columns / Rows +excel_view.convertToDate = Convert Format of Selected Columns to Date +excel_view.concatenateFields = Concatenate Content of Selected Columns +excel_view.extractFirstEighty = Extract First 80 Characters into new Column +excel_view.duplicateColumn = Duplicate Selected Column +excel_view.mapToField = Map Selected Column to Space Field +excel_view.editRow = Edit Selected Row Data +excel_view.import = Import into Selected Space + +excel_view.error.noActionSelected = Please select an action to perform +excel_view.error.noSpaceSelected = Please choose a space first +excel_view.error.noColumnSelected = Please select a column +excel_view.error.noRowSelected = Please select a row +excel_view.error.noColumnOrRowSelected = Please select columns / rows +excel_view.error.atLeastTwoColumns = Please select at least two columns +excel_view.error.duplicateMapping = Field mapped more than once: '{0}' +excel_view.error.notMapped = Field has to be mapped: '{0}' +excel_view.error.invalidValue = Some cells have invalid data + +excel_view.selectSpace = Choose Space +excel_view.selectedSpace = Selected Space +excel_view.noSpaceSelected = (no space selected) +excel_view.preview = Preview +excel_view.distinctValues = Distinct Values +excel_view.mapTo = Map To +excel_view.columnData = Column Data +excel_view.selectedColumn = Selected Column: +excel_view.update = Update +excel_view.importSuccess = Items Imported Successfully + +# exception_flow +exception_flow.unsupportedNavigation = Unsupported Navigation +exception_flow.line1 = Browser back button / page refresh - is not supported in this version. +exception_flow.line2 = This error is not recoverable and you have to re-start your previous navigation. +exception_flow.line3 = To avoid this error, please use the links or buttons within the application to navigate. + +# index_rebuild_success +index_rebuild.heading = Rebuild Indexes +index_rebuild.warning = This may take a long time and it is recommended that no other users be logged in. + +# index_rebuild_success +index_rebuild_success.message = Indexes Rebuilt Successfully + +# space_allocate +space_allocate.usersAllocatedToSpace = Users Allocated To Space +space_allocate.loginName = Login Name +space_allocate.fullName = Full Name +space_allocate.role = Role +space_allocate.remove = Remove +space_allocate.allocateUser = Choose User and Role to allocate +space_allocate.createNewUser = Create New User +space_allocate.user = User +space_allocate.allocate = Allocate + +# space_delete +space_delete.confirm = Confirm Space Delete +space_delete.line1 = Are you sure that you want to delete this Space? +space_delete.line2 = This will delete all items within this Space. +space_delete.line3 = You cannot undo database updates for this operation. + +# space_field_delete +space_field_delete.confirm = Confirm Field Delete +space_field_delete.line1 = Are you sure that you want to delete this Field? +space_field_delete.line2 = No of affected database records = {0} +space_field_delete.line3 = You cannot undo database updates for this operation. + +# space_field_form +space_field_form.editField = Edit Field +space_field_form.internalName = Internal Name +space_field_form.label = Label +space_field_form.optional = Optional +space_field_form.options = Options +space_field_form.addOption = Add Option +space_field_form.update = Update +space_field_form.done = Done +space_field_form.error.optionExists = Option already exists + +# space_field_option_delete +space_field_option_delete.confirm = Confirm Option Delete +space_field_option_delete.line1 = Are you sure that you want to delete this Option? +space_field_option_delete.line2 = No of affected database records = {0} +space_field_option_delete.line3 = You cannot undo database updates for this operation. + +# space_field_option_edit +space_field_option_edit.editOption = Edit Option for Field +space_field_option_edit.error.optionEmpty = Option cannot be empty +space_field_option_edit.error.exists = Option already exists + +# space_fields +space_fields.customFields = Custom Fields for Space +space_fields.move = Move +space_fields.internalName = Internal Name +space_fields.type = Type +space_fields.optional = Optional +space_fields.label = Label +space_fields.optionList = Option List +space_fields.chooseType = Choose Type of Custom Field to add +space_fields.addField = Add Field +space_fields.type_1 = Severity (Drop Down) +space_fields.type_2 = Priority (Drop Down) +space_fields.type_3 = Drop Down List +space_fields.type_4 = Decimal Number +space_fields.type_5 = Free Text Field +space_fields.type_6 = Date Field +space_fields.typeRemaining = {0} left + +# space_form +space_form.spaceDetails = Space Details +space_form.displayName = Display Name +space_form.spaceKey = Space Key (Short Name) +space_form.description = Description +space_form.makePublic = Make Public +space_form.allowGuest = Allow Guest (read only) Access +space_form.copyExisting = Copy Existing Space +space_form.createFresh = create from scratch +space_form.error.prefixCode.tooShort = Length should be at least 3 characters. +space_form.error.prefixCode.tooLong = Length should not be greater than 10 characters. +space_form.error.prefixCode.invalid = Only capital letters and numeric characters allowed +space_form.error.prefixCode.exists = A Space with this Key already exists + +# space_list +space_list.spaceList = Space List +space_list.createNewSpace = Create New Space +space_list.key = Key +space_list.name = Name +space_list.edit = Edit +space_list.description = Description +space_list.users = Users + +# space_role_delete +space_role_delete.confirm = Confirm Role Delete +space_role_delete.line1 = There are users allocated to this space ({0}) with this Role. +space_role_delete.line2 = Are you sure that you want to delete this Role? +space_role_delete.line3 = You cannot undo database updates for this operation. + +# space_role_form +space_role_form.editRoleName = Edit Role Name +space_role_form.error.role.invalid = Role name has to be all capital letters or digits ('_' allowed within) +space_role_form.error.role.exists = A Role with that name already exists +space_role_form.error.role.reserved = This Role name is reserved for internal use + +# space_role_form_confirm +space_role_form_confirm.confirm = Confirm Role Rename: {0} to {1} +space_role_form_confirm.line1 = Are you sure that you want to rename this Role? +space_role_form_confirm.line2 = You cannot undo database updates for this operation. + +# space_roles +space_roles.spaceRoles = Space Roles and State-Transitions (Workflow) for Space +space_roles.addState = Add State +space_roles.addRole = Add Role +space_roles.nextAllowedState = Next Allowed State +space_roles.fieldLevelPermissions = Field Level Permissions +space_roles.state = State +space_roles.role = Role +space_roles.mandatory = Mandatory +space_roles.optional = Optional +space_roles.readonly = Read-Only + +# space_state_delete +space_state_delete.confirm = Confirm State Delete +space_state_delete.line1 = Are you sure that you want to delete this State? +space_state_delete.line2 = No of affected database records = {0} +space_state_delete.line3 = You cannot undo database updates for this operation. + +# space_state_form +space_state_form.editState = Edit State +space_state_form.error.state.invalid = State name has to be Camel-Case with dashes ('-') to separate words e.g. 'Fixed', 'On-Hold' or 'Work-In-Progress' +space_state_form.error.state.exists = A State with that name already exists + +# user_allocate_space +user_allocate_space.spacesAllocated = Spaces Allocated to User +user_allocate_space.space = Space +user_allocate_space.role = Role +user_allocate_space.remove = Remove +user_allocate_space.chooseSpace = Choose a Space to allocate to this User +user_allocate_space.makeUserAdmin = Make this user an Administrator (for all Spaces) +user_allocate_space.makeAdmin = Make Admin +user_allocate_space.allSpaces = (all spaces) + +# user_allocate_space_role +user_allocate_space_role.allocateRole = Allocate Role for User {0} within Space +user_allocate_space_role.allocate = Allocate + +# user_list +user_list.usersAndSpaces = Users and allocated Spaces +user_list.createNewUser = Create New User +user_list.userName = User Name +user_list.loginName = Login Name +user_list.editProfile = Edit Profile +user_list.locked = Locked +user_list.spaceRole = Space (Role) +user_list.allocateSpaceRole = Allocate<br/>Space / Role +user_list.locale = Language +user_list.email = E Mail +user_list.filterBy = Filter by + +# mail_sender (this is in the mail sending code, not a JSP) +mail_sender.loginMailSubject = JTrac login details +mail_sender.loginMailGreeting = Hi +mail_sender.loginMailLine1 = Your login details have been created / updated as follows: +mail_sender.loginName = Login Name +mail_sender.password = Password +mail_sender.loginMailLine2 = Use the link below to log in: + +# new item_relate_remove +item_relate_remove.heading = Confirm relationship delete + +# item_delete +item_delete.confirm = Confirm Item Delete +item_delete.line1 = Are you sure that you want to delete this Item? +item_delete.line2 = You cannot undo database updates for this operation. + +# user_delete +user_delete.confirm = Confirm User Delete +user_delete.line1 = Are you sure that you want to delete this User? +user_delete.line2 = You cannot undo database updates for this operation. +user_delete.notPossible = This user is referenced by items and cannot be deleted. Try locking this user or deleting the items involved first. + +# generic error messages +error.itemBelongsToUnallocatedSpace = You do not have permissions to view this item + +# item search filter wizard +item_filter.showColumn = Show in Results +item_filter.expression = Search Filter +item_filter.expandAll = (expand all) +item_filter.in = has values +item_filter.notIn = does not have values +item_filter.like = contains text +item_filter.equal = equal to +item_filter.notEqual = not equal to +item_filter.greaterThan = greater than +item_filter.lessThan = less than +item_filter.between = between + +# rest API messages +rest_multi_action_controller.anExceptionOcurred.error=An exception ocurred.\ +rest_multi_action_controller.itemNotFound.error=Item not found:\ +rest_multi_action_controller.newStatusNotPermitted.error=The new status is not permitted from the current status +rest_multi_action_controller.requiredParameterNotFound.error=The required parameter was not found in the request:\ +rest_multi_action_controller.spaceNotFound.error=Space not found:\ +rest_multi_action_controller.userNotAbleToTransition.error=The user is not authorized to do the transition from the current status to the new status:\ +rest_multi_action_controller.userNotRegistered.error=User not registered:\ Modified: trunk/jtrac/src/main/resources/messages_de.properties =================================================================== --- trunk/jtrac/src/main/resources/messages_de.properties 2021-08-03 17:12:52 UTC (rev 1374) +++ trunk/jtrac/src/main/resources/messages_de.properties 2021-08-04 09:26:42 UTC (rev 1375) @@ -185,7 +185,14 @@ config.mail.subject.prefix = Text der dem eMail Betreff vorangestellt wird (Default [jtrac]) config.mail.session.jndiname = javax.mail.Session JNDI Name - Wenn vorhanden wird diese Verbindung statt dem SMTP Server benutzt config.mail.from = Wir in eMails als Absenderadresse gesetzt -config.mail.smtp.localhost = \xDCberladen der HELO Settings f\xFCr sehr strikte SMPT Server +config.mail.smtp.localhost = \xDCberladen der HELO Settings f\xFCr sehr strikte SMTP Server + +# DKIM properties for additional mail authenticity +config.mail.dkim.signingDomain = Dom\u00e4ne f\u00fc die signiert wird +config.mail.dkim.selector = Selektor (default ist "default") +config.mail.dkim.derFile = Pfad zum DER-kodierten privaten RSA Schl\u00fcssel +config.mail.dkim.identity = Identit\u00e4t (default ist "mail.from") + config.jtrac.url.base = URL dieser Installation ( zB. http://myserver/jtrac ) wird ben\u00F6tigt f\u00FCr Links in den eMails config.jtrac.header.picture = Inidividuelles Bild config.jtrac.header.text = Individueller Text Modified: trunk/jtrac/src/main/resources/messages_en.properties =================================================================== --- trunk/jtrac/src/main/resources/messages_en.properties 2021-08-03 17:12:52 UTC (rev 1374) +++ trunk/jtrac/src/main/resources/messages_en.properties 2021-08-04 09:26:42 UTC (rev 1375) @@ -186,7 +186,14 @@ config.mail.subject.prefix = Text that will be prefixed to the e-mail subject-line (default [jtrac]) config.mail.session.jndiname = javax.mail.Session JNDI name - if present, this will be used instead of the SMTP server details above config.mail.from = When generating e-mail, this will be used as the 'from' address -config.mail.smtp.localhost = Override for the HELO setting of very strict SMPT relays +config.mail.smtp.localhost = Override for the HELO setting of very strict SMTP relays + +# DKIM properties for additional mail authenticity +config.mail.dkim.signingDomain = Signing domain +config.mail.dkim.selector = Selector (default is "default") +config.mail.dkim.derFile = Path to the DER encoded RSA private key +config.mail.dkim.identity = Identity (default is "mail.from") + config.jtrac.url.base = Base URL of your JTrac installation ( e.g. http://myserver/jtrac ) required for links in the e-mails to work config.jtrac.header.picture = Individual header picture config.jtrac.header.text = Individual header text Modified: trunk/jtrac/src/main/resources/messages_hu.properties =================================================================== --- trunk/jtrac/src/main/resources/messages_hu.properties 2021-08-03 17:12:52 UTC (rev 1374) +++ trunk/jtrac/src/main/resources/messages_hu.properties 2021-08-04 09:26:42 UTC (rev 1375) @@ -1,410 +1,410 @@ -# please refer documentation before starting work on a translation: -# http://jtrac.info/doc/html/dev-guide.html#dev-translating - -# globals -submit = Ment\xE9s -cancel = M\xE9gsem -delete = T\xF6rl\xE9s -back = Vissza -next = K\xF6vetkez\xF5 -edit = M\xF3dos\xEDt -view = Mutat -search = Keres -new = \xDAj -save = Ment\xE9s - -# override default messages for spring mvc form binding errors -typeMismatch.java.lang.Double = Adjon meg egy \xE9rv\xE9nyes sz\xE1mot -typeMismatch.java.util.Date = Adjon meg egy \xE9rv\xE9nyes d\xE1tumot ebben a form\xE1ban\: yyyy-mm-dd - -# wicket globals -null = -nullValid = -Required = T\xF6ltse ki a k\xF6telez\xF5en kit\xF6ltend\xF5 mez\xF5ket -IConverter.Double = ${label}\: Adjon meg egy \xE9rv\xE9nyes sz\xE1mot -IConverter.Date = ${label}\: Adjon meg egy \xE9rv\xE9nyes d\xE1tumot ebben a form\xE1ban yyyy-mm-dd - -# generic form validation message -error.empty = \xC9rt\xE9k Sz\xFCks\xE9ges - -# header navigation -header.dashboard = TER\xDCLETEK -header.new = \xDAJ -header.search = KERES -header.options = BE\xC1LL\xCDT\xC1SOK -header.login = BEL\xC9P\xC9S -header.logout = KIL\xC9P\xC9S - -# dashboard -dashboard.noSpaces = Egy ter\xFClethez sincs joga -dashboard.space = Ter\xFClet -dashboard.action = Akci\xF3 -dashboard.status = St\xE1tusz -dashboard.loggedByMe = \xC1ltalam<br/>R\xF6gz\xEDtve -dashboard.assignedToMe = Hozz\xE1m<br/>Rendelve -dashboard.all = \xD6sszes -dashboard.new = \xDAJ -dashboard.search = KERES -dashboard.showDetails = R\xE9szletek mutat\xE1sa -dashboard.hideDetails = R\xE9szletek elrejt\xE9se - -# item_form -item_form.summary = T\xE1rgy -item_form.detail = R\xE9szletek -item_form.assignTo = Hozz\xE1rendelve -item_form.editReason = Ok m\xF3dos\xEDt\xE1sa -item_form.sendNotifications = email \xE9rtes\xEDt\xE9sek k\xFCld\xE9se -item_form.notifyByEmail = \xC9rtes\xEDtsd Email -ben -item_form.attachment = Csatolm\xE1ny -item_form.error.version = A t\xE9tel m\xE1s felhaszn\xE1l\xF3 m\xF3dos\xEDtotta vagy a b\xF6ng\xE9sz\xF5 VISSZA gombj\xE1t haszn\xE1lta. - -# item_view (note this is rendered within a taglib and not in a JSP) -item_view.id = ID -item_view.relatedItems = Vonatkoz\xF3 t\xE9telek -item_view.remove = T\xF6r\xF6l -item_view.relatedTo = kapcsol\xF3dik ehhez -item_view.duplicateOf = m\xE1solata ennek -item_view.dependsOn = f\xFCgg ett\xF5l -item_view.relatedToThis = kapcsol\xF3dik ehhez -item_view.duplicateOfThis = m\xE1solata ennek -item_view.dependsOnThis = f\xFCgg ett\xF5l -item_view.this = ez -item_view.status = St\xE1tusz -item_view.loggedBy = R\xF6gz\xEDtve -item_view.assignedTo = Hozz\xE1rendelve -item_view.summary = T\xE1rgy -item_view.detail = R\xE9szletek -item_view.history = T\xF6rt\xE9net -item_view.comment = Megjegyz\xE9s -item_view.timeStamp = Id\xF5pont - -# item_view_form -item_view_form.relateTo = Kapcsol\xF3djon ez a t\xE9tel ehhez -item_view_form.duplicateOf = m\xE1solata ennek -item_view_form.dependsOn = f\xFCgg ett\xF5l -item_view_form.relatedTo = kapcsol\xF3dik ehhez -item_view_form.newStatus = \xDAj St\xE1tusz -item_view_form.assignTo = Rendeld Hozz\xE1 -item_view_form.comment = Megjegyz\xE9s -item_view_form.sendNotifications = email \xE9rtes\xEDt\xE9sek k\xFCld\xE9se -item_view_form.addRelatedItem = vonatkoz\xF3 t\xE9tel hozz\xE1ad\xE1sa -item_view_form.change = v\xE1ltoz\xE1s -item_view_form.notifyByEmail = \xC9rtes\xEDtsd Email \xFAtj\xE1n -item_view_form.attachment = Csatolm\xE1ny -item_view_form.assignedTo.error = Rendeld Hozz\xE1: Sz\xFCks\xE9ges ha a st\xE1tusz nem {0} -item_view_form.status.error = Sz\xFCks\xE9ges hozz\xE1rendel\xE9skor -item_view_form.chooseStatus = -- v\xE1lasszon st\xE1tuszt -- - -# item_search_form -item_search_form.searchingForRelated = Ehhez kapcsol\xF3d\xF3 t\xE9telek keres\xE9se -item_search_form.viewItemById = T\xE9telek megtekint\xE9se ID szerint -item_search_form.textSearch = Sz\xF6veg Keres\xE9s -item_search_form.resultsPerPage = Eredm\xE9ny / Oldal -item_search_form.noLimit = Nincs Hat\xE1r -item_search_form.sortOnColumn = Oszlop Rendez\xE9s -item_search_form.id = ID -item_search_form.descending = Cs\xF6kken\xF5 -item_search_form.showDetail = R\xE9szletek Mutat\xE1sa -item_search_form.showHistory = T\xF6rt\xE9net Mutat\xE1sa -item_search_form.loggedBy = Bejelentkezve -item_search_form.assignedTo = Hozz\xE1rendelve -item_search_form.createdDate = L\xE9trehoz\xE1s D\xE1tuma -item_search_form.onOrAfter = On / After -item_search_form.onOrBefore = On / Before -item_search_form.status = St\xE1tusz -item_search_form.severity = Severity -item_search_form.priority = Priorit\xE1s -item_search_form.historyUpdatedDate = History Updated Date -item_search_form.space = Ter\xFClet -item_search_form.error.refId.invalid = \xC9rv\xE9nytelen ID -item_search_form.error.refId.notFound = T\xE9tel nem tal\xE1lhat\xF3 -item_search_form.error.summary.invalid = \xC9rv\xE9nytelen Keres\xE9si Felt\xE9tel - -# item_list (most rendered within a taglib not JSP, some reused also for excel export) -item_list.searchingForRelated = T\xE9telek keres\xE9se amik erre vonatkoznak -item_list.modifySearch = Keres\xE9s M\xF3dos\xEDt\xE1sa -item_list.recordFound = T\xE9tel Tal\xE1lat -item_list.recordsFound = T\xE9telt Tal\xE1ltam -item_list.exportToExcel = Export\xE1l\xE1s Excel -be -item_list.id = ID -item_list.summary = T\xE1rgy -item_list.detail = R\xE9szletek -item_list.loggedBy = R\xF6gz\xEDtve -item_list.status = St\xE1tusz -item_list.assignedTo = Hozz\xE1rendelve -item_list.timeStamp = Id\xF5pont -item_list.history = T\xF6rt\xE9net -item_list.space = Ter\xFClet - -# options -options.optionsMenu = Be\xE1ll\xEDt\xE1sok Men\xFC -options.editYourProfile = Felhaszn\xE1l\xF3i Profil M\xF3dos\xEDt\xE1sa -options.manageUsers = Felhaszn\xE1l\xF3k Karbantart\xE1sa -options.manageSpaces = Ter\xFCletek Karbantart\xE1sa -options.manageSettings = \xC1ltal\xE1nos Be\xE1ll\xEDt\xE1sok -options.rebuildIndexes = Index -ek \xDAjra\xE9p\xEDt\xE9se -options.importFromExcel = Bet\xF6lt\xE9s Excel -b\xF5l - -# user_form -user_form.userDetails = Felhaszn\xE1l\xF3i R\xE9szletek -user_form.loginId = Login ID -user_form.fullName = Teljes N\xE9v -user_form.emailId = E-Mail ID -user_form.language = Nyelv -user_form.passwordMessage = Alap\xE9rtelmez\xE9sk\xE9nt egy jelsz\xF3 gener\xE1l\xF3dni fog \xE9s e-mail \xFAtj\xE1n el lesz k\xFCldve.<br/>A mez\xF5k al\xE1bb opcion\xE1lisan t\xF6ltend\xF5k. -user_form.password = Jelsz\xF3 -user_form.confirmPassword = Jelsz\xF3 Meger\xF5s\xEDt\xE9s -user_form.loginId.error.invalid = A Login ID \xE9rv\xE9nytelen karaktereket tartalmaz -user_form.loginId.error.exists = Login ID m\xE1r l\xE9tezik -user_form.passwordConfirm.error = A jelszavak nem egyeznek. -user_form.mailPassword = jelsz\xF3 k\xFCld\xE9se e-mail \xFAtj\xE1n -user_form.locked = Z\xE1rolva - -# logout -logout.title = Kil\xE9p\xE9s Sikeres -logout.home = Haza -logout.message = Kil\xE9p\xE9s Sikeres. Az \xF6sszes akt\xEDv "eml\xE9kezz r\xE1m" kapcsolat megsz\xFBnt. -logout.login = Bel\xE9p\xE9s - -# login -login.title = JTrac Login -login.home = Home -login.loginName = Felhaszn\xE1l\xF3i azonos\xEDt\xF3 / email ID -login.password = Jelsz\xF3 -login.rememberMe = eml\xE9kezz r\xE1m -login.submit = Bel\xE9p\xE9s -login.error = Hib\xE1s felhaszn\xE1l\xF3i azonos\xEDt\xF3 vagy jelsz\xF3 - -# config explanations (used in both config_list and config_form screens) -config.mail.server.host = SMPTP szerver host neve vagy IP c\xEDme az elk\xFCldend\xF5 levelek sz\xE1m\xE1ra -config.mail.server.port = SMTP szerver portja (alap\xE9rtelmez\xE9s 25) -config.mail.server.username = Felhaszn\xE1l\xF3i n\xE9v az SMTP szerver sz\xE1m\xE1ra ha az authetik\xE1ci\xF3t ig\xE9nyel -config.mail.server.password = Jelsz\xF3 az SMTP szerver sz\xE1m\xE1ra ha az authetik\xE1ci\xF3t ig\xE9nyel -config.mail.server.starttls.enable = \xC1ll\xEDtsa "true" -ra a biztons\xE1gos (SSL) kapcsolat haszn\xE1lat\xE1ra ha ezt az SMTP szerver ig\xE9nyli -config.mail.subject.prefix = Email t\xE1rgy sz\xF6veg\xE9nek prefixe (alap\xE9rtelmez\xE9s [jtrac]) -config.mail.session.jndiname = javax.mail.Session JNDI n\xE9v - ha ez be van \xE1ll\xEDtva, akkor ez lesz haszn\xE1lva a fenti SMTP szerver be\xE1ll\xEDt\xE1sok helyett -config.mail.from = E-mail gener\xE1l\xE1s eset\xE9n ez lesz haszn\xE1lva mint a 'k\xFCld\xF5' c\xEDme -config.jtrac.url.base = Alap URL -je a JTrac install\xE1ci\xF3nak ( pl.: http://myserver/jtrac ) az e-mail -ekben l\xE9v\xF5 linkek miatt sz\xFCks\xE9ges -config.locale.default = Alap\xE9rtelmezett nyelv ehhez a JTrac install\xE1ci\xF3hoz pl.: "de" N\xE9met eset\xE9n -config.session.timeout = Percben megadott session timeout (alap\xE9rtelmez\xE9s 30 perc) -config.attachment.maxsize = Maxim\xE1lis m\xE9rete MB -ban a file -ok csatolm\xE1ny\xE1nak. (alap\xE9rtelmez\xE9s 5 MB) Haszn\xE1ljon -1 -et ha nem akar limitet - -# config_list (config_form does not have any extra messages) -config_list.configurationSettings = Konfigur\xE1ci\xF3s Be\xE1ll\xEDt\xE1sok -config_list.parameter = Param\xE9ter Kulcs -config_list.value = \xC9rt\xE9k -config_list.edit = M\xF3dos\xEDt -config_list.description = Le\xEDr\xE1s - -# excel_upload -excel_upload.uploadExcelFile = Excel \xC1llom\xE1ny Felt\xF6lt\xE9s -excel_upload.error.invalidFile = Hiba a feldolgoz\xE1s sor\xE1n, lehet hogy az Excel \xE1llom\xE1ny nem \xE9rv\xE9nyes. - -# excel_view -excel_view.previewImportedData= Import\xE1lt Adatok El\xF5n\xE9zete -excel_view.selectActionToPerform = v\xE1lasszon akci\xF3t -excel_view.deleteSelected = Kiv\xE1lasztott Oszlopok / Sorok T\xF6rl\xE9se -excel_view.convertToDate = Konvert\xE1l\xE1si Form\xE1tuma a Kiv\xE1lasztott Oszlopoknak D\xE1tumm\xE1 -excel_view.concatenateFields = Kiv\xE1lasztott Oszlopok Tartalm\xE1nak \xD6sszef\xFBz\xE9se -excel_view.extractFirstEighty = Tedd ki az Els\xF5 80 Karaktert egy \xFAj Oszlopba - -# exception_flow -exception_flow.unsupportedNavigation = Nem T\xE1mogatott Navig\xE1ci\xF3 -exception_flow.line1 = A b\xF6ng\xE9sz\xF5 Vissza gombja / oldal friss\xEDt\xE9s - nem t\xE1mogatott ebben a verzi\xF3ban. -exception_flow.line2 = Ez a hiba nem helyre\xE1ll\xEDthat\xF3 \xE9s vissza kell \xE1ll\xEDtania ez el\xF5z\xF5 oldalt a navig\xE1ci\xF3 haszn\xE1lat\xE1val. -exception_flow.line3 = Hogy elker\xFClje ezt a hib\xE1t, k\xE9rem haszn\xE1lja navig\xE1l\xE1sra a linkeket vagy nyom\xF3gombokat az alkalmaz\xE1sban. - -# index_rebuild_success -index_rebuild.heading = Index -ek \xDAjra\xE9p\xEDt\xE9se - -# index_rebuild_success -index_rebuild_success.message = Az Index -ek sikeresen \xFAjra\xE9p\xFCltek - -# space_allocate -space_allocate.usersAllocatedToSpace = Ter\xFClethez Rendelt Felhaszn\xE1l\xF3k -space_allocate.loginName = Felhaszn\xE1l\xF3i azonos\xEDt\xF3 -space_allocate.fullName = Teljes N\xE9v -space_allocate.role = Szerepk\xF6r -space_allocate.remove = T\xF6rl\xE9s -space_allocate.allocateUser = V\xE1lasszon Felhaszn\xE1l\xF3t \xE9s Szerepk\xF6rt a ment\xE9shez -space_allocate.createNewUser = \xDAj Felhaszn\xE1l\xF3 L\xE9trehoz\xE1sa -space_allocate.user = Felhaszn\xE1l\xF3 -space_allocate.allocate = Ment\xE9s - -# space_delete -space_delete.confirm = Ter\xFClet T\xF6rl\xE9s Meger\xF5s\xEDt\xE9s -space_delete.line1 = Biztos, hogy t\xF6r\xF6lni akarja ezt a Ter\xFCletet? -space_delete.line2 = Ez az \xF6sszes bejegyz\xE9st t\xF6r\xF6lni fogja ezen a Ter\xFCleten. -space_delete.line3 = Az adatb\xE1zis m\xF3dos\xEDt\xE1sok nem vonhat\xF3k vissza ezek ut\xE1n. - -# space_field_delete -space_field_delete.confirm = Mez\xF5 T\xF6rl\xE9s Meger\xF5s\xEDt\xE9s -space_field_delete.line1 = Biztos, hogy t\xF6rli ezt a Mez\xF5t? -space_field_delete.line2 = Az \xE9rintett adatb\xE1zis bejegyz\xE9sek sz\xE1ma = {0} -space_field_delete.line3 = Az adatb\xE1zis m\xF3dos\xEDt\xE1sok nem vonhat\xF3k vissza ezek ut\xE1n. - -# space_field_form -space_field_form.editField = Mez\xF5 M\xF3dos\xEDt\xE1s -space_field_form.internalName = Bels\xF5 N\xE9v -space_field_form.label = Cimke -space_field_form.optional = Opcion\xE1lis -space_field_form.options = Opci\xF3 -space_field_form.addOption = Opci\xF3 Hozz\xE1ad\xE1s -space_field_form.update = Ment\xE9s -space_field_form.done = K\xE9sz -space_field_form.error.optionExists = Az opci\xF3 m\xE1r l\xE9tezik - -# space_field_option_delete -space_field_option_delete.confirm = Opci\xF3 T\xF6rl\xE9s Meger\xF5s\xEDt\xE9s -space_field_option_delete.line1 = Biztos benne, hogy t\xF6rli ezt az Opci\xF3t? -space_field_option_delete.line2 = Az \xE9rintett adatb\xE... [truncated message content] |
From: <udi...@us...> - 2021-08-03 17:13:00
|
Revision: 1374 http://sourceforge.net/p/j-trac/code/1374 Author: udittmer Date: 2021-08-03 17:12:52 +0000 (Tue, 03 Aug 2021) Log Message: ----------- upgrade many dependencies, add Ukrainian translation, add mail.server.ssl.enable setting, run only over HTTPS Modified Paths: -------------- trunk/jtrac/pom.xml trunk/jtrac/src/main/java/info/jtrac/domain/Config.java trunk/jtrac/src/main/java/info/jtrac/domain/ExcelFile.java trunk/jtrac/src/main/java/info/jtrac/mail/MailSender.java trunk/jtrac/src/main/java/info/jtrac/util/ExcelUtils.java trunk/jtrac/src/main/resources/messages_de.properties trunk/jtrac/src/main/resources/messages_en.properties trunk/jtrac/src/main/webapp/WEB-INF/web.xml Modified: trunk/jtrac/pom.xml =================================================================== --- trunk/jtrac/pom.xml 2011-10-28 16:02:57 UTC (rev 1373) +++ trunk/jtrac/pom.xml 2021-08-03 17:12:52 UTC (rev 1374) @@ -1,482 +1,503 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - <groupId>info.jtrac</groupId> - <artifactId>jtrac</artifactId> - <packaging>war</packaging> - <version>2.2.0</version> - <name>JTrac</name> - <description> - JTrac is a generic issue-tracking web-application that can be easily customized by adding custom fields - and drop-downs. Features include customizable workflow, field level permissions, e-mail integration, - file attachments and a detailed history view. - </description> - <url>http://jtrac.info</url> - - <licenses> - <license> - <name>The Apache Software License, Version 2.0</name> - <url>license.txt</url> - </license> - </licenses> - - <scm> - <connection>scm:svn:https://j-trac.svn.sourceforge.net/svnroot/j-trac/trunk/jtrac</connection> - <url>http://j-trac.svn.sourceforge.net/viewvc/j-trac/trunk/jtrac/</url> - </scm> - - <distributionManagement> - <site> - <id>website</id> - <url>scp://shell.sourceforge.net/home/groups/j/j-/j-trac/htdocs</url> - </site> - </distributionManagement> - - <mailingLists> - <mailingList> - <name>JTrac Mailing List</name> - <subscribe>https://lists.sourceforge.net/lists/listinfo/j-trac-users</subscribe> - <unsubscribe>-</unsubscribe> - <post>-</post> - <archive>http://sourceforge.net/mailarchive/forum.php?forum_name=j-trac-users</archive> - <otherArchives> - <otherArchive>http://www.nabble.com/j-trac-users-f20276.html</otherArchive> - </otherArchives> - </mailingList> - </mailingLists> - - <developers> - <developer> - <name>Peter Thomas</name> - <id>ptrthomas</id> - <url>http://ptrthomas.wordpress.com</url> - <timezone>+5.5</timezone> - </developer> - <developer> - <name>Manfred Wolff</name> - <id>manfredwolff</id> - <url>http://pointers.de</url> - <timezone>+1</timezone> - </developer> - </developers> - - <repositories> - <repository> - <id>openqa.org</id> - <name>selenium snapshot</name> - <url>http://nexus.openqa.org/content/repositories/releases</url> - </repository> - </repositories> - - <dependencies> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <version>3.8.1</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>jaxen</groupId> - <artifactId>jaxen</artifactId> - <version>1.1-beta-9</version> - <scope>runtime</scope> - <exclusions> - <exclusion> - <groupId>jdom</groupId> - <artifactId>jdom</artifactId> - </exclusion> - <exclusion> - <groupId>xom</groupId> - <artifactId>xom</artifactId> - </exclusion> - <exclusion> - <groupId>xerces</groupId> - <artifactId>xmlParserAPIs</artifactId> - </exclusion> - <exclusion> - <groupId>xerces</groupId> - <artifactId>xercesImpl</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.acegisecurity</groupId> - <artifactId>acegi-security</artifactId> - <version>1.0.2</version> - <exclusions> - <exclusion> - <groupId>org.springframework</groupId> - <artifactId>spring-remoting</artifactId> - </exclusion> - <exclusion> - <groupId>org.springframework</groupId> - <artifactId>spring-support</artifactId> - </exclusion> - <exclusion> - <groupId>org.springframework</groupId> - <artifactId>spring-jdbc</artifactId> - </exclusion> - <exclusion> - <groupId>org.springframework</groupId> - <artifactId>spring-web</artifactId> - </exclusion> - <exclusion> - <groupId>org.springframework</groupId> - <artifactId>spring-context</artifactId> - </exclusion> - <exclusion> - <groupId>commons-logging</groupId> - <artifactId>commons-logging</artifactId> - </exclusion> - <exclusion> - <groupId>log4j</groupId> - <artifactId>log4j</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>javax.servlet</groupId> - <artifactId>servlet-api</artifactId> - <version>2.4</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>jfree</groupId> - <artifactId>jfreechart</artifactId> - <version>1.0.0</version> - <exclusions> - <exclusion> - <groupId>gnujaxp</groupId> - <artifactId>gnujaxp</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.hibernate</groupId> - <artifactId>hibernate</artifactId> - <version>3.2.5.ga</version> - <exclusions> - <exclusion> - <groupId>javax.transaction</groupId> - <artifactId>jta</artifactId> - </exclusion> - <exclusion> - <groupId>asm</groupId> - <artifactId>asm-attrs</artifactId> - </exclusion> - <exclusion> - <groupId>commons-logging</groupId> - <artifactId>commons-logging</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>geronimo-spec</groupId> - <artifactId>geronimo-spec-jta</artifactId> - <version>1.0.1B-rc4</version> - <scope>runtime</scope> - </dependency> - <dependency> - <groupId>javax.mail</groupId> - <artifactId>mail</artifactId> - <version>1.4</version> - </dependency> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring</artifactId> - <version>2.5.1</version> - <exclusions> - <exclusion> - <groupId>avalon-framework</groupId> - <artifactId>avalon-framework</artifactId> - </exclusion> - <exclusion> - <groupId>logkit</groupId> - <artifactId>logkit</artifactId> - </exclusion> - <!--exclusion> - <groupId>commons-logging</groupId> - <artifactId>commons-logging</artifactId> - </exclusion--> - </exclusions> - </dependency> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-webmvc</artifactId> - <version>2.5.1</version> - <exclusions> - <exclusion> - <groupId>org.springframework</groupId> - <artifactId>spring-web</artifactId> - </exclusion> - <exclusion> - <groupId>org.springframework</groupId> - <artifactId>spring-context</artifactId> - </exclusion> - <exclusion> - <groupId>org.springframework</groupId> - <artifactId>spring-beans</artifactId> - </exclusion> - <exclusion> - <groupId>org.springframework</groupId> - <artifactId>spring-context-support</artifactId> - </exclusion> - <exclusion> - <groupId>org.springframework</groupId> - <artifactId>spring-core</artifactId> - </exclusion> - <exclusion> - <groupId>org.springframework</groupId> - <artifactId>spring-beans</artifactId> - </exclusion> - <exclusion> - <groupId>commons-logging</groupId> - <artifactId>commons-logging</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-test</artifactId> - <version>2.5.1</version> - <scope>test</scope> - <exclusions> - <exclusion> - <groupId>struts</groupId> - <artifactId>struts</artifactId> - </exclusion> - <exclusion> - <groupId>commons-logging</groupId> - <artifactId>commons-logging</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.springmodules</groupId> - <artifactId>spring-modules-lucene</artifactId> - <version>0.8</version> - <exclusions> - <exclusion> - <groupId>org.springframework</groupId> - <artifactId>spring-dao</artifactId> - </exclusion> - <exclusion> - <groupId>org.springframework</groupId> - <artifactId>spring-support</artifactId> - </exclusion> - <exclusion> - <groupId>org.springframework</groupId> - <artifactId>spring-jdbc</artifactId> - </exclusion> - <exclusion> - <groupId>org.springframework</groupId> - <artifactId>spring-aop</artifactId> - </exclusion> - <exclusion> - <groupId>org.springframework</groupId> - <artifactId>spring-core</artifactId> - </exclusion> - <exclusion> - <groupId>org.springframework</groupId> - <artifactId>spring-context</artifactId> - </exclusion> - <exclusion> - <groupId>org.springframework</groupId> - <artifactId>spring-beans</artifactId> - </exclusion> - <exclusion> - <groupId>org.springframework</groupId> - <artifactId>spring-jca</artifactId> - </exclusion> - <exclusion> - <groupId>concurrent</groupId> - <artifactId>concurrent</artifactId> - </exclusion> - <exclusion> - <groupId>org.apache</groupId> - <artifactId>poi</artifactId> - </exclusion> - <exclusion> - <groupId>org.apache</groupId> - <artifactId>poi-scratchpad</artifactId> - </exclusion> - <exclusion> - <groupId>jexcelapi</groupId> - <artifactId>jxl</artifactId> - </exclusion> - <exclusion> - <groupId>cglib</groupId> - <artifactId>cglib-nodep</artifactId> - </exclusion> - <exclusion> - <groupId>commons-logging</groupId> - <artifactId>commons-logging</artifactId> - </exclusion> - <exclusion> - <groupId>log4j</groupId> - <artifactId>log4j</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.apache.wicket</groupId> - <artifactId>wicket</artifactId> - <version>1.3.7</version> - </dependency> - <dependency> - <groupId>org.apache.wicket</groupId> - <artifactId>wicket-extensions</artifactId> - <version>1.3.7</version> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-log4j12</artifactId> - <version>1.4.2</version> - <scope>runtime</scope> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>jcl104-over-slf4j</artifactId> - <version>1.4.2</version> - <scope>runtime</scope> - </dependency> - <dependency> - <groupId>poi</groupId> - <artifactId>poi</artifactId> - <version>2.5.1-final-20040804</version> - </dependency> - <dependency> - <groupId>org.tmate</groupId> - <artifactId>javasvn</artifactId> - <version>1.0.3</version> - <exclusions> - <exclusion> - <groupId>ch.ethz.ganymed</groupId> - <artifactId>ganymed-ssh2</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.beanshell</groupId> - <artifactId>bsh</artifactId> - <version>2.0b4</version> - <scope>runtime</scope> - </dependency> - <dependency> - <groupId>hsqldb</groupId> - <artifactId>hsqldb</artifactId> - <version>1.8.0.1</version> - <scope>runtime</scope> - </dependency> - <dependency> - <groupId>cas</groupId> - <artifactId>casclient</artifactId> - <version>2.1.1</version> - <scope>runtime</scope> - <exclusions> - <exclusion> - <groupId>commons-logging</groupId> - <artifactId>commons-logging</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>commons-dbcp</groupId> - <artifactId>commons-dbcp</artifactId> - <version>1.2.2</version> - <exclusions> - <exclusion> - <groupId>xml-apis</groupId> - <artifactId>xml-apis</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>net.sf.ehcache</groupId> - <artifactId>ehcache</artifactId> - <version>1.2.4</version> - <scope>runtime</scope> - <exclusions> - <exclusion> - <groupId>commons-logging</groupId> - <artifactId>commons-logging</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.openqa.selenium.client-drivers</groupId> - <artifactId>selenium-java-client-driver</artifactId> - <version>0.9.0</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.openqa.selenium.server</groupId> - <artifactId>selenium-server</artifactId> - <version>0.9.0</version> - <scope>test</scope> - </dependency> - </dependencies> - - <build> - <finalName>jtrac</finalName> - <!-- for Wicket HTML files --> - <resources> - <resource> - <directory>src/main/resources</directory> - <includes> - <include>**</include> - </includes> - </resource> - <resource> - <directory>src/main/java</directory> - <includes> - <include>**</include> - </includes> - <excludes> - <exclude>**/*.java</exclude> - </excludes> - </resource> - </resources> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - <configuration> - <source>1.5</source> - <target>1.5</target> - </configuration> - </plugin> - <!-- - <plugin> - <groupId>org.mortbay.jetty</groupId> - <artifactId>maven-jetty-plugin</artifactId> - <configuration> - <systemProperties> - <systemProperty> - <name>jtrac.home</name> - <value>home</value> - </systemProperty> - </systemProperties> - </configuration> - </plugin> - --> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - <configuration> - <excludes> - <exclude>info/jtrac/selenium/**</exclude> - <exclude>info/jtrac/test/**</exclude> - </excludes> - </configuration> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-site-plugin</artifactId> - <configuration> - <templateFile>src/site/resources/template/maven-site.vm</templateFile> - </configuration> - </plugin> - </plugins> - </build> -</project> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>info.jtrac</groupId> + <artifactId>jtrac</artifactId> + <packaging>war</packaging> + <version>2.2.0-b1</version> + <name>JTrac</name> + <description> + JTrac is a generic issue-tracking web-application that can be easily customized by adding custom fields + and drop-downs. Features include customizable workflow, field level permissions, e-mail integration, + file attachments and a detailed history view. + </description> + <url>http://jtrac.info</url> + + <licenses> + <license> + <name>The Apache Software License, Version 2.0</name> + <url>license.txt</url> + </license> + </licenses> + + <scm> + <connection>scm:svn:https://j-trac.svn.sourceforge.net/svnroot/j-trac/trunk/jtrac</connection> + <url>http://j-trac.svn.sourceforge.net/viewvc/j-trac/trunk/jtrac/</url> + </scm> + + <distributionManagement> + <site> + <id>website</id> + <url>scp://shell.sourceforge.net/home/groups/j/j-/j-trac/htdocs</url> + </site> + </distributionManagement> + + <mailingLists> + <mailingList> + <name>JTrac Mailing List</name> + <subscribe>https://lists.sourceforge.net/lists/listinfo/j-trac-users</subscribe> + <unsubscribe>-</unsubscribe> + <post>-</post> + <archive>http://sourceforge.net/mailarchive/forum.php?forum_name=j-trac-users</archive> + <otherArchives> + <otherArchive>http://www.nabble.com/j-trac-users-f20276.html</otherArchive> + </otherArchives> + </mailingList> + </mailingLists> + + <developers> + <developer> + <name>Peter Thomas</name> + <id>ptrthomas</id> + <url>http://ptrthomas.wordpress.com</url> + <timezone>+5.5</timezone> + </developer> + <developer> + <name>Ulf Dittmer</name> + <id>udittmer</id> + <url>http://ulfdittmer.com</url> + <timezone>+1</timezone> + </developer> + </developers> + + <repositories> + <repository> + <id>openqa.org</id> + <name>selenium snapshot</name> + <url>https://repo.spring.io/plugins-release/</url> + <snapshots> + <enabled>true</enabled> + <updatePolicy>always</updatePolicy> + <checksumPolicy>warn</checksumPolicy> + </snapshots> + </repository> + </repositories> + + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>3.8.1</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>jaxen</groupId> + <artifactId>jaxen</artifactId> + <version>1.2.0</version> + <scope>runtime</scope> + <exclusions> + <exclusion> + <groupId>jdom</groupId> + <artifactId>jdom</artifactId> + </exclusion> + <exclusion> + <groupId>xom</groupId> + <artifactId>xom</artifactId> + </exclusion> + <exclusion> + <groupId>xerces</groupId> + <artifactId>xmlParserAPIs</artifactId> + </exclusion> + <exclusion> + <groupId>xerces</groupId> + <artifactId>xercesImpl</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.acegisecurity</groupId> + <artifactId>acegi-security</artifactId> + <version>1.0.7</version> + <exclusions> + <exclusion> + <groupId>org.springframework</groupId> + <artifactId>spring-remoting</artifactId> + </exclusion> + <exclusion> + <groupId>org.springframework</groupId> + <artifactId>spring-support</artifactId> + </exclusion> + <exclusion> + <groupId>org.springframework</groupId> + <artifactId>spring-jdbc</artifactId> + </exclusion> + <exclusion> + <groupId>org.springframework</groupId> + <artifactId>spring-web</artifactId> + </exclusion> + <exclusion> + <groupId>org.springframework</groupId> + <artifactId>spring-context</artifactId> + </exclusion> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + <exclusion> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>javax.servlet-api</artifactId> + <version>3.1.0</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>jfree</groupId> + <artifactId>jfreechart</artifactId> + <version>1.0.13</version> + <exclusions> + <exclusion> + <groupId>gnujaxp</groupId> + <artifactId>gnujaxp</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.hibernate</groupId> + <artifactId>hibernate</artifactId> + <version>3.2.7.ga</version> + <exclusions> + <exclusion> + <groupId>javax.transaction</groupId> + <artifactId>jta</artifactId> + </exclusion> + <exclusion> + <groupId>asm</groupId> + <artifactId>asm-attrs</artifactId> + </exclusion> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>geronimo-spec</groupId> + <artifactId>geronimo-spec-jta</artifactId> + <version>1.0.1B-rc4</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>com.sun.mail</groupId> + <artifactId>jakarta.mail</artifactId> + <version>1.6.7</version> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring</artifactId> + <version>2.5.6</version> + <exclusions> + <exclusion> + <groupId>avalon-framework</groupId> + <artifactId>avalon-framework</artifactId> + </exclusion> + <exclusion> + <groupId>logkit</groupId> + <artifactId>logkit</artifactId> + </exclusion> + <!--exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion--> + </exclusions> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-webmvc</artifactId> + <version>2.5.6</version> + <exclusions> + <exclusion> + <groupId>org.springframework</groupId> + <artifactId>spring-web</artifactId> + </exclusion> + <exclusion> + <groupId>org.springframework</groupId> + <artifactId>spring-context</artifactId> + </exclusion> + <exclusion> + <groupId>org.springframework</groupId> + <artifactId>spring-beans</artifactId> + </exclusion> + <exclusion> + <groupId>org.springframework</groupId> + <artifactId>spring-context-support</artifactId> + </exclusion> + <exclusion> + <groupId>org.springframework</groupId> + <artifactId>spring-core</artifactId> + </exclusion> + <exclusion> + <groupId>org.springframework</groupId> + <artifactId>spring-beans</artifactId> + </exclusion> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-test</artifactId> + <version>2.5.6</version> + <scope>test</scope> + <exclusions> + <exclusion> + <groupId>struts</groupId> + <artifactId>struts</artifactId> + </exclusion> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.springmodules</groupId> + <artifactId>spring-modules-lucene</artifactId> + <version>0.8</version> + <exclusions> + <exclusion> + <groupId>org.springframework</groupId> + <artifactId>spring-dao</artifactId> + </exclusion> + <exclusion> + <groupId>org.springframework</groupId> + <artifactId>spring-support</artifactId> + </exclusion> + <exclusion> + <groupId>org.springframework</groupId> + <artifactId>spring-jdbc</artifactId> + </exclusion> + <exclusion> + <groupId>org.springframework</groupId> + <artifactId>spring-aop</artifactId> + </exclusion> + <exclusion> + <groupId>org.springframework</groupId> + <artifactId>spring-core</artifactId> + </exclusion> + <exclusion> + <groupId>org.springframework</groupId> + <artifactId>spring-context</artifactId> + </exclusion> + <exclusion> + <groupId>org.springframework</groupId> + <artifactId>spring-beans</artifactId> + </exclusion> + <exclusion> + <groupId>org.springframework</groupId> + <artifactId>spring-jca</artifactId> + </exclusion> + <exclusion> + <groupId>concurrent</groupId> + <artifactId>concurrent</artifactId> + </exclusion> + <exclusion> + <groupId>org.apache</groupId> + <artifactId>poi</artifactId> + </exclusion> + <exclusion> + <groupId>org.apache</groupId> + <artifactId>poi-scratchpad</artifactId> + </exclusion> + <exclusion> + <groupId>jexcelapi</groupId> + <artifactId>jxl</artifactId> + </exclusion> + <exclusion> + <groupId>cglib</groupId> + <artifactId>cglib-nodep</artifactId> + </exclusion> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + <exclusion> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.apache.wicket</groupId> + <artifactId>wicket</artifactId> + <version>1.3.7</version> + <type>pom</type> + </dependency> + <dependency> + <groupId>org.apache.wicket</groupId> + <artifactId>wicket-extensions</artifactId> + <version>1.3.7</version> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + <version>1.4.3</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>jcl104-over-slf4j</artifactId> + <version>1.4.3</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.apache.poi</groupId> + <artifactId>poi</artifactId> + <version>4.1.2</version> + </dependency> + <dependency> + <groupId>org.tmate</groupId> + <artifactId>javasvn</artifactId> + <version>1.0.4</version> + <exclusions> + <exclusion> + <groupId>ch.ethz.ganymed</groupId> + <artifactId>ganymed-ssh2</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.beanshell</groupId> + <artifactId>bsh</artifactId> + <version>2.0b5</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.hsqldb</groupId> + <artifactId>hsqldb</artifactId> + <version>2.5.2</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>cas</groupId> + <artifactId>casclient</artifactId> + <version>2.1.1</version> + <scope>runtime</scope> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>commons-dbcp</groupId> + <artifactId>commons-dbcp</artifactId> + <version>1.4</version> + <exclusions> + <exclusion> + <groupId>xml-apis</groupId> + <artifactId>xml-apis</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>net.sf.ehcache</groupId> + <artifactId>ehcache</artifactId> + <version>1.7.2</version> + <scope>runtime</scope> + <type>pom</type> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + </exclusions> + </dependency> + <!-- + <dependency> + <groupId>org.openqa.selenium.client-drivers</groupId> + <artifactId>selenium-java-client-driver</artifactId> + <version>0.9.2</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.openqa.selenium.server</groupId> + <artifactId>selenium-server</artifactId> + <version>0.9.2</version> + <scope>test</scope> + </dependency> + --> + </dependencies> + + <build> + <finalName>jtrac</finalName> + <!-- for Wicket HTML files --> + <resources> + <resource> + <directory>src/main/resources</directory> + <includes> + <include>**</include> + </includes> + </resource> + <resource> + <directory>src/main/java</directory> + <includes> + <include>**</include> + </includes> + <excludes> + <exclude>**/*.java</exclude> + </excludes> + </resource> + </resources> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <source>1.8</source> + <target>1.8</target> + </configuration> + <executions> + <execution> + <id>default-testCompile</id> + <phase>test-compile</phase> + <goals> + <goal>testCompile</goal> + </goals> + <configuration> + <skip>true</skip> + </configuration> + </execution> + </executions> + </plugin> + <!-- + <plugin> + <groupId>org.mortbay.jetty</groupId> + <artifactId>maven-jetty-plugin</artifactId> + <configuration> + <systemProperties> + <systemProperty> + <name>jtrac.home</name> + <value>home</value> + </systemProperty> + </systemProperties> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <excludes> + <exclude>info/jtrac/selenium/**</exclude> + <exclude>info/jtrac/test/**</exclude> + </excludes> + </configuration> + </plugin> + --> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-site-plugin</artifactId> + <configuration> + <templateFile>src/site/resources/template/maven-site.vm</templateFile> + </configuration> + </plugin> + </plugins> + </build> +</project> Modified: trunk/jtrac/src/main/java/info/jtrac/domain/Config.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/domain/Config.java 2011-10-28 16:02:57 UTC (rev 1373) +++ trunk/jtrac/src/main/java/info/jtrac/domain/Config.java 2021-08-03 17:12:52 UTC (rev 1374) @@ -1,103 +1,104 @@ -/* - * Copyright 2002-2005 the original author or authors. - * - * Licensed 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. - */ - -package info.jtrac.domain; - -import java.io.Serializable; -import java.util.LinkedHashSet; -import java.util.Set; - -/** - * Simple name value pair to hold configuration parameters - * in the database for JTrac, e.g. SMTP e-mail server, etc. - * TODO better validation, type-safety, masking of mail server password - */ -public class Config implements Serializable { - - private String param; // someone reported that "key" is a reserved word in MySQL - private String value; - - private static final Set<String> PARAMS; - - // set up a static set of valid config key names - static { - PARAMS = new LinkedHashSet<String>(); - PARAMS.add("mail.server.host"); - PARAMS.add("mail.server.port"); - PARAMS.add("mail.server.username"); - PARAMS.add("mail.server.password"); - PARAMS.add("mail.server.starttls.enable"); - PARAMS.add("mail.subject.prefix"); - PARAMS.add("mail.from"); - PARAMS.add("mail.smtp.localhost"); - PARAMS.add("mail.session.jndiname"); - PARAMS.add("jtrac.url.base"); - PARAMS.add("jtrac.header.picture"); - PARAMS.add("jtrac.header.text"); - PARAMS.add("jtrac.edit.item"); - PARAMS.add("locale.default"); - PARAMS.add("session.timeout"); - PARAMS.add("attachment.maxsize"); - } - - public static Set<String> getParams() { - return PARAMS; - } - - public Config() { - // zero arg constructor - } - - public Config(String param, String value) { - this.param = param; - this.value = value; - } - - public boolean isMailConfig() { - return param.startsWith("mail.") || param.startsWith("jtrac.url."); - } - - public boolean isAttachmentConfig() { - return param.startsWith("attachment."); - } - - public boolean isSessionTimeoutConfig() { - return param.startsWith("session."); - } - - public boolean isLocaleConfig() { - return param.startsWith("locale."); - } - - //========================================================================== - - public String getParam() { - return param; - } - - public void setParam(String param) { - this.param = param; - } - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } - -} +/* + * Copyright 2002-2005 the original author or authors. + * + * Licensed 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. + */ + +package info.jtrac.domain; + +import java.io.Serializable; +import java.util.LinkedHashSet; +import java.util.Set; + +/** + * Simple name value pair to hold configuration parameters + * in the database for JTrac, e.g. SMTP e-mail server, etc. + * TODO better validation, type-safety, masking of mail server password + */ +public class Config implements Serializable { + + private String param; // someone reported that "key" is a reserved word in MySQL + private String value; + + private static final Set<String> PARAMS; + + // set up a static set of valid config key names + static { + PARAMS = new LinkedHashSet<String>(); + PARAMS.add("mail.server.host"); + PARAMS.add("mail.server.port"); + PARAMS.add("mail.server.username"); + PARAMS.add("mail.server.password"); + PARAMS.add("mail.server.starttls.enable"); + PARAMS.add("mail.server.ssl.enable"); + PARAMS.add("mail.subject.prefix"); + PARAMS.add("mail.from"); + PARAMS.add("mail.smtp.localhost"); + PARAMS.add("mail.session.jndiname"); + PARAMS.add("jtrac.url.base"); + PARAMS.add("jtrac.header.picture"); + PARAMS.add("jtrac.header.text"); + PARAMS.add("jtrac.edit.item"); + PARAMS.add("locale.default"); + PARAMS.add("session.timeout"); + PARAMS.add("attachment.maxsize"); + } + + public static Set<String> getParams() { + return PARAMS; + } + + public Config() { + // zero arg constructor + } + + public Config(String param, String value) { + this.param = param; + this.value = value; + } + + public boolean isMailConfig() { + return param.startsWith("mail.") || param.startsWith("jtrac.url."); + } + + public boolean isAttachmentConfig() { + return param.startsWith("attachment."); + } + + public boolean isSessionTimeoutConfig() { + return param.startsWith("session."); + } + + public boolean isLocaleConfig() { + return param.startsWith("locale."); + } + + //========================================================================== + + public String getParam() { + return param; + } + + public void setParam(String param) { + this.param = param; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + +} Modified: trunk/jtrac/src/main/java/info/jtrac/domain/ExcelFile.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/domain/ExcelFile.java 2011-10-28 16:02:57 UTC (rev 1373) +++ trunk/jtrac/src/main/java/info/jtrac/domain/ExcelFile.java 2021-08-03 17:12:52 UTC (rev 1374) @@ -1,570 +1,573 @@ -/* - * Copyright 2002-2005 the original author or authors. - * - * Licensed 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. - */ - -package info.jtrac.domain; - -import info.jtrac.domain.ColumnHeading.Name; -import static info.jtrac.domain.ColumnHeading.Name.*; -import info.jtrac.util.DateUtils; -import info.jtrac.util.ItemUtils; -import java.io.InputStream; -import java.io.Serializable; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.TreeSet; -import org.apache.poi.hssf.usermodel.HSSFCell; -import org.apache.poi.hssf.usermodel.HSSFRow; -import org.apache.poi.hssf.usermodel.HSSFSheet; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.poifs.filesystem.POIFSFileSystem; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Class that encapsulates an Excel Sheet / Workbook - * and is used to process, cleanse and import contents of an - * uploaded excel file into JTrac - */ -public class ExcelFile implements Serializable { - - private static final Logger logger = LoggerFactory.getLogger(ExcelFile.class); - - /** - * represents a column heading and mapping to a Space built-in / custom field - */ - public class Column implements Serializable { - - private String label; - private ColumnHeading columnHeading; - - public Column(String label) { - this.label = label; - } - - public String getLabel() { - return label; - } - - public void setLabel(String label) { - this.label = label; - } - - public void setColumnHeading(ColumnHeading columnHeading) { - this.columnHeading = columnHeading; - } - - public ColumnHeading getColumnHeading() { - return columnHeading; - } - - public Column getClone() { - Column column = new Column(label); - column.setColumnHeading(columnHeading); - return column; - } - - } - - /** - * represents a cell value, acts as object holder - */ - public class Cell implements Serializable { - - private Object value; - // internal key value for cells mapped to drop downs - private Object key; - - public Cell(Object value) { - this.value = value; - } - - private boolean isEmpty() { - return value == null || value.toString().trim().length() == 0; - } - - public boolean isValid(ColumnHeading ch) { - if(ch.isField()) { - switch(ch.getField().getName().getType()) { - case 1: - case 2: - case 3: - if(key == null || key instanceof Integer) { - return true; - } - break; - case 4: - if(value == null || value instanceof Double) { - return true; - } - break; - case 5: - return true; - case 6: - if(value == null || value instanceof Date) { - return true; - } - break; - } - - } else { - switch(ch.getName()) { - case SUMMARY: - case DETAIL: - if(!isEmpty()) { - return true; - } - break; - case LOGGED_BY: - case ASSIGNED_TO: - if(key != null && key instanceof User) { - return true; - } - break; - case STATUS: - if(key != null && key instanceof Integer) { - return true; - } - break; - case TIME_STAMP: - if(value == null || value instanceof Date) { - return true; - } - break; - } - } - return false; - } - - public void setValue(Object value) { - this.value = value; - } - - public Object getValue() { - return value; - } - - public void setKey(Object key) { - this.key = key; - } - - public Object getKey() { - return key; - } - - public String getValueAsString() { - if (value == null) { - return ""; - } - if (value instanceof String) { - return ItemUtils.fixWhiteSpace((String) value); - } - if(value instanceof Date) { - return DateUtils.formatTimeStamp((Date) value); - } - return value.toString(); - } - - public Cell getClone() { - Cell cell = new Cell(value); - cell.setKey(key); - return cell; - } - - } - - //========================================================================== - // grid data - - private List<Column> columns; - private List<List<Cell>> rows; - - public List<List<Cell>> getRows() { - return rows; - } - - public List<Column> getColumns() { - return columns; - } - - //========================================================================== - // form binding - - private List<Integer> selectedColumns = new ArrayList<Integer>(); - private List<Integer> selectedRows = new ArrayList<Integer>(); - - public List<Integer> getSelectedColumns() { - return selectedColumns; - } - - public void setSelectedColumns(List<Integer> selectedColumns) { - this.selectedColumns = selectedColumns; - } - - public List<Integer> getSelectedRows() { - return selectedRows; - } - - public void setSelectedRows(List<Integer> selectedRows) { - this.selectedRows = selectedRows; - } - - //========================================================================== - // operations - - public boolean isColumnSelected() { - return selectedColumns.size() > 0; - } - - public boolean isRowSelected() { - return selectedRows.size() > 0; - } - - public Column getFirstSelectedColumn() { - if(selectedColumns.size() == 0) { - return null; - } - int index = selectedColumns.get(0); - return columns.get(index); - } - - public List<Cell> getFirstSelectedRow() { - if(selectedRows.size() == 0) { - return null; - } - int index = selectedRows.get(0); - return rows.get(index); - } - - public void clearSelected() { - selectedColumns = new ArrayList<Integer>(); - selectedRows = new ArrayList<Integer>(); - } - - public List<ColumnHeading> getMappedColumnHeadings() { - List<ColumnHeading> list = new ArrayList<ColumnHeading>(); - for(Column c : columns) { - if(c.columnHeading != null) { - list.add(c.columnHeading); - } - } - return list; - } - - public ColumnHeading getDuplicatedColumnHeadings() { - Set<ColumnHeading> set = new HashSet<ColumnHeading>(); - for(ColumnHeading ch : getMappedColumnHeadings()) { - if(set.contains(ch)) { - return ch; - } - set.add(ch); - } - return null; - } - - public List<ColumnHeading> getUnMappedColumnHeadings() { - // status will default to Open - // timestamp will default to now - // custom field mandatory check will be ignored if any - // the following 4 are the only MANDATORY fields for import - Set<ColumnHeading> set = new HashSet<ColumnHeading>(); - ColumnHeading summary = new ColumnHeading(Name.SUMMARY); - ColumnHeading detail = new ColumnHeading(Name.DETAIL); - ColumnHeading loggedBy = new ColumnHeading(Name.LOGGED_BY); - ColumnHeading assignedTo = new ColumnHeading(Name.ASSIGNED_TO); - set.add(summary); - set.add(detail); - set.add(loggedBy); - set.add(assignedTo); - set.removeAll(getMappedColumnHeadings()); - return new ArrayList(set); - } - - public List<Cell> getColumnCells(int index) { - List<Cell> list = new ArrayList<Cell>(rows.size()); - for(List<Cell> rowCells : rows) { - list.add(rowCells.get(index)); - } - return list; - } - - public List<Cell> getColumnCellsCloned(int index) { - List<Cell> list = new ArrayList<Cell>(rows.size()); - for(List<Cell> rowCells : rows) { - list.add(rowCells.get(index).getClone()); - } - return list; - } - - public void setColumnCells(int index, List<Cell> columnCells) { - int count = 0; - for(List<Cell> rowCells : rows) { - rowCells.set(index, columnCells.get(count)); - count++; - } - } - - public List<Cell> getRowCellsCloned(int index) { - List<Cell> list = new ArrayList<Cell>(columns.size()); - List<Cell> rowCells = rows.get(index); - for(Cell cell : rowCells) { - list.add(cell.getClone()); - } - return list; - } - - public void setRowCells(int index, List<Cell> rowCells) { - rows.set(index, rowCells); - } - - public List<String> getColumnDistinctCellValues(int index) { - Set<String> set = new TreeSet<String>(); - for(List<Cell> rowCells : rows) { - set.add(rowCells.get(index).getValueAsString()); - } - return new ArrayList(set); - } - - public List<Item> getAsItems(Space s) { - List<Item> items = new ArrayList<Item>(rows.size()); - for(List<Cell> rowCells : rows) { - Item item = new Item(); - item.setSpace(s); - for(int i = 0; i < columns.size(); i++) { - ColumnHeading ch = columns.get(i).columnHeading; - if(ch == null) { - continue; - } - Cell cell = rowCells.get(i); - if(ch.isField()) { - Field field = ch.getField(); - if(field.isDropDownType()) { - if(cell.key != null) { - item.setValue(field.getName(), cell.key); - } - } else { - if(cell.value != null) { - item.setValue(field.getName(), cell.value); - } - } - } else { - switch(ch.getName()) { - // next 4 are the only MANDATORY fields in import - case SUMMARY: - item.setSummary(cell.value.toString()); - break; - case DETAIL: - item.setDetail(cell.value.toString()); - break; - case LOGGED_BY: - item.setLoggedBy((User) cell.key); - break; - case ASSIGNED_TO: - item.setAssignedTo((User) cell.key); - break; - case STATUS: - if(cell.key != null) { - item.setStatus((Integer) cell.key); - } - break; - case TIME_STAMP: - // timestamp will be set by JtracImpl if null - if(cell.value != null) { - item.setTimeStamp((Date) cell.value); - } - break; - } - } - } - // if no status, assume Open - if(item.getStatus() == null) { - item.setStatus(State.OPEN); - } - items.add(item); - } - return items; - } - - //========================================================================== - // edits - - public void deleteSelectedRowsAndColumns() { - int cursor = 0; - for(int i : selectedRows) { - rows.remove(i - cursor); - cursor++; - } - cursor = 0; - for(int i : selectedColumns) { - columns.remove(i - cursor); - for(List<Cell> cells : rows) { - cells.remove(i - cursor); - } - cursor++; - } - } - - public void convertSelectedColumnsToDate() { - // could not find a better way to convert excel number to date - HSSFWorkbook wb = new HSSFWorkbook(); - HSSFSheet sheet = wb.createSheet(); - HSSFRow row = sheet.createRow(0); - HSSFCell cell = row.createCell((short) 0); - for(int i : selectedColumns) { - for(List<Cell> cells : rows) { - Cell c = cells.get(i); - if (c != null && c.value instanceof Double) { - cell.setCellValue((Double) c.value); - c.value = cell.getDateCellValue(); - } - } - } - } - - public void concatenateSelectedColumns() { - List<Cell> list = new ArrayList<Cell>(rows.size()); - for(List<Cell> rowCells : rows) { - list.add(new Cell(null)); - } - int first = selectedColumns.get(0); - for(int i : selectedColumns) { - int rowIndex = 0; - for(List<Cell> cells : rows) { - Cell c = cells.get(i); - if (c != null) { - String s = (String) list.get(rowIndex).value; - if (s == null) { - ... [truncated message content] |
From: <ma...@us...> - 2011-10-28 16:03:04
|
Revision: 1373 http://j-trac.svn.sourceforge.net/j-trac/?rev=1373&view=rev Author: magog96 Date: 2011-10-28 16:02:57 +0000 (Fri, 28 Oct 2011) Log Message: ----------- -updated formatting for decimal values in the editing mode because the original Wicket implementation will show only three digits right of the decimal point (updated to six digits right of the decimal point) Modified Paths: -------------- trunk/jtrac/src/main/java/info/jtrac/wicket/CustomFieldsFormPanel.java Modified: trunk/jtrac/src/main/java/info/jtrac/wicket/CustomFieldsFormPanel.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/CustomFieldsFormPanel.java 2011-10-28 15:56:16 UTC (rev 1372) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/CustomFieldsFormPanel.java 2011-10-28 16:02:57 UTC (rev 1373) @@ -35,6 +35,7 @@ import org.apache.wicket.model.BoundCompoundPropertyModel; import org.apache.wicket.model.Model; import org.apache.wicket.model.PropertyModel; +import org.apache.wicket.util.convert.converters.DoubleConverter; /** * This class is responsible for the panel of custom fields that @@ -132,7 +133,31 @@ * Double values. */ if (field.isDecimalNumberType()) { - textField.setType(Double.class); + /* + * The following code overwrites the default + * DoubleConverter used by Wicket (getConverter(Class)). + * The original implementation rounds after three + * digits to the right of the decimal point. + * + * As there are requirements to show six digits to + * the right of the decimal point the NumberFormat + * is enhanced in the code below by the DecimalFormat + * class. That has been used because the DecimalFormat + * class supports a formatting pattern which allows + * to use the digits to the right only if really + * needed (currently limited to six digits to the + * right of the decimal point). + */ + textField = new TextField("field", Double.class) { + public org.apache.wicket.util.convert.IConverter getConverter(Class type) { + DoubleConverter converter = (DoubleConverter) DoubleConverter.INSTANCE; + java.text.NumberFormat numberFormat = converter.getNumberFormat(getLocale()); + java.text.DecimalFormat decimalFormat = (java.text.DecimalFormat)numberFormat; + decimalFormat.applyPattern("###,##0.######"); + converter.setNumberFormat(getLocale(), decimalFormat); + return converter; + }; + }; } textField.add(new ErrorHighlighter()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2011-10-28 15:56:22
|
Revision: 1372 http://j-trac.svn.sourceforge.net/j-trac/?rev=1372&view=rev Author: magog96 Date: 2011-10-28 15:56:16 +0000 (Fri, 28 Oct 2011) Log Message: ----------- -added JavaDoc comments -updated inline comments -reformatted source code as well as HTML code Modified Paths: -------------- trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPage.html trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPanel.html trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPanel.java Modified: trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPage.html =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPage.html 2011-10-27 19:59:49 UTC (rev 1371) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPage.html 2011-10-28 15:56:16 UTC (rev 1372) @@ -1,5 +1,5 @@ <html> - <body> + <body> <wicket:extend> <span wicket:id="relate"></span> <table class="jtrac" width="100%"> @@ -14,12 +14,12 @@ <wicket:enclosure> <img src="resources/edit.gif" class="nav-link"/> <a href="#" wicket:id="edit"><wicket:message key="edit"/></a> - </wicket:enclosure> + </wicket:enclosure> </td> </tr> - </table> - <div wicket:id="itemViewPanel"></div> + </table> + <div wicket:id="itemViewPanel"></div> <div wicket:id="itemViewFormPanel" style="margin-top:1em"></div> </wicket:extend> </body> -</html> +</html> \ No newline at end of file Modified: trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPanel.html =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPanel.html 2011-10-27 19:59:49 UTC (rev 1371) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPanel.html 2011-10-28 15:56:16 UTC (rev 1372) @@ -1,25 +1,25 @@ -<wicket:panel> +<wicket:panel> <table class="jtrac jtrac-view" width="100%"> <tr class="alt" valign="top"> <td class="label"><wicket:message key="item_view.id"/></td> <td wicket:id="refId"></td> <td class="label"> <wicket:message key="item_view.relatedItems"/> - <a href="#" wicket:id="relate" wicket:message="title:item_view_form.addRelatedItem"><img src="resources/add.gif"/></a> + <a href="#" wicket:id="relate" wicket:message="title:item_view_form.addRelatedItem"><img src="resources/add.gif"/></a> </td> <td colspan="3"> <span wicket:id="relatedItems"> <span wicket:id="message"></span> <span wicket:id="link"><a href="#" wicket:id="refId"></a></span> - <a href="#" wicket:id="remove" wicket:message="title:item_view.remove"><img src="resources/remove.gif"/></a> + <a href="#" wicket:id="remove" wicket:message="title:item_view.remove"><img src="resources/remove.gif"/></a> <br/> - </span> - <span wicket:id="relatingItems"> + </span> + <span wicket:id="relatingItems"> <span wicket:id="link"><a href="#" wicket:id="refId"></a></span> <span wicket:id="message"></span> - <a href="#" wicket:id="remove" wicket:message="title:item_view.remove"><img src="resources/remove.gif"/></a> + <a href="#" wicket:id="remove" wicket:message="title:item_view.remove"><img src="resources/remove.gif"/></a> <br/> - </span> + </span> </td> </tr> <tr> @@ -37,12 +37,12 @@ <tr> <td class="label" valign="top"><wicket:message key="item_view.detail"/></td> <td wicket:id="detail" colspan="5"></td> - </tr> + </tr> <tr wicket:id="fields"> <td class="label" wicket:id="label"></td> <td wicket:id="value" colspan="5"></td> </tr> - </table> + </table> <br/><div class="space-below"> <b><wicket:message key="item_view.history"/></b></div> @@ -64,4 +64,4 @@ <td wicket:id="fields"><span wicket:id="field"></span></td> </tr> </table> -</wicket:panel> +</wicket:panel> \ No newline at end of file Modified: trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPanel.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPanel.java 2011-10-27 19:59:49 UTC (rev 1371) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPanel.java 2011-10-28 15:56:16 UTC (rev 1372) @@ -38,58 +38,87 @@ import org.apache.wicket.model.PropertyModel; /** - * panel for showing the item read-only view + * This class is responsible the panel showing the item + * read-only view. */ -public class ItemViewPanel extends BasePanel { - +public class ItemViewPanel extends BasePanel { + /** + * Boolean flags to hide links. + */ private boolean hideLinks; - public ItemViewPanel(String id, long itemId) { + /** + * Constructor + * + * @param id + * @param itemId + */ + public ItemViewPanel(String id, long itemId) { super(id); addComponents(getJtrac().loadItem(itemId)); - } + } - public ItemViewPanel(String id, final Item item, boolean hideLinks) { + /** + * Constructor + * + * @param id + * @param item + * @param hideLinks + */ + public ItemViewPanel(String id, final Item item, boolean hideLinks) { super(id); this.hideLinks = hideLinks; addComponents(item); } - private void addComponents(final Item item) { - + /** + * This method allows to add components (items). + * + * @param item The {@link Item} to add. + */ + private void addComponents(final Item item) { add(new Label("refId", new PropertyModel(item, "refId"))); add(new Link("relate") { public void onClick() { - // TODO choose specific space for search + /* + * TODO choose specific space for search + */ ItemSearch itemSearch = new ItemSearch(getPrincipal()); itemSearch.setRelatingItemRefId(item.getRefId()); setResponsePage(new ItemSearchFormPage(itemSearch)); } - }.setVisible(!hideLinks)); + }.setVisible(!hideLinks)); - if(item.getRelatedItems() != null) { - add(new ListView("relatedItems", new ArrayList(item.getRelatedItems())) { + if (item.getRelatedItems() != null) { + add(new ListView("relatedItems", new ArrayList(item.getRelatedItems())) { + /* (non-Javadoc) + * @see org.apache.wicket.markup.html.list.ListView#populateItem(org.apache.wicket.markup.html.list.ListItem) + */ protected void populateItem(ListItem listItem) { final ItemItem itemItem = (ItemItem) listItem.getModelObject(); String message = null; - if(itemItem.getType() == DUPLICATE_OF) { + + if (itemItem.getType() == DUPLICATE_OF) { message = localize("item_view.duplicateOf"); } else if (itemItem.getType() == DEPENDS_ON) { message = localize("item_view.dependsOn"); - } else if (itemItem.getType() == RELATED){ - message = localize("item_view.relatedTo"); + } else if (itemItem.getType() == RELATED) { + message = localize("item_view.relatedTo"); } + final String refId = itemItem.getRelatedItem().getRefId(); - if(hideLinks) { + if (hideLinks) { message = message + " " + refId; } + listItem.add(new Label("message", message)); Link link = new Link("link") { public void onClick() { setResponsePage(ItemViewPage.class, new PageParameters("0=" + refId)); } }; + link.add(new Label("refId", refId)); link.setVisible(!hideLinks); listItem.add(link); @@ -104,31 +133,41 @@ add(new WebMarkupContainer("relatedItems").setVisible(false)); } - if(item.getRelatingItems() != null) { - add(new ListView("relatingItems", new ArrayList(item.getRelatingItems())) { + if (item.getRelatingItems() != null) { + add(new ListView("relatingItems", new ArrayList(item.getRelatingItems())) { + /* (non-Javadoc) + * @see org.apache.wicket.markup.html.list.ListView#populateItem(org.apache.wicket.markup.html.list.ListItem) + */ protected void populateItem(ListItem listItem) { final ItemItem itemItem = (ItemItem) listItem.getModelObject(); - // this looks very similar to related items block above - // but the display strings could be different and in future handling of the - // inverse of the bidirectional link could be different as well + + /* + * This looks very similar to related items block above + * but the display strings could be different and in + * future handling of the inverse of the bidirectional + * link could be different as well. + */ String message = null; - if(itemItem.getType() == DUPLICATE_OF) { + if (itemItem.getType() == DUPLICATE_OF) { message = localize("item_view.duplicateOfThis"); } else if (itemItem.getType() == DEPENDS_ON) { message = localize("item_view.dependsOnThis"); - } else if (itemItem.getType() == RELATED){ - message = localize("item_view.relatedToThis"); + } else if (itemItem.getType() == RELATED) { + message = localize("item_view.relatedToThis"); } + final String refId = itemItem.getItem().getRefId(); - if(hideLinks) { + if (hideLinks) { message = refId + " " + message; - } + } + listItem.add(new Label("message", message)); Link link = new Link("link") { public void onClick() { setResponsePage(ItemViewPage.class, new PageParameters("0=" + refId)); } }; + link.add(new Label("refId", refId)); link.setVisible(!hideLinks); listItem.add(link); @@ -136,7 +175,7 @@ public void onClick() { setResponsePage(new ItemRelateRemovePage(item.getId(), itemItem)); } - }.setVisible(!hideLinks)); + }.setVisible(!hideLinks)); } }); } else { @@ -147,58 +186,72 @@ add(new Label("loggedBy", new PropertyModel(item, "loggedBy.name"))); add(new Label("assignedTo", new PropertyModel(item, "assignedTo.name"))); add(new Label("summary", new PropertyModel(item, "summary"))); - add(new Label("detail", ItemUtils.fixWhiteSpace(item.getDetail())).setEscapeModelStrings(false)); + add(new Label("detail", ItemUtils.fixWhiteSpace(item.getDetail())).setEscapeModelStrings(false)); final SimpleAttributeModifier sam = new SimpleAttributeModifier("class", "alt"); final Map<Field.Name, Field> fields = item.getSpace().getMetadata().getFields(); add(new ListView("fields", item.getSpace().getMetadata().getFieldOrder()) { + /* (non-Javadoc) + * @see org.apache.wicket.markup.html.list.ListView#populateItem(org.apache.wicket.markup.html.list.ListItem) + */ protected void populateItem(ListItem listItem) { - if(listItem.getIndex() % 2 == 0) { + if (listItem.getIndex() % 2 == 0) { listItem.add(sam); } + Field.Name fieldName = (Field.Name) listItem.getModelObject(); Field field = fields.get(fieldName); listItem.add(new Label("label", field.getLabel())); listItem.add(new Label("value", item.getCustomValue(fieldName))); - } + } }); final List<Field> editable = item.getSpace().getMetadata().getEditableFields(); + add(new ListView("labels", editable) { + /* (non-Javadoc) + * @see org.apache.wicket.markup.html.list.ListView#populateItem(org.apache.wicket.markup.html.list.ListItem) + */ protected void populateItem(ListItem listItem) { Field field = (Field) listItem.getModelObject(); listItem.add(new Label("label", field.getLabel())); - } + } }); - + if (item.getHistory() != null) { List<History> history = new ArrayList(item.getHistory()); add(new ListView("history", history) { + /* (non-Javadoc) + * @see org.apache.wicket.markup.html.list.ListView#populateItem(org.apache.wicket.markup.html.list.ListItem) + */ protected void populateItem(ListItem listItem) { - if(listItem.getIndex() % 2 != 0) { + if (listItem.getIndex() % 2 != 0) { listItem.add(sam); - } + } + final History h = (History) listItem.getModelObject(); listItem.add(new Label("loggedBy", new PropertyModel(h, "loggedBy.name"))); listItem.add(new Label("status", new PropertyModel(h, "statusValue"))); listItem.add(new Label("assignedTo", new PropertyModel(h, "assignedTo.name"))); - WebMarkupContainer comment = new WebMarkupContainer("comment"); + WebMarkupContainer comment = new WebMarkupContainer("comment"); comment.add(new AttachmentLinkPanel("attachment", h.getAttachment())); comment.add(new Label("comment", ItemUtils.fixWhiteSpace(h.getComment())).setEscapeModelStrings(false)); listItem.add(comment); listItem.add(new Label("timeStamp", DateUtils.formatTimeStamp(h.getTimeStamp()))); listItem.add(new ListView("fields", editable) { + /* (non-Javadoc) + * @see org.apache.wicket.markup.html.list.ListView#populateItem(org.apache.wicket.markup.html.list.ListItem) + */ protected void populateItem(ListItem listItem) { Field field = (Field) listItem.getModelObject(); listItem.add(new Label("field", h.getCustomValue(field.getName()))); - } + } }); - } - }); + } + }); } - } - -} + } // end method addComponents(Item) +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2011-10-27 19:59:56
|
Revision: 1371 http://j-trac.svn.sourceforge.net/j-trac/?rev=1371&view=rev Author: magog96 Date: 2011-10-27 19:59:49 +0000 (Thu, 27 Oct 2011) Log Message: ----------- -added JavaDoc comments -updated inline comments -reformatted source code as well as HTML code Modified Paths: -------------- trunk/jtrac/src/main/java/info/jtrac/wicket/CustomFieldsFormPanel.java trunk/jtrac/src/main/java/info/jtrac/wicket/ItemFormPage.html trunk/jtrac/src/main/java/info/jtrac/wicket/ItemFormPage.java Modified: trunk/jtrac/src/main/java/info/jtrac/wicket/CustomFieldsFormPanel.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/CustomFieldsFormPanel.java 2011-10-27 15:43:54 UTC (rev 1370) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/CustomFieldsFormPanel.java 2011-10-27 19:59:49 UTC (rev 1371) @@ -37,74 +37,113 @@ import org.apache.wicket.model.PropertyModel; /** - * panel for custom fields that can be reused in the ite-create / item-view forms + * This class is responsible for the panel of custom fields that + * can be reused in the item-create/item-view forms. */ -public class CustomFieldsFormPanel extends BasePanel { - +public class CustomFieldsFormPanel extends BasePanel { + /** + * Constructor + * + * @param id + * @param model + * @param space + */ public CustomFieldsFormPanel(String id, BoundCompoundPropertyModel model, Space space) { super(id); List<Field> fields = space.getMetadata().getFieldList(); addComponents(model, fields, true); - } + } + /** + * Constructor + * + * @param id + * @param model + * @param item + * @param user + */ public CustomFieldsFormPanel(String id, BoundCompoundPropertyModel model, Item item, User user) { super(id); List<Field> fields = item.getEditableFieldList(user); addComponents(model, fields, false); } + /** + * This method allows to add components (custom fields). + * + * @param model + * @param fields + * @param isEditMode + */ private void addComponents(final BoundCompoundPropertyModel model, List<Field> fields, final boolean isEditMode) { ListView listView = new ListView("fields", fields) { - protected void populateItem(ListItem listItem) { + protected void populateItem(ListItem listItem) { final Field field = (Field) listItem.getModelObject(); - boolean isRequired = isEditMode ? false : !field.isOptional(); + boolean isRequired = isEditMode ? false : !field.isOptional(); listItem.add(new Label("label", field.getLabel())); listItem.add(new Label("star", isRequired ? "*" : " ").setEscapeModelStrings(false)); - if (field.isDropDownType()) { + if (field.isDropDownType()) { Fragment f = new Fragment("field", "dropDown", CustomFieldsFormPanel.this); final Map<String, String> options = field.getOptions(); List<String> keys; // bound value - if(options != null) { - keys = new ArrayList(options.keySet()); + if (options != null) { + keys = new ArrayList(options.keySet()); } else { keys = new ArrayList<String>(); - } + } DropDownChoice choice = new DropDownChoice("field", keys, new IChoiceRenderer() { public Object getDisplayValue(Object o) { return options.get(o); }; + public String getIdValue(Object o, int i) { return o.toString(); }; }); - choice.setNullValid(true); - choice.setLabel(new Model(field.getLabel())); + choice.setNullValid(true); + choice.setLabel(new Model(field.getLabel())); choice.setRequired(isRequired); WebMarkupContainer border = new WebMarkupContainer("border"); f.add(border); border.add(new ErrorHighlighter(choice)); - border.add(model.bind(choice, field.getName().getText())); + border.add(model.bind(choice, field.getName().getText())); listItem.add(f); - } else if (field.isDatePickerType()) { - YuiCalendar calendar = new YuiCalendar("field", new PropertyModel(model, field.getName().getText()), isRequired); + } else if (field.isDatePickerType()) { + /* + * ====================================== + * Date picker + * ====================================== + */ + YuiCalendar calendar = new YuiCalendar("field", + new PropertyModel(model, field.getName().getText()), isRequired); listItem.add(calendar); calendar.setLabel(new Model(field.getLabel())); } else { + /* + * ====================================== + * Text field + * ====================================== + */ Fragment f = new Fragment("field", "textField", CustomFieldsFormPanel.this); TextField textField = new TextField("field"); + + /* + * Check if the field is used to display/edit + * Double values. + */ if (field.isDecimalNumberType()) { textField.setType(Double.class); } - textField.add(new ErrorHighlighter()); - textField.setRequired(isRequired); - textField.setLabel(new Model(field.getLabel())); + + textField.add(new ErrorHighlighter()); + textField.setRequired(isRequired); + textField.setLabel(new Model(field.getLabel())); f.add(model.bind(textField, field.getName().getText())); listItem.add(f); } } }; listView.setReuseItems(true); - add(listView); - } - -} + add(listView); + } // end method addComponents(...) +} \ No newline at end of file Modified: trunk/jtrac/src/main/java/info/jtrac/wicket/ItemFormPage.html =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/ItemFormPage.html 2011-10-27 15:43:54 UTC (rev 1370) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/ItemFormPage.html 2011-10-27 19:59:49 UTC (rev 1371) @@ -1,29 +1,29 @@ <html> - <body> - <wicket:extend> - <form wicket:id="form"> - <span wicket:id="feedback"></span> + <body> + <wicket:extend> + <form wicket:id="form"> + <span wicket:id="feedback"></span> <table class="bdr-collapse"> <tr> <td colspan="2"> <table class="jtrac"> - <tr> + <tr> <td class="label"> <wicket:message key="item_form.summary"/> <font color="red">*</font> - </td> + </td> <td> <input wicket:id="summary" style="width:49.7em" maxlength="255"/> - <input type="submit" wicket:id="delete" wicket:message="value:delete"/> + <input type="submit" wicket:id="delete" wicket:message="value:delete"/> </td> </tr> - <tr> + <tr> <td class="label"> <wicket:message key="item_form.detail"/> <font color="red">*</font> - </td> + </td> <td> - <textarea wicket:id="detail" rows="10" style="width:51em"></textarea> + <textarea wicket:id="detail" rows="10" style="width:51em"></textarea> </td> </tr> </table> @@ -33,16 +33,16 @@ <td> <table class="jtrac"> <span wicket:id="fields"></span> - <tr wicket:id="hideAssignedTo"> + <tr wicket:id="hideAssignedTo"> <td class="label"> <wicket:message key="item_form.assignTo"/> <font color="red">*</font> - </td> + </td> <td> <div wicket:id="border"><select wicket:id="assignedTo"/></div> </td> </tr> - <tr wicket:id="hideEditReason"> + <tr wicket:id="hideEditReason"> <td class="label"> <wicket:message key="item_form.editReason"/> <font color="red">*</font> @@ -50,13 +50,13 @@ <td> <textarea wicket:id="editReason" rows="5" cols="40"></textarea> </td> - </tr> + </tr> <tr> <td/> <td> - <input type="submit" wicket:message="value:submit"/> + <input type="submit" wicket:message="value:submit"/> <input type="checkbox" wicket:id="sendNotifications"/> - <wicket:message key="item_form.sendNotifications"/> + <wicket:message key="item_form.sendNotifications"/> </td> </tr> <tr> @@ -64,7 +64,7 @@ <a href="#" wicket:id="cancel"><img src="resources/cancel.gif" class="nav-link"/><wicket:message key="cancel"/></a> </td> </tr> - </table> + </table> </td> <td align="right" wicket:id="hideNotifyList"> <table class="jtrac"> @@ -82,11 +82,11 @@ <input wicket:id="file" size="15" type="file"/> </td> </tr> - </table> + </table> </td> - </tr> + </tr> </table> </form> </wicket:extend> </body> -</html> +</html> \ No newline at end of file Modified: trunk/jtrac/src/main/java/info/jtrac/wicket/ItemFormPage.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/ItemFormPage.java 2011-10-27 15:43:54 UTC (rev 1370) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/ItemFormPage.java 2011-10-27 19:59:49 UTC (rev 1371) @@ -49,48 +49,65 @@ /** * Create / Edit item form page */ -public class ItemFormPage extends BasePage { - - public ItemFormPage() { +public class ItemFormPage extends BasePage { + /** + * Default constructor + */ + public ItemFormPage() { Item item = new Item(); item.setSpace(getCurrentSpace()); - item.setStatus(State.NEW); + item.setStatus(State.NEW); add(new ItemForm("form", item)); } - public ItemFormPage(long itemId) { - Item item = getJtrac().loadItem(itemId); + /** + * Constructor with provided item id. + * + * @param itemId The + */ + public ItemFormPage(long itemId) { + Item item = getJtrac().loadItem(itemId); add(new ItemForm("form", item)); - } + } /** - * wicket form - */ + * Wicket form + */ private class ItemForm extends Form { - private JtracFeedbackMessageFilter filter; private FileUploadField fileUploadField = new FileUploadField("file"); private boolean editMode; - private int version; + private int version; + /** + * Constructor + * + * @param id + * @param item + */ public ItemForm(String id, final Item item) { super(id); setMultiPart(true); FeedbackPanel feedback = new FeedbackPanel("feedback"); filter = new JtracFeedbackMessageFilter(); feedback.setFilter(filter); - add(feedback); + add(feedback); version = item.getVersion(); - if(item.getId() > 0) { - editMode = true; + + if (item.getId() > 0) { + editMode = true; } + BoundCompoundPropertyModel model = null; - if(editMode) { - // this ensures that the model object is re-loaded as part of the - // form submission workflow before form binding and avoids - // hibernate lazy loading issues during the whole update transaction + if (editMode) { + /* + * This ensures that the model object is re-loaded as part + * of the form submission workflow before form binding and + * avoids hibernate lazy loading issues during the whole + * update transaction. + */ LoadableDetachableModel itemModel = new LoadableDetachableModel() { - protected Object load() { + protected Object load() { logger.debug("attaching existing item " + item.getId()); return getJtrac().loadItem(item.getId()); } @@ -99,8 +116,13 @@ } else { model = new BoundCompoundPropertyModel(item); } - setModel(model); - // summary ========================================================= + setModel(model); + + /* + * =================================================== + * Summary + * =================================================== + */ final TextField summaryField = new TextField("summary"); summaryField.setRequired(true); summaryField.add(new ErrorHighlighter()); @@ -108,58 +130,83 @@ add(summaryField); add(new HeaderContributor(new IHeaderContributor() { public void renderHead(IHeaderResponse response) { - response.renderOnLoadJavascript("document.getElementById('" + summaryField.getMarkupId() + "').focus()"); + response.renderOnLoadJavascript("document.getElementById('" + + summaryField.getMarkupId() + "').focus()"); } })); - // delete button =================================================== + + /* + * =================================================== + * Delete button + * =================================================== + */ Button delete = new Button("delete") { @Override public void onSubmit() { String heading = localize("item_delete.confirm"); String warning = localize("item_delete.line2"); - String line1 = localize("item_delete.line1"); - ConfirmPage confirm = new ConfirmPage(ItemFormPage.this, heading, warning, new String[] {line1}) { + String line1 = localize("item_delete.line1"); + ConfirmPage confirm = new ConfirmPage(ItemFormPage.this, heading, warning, new String[] { line1 }) { public void onConfirm() { // avoid lazy init problem getJtrac().removeItem(getJtrac().loadItem(item.getId())); ItemSearch itemSearch = JtracSession.get().getItemSearch(); - if(itemSearch != null) { + if (itemSearch != null) { setResponsePage(new ItemListPage(itemSearch)); } else { setResponsePage(DashboardPage.class); } - } + } }; - setResponsePage(confirm); + setResponsePage(confirm); } }; + delete.setDefaultFormProcessing(false); add(delete); - if(!editMode) { + if (!editMode) { delete.setVisible(false); } - // detail ========================================================== + + /* + * =================================================== + * Detail + * =================================================== + */ add(new TextArea("detail").setRequired(true).add(new ErrorHighlighter())); - // custom fields =================================================== - if(editMode) { + + /* + * =================================================== + * Custom fields + * =================================================== + */ + if (editMode) { add(new CustomFieldsFormPanel("fields", model, item.getSpace()).setRenderBodyOnly(true)); } else { add(new CustomFieldsFormPanel("fields", model, item, getPrincipal()).setRenderBodyOnly(true)); } - // hide some components if editing item + + /* + * Hide some components if editing item + */ WebMarkupContainer hideAssignedTo = new WebMarkupContainer("hideAssignedTo"); WebMarkupContainer hideNotifyList = new WebMarkupContainer("hideNotifyList"); WebMarkupContainer hideEditReason = new WebMarkupContainer("hideEditReason"); add(hideAssignedTo); add(hideNotifyList); add(hideEditReason); - if(editMode) { + if (editMode) { hideAssignedTo.setVisible(false); hideNotifyList.setVisible(false); hideEditReason.add(new TextArea("editReason").setRequired(true).add(new ErrorHighlighter())); } else { hideEditReason.setVisible(false); - // assigned to ================================================= + + /* + * =================================================== + * Assigned to + * =================================================== + */ Space space = item.getSpace(); List<UserSpaceRole> userSpaceRoles = getJtrac().findUserRolesForSpace(space.getId()); List<User> assignable = UserUtils.filterUsersAbleToTransitionFrom(userSpaceRoles, space, State.OPEN); @@ -167,69 +214,104 @@ public Object getDisplayValue(Object o) { return ((User) o).getName(); } + public String getIdValue(Object o, int i) { return ((User) o).getId() + ""; - } + } }); + choice.setNullValid(true); choice.setRequired(true); WebMarkupContainer border = new WebMarkupContainer("border"); border.add(choice); border.add(new ErrorHighlighter(choice)); hideAssignedTo.add(border); - // notify list ================================================= + + /* + * =================================================== + * Notify list + * =================================================== + */ List<ItemUser> choices = UserUtils.convertToItemUserList(userSpaceRoles); - ListMultipleChoice itemUsers = new JtracCheckBoxMultipleChoice("itemUsers", choices, new IChoiceRenderer() { - public Object getDisplayValue(Object o) { - return ((ItemUser) o).getUser().getName(); - } - public String getIdValue(Object o, int i) { - return ((ItemUser) o).getUser().getId() + ""; - } - }, true); + ListMultipleChoice itemUsers = new JtracCheckBoxMultipleChoice("itemUsers", choices, + new IChoiceRenderer() { + public Object getDisplayValue(Object o) { + return ((ItemUser) o).getUser().getName(); + } + + public String getIdValue(Object o, int i) { + return ((ItemUser) o).getUser().getId() + ""; + } + }, true); hideNotifyList.add(itemUsers); - // attachment ================================================== + + /* + * =================================================== + * Attachment + * =================================================== + */ hideNotifyList.add(fileUploadField); setMaxSize(Bytes.megabytes(getJtrac().getAttachmentMaxSizeInMb())); } - // send notifications ========================================== + + /* + * =================================================== + * Send notifications + * =================================================== + */ add(new CheckBox("sendNotifications")); - // cancel ========================================================== + + /* + * =================================================== + * Cancel + * =================================================== + */ add(new Link("cancel") { public void onClick() { setResponsePage(ItemViewPage.class, new PageParameters("0=" + item.getRefId())); - } - }.setVisible(editMode && JtracSession.get().getItemSearch() != null)); + } + }.setVisible(editMode && JtracSession.get().getItemSearch() != null)); } + /* (non-Javadoc) + * @see org.apache.wicket.markup.html.form.Form#validate() + */ @Override protected void validate() { - filter.reset(); - Item item = (Item) getModelObject(); - if(editMode && item.getVersion() != version) { - // user must have used back button after edit - error(localize("item_form.error.version")); - } - super.validate(); - } + filter.reset(); + Item item = (Item) getModelObject(); + if (editMode && item.getVersion() != version) { + /* + * User must have used back button after edit + */ + error(localize("item_form.error.version")); + } + super.validate(); + } + /* (non-Javadoc) + * @see org.apache.wicket.markup.html.form.Form#onSubmit() + */ @Override protected void onSubmit() { final FileUpload fileUpload = fileUploadField.getFileUpload(); - Item item = (Item) getModelObject(); - User user = getPrincipal(); - if(editMode) { - getJtrac().updateItem(item, user); + Item item = (Item) getModelObject(); + User user = getPrincipal(); + if (editMode) { + getJtrac().updateItem(item, user); } else { item.setLoggedBy(user); - item.setStatus(State.OPEN); - getJtrac().storeItem(item, fileUpload); - } - // on creating an item, clear any search filter (especially the related item) from session + item.setStatus(State.OPEN); + getJtrac().storeItem(item, fileUpload); + } + + /* + * On creating an item, clear any search filter (especially + * the related item) from session. + */ JtracSession.get().setItemSearch(null); setResponsePage(ItemViewPage.class, new PageParameters("0=" + item.getRefId())); } - } - -} + } // end inner class ItemForm +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2011-10-27 15:44:01
|
Revision: 1370 http://j-trac.svn.sourceforge.net/j-trac/?rev=1370&view=rev Author: magog96 Date: 2011-10-27 15:43:54 +0000 (Thu, 27 Oct 2011) Log Message: ----------- -added JavaDoc comments -updated inline comments -reformatted source code -added log output for failed login attempts (see LoginPage.java) Modified Paths: -------------- trunk/jtrac/src/main/java/info/jtrac/wicket/JtracApplication.java trunk/jtrac/src/main/java/info/jtrac/wicket/LoginPage.java Modified: trunk/jtrac/src/main/java/info/jtrac/wicket/JtracApplication.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/JtracApplication.java 2011-09-15 13:21:52 UTC (rev 1369) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/JtracApplication.java 2011-10-27 15:43:54 UTC (rev 1370) @@ -57,229 +57,348 @@ import org.springframework.beans.factory.NoSuchBeanDefinitionException; /** - * main wicket application for jtrac - * holds singleton service layer instance pulled from spring + * <p> + * Main Wicket application for jtrac. + * </p> + * <p> + * It holds singleton service layer instance pulled from Spring. + * </p> */ -public class JtracApplication extends WebApplication { - +public class JtracApplication extends WebApplication { + /** + * Logger object + */ private final static Logger logger = LoggerFactory.getLogger(JtracApplication.class); private Jtrac jtrac; - private ApplicationContext applicationContext; - private JtracCasProxyTicketValidator jtracCasProxyTicketValidator; + private ApplicationContext applicationContext; + private JtracCasProxyTicketValidator jtracCasProxyTicketValidator; public Jtrac getJtrac() { return jtrac; } - + public ApplicationContext getApplicationContext() { return applicationContext; } - // used only by CasLoginPage + /** + * This method will the login URL and is used only by CasLoginPage. + * + * @return Returns login URL. + */ public String getCasLoginUrl() { - if(jtracCasProxyTicketValidator == null) { + if (jtracCasProxyTicketValidator == null) { return null; } return jtracCasProxyTicketValidator.getLoginUrl(); } - // used only by logout link in HeaderPanel + /** + * This method will the logout URL and is used only by logout link + * in HeaderPanel. + * + * @return Returns logout URL. + */ public String getCasLogoutUrl() { - if(jtracCasProxyTicketValidator == null) { + if (jtracCasProxyTicketValidator == null) { return null; } return jtracCasProxyTicketValidator.getLogoutUrl(); - } + } + /** + * This method will return the main JtracApplication object. + * + * @return Returns JtracApplication object. + */ public static JtracApplication get() { return (JtracApplication) Application.get(); - } + } + /* (non-Javadoc) + * @see org.apache.wicket.protocol.http.WebApplication#init() + */ @Override public void init() { - super.init(); - // get hold of spring managed service layer (see BasePage, BasePanel etc for how it is used) + /* + * Get hold of spring managed service layer (see BasePage, BasePanel, + * etc. for how it is used). + */ ServletContext sc = getServletContext(); - applicationContext = WebApplicationContextUtils.getWebApplicationContext(sc); + applicationContext = WebApplicationContextUtils + .getWebApplicationContext(sc); jtrac = (Jtrac) applicationContext.getBean("jtrac"); - // check if acegi-cas authentication is being used, get reference to object to be used - // by wicket authentication to redirect to right pages for login / logout + /* + * Check if acegi-cas authentication is being used, get reference to + * object to be used by Wicket authentication to redirect to right + * pages for login/logout. + */ try { - jtracCasProxyTicketValidator = (JtracCasProxyTicketValidator) applicationContext.getBean("casProxyTicketValidator"); - logger.info("casProxyTicketValidator retrieved from application context: " + jtracCasProxyTicketValidator); - } catch(NoSuchBeanDefinitionException nsbde) { + jtracCasProxyTicketValidator = (JtracCasProxyTicketValidator) + applicationContext.getBean("casProxyTicketValidator"); + logger.info("casProxyTicketValidator retrieved from application " + + "context: " + jtracCasProxyTicketValidator); + } catch (NoSuchBeanDefinitionException nsbde) { logger.debug(nsbde.getMessage()); - logger.info("casProxyTicketValidator not found in application context, CAS single-sign-on is not being used"); - } + logger.info("casProxyTicketValidator not found in application " + + "context, CAS single-sign-on is not being used"); + } - // delegate wicket i18n support to spring i18n - getResourceSettings().addStringResourceLoader(new IStringResourceLoader() { - public String loadStringResource(Class clazz, String key, Locale locale, String style) { - try { - return applicationContext.getMessage(key, null, locale == null ? Session.get().getLocale() : locale); - } catch(Exception e) { - // for performance, wicket expects null instead of throwing an exception - // and wicket may try to re-resolve using prefixed variants of the key - return null; - } - } - public String loadStringResource(Component component, String key) { - String value = loadStringResource(null, key, component == null ? null : component.getLocale(), null); - if(logger.isDebugEnabled() && value == null) { - logger.debug("i18n failed for key: '" + key + "', component: " + component); - } - return value; - } - }); - - getSecuritySettings().setAuthorizationStrategy(new IAuthorizationStrategy() { - public boolean isActionAuthorized(Component c, Action a) { - return true; - } - public boolean isInstantiationAuthorized(Class clazz) { - if (BasePage.class.isAssignableFrom(clazz)) { - if (JtracSession.get().isAuthenticated()) { - return true; - } - if(jtracCasProxyTicketValidator != null) { - // attempt CAS authentication ========================== - logger.debug("checking if context contains CAS authentication"); - Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); - if(authentication != null && authentication.isAuthenticated()) { - logger.debug("security context contains CAS authentication, initializing session"); - JtracSession.get().setUser((User) authentication.getPrincipal()); - return true; + /* + * Delegate Wicket i18n support to spring i18n + */ + getResourceSettings().addStringResourceLoader( + new IStringResourceLoader() { + /* (non-Javadoc) + * @see org.apache.wicket.resource.loader.IStringResourceLoader#loadStringResource(java.lang.Class, java.lang.String, java.util.Locale, java.lang.String) + */ + public String loadStringResource(Class clazz, String key, + Locale locale, String style) { + try { + return applicationContext.getMessage(key, null, + locale == null ? Session.get().getLocale() : locale); + } catch (Exception e) { + /* + * For performance, Wicket expects null instead of + * throwing an exception and Wicket may try to + * re-resolve using prefixed variants of the key. + */ + return null; } } - // attempt remember-me auto login ========================== - if(attemptRememberMeAutoLogin()) { + + /* (non-Javadoc) + * @see org.apache.wicket.resource.loader.IStringResourceLoader#loadStringResource(org.apache.wicket.Component, java.lang.String) + */ + public String loadStringResource(Component component, + String key) { + String value = loadStringResource(null, key, + component == null ? null : component.getLocale(), null); + if (logger.isDebugEnabled() && value == null) { + logger.debug("i18n failed for key: '" + key + "', component: " + component); + } + return value; + } + }); + + getSecuritySettings().setAuthorizationStrategy( + new IAuthorizationStrategy() { + /* (non-Javadoc) + * @see org.apache.wicket.authorization.IAuthorizationStrategy#isActionAuthorized(org.apache.wicket.Component, org.apache.wicket.authorization.Action) + */ + public boolean isActionAuthorized(Component c, Action a) { return true; } - // attempt guest access if there are "public" spaces ======= - List<Space> spaces = getJtrac().findSpacesWhereGuestAllowed(); - if (spaces.size() > 0) { - logger.debug(spaces.size() + " public space(s) available, initializing guest user"); - User guestUser = new User(); - guestUser.setLoginName("guest"); - guestUser.setName("Guest"); - for (Space space : spaces) { - guestUser.addSpaceWithRole(space, Role.ROLE_GUEST); + + /* (non-Javadoc) + * @see org.apache.wicket.authorization.IAuthorizationStrategy#isInstantiationAuthorized(java.lang.Class) + */ + public boolean isInstantiationAuthorized(Class clazz) { + if (BasePage.class.isAssignableFrom(clazz)) { + if (JtracSession.get().isAuthenticated()) { + return true; + } + if (jtracCasProxyTicketValidator != null) { + /* + * ============================================ + * Attempt CAS authentication + * ============================================ + */ + logger.debug("checking if context contains CAS authentication"); + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + if (authentication != null && authentication.isAuthenticated()) { + logger.debug("security context contains CAS authentication, initializing session"); + JtracSession.get().setUser((User) authentication.getPrincipal()); + return true; + } + } + + /* + * ================================================ + * Attempt remember-me auto login + * ================================================ + */ + if (attemptRememberMeAutoLogin()) { + return true; + } + + /* + * ================================================= + * Attempt guest access if there are "public" spaces + * ================================================= + */ + List<Space> spaces = getJtrac().findSpacesWhereGuestAllowed(); + if (spaces.size() > 0) { + logger.debug(spaces.size() + + " public space(s) available, initializing guest user"); + User guestUser = new User(); + guestUser.setLoginName("guest"); + guestUser.setName("Guest"); + for (Space space : spaces) { + guestUser.addSpaceWithRole(space, Role.ROLE_GUEST); + } + + JtracSession.get().setUser(guestUser); + // and proceed + return true; + } + + /* + * Not authenticated, go to login page. + */ + logger.debug("not authenticated, forcing login, " + + "page requested was " + clazz.getName()); + if (jtracCasProxyTicketValidator != null) { + String serviceUrl = jtracCasProxyTicketValidator.getServiceProperties().getService(); + String loginUrl = jtracCasProxyTicketValidator.getLoginUrl(); + logger.debug("cas authentication: service URL: " + serviceUrl); + String redirectUrl = loginUrl + "?service=" + serviceUrl; + logger.debug("attempting to redirect to: " + redirectUrl); + throw new RestartResponseAtInterceptPageException( + new RedirectPage(redirectUrl)); + } else { + throw new RestartResponseAtInterceptPageException( + LoginPage.class); + } } - JtracSession.get().setUser(guestUser); - // and proceed return true; } - // not authenticated, go to login page - logger.debug("not authenticated, forcing login, page requested was " + clazz.getName()); - if(jtracCasProxyTicketValidator != null) { - String serviceUrl = jtracCasProxyTicketValidator.getServiceProperties().getService(); - String loginUrl = jtracCasProxyTicketValidator.getLoginUrl(); - logger.debug("cas authentication: service URL: " + serviceUrl); - String redirectUrl = loginUrl + "?service=" + serviceUrl; - logger.debug("attempting to redirect to: " + redirectUrl); - throw new RestartResponseAtInterceptPageException(new RedirectPage(redirectUrl)); - } else { - throw new RestartResponseAtInterceptPageException(LoginPage.class); - } - } - return true; - } - }); + }); - // friendly urls for selected pages - if(jtracCasProxyTicketValidator != null) { + /* + * Friendly URLs for selected pages + */ + if (jtracCasProxyTicketValidator != null) { mountBookmarkablePage("/login", CasLoginPage.class); - // this matches the value set in WEB-INF/applicationContext-acegi-cas.xml - mountBookmarkablePage("/cas/error", CasLoginErrorPage.class); + /* + * This matches the value set in: + * WEB-INF/applicationContext-acegi-cas.xml + */ + mountBookmarkablePage("/cas/error", CasLoginErrorPage.class); } else { mountBookmarkablePage("/login", LoginPage.class); - } + } + mountBookmarkablePage("/logout", LogoutPage.class); mountBookmarkablePage("/svn", SvnStatsPage.class); mountBookmarkablePage("/options", OptionsPage.class); - mountBookmarkablePage("/item/form", ItemFormPage.class); - // bookmarkable url for search and search results - mount(new QueryStringUrlCodingStrategy("/item/search", ItemSearchFormPage.class)); - mount(new QueryStringUrlCodingStrategy("/item/list", ItemListPage.class)); - // bookmarkable url for viewing items - mount(new IndexedParamUrlCodingStrategy("/item", ItemViewPage.class)); - } + mountBookmarkablePage("/item/form", ItemFormPage.class); + + /* + * Bookmarkable URL for search and search results + */ + mount(new QueryStringUrlCodingStrategy("/item/search", + ItemSearchFormPage.class)); + mount(new QueryStringUrlCodingStrategy("/item/list", ItemListPage.class)); + + /* + * Bookmarkable URL for viewing items + */ + mount(new IndexedParamUrlCodingStrategy("/item", ItemViewPage.class)); + } + /* (non-Javadoc) + * @see org.apache.wicket.protocol.http.WebApplication#newSession(org.apache.wicket.Request, org.apache.wicket.Response) + */ @Override - public JtracSession newSession(Request request, Response response) { - return new JtracSession(request); + public JtracSession newSession(Request request, Response response) { + return new JtracSession(request); } + /* (non-Javadoc) + * @see org.apache.wicket.protocol.http.WebApplication#newSessionStore() + */ @Override protected ISessionStore newSessionStore() { - if(getConfigurationType().equalsIgnoreCase(DEVELOPMENT)) { + if (getConfigurationType().equalsIgnoreCase(DEVELOPMENT)) { logger.warn("wicket development mode, using custom debug http session store"); - // the default second level cache session store does not play well with - // our custom reloading filter so we use a custom session store + + /* + * The default second level cache session store does not play well + * with our custom reloading filter so we use a custom session store. + */ return new DebugHttpSessionStore(this); } else { ISessionStore sessionStore = super.newSessionStore(); logger.info("wicket production mode, using: " + sessionStore); return sessionStore; } - - } + } + /* (non-Javadoc) + * @see org.apache.wicket.Application#getHomePage() + */ public Class<? extends Page> getHomePage() { return DashboardPage.class; - } + } - public User authenticate(String loginName, String password) { - UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(loginName, password); + /** + * The method handles the user authentication using the login name and + * password. + * + * @param loginName The login name of the user + * @param password The password of the user + * @return Returns the User object or null in case of an Exception. + */ + public User authenticate(String loginName, String password) { + UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken( + loginName, password); AuthenticationManager am = (AuthenticationManager) applicationContext.getBean("authenticationManager"); try { Authentication authentication = am.authenticate(token); return (User) authentication.getPrincipal(); - } catch(AuthenticationException ae) { + } catch (AuthenticationException ae) { logger.debug("acegi authentication failed: " + ae); return null; } } + /** + * This method will try to identify the user by using cookies and tries to + * auto login the user. + * + * @return Returns <code>true</code> on successful identification otherwise <code>false</code>. + */ private boolean attemptRememberMeAutoLogin() { logger.debug("checking cookies for remember-me auto login"); - Cookie[] cookies = ((WebRequest) RequestCycle.get().getRequest()).getCookies(); - if(cookies == null) { + Cookie[] cookies = ((WebRequest) RequestCycle.get().getRequest()) + .getCookies(); + if (cookies == null) { logger.debug("no cookies found"); return false; - } + } + for (Cookie c : cookies) { - if(logger.isDebugEnabled()) { + if (logger.isDebugEnabled()) { logger.debug("examining cookie: " + WebUtils.getDebugStringForCookie(c)); } if (!c.getName().equals("jtrac")) { continue; - } + } String value = c.getValue(); logger.debug("found jtrac cookie: " + value); - if(value == null) { + if (value == null) { continue; - } + } int index = value.indexOf(':'); - if(index == -1) { + if (index == -1) { continue; - } + } String loginName = value.substring(0, index); String encodedPassword = value.substring(index + 1); logger.debug("valid cookie, attempting authentication"); User user = (User) getJtrac().loadUserByUsername(loginName); if (encodedPassword.equals(user.getPassword())) { JtracSession.get().setUser(user); - logger.debug("remember me login success"); + logger.debug("remember me login success"); return true; - } - } + } + } // end for // no valid cookies were found return false; - } - -} + } +} \ No newline at end of file Modified: trunk/jtrac/src/main/java/info/jtrac/wicket/LoginPage.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/LoginPage.java 2011-09-15 13:21:52 UTC (rev 1369) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/LoginPage.java 2011-10-27 15:43:54 UTC (rev 1370) @@ -35,55 +35,108 @@ import org.slf4j.LoggerFactory; /** - * login page + * The JTrac login page. */ -public class LoginPage extends WebPage { +public class LoginPage extends WebPage { + /** + * Logger object + */ + private static final Logger logger = LoggerFactory.getLogger(LoginPage.class); - private static final Logger logger = LoggerFactory.getLogger(LoginPage.class); - + /** + * Default constructor + */ public LoginPage() { setVersioned(false); add(new IndividualHeadPanel().setRenderBodyOnly(true)); add(new Label("title", getLocalizer().getString("login.title", null))); add(new LoginForm("form")); String jtracVersion = JtracApplication.get().getJtrac().getReleaseVersion(); - add(new Label("version", jtracVersion)); + add(new Label("version", jtracVersion)); } /** - * wicket form - */ - private class LoginForm extends StatelessForm { + * Wicket form for the login (inner class) + */ + private class LoginForm extends StatelessForm { + /** + * The login name of the user. + */ + private String loginName; - private String loginName; + /** + * The password of the user. + */ private String password; + + /** + * The flag indicating if the user wants to be remembered or not. + */ private boolean rememberMe; - + + /** + * This method will return the login name of the user. + * + * @return The login name of the user. + */ public String getLoginName() { return loginName; } - + + /** + * This method allows to set the login name entered in the form. + * + * @param loginName The login name to set. + */ public void setLoginName(String loginName) { this.loginName = loginName; } - + + /** + * This method will return the password of the user. + * + * @return The password of the user. + */ public String getPassword() { return password; } - + + /** + * This method allows to set the password entered in the form. + * + * @param password The password to set. + */ public void setPassword(String password) { this.password = password; - } - + } + + /** + * This method will return the flag indicating if the user + * want's to be remembered as chosen on the form. + * + * @return The flag indicating if the user wants to be remembered + * (<code>true</code>) or not (<code>false</code>). + */ public boolean isRememberMe() { return rememberMe; } - + + /** + * This method allows to set the boolean flag to be remembered as + * checked on the form. + * + * @param rememberMe The boolean flag to set. + */ public void setRememberMe(boolean rememberMe) { this.rememberMe = rememberMe; - } + } - public LoginForm(String id) { + /** + * Constructor for the login form. + * + * @param id + */ + public LoginForm(String id) { super(id); add(new WebMarkupContainer("hide") { @Override @@ -91,7 +144,7 @@ return !LoginForm.this.hasError(); } }); - add(new FeedbackPanel("feedback")); + add(new FeedbackPanel("feedback")); setModel(new BoundCompoundPropertyModel(this)); final TextField loginNameField = new TextField("loginName"); loginNameField.setOutputMarkupId(true); @@ -100,7 +153,10 @@ passwordField.setRequired(false); passwordField.setOutputMarkupId(true); add(passwordField); - // intelligently set focus on the appropriate textbox + + /* + * Intelligently set focus on the appropriate textbox. + */ add(new HeaderContributor(new IHeaderContributor() { public void renderHead(IHeaderResponse response) { String markupId; @@ -108,43 +164,69 @@ markupId = loginNameField.getMarkupId(); } else { markupId = passwordField.getMarkupId(); - } + } response.renderOnLoadJavascript("document.getElementById('" + markupId + "').focus()"); } - })); + })); add(new CheckBox("rememberMe")); - - } - + } // end LoginForm(String) + + /** + * This method will process the login after the user hits the submit + * button to login. + */ @Override - protected void onSubmit() { + protected void onSubmit() { if(loginName == null || password == null) { - logger.debug("login failed - login name or password is null"); - error(getLocalizer().getString("login.error", null)); + logger.error("login failed - login name " + + (loginName!=null ? "is set (trimmed length=" + + loginName.trim().length()+")" : "is null") + + " and password " + + (password!=null ? "is set" : "is null") + "."); + error(getLocalizer().getString("login.error", null)); return; - } - User user = JtracApplication.get().authenticate(loginName, password); - if (user == null) { // login failed - error(getLocalizer().getString("login.error", null)); - } else { // login success - // remember me cookie - if(rememberMe) { - Cookie cookie = new Cookie("jtrac", loginName + ":" + JtracApplication.get().getJtrac().encodeClearText(password)); + } + + User user = JtracApplication.get().authenticate(loginName, password); + if (user == null) { + /* + * ================================ + * Login failed! + * ================================ + */ + logger.error("login failed - Authentication for login name '"+ + loginName + "' not successful"); + error(getLocalizer().getString("login.error", null)); + } else { + /* + * ================================ + * Login success! + * ================================ + */ + + /* + * Set Remember me cookie if checkbox is checked on page. + */ + if(rememberMe) { + Cookie cookie = new Cookie("jtrac", loginName + ":" + JtracApplication.get().getJtrac().encodeClearText(password)); cookie.setMaxAge(30 * 24 * 60 * 60); // 30 days in seconds String path = getWebRequestCycle().getWebRequest().getHttpServletRequest().getContextPath(); cookie.setPath(path); getWebRequestCycle().getWebResponse().addCookie(cookie); logger.debug("remember me requested, cookie added, " + WebUtils.getDebugStringForCookie(cookie)); } - // setup session with principal + + /* + * Setup session with principal + */ JtracSession.get().setUser(user); - // proceed to bookmarkable page or default dashboard + /* + * Proceed to bookmarkable page or default dashboard + */ if (!continueToOriginalDestination()) { setResponsePage(DashboardPage.class); - } - } - } - - } - + } + } + } // end onSubmit() + } // end inner class LoginForm } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2011-09-15 13:22:02
|
Revision: 1369 http://j-trac.svn.sourceforge.net/j-trac/?rev=1369&view=rev Author: magog96 Date: 2011-09-15 13:21:52 +0000 (Thu, 15 Sep 2011) Log Message: ----------- -added special form for password editing where the entered value is hidden (Note: The value is still visible in the list of configuration parameters) Modified Paths: -------------- trunk/jtrac/src/main/java/info/jtrac/wicket/ConfigFormPage.java trunk/jtrac/src/main/java/info/jtrac/wicket/ConfigListPage.java Added Paths: ----------- trunk/jtrac/src/main/java/info/jtrac/wicket/ConfigPasswordFormPage.html trunk/jtrac/src/main/java/info/jtrac/wicket/ConfigPasswordFormPage.java Modified: trunk/jtrac/src/main/java/info/jtrac/wicket/ConfigFormPage.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/ConfigFormPage.java 2011-09-15 11:42:42 UTC (rev 1368) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/ConfigFormPage.java 2011-09-15 13:21:52 UTC (rev 1369) @@ -27,7 +27,12 @@ * config value edit form */ public class ConfigFormPage extends BasePage { - + /** + * Constructor + * + * @param param + * @param value + */ public ConfigFormPage(String param, String value) { add(new ConfigForm("form", param, value)); } @@ -61,7 +66,6 @@ add(new Label("heading", localize("config." + param))); add(new Label("param", param)); - add(new TextField("value")); // cancel ========================================================== Modified: trunk/jtrac/src/main/java/info/jtrac/wicket/ConfigListPage.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/ConfigListPage.java 2011-09-15 11:42:42 UTC (rev 1368) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/ConfigListPage.java 2011-09-15 13:21:52 UTC (rev 1369) @@ -27,11 +27,17 @@ import org.apache.wicket.markup.html.list.ListView; /** - * config list + * This class is responsible to list all configuration parameters. + * It also declares which edit forms will be called to modify the + * configuration parameters. */ public class ConfigListPage extends BasePage { - - public ConfigListPage(final String selectedParam) { + /** + * Constructor + * + * @param selectedParam + */ + public ConfigListPage(final String selectedParam) { final Map<String, String> configMap = getJtrac().loadAllConfig(); @@ -43,22 +49,34 @@ protected void populateItem(ListItem listItem) { final String param = (String) listItem.getModelObject(); final String value = configMap.get(param); + if (param.equals(selectedParam)) { listItem.add(new SimpleAttributeModifier("class", "selected")); } else if(listItem.getIndex() % 2 == 1) { listItem.add(sam); - } + } + listItem.add(new Label("param", param)); listItem.add(new Label("value", value)); - listItem.add(new Link("link") { - public void onClick() { - setResponsePage(new ConfigFormPage(param, value)); - } - }); + + if (param.toLowerCase().indexOf("password") != -1) { + // Password value to be edited + listItem.add(new Link("link") { + public void onClick() { + setResponsePage(new ConfigPasswordFormPage(param, value)); + } + }); + } else { + // Normal text value to be edited + listItem.add(new Link("link") { + public void onClick() { + setResponsePage(new ConfigFormPage(param, value)); + } + }); + } listItem.add(new Label("description", localize("config." + param))); } }); } - -} +} \ No newline at end of file Added: trunk/jtrac/src/main/java/info/jtrac/wicket/ConfigPasswordFormPage.html =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/ConfigPasswordFormPage.html (rev 0) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/ConfigPasswordFormPage.html 2011-09-15 13:21:52 UTC (rev 1369) @@ -0,0 +1,20 @@ +<html> + <body> + <wicket:extend> + <form wicket:id="form"> + <div wicket:id="heading" class="heading"></div> + <table class="jtrac"> + <tr> + <td wicket:id="param" class="label"></td> + <td> + <input type="password" wicket:id="value"/> + <input type="submit" wicket:message="value:submit"/> + </td> + </tr> + </table> + <p/> + <a href="#" wicket:id="cancel"><img src="resources/cancel.gif" class="nav-link"/><wicket:message key="cancel"/></a> + </form> + </wicket:extend> + </body> +</html> \ No newline at end of file Property changes on: trunk/jtrac/src/main/java/info/jtrac/wicket/ConfigPasswordFormPage.html ___________________________________________________________________ Added: svn:mime-type + text/plain Added: trunk/jtrac/src/main/java/info/jtrac/wicket/ConfigPasswordFormPage.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/ConfigPasswordFormPage.java (rev 0) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/ConfigPasswordFormPage.java 2011-09-15 13:21:52 UTC (rev 1369) @@ -0,0 +1,85 @@ +/* + * Copyright 2002-2005 the original author or authors. + * + * Licensed 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. + */ + +package info.jtrac.wicket; + +import info.jtrac.domain.Config; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.form.Form; +import org.apache.wicket.markup.html.form.PasswordTextField; +import org.apache.wicket.markup.html.link.Link; +import org.apache.wicket.model.BoundCompoundPropertyModel; + +/** + * config value edit form + */ +public class ConfigPasswordFormPage extends BasePage { + /** + * Constructor + * + * @param param + * @param value + */ + public ConfigPasswordFormPage(String param, String value) { + add(new ConfigPasswordForm("form", param, value)); + } + + /** + * wicket form + */ + private class ConfigPasswordForm extends Form { + + private String param; + + private String value; + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public ConfigPasswordForm(String id, final String param, final String value) { + + super(id); + + this.param = param; + this.value = value; + + final BoundCompoundPropertyModel model = new BoundCompoundPropertyModel(this); + setModel(model); + + add(new Label("heading", localize("config." + param))); + add(new Label("param", param)); + add(new PasswordTextField("value")); + + // cancel ========================================================== + add(new Link("cancel") { + public void onClick() { + setResponsePage(new ConfigListPage(param)); + } + }); + } + + @Override + protected void onSubmit() { + getJtrac().storeConfig(new Config(param, value)); + setResponsePage(new ConfigListPage(param)); + } + } +} \ No newline at end of file Property changes on: trunk/jtrac/src/main/java/info/jtrac/wicket/ConfigPasswordFormPage.java ___________________________________________________________________ Added: svn:mime-type + text/plain This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2011-09-15 11:42:48
|
Revision: 1368 http://j-trac.svn.sourceforge.net/j-trac/?rev=1368&view=rev Author: magog96 Date: 2011-09-15 11:42:42 +0000 (Thu, 15 Sep 2011) Log Message: ----------- -minor indention changes (removed spaces at line ends) Modified Paths: -------------- trunk/jtrac/src/main/java/info/jtrac/wicket/ConfigFormPage.html trunk/jtrac/src/main/java/info/jtrac/wicket/ConfigFormPage.java Modified: trunk/jtrac/src/main/java/info/jtrac/wicket/ConfigFormPage.html =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/ConfigFormPage.html 2011-05-18 13:45:20 UTC (rev 1367) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/ConfigFormPage.html 2011-09-15 11:42:42 UTC (rev 1368) @@ -5,16 +5,16 @@ <div wicket:id="heading" class="heading"></div> <table class="jtrac"> <tr> - <td wicket:id="param" class="label"></td> - <td> + <td wicket:id="param" class="label"></td> + <td> <input wicket:id="value"/> - <input type="submit" wicket:message="value:submit"/> + <input type="submit" wicket:message="value:submit"/> </td> - </tr> + </tr> </table> <p/> <a href="#" wicket:id="cancel"><img src="resources/cancel.gif" class="nav-link"/><wicket:message key="cancel"/></a> </form> </wicket:extend> </body> -</html> +</html> \ No newline at end of file Modified: trunk/jtrac/src/main/java/info/jtrac/wicket/ConfigFormPage.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/ConfigFormPage.java 2011-05-18 13:45:20 UTC (rev 1367) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/ConfigFormPage.java 2011-09-15 11:42:42 UTC (rev 1368) @@ -26,32 +26,32 @@ /** * config value edit form */ -public class ConfigFormPage extends BasePage { +public class ConfigFormPage extends BasePage { - public ConfigFormPage(String param, String value) { + public ConfigFormPage(String param, String value) { add(new ConfigForm("form", param, value)); } /** * wicket form */ - private class ConfigForm extends Form { + private class ConfigForm extends Form { private String param; private String value; - + public String getValue() { return value; } - + public void setValue(String value) { this.value = value; - } + } public ConfigForm(String id, final String param, final String value) { - super(id); + super(id); this.param = param; this.value = value; @@ -61,23 +61,21 @@ add(new Label("heading", localize("config." + param))); add(new Label("param", param)); - + add(new TextField("value")); // cancel ========================================================== add(new Link("cancel") { public void onClick() { setResponsePage(new ConfigListPage(param)); - } - }); + } + }); } - + @Override - protected void onSubmit() { + protected void onSubmit() { getJtrac().storeConfig(new Config(param, value)); setResponsePage(new ConfigListPage(param)); - } - - } - -} + } + } +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2011-05-18 13:45:31
|
Revision: 1367 http://j-trac.svn.sourceforge.net/j-trac/?rev=1367&view=rev Author: magog96 Date: 2011-05-18 13:45:20 +0000 (Wed, 18 May 2011) Log Message: ----------- -updated JavaDoc comments Modified Paths: -------------- trunk/jtrac/src/test/java/info/jtrac/test/SingleMethodRunnerTestCase.java Modified: trunk/jtrac/src/test/java/info/jtrac/test/SingleMethodRunnerTestCase.java =================================================================== --- trunk/jtrac/src/test/java/info/jtrac/test/SingleMethodRunnerTestCase.java 2011-04-13 10:42:42 UTC (rev 1366) +++ trunk/jtrac/src/test/java/info/jtrac/test/SingleMethodRunnerTestCase.java 2011-05-18 13:45:20 UTC (rev 1367) @@ -6,17 +6,23 @@ import junit.framework.TestSuite; /** - * development convenience, run only a single method in test case - * since NetBeans does not support this at the moment + * This class is for development convenience and runs only a single + * method in test case since NetBeans does not support this at the moment. */ -public class SingleMethodRunnerTestCase extends TestCase { - +public class SingleMethodRunnerTestCase extends TestCase { + /** + * This method creates a TestSuite and adds a test + * for a specified method (given as System property: + * <code>method.name</code>). + * + * @return testSuite The TestSuite containing the test for the specified method. + * @throws Exception + */ public static Test suite() throws Exception { - TestSuite s = new TestSuite(); - String name = System.getProperty("method.name"); + TestSuite testSuite = new TestSuite(); + String name = System.getProperty("method.name"); Test test = (Test) new JtracTest(name); - s.addTest(test); - return s; - } - -} + testSuite.addTest(test); + return testSuite; + } +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2011-04-13 10:42:53
|
Revision: 1366 http://j-trac.svn.sourceforge.net/j-trac/?rev=1366&view=rev Author: magog96 Date: 2011-04-13 10:42:42 +0000 (Wed, 13 Apr 2011) Log Message: ----------- -minor indention changes (removed spaces at line ends) Modified Paths: -------------- trunk/jtrac/src/main/java/info/jtrac/util/ExcelUtils.java Modified: trunk/jtrac/src/main/java/info/jtrac/util/ExcelUtils.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/util/ExcelUtils.java 2010-12-25 16:46:20 UTC (rev 1365) +++ trunk/jtrac/src/main/java/info/jtrac/util/ExcelUtils.java 2011-04-13 10:42:42 UTC (rev 1366) @@ -23,8 +23,6 @@ import info.jtrac.domain.History; import info.jtrac.domain.ItemSearch; -import static info.jtrac.domain.ColumnHeading.Name.*; - import java.util.Date; import java.util.List; import java.util.Map; @@ -37,10 +35,9 @@ import org.apache.poi.hssf.usermodel.HSSFWorkbook; /** - * Excel Sheet generation helper + * Excel Sheet generation helper utility */ public class ExcelUtils { - private HSSFSheet sheet; private List<AbstractItem> items; private ItemSearch itemSearch; @@ -99,7 +96,7 @@ } HSSFCell cell = getCell(row, col); cell.setCellValue(value); - } + } private void setHeader(int row, int col, String text) { HSSFCell cell = getCell(row, col); @@ -108,8 +105,8 @@ cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(text); } - - public HSSFWorkbook exportToExcel(Map<Name, String> localizedLabels) { + + public HSSFWorkbook exportToExcel(Map<Name, String> localizedLabels) { boolean showHistory = itemSearch.isShowHistory(); List<ColumnHeading> columnHeadings = itemSearch.getColumnHeadingsToRender(); @@ -124,7 +121,8 @@ // iterate over list for(AbstractItem item : items) { - row++; col = 0; + row++; + col = 0; for(ColumnHeading ch : columnHeadings) { if(ch.isField()) { Field field = ch.getField(); @@ -141,14 +139,14 @@ } else { switch(ch.getName()) { case ID: - if (showHistory) { + if (showHistory) { int index = ((History) item).getIndex(); if (index > 0) { setText(row, col++, item.getRefId() + " (" + index + ")"); } else { setText(row, col++, item.getRefId()); } - } else { + } else { setText(row, col++, item.getRefId()); } break; @@ -183,12 +181,11 @@ setText(row, col++, item.getSpace().getName()); break; default: - throw new RuntimeException("Unexpected name: '" + ch.getName() + "'"); + throw new RuntimeException("Unexpected name: '" + ch.getName() + "'"); } } } } return wb; } - -} +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2010-12-25 16:46:26
|
Revision: 1365 http://j-trac.svn.sourceforge.net/j-trac/?rev=1365&view=rev Author: magog96 Date: 2010-12-25 16:46:20 +0000 (Sat, 25 Dec 2010) Log Message: ----------- -Added and completed JavaDoc documentation (Role and State classes) Modified Paths: -------------- trunk/jtrac/src/main/java/info/jtrac/domain/Role.java trunk/jtrac/src/main/java/info/jtrac/domain/State.java Modified: trunk/jtrac/src/main/java/info/jtrac/domain/Role.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/domain/Role.java 2010-12-19 20:29:16 UTC (rev 1364) +++ trunk/jtrac/src/main/java/info/jtrac/domain/Role.java 2010-12-25 16:46:20 UTC (rev 1365) @@ -23,14 +23,19 @@ import java.io.Serializable; import java.util.HashMap; import java.util.Map; + import org.dom4j.Element; /** - * In addition to definition of custom fields, the Metadata - * for a Space may contain a bunch of Role definitions as well. - * Roles do the following - * - define the State Transitions possible (i.e. from status --> to status) - * - for each State (from status) define the access permissions that this Role has per Field + * <p> + * In addition to the definition of custom fields, the {@link Metadata} + * for a {@link Space} may contain a bunch of Role definitions as well. + * </p> + * Roles do the following: + * <ul> + * <li>define the {@link State} Transitions possible (i.e. from status --> to status)</li> + * <li>for each {@link State} (from status) define the access permissions that this Role has per field</li> + * </ul> */ public class Role implements Serializable { /** @@ -38,28 +43,60 @@ */ private static final long serialVersionUID = 3661382262397738228L; + /** + * The name of the role. + */ private String name; + + /** + * The description of this role. + */ private String description; + + /** + * A {@link Map} of states assigned to this role. + */ private Map<Integer, State> states = new HashMap<Integer, State>(); + /** + * The predefined admin role. + */ public static final String ROLE_ADMIN = "ROLE_ADMIN"; + + /** + * The predefined guest role. + */ public static final String ROLE_GUEST = "ROLE_GUEST"; + /** + * This constructor will set the {@link #name} of the role. + * + * @param name The name of the role. + */ public Role(String name) { this.name = name; } - public Role(Element e) { - name = e.attributeValue(NAME); + /** + * This constructor will read the name of the role from the given + * {@link Element} attribute and then read all {@link State} elements + * to add them to the map of {@link #states}. + * + * @param element The {@link Element} to read and process. + */ + public Role(Element element) { + this.name = element.attributeValue(NAME); - for (Object o : e.elements(STATE)) { + for (Object o : element.elements(STATE)) { State state = new State((Element) o); states.put(state.getStatus(), state); - } // end for + } // end for each } /** - * Append this object onto an existing XML document. + * This method will append this object to an existing XML document. + * + * @param parent The parent to apply this role to. */ public void addAsChildOf(Element parent) { Element e = parent.addElement(ROLE); @@ -67,8 +104,10 @@ } /** - * Marshal this object into a fresh new XML element. - * */ + * This method will marshal this object into a fresh new XML element. + * + * @return Returns the role as XML {@link Element}. + */ public Element getAsElement() { Element e = XmlUtils.getNewElement(ROLE); copyTo(e); @@ -81,12 +120,12 @@ * @param element The {@link Element} object to append. */ private void copyTo(Element element) { - // appending empty strings to create new objects for "clone" support + // Appending empty strings to create new objects for "clone" support. element.addAttribute(NAME, name + ""); for (State state : states.values()) { state.addAsChildOf(element); - } // end for + } // end for each } /** @@ -115,7 +154,7 @@ /** * This method is used to verify if the given roleKey matches one of the - * reserved roles (system defined roles). + * reserved roles (predefined system roles). * * @param roleKey The roleKey string to check. * @return Returns <code>true</code> if the roleKey matches the one of the @@ -126,83 +165,98 @@ } /** + * This method allows to add a {@link State} to the map of {@link #states}. * - * @param state + * @param state The {@link State} to add to the map. */ public void add(State state) { states.put(state.getStatus(), state); } /** + * This method allows to remove the specified state id from the map of + * {@link #states}. * - * @param stateId + * @param stateId The state id to remove from the map of {@link #states}. */ public void removeState(int stateId) { states.remove(stateId); - for(State s : states.values()) { + for (State s : states.values()) { s.removeTransition(stateId); - } + } // end for each } /** + * This method will return the information if the given state key has one + * or more transitions to other States. * - * @param stateKey - * @return + * @param stateKey The state key to check. + * @return Returns <code>true</code> if there are one or more transitions + * to other states, otherwise <code>false</code>. */ public boolean hasTransitionsFromState(int stateKey) { return states.get(stateKey).getTransitions().size() > 0; } /** + * This method returns the map of {@link #states}. * - * @return + * @return Returns {@link #states}. */ public Map<Integer, State> getStates() { return states; } /** + * This method allow to store a map of {@link #states}. * - * @param states + * @param states The map of {@link #states} to store. */ public void setStates(Map<Integer, State> states) { this.states = states; } /** + * This method will return the {@link #description} of this role. * - * @return + * @return The {@link #description} or <code>null</code>. */ public String getDescription() { return description; } /** + * This method allows to store the {@link #description} of this role. * - * @param description + * @param description The {@link #description} of this role. */ public void setDescription(String description) { this.description = description; } /** + * This method will return the {@link #name} of this role. * - * @return + * @return The {@link #name} of this role. */ public String getName() { return name; } /** + * This method allows to store the {@link #name} of this role. * - * @param name + * @param name The {@link #name} of this role. */ public void setName(String name) { this.name = name; } /** + * This method overrides the default {@link Object#toString()} method to + * return the string representation of this object. * + * @return Returns a string representation of the object. */ @Override public String toString() { Modified: trunk/jtrac/src/main/java/info/jtrac/domain/State.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/domain/State.java 2010-12-19 20:29:16 UTC (rev 1364) +++ trunk/jtrac/src/main/java/info/jtrac/domain/State.java 2010-12-25 16:46:20 UTC (rev 1365) @@ -27,139 +27,263 @@ import java.util.HashMap; import java.util.Map; import java.util.Set; + import org.dom4j.Element; /** - * State as in "State Transition" - * holds a set of possible future states to transition to - * also holds a map of [ field name = integer "mask" ] - * to represent permissions (view or edit) that the role owning this state - * has for each field for an item which is in this particular state - * - * For example, consider a state FOO and a role BAR. - * When a user with role BAR views an item that is having the status FOO: - * ie. when item.status == FOO.status, the fields that can be viewed on screen - * will be the entries in FOO.fields where the value == MASK_READONLY (or 1) + * <p> + * State as in "State Transition" holds a set of possible future states to + * transition. It also holds a map of <code>[field name = integer "mask"]</code> + * to represent permissions (view or edit) that the {@link Role} owning this + * state has for each field for an item which is in this particular state. + * </p> + * <p> + * For example, consider a state FOO and a role BAR.<br /> + * When a {@link User} with {@link Role} BAR views an item that is having the + * status FOO: + * ie. when <code>item.status == FOO.status</code>, the fields that can be viewed on screen + * will be the entries in FOO.fields where the value == {@link #MASK_READONLY} (1) + * </p> */ public class State implements Serializable { + /** + * Generated UID + */ + private static final long serialVersionUID = -6321200313541210811L; + /** + * The status of the state. + */ private int status; + + /** + * The {@link Set} of transitions to other {@link State} objects. + */ private Set<Integer> transitions = new HashSet<Integer>(); + + /** + * The {@link Map} of {@link Field} objects. + */ private Map<Field.Name, Integer> fields = new HashMap<Field.Name, Integer>(); + /** + * The predefined NEW state. + */ public static final int NEW = 0; + + /** + * The predefined OPEN state. + */ public static final int OPEN = 1; + + /** + * The predefined CLOSED state. + */ public static final int CLOSED = 99; + /** + * The predefined HIDDEN mask state. + */ public static final int MASK_HIDDEN = 0; public static final int MASK_READONLY = 1; public static final int MASK_OPTIONAL = 2; public static final int MASK_MANDATORY = 3; + /** + * Default empty constructor. + */ public State() { - // zero arg constructor } - public State(int s) { - this.status = s; + /** + * This constructor will set the {@link #status} of this state. + * + * @param status The status of the state. + */ + public State(int status) { + this.status = status; } - public State(Element e) { - this.status = Integer.parseInt(e.attributeValue(STATUS)); - for (Object o : e.elements(TRANSITION)) { + /** + * This constructor will read the status of the state from the given + * {@link Element} attribute. Then all Transitions elements are read + * to add them to the map of {@link #transitions}. Finally all Field + * elements are read to add them to the map of {@link #fields}. + * + * @param element The {@link Element} to read and process. + */ + public State(Element element) { + this.status = Integer.parseInt(element.attributeValue(STATUS)); + + for (Object o : element.elements(TRANSITION)) { Element t = (Element) o; transitions.add(new Integer(t.attributeValue(STATUS))); - } - for (Object o : e.elements(FIELD)) { + } // end for each + + for (Object o : element.elements(FIELD)) { Element f = (Element) o; String fieldName = f.attributeValue(NAME); fields.put(Field.convertToName(fieldName), new Integer(f.attributeValue(MASK))); - } + } // end for each } - /* append this object onto an existing XML document */ + /** + * This method will append this object to an existing XML document. + * + * @param parent The parent to apply this state to. + */ public void addAsChildOf(Element parent) { Element e = parent.addElement(STATE); copyTo(e); } - /* marshal this object into a fresh new XML Element */ + /** + * This method will marshal this object into a fresh new XML element. + * + * @return Returns the state as XML {@link Element}. + */ public Element getAsElement() { Element e = XmlUtils.getNewElement(STATE); copyTo(e); return e; } - /* copy object values into an existing XML Element */ - private void copyTo(Element e) { - // appending empty strings to create new objects for "clone" support - e.addAttribute(STATUS, status + ""); - for (Integer toStatus : transitions) { - Element t = e.addElement(TRANSITION); + /** + * Copy object values into an existing XML element. + * + * @param element The {@link Element} object to append. + */ + private void copyTo(Element element) { + // Appending empty strings to create new objects for "clone" support + element.addAttribute(STATUS, status + ""); + + for (Integer toStatus : transitions) { + Element t = element.addElement(TRANSITION); t.addAttribute(STATUS, toStatus + ""); - } - for (Map.Entry<Field.Name, Integer> entry : fields.entrySet()) { - Element f = e.addElement(FIELD); + } // end for each + + for (Map.Entry<Field.Name, Integer> entry : fields.entrySet()) { + Element f = element.addElement(FIELD); f.addAttribute(NAME, entry.getKey() + ""); f.addAttribute(MASK, entry.getValue() + ""); - } + } // end for each } - //======================================================================= - + /** + * This method allows to add a {@link State} to the map of {@link #fields}. + * + * @param fieldNames The {@link Collection} of {@link Field.Name} objects + * to add to the map. + */ public void add(Collection<Field.Name> fieldNames) { for (Field.Name fieldName : fieldNames) { add(fieldName); - } - } + } // end for each + } + /** + * This method allows to add a {@link State} to the map of {@link #fields}. + * + * @param fieldName The {@link Field.Name} to add to the map. + */ public void add(Field.Name fieldName) { int mask = MASK_READONLY; - // for NEW states, normally all Fields on the Item are editable + // For NEW states, normally all Fields on the Item are editable if (status == NEW) { mask = MASK_MANDATORY; } fields.put(fieldName, mask); } + /** + * This method allows to remove the specified field name from the map of + * {@link #fields}. + * + * @param fieldName The field name to remove from the map of {@link #fields}. + */ public void remove(Field.Name fieldName) { fields.remove(fieldName); } + /** + * This method allows to add a transition to the set of {@link #transitions}. + * + * @param toStatus The transition to add to the set. + */ public void addTransition(int toStatus) { transitions.add(toStatus); } + /** + * This method allows to remove the specified transition from the set of + * {@link #transitions}. + * + * @param toStatus The transition to remove from the set of {@link #transitions}. + */ public void removeTransition(int toStatus) { transitions.remove(toStatus); - } + } - //======================================================================= - + /** + * This method returns the map of {@link #fields}. + * + * @return Returns {@link #fields}. + */ public Map<Field.Name, Integer> getFields() { return fields; } - + + /** + * This method allow to store a map of {@link #fields}. + * + * @param fields The map of {@link #fields} to store. + */ public void setFields(Map<Field.Name, Integer> fields) { this.fields = fields; } - + + /** + * This method returns the {@link #status} of the state. + * + * @return Returns {@link #status}. + */ public int getStatus() { return status; } - + + /** + * This method allows to store the {@link #status} of the state. + * + * @param status The {@link #status} of the state. + */ public void setStatus(int status) { this.status = status; } + /** + * This method returns the set of {@link #transitions}. + * + * @return Returns {@link #transitions}. + */ public Set<Integer> getTransitions() { return transitions; } - + + /** + * This method allow to store a set of {@link #transitions}. + * + * @param fields The set of {@link #transitions} to store. + */ public void setTransitions(Set<Integer> transitions) { this.transitions = transitions; } + /** + * This method overrides the default {@link Object#toString()} method to + * return the string representation of this object. + * + * @return Returns a string representation of the object. + */ @Override public String toString() { StringBuffer sb = new StringBuffer(); @@ -169,5 +293,4 @@ sb.append("]"); return sb.toString(); } - } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |