Skip to content

Commit 0b1827d

Browse files
committed
0.4.0 リリース
1 parent 3ad0c6a commit 0b1827d

File tree

69 files changed

+2787
-407
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+2787
-407
lines changed

README.md

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,26 @@
22

33
===============
44

5+
### Free Knowledge Management System
6+
7+
8+
#### Live Demo
9+
- https://support-project.org/knowledge/index
10+
- Demo users
11+
- [id/password] user1 / user1
12+
- [id/password] user2 / user2
13+
- [id/password] user3 / user3
14+
15+
16+
#### Project website
17+
- https://support-project.org/knowledge_info/index
18+
19+
520
#### 概要
621
- Knowledgeは、フリーの情報共有サービスです。
722
- 社内などで閉じた情報の管理が出来ます。
823

24+
925
#### 特徴
1026
- Markdown記法で情報登録
1127
- 記事のタイトル/本文を全文検索で目的の情報を探せます
@@ -16,16 +32,6 @@
1632
- 添付ファイルの中身でも検索できます
1733
- サービスのファイル(war)を置くだけの簡単デプロイ
1834

19-
#### Project website
20-
- https://support-project.org/knowledge_info/index
21-
22-
23-
#### Live Demo
24-
- https://support-project.org/knowledge_demo/index
25-
- デモ用のユーザ
26-
- [id/password] user1 / user1
27-
- [id/password] user2 / user2
28-
- [id/password] user3 / user3
2935

3036
#### サービスのデプロイ方法
3137
- Tomcat 7.0 以降をインストール
@@ -35,8 +41,12 @@
3541
- Tomcatのwebappsディレクトリに、knowledge.warを置く
3642
- warが配備され使えるようになります
3743

38-
#### アプリケーションのデータ
44+
45+
#### アプリケーションのデータ(バックアップ)
3946
- Tomcatの起動ユーザの、ホームディレクトリに「.knowledge」というフォルダを作成し、その中にデータを格納します
4047
- データのバックアップは、このディレクトリをコピーしておくことで可能です
4148
- Linuxなどでは、Tomcat起動ユーザで上記のディレクトリにアクセス出来るように、権限を設定してください
4249

50+
51+
52+

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<groupId>org.support-project</groupId>
55
<artifactId>knowledge</artifactId>
66
<packaging>war</packaging>
7-
<version>0.3.4</version>
7+
<version>0.4.0</version>
88
<name>webapp for knowledge</name>
99
<url>https://support-project.org/</url>
1010

@@ -17,7 +17,7 @@
1717
<dependency>
1818
<groupId>org.support-project</groupId>
1919
<artifactId>web</artifactId>
20-
<version>0.3.4</version>
20+
<version>0.4.0</version>
2121
</dependency>
2222

2323
<dependency>

src/main/java/org/support/project/knowledge/config/SystemConfig.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,4 @@ public class SystemConfig {
2323
public static final String USER_ADD_NOTIFY_OFF = "OFF";
2424

2525

26-
2726
}

src/main/java/org/support/project/knowledge/control/Control.java

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,14 @@
1111
import org.owasp.validator.html.PolicyException;
1212
import org.owasp.validator.html.ScanException;
1313
import org.support.project.common.bean.ValidateError;
14+
import org.support.project.common.config.Resources;
1415
import org.support.project.common.log.Log;
1516
import org.support.project.common.log.LogFactory;
1617
import org.support.project.common.log.LogLevel;
1718
import org.support.project.common.util.HtmlUtils;
1819
import org.support.project.di.DI;
1920
import org.support.project.di.Instance;
21+
import org.support.project.web.common.HttpUtil;
2022
import org.support.project.web.util.JspUtil;
2123

2224
@DI(instance=Instance.Prototype)
@@ -49,20 +51,33 @@ public void setRequest(HttpServletRequest request) {
4951
request.setAttribute(MSG_WARN, warns);
5052
request.setAttribute(MSG_ERROR, errors);
5153
}
54+
55+
protected String getResource(String key) {
56+
Resources resources = Resources.getInstance(HttpUtil.getLocale(getRequest()));
57+
return resources.getResource(key);
58+
}
5259

53-
protected void addMsgInfo(String msg) {
60+
protected void addMsgInfo(String key, String... params) {
61+
Resources resources = Resources.getInstance(HttpUtil.getLocale(getRequest()));
62+
String msg = resources.getResource(key, params);
5463
infos.add(HtmlUtils.escapeHTML(msg));
5564
}
5665

57-
protected void addMsgSuccess(String msg) {
66+
protected void addMsgSuccess(String key, String... params) {
67+
Resources resources = Resources.getInstance(HttpUtil.getLocale(getRequest()));
68+
String msg = resources.getResource(key, params);
5869
successes.add(HtmlUtils.escapeHTML(msg));
5970
}
6071

61-
protected void addMsgWarn(String msg) {
72+
protected void addMsgWarn(String key, String... params) {
73+
Resources resources = Resources.getInstance(HttpUtil.getLocale(getRequest()));
74+
String msg = resources.getResource(key, params);
6275
warns.add(HtmlUtils.escapeHTML(msg));
6376
}
6477

65-
protected void addMsgError(String msg) {
78+
protected void addMsgError(String key, String... params) {
79+
Resources resources = Resources.getInstance(HttpUtil.getLocale(getRequest()));
80+
String msg = resources.getResource(key, params);
6681
errors.add(HtmlUtils.escapeHTML(msg));
6782
}
6883

@@ -72,9 +87,9 @@ protected void setResult(String successMsg, List<ValidateError> errors) {
7287
} else {
7388
for (ValidateError validateError : errors) {
7489
if (validateError.getLevel().intValue() == LogLevel.ERROR.getValue()) {
75-
addMsgError(validateError.getMsg());
90+
addMsgError(validateError.getMsg(HttpUtil.getLocale(getRequest())));
7691
} else {
77-
addMsgWarn(validateError.getMsg());
92+
addMsgWarn(validateError.getMsg(HttpUtil.getLocale(getRequest())));
7893
}
7994
}
8095
}

src/main/java/org/support/project/knowledge/control/admin/ConfigControl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public Boundary save() {
6060
MailConfigsDao mailConfigsDao = MailConfigsDao.get();
6161
MailConfigsEntity mailConfigsEntity = mailConfigsDao.selectOnKey(AppConfig.SYSTEM_NAME);
6262
if (mailConfigsEntity == null) {
63-
ValidateError error = new ValidateError("メールを送る場合、メールの送信の設定が必須です");
63+
ValidateError error = new ValidateError("knowledge.config.mail.require");
6464
errors.add(error);
6565
}
6666
}
@@ -78,7 +78,7 @@ public Boundary save() {
7878
userAddNotify.setConfigValue(notify);
7979
dao.save(userAddNotify);
8080

81-
String successMsg = "保存しました";
81+
String successMsg = "message.success.save";
8282
setResult(successMsg, errors);
8383

8484
return forward("config.jsp");

src/main/java/org/support/project/knowledge/control/admin/MailControl.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,11 @@ public Boundary save() throws InvalidKeyException, NoSuchAlgorithmException, NoS
5959
//認証がONの場合のチェック
6060
if (type.equals(String.valueOf(INT_FLAG.ON.getValue()))) {
6161
if (StringUtils.isEmpty(getParam("smtpId"))) {
62-
ValidateError error = new ValidateError("認証する場合、SMTP IDは必須です");
62+
ValidateError error = new ValidateError("knowledge.config.mail.smtpid.require");
6363
errors.add(error);
6464
}
6565
if (StringUtils.isEmpty(getParam("smtpPassword"))) {
66-
ValidateError error = new ValidateError("認証する場合、SMTP パスワードは必須です");
66+
ValidateError error = new ValidateError("knowledge.config.mail.smtppass.require");
6767
errors.add(error);
6868
}
6969
}
@@ -85,7 +85,7 @@ public Boundary save() throws InvalidKeyException, NoSuchAlgorithmException, NoS
8585

8686
// TODO テストでメール送信(更新したユーザのメールアドレス宛に、メールを送る)
8787

88-
String successMsg = "保存しました";
88+
String successMsg = "message.success.save";
8989
setResult(successMsg, errors);
9090

9191
return forward("config.jsp");
@@ -106,7 +106,7 @@ public Boundary delete() {
106106
entity.setSystemName(AppConfig.SYSTEM_NAME);
107107
setAttributeOnProperty(entity);
108108

109-
addMsgInfo("メールの設定を削除しました");
109+
addMsgInfo("message.success.delete.target", getResource("knowledge.config.mail"));
110110

111111
return forward("config.jsp");
112112
}

src/main/java/org/support/project/knowledge/control/admin/UsersControl.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -180,14 +180,14 @@ public Boundary create() {
180180
List<ValidateError> errors = user.validate(values);
181181
if (!StringUtils.isEmpty(getParam("password"))) {
182182
if (!getParam("password").equals(getParam("confirm_password", String.class))) {
183-
ValidateError error = new ValidateError("PasswordとConfirm Passwordが違っています");
183+
ValidateError error = new ValidateError("knowledge.user.invalid.same.password");
184184
errors.add(error);
185185
}
186186
}
187187
UsersDao dao = UsersDao.get();
188188
user = dao.selectOnUserKey(getParam("userKey"));
189189
if (user != null) {
190-
ValidateError error = new ValidateError("既に登録されているEmail Addressです");
190+
ValidateError error = new ValidateError("knowledge.user.mail.exist");
191191
errors.add(error);
192192
}
193193
if (!errors.isEmpty()) {
@@ -204,7 +204,7 @@ public Boundary create() {
204204
// 登録されているロールをセット
205205
setSystemRoles(user);
206206

207-
String successMsg = "登録しました";
207+
String successMsg = "message.success.insert";
208208
setResult(successMsg, errors);
209209
return forward("view_edit.jsp");
210210

@@ -232,7 +232,7 @@ public Boundary save() {
232232
values.put("password", "-");
233233
} else {
234234
if (!getParam("password").equals(getParam("confirm_password", String.class))) {
235-
ValidateError error = new ValidateError("PasswordとConfirm Passwordが違っています");
235+
ValidateError error = new ValidateError("knowledge.user.invalid.same.password");
236236
errors.add(error);
237237
}
238238
}
@@ -241,12 +241,12 @@ public Boundary save() {
241241
UsersDao dao = UsersDao.get();
242242
user = dao.selectOnKey(getParam("userId", Integer.class));
243243
if (user == null) {
244-
ValidateError error = new ValidateError("削除されています");
244+
ValidateError error = new ValidateError("message.allready.updated");
245245
errors.add(error);
246246
} else {
247247
UsersEntity check = dao.selectOnUserKey(getParam("userKey"));
248248
if (check != null && check.getUserId().intValue() != user.getUserId().intValue()) {
249-
ValidateError error = new ValidateError("既に登録されているEmail Addressです");
249+
ValidateError error = new ValidateError("knowledge.user.mail.exist");
250250
errors.add(error);
251251
}
252252
}
@@ -269,7 +269,7 @@ public Boundary save() {
269269
// 登録されているロールをセット
270270
setSystemRoles(user);
271271

272-
String successMsg = "更新しました";
272+
String successMsg = "message.success.update";
273273
setResult(successMsg, errors);
274274
return forward("view_edit.jsp");
275275
}
@@ -293,7 +293,7 @@ public Boundary delete() throws Exception {
293293
//dao.delete(user.getUserId());
294294
UserLogic.get().withdrawal(user.getUserId(), true);
295295
}
296-
String successMsg = "削除しました";
296+
String successMsg = "message.success.delete";
297297
setResult(successMsg, null);
298298
return list(Integer.parseInt(offset), "");
299299
}
@@ -328,20 +328,22 @@ public Boundary accept() {
328328
ProvisionalRegistrationsDao dao = ProvisionalRegistrationsDao.get();
329329
ProvisionalRegistrationsEntity entity = dao.selectOnKey(id);
330330
if (entity == null) {
331-
addMsgWarn("承認する仮登録情報が見つかりませんでした。(他の管理者が承認)");
331+
// 承認する仮登録情報が見つかりませんでした。(他の管理者が承認)
332+
addMsgWarn("message.allready.updated");
332333
return accept_list();
333334
}
334335

335336
UsersEntity user = UserLogic.get().activate(entity);
336337
if (user != null) {
337-
addMsgSuccess("承認しました");
338+
addMsgSuccess("message.success.accept");
338339

339340
// 承認されたことを通知
340341
MailLogic mailLogic = MailLogic.get();
341342
String url = HttpUtil.getContextUrl(getRequest());
342343
mailLogic.sendAcceptedAddRequest(entity, url);
343344
} else {
344-
addMsgInfo("他の管理者がすでに承認していました");
345+
//他の管理者がすでに承認していました
346+
addMsgInfo("message.allready.updated");
345347
}
346348
return accept_list();
347349
}

src/main/java/org/support/project/knowledge/control/open/KnowledgeControl.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import org.support.project.knowledge.entity.CommentsEntity;
1818
import org.support.project.knowledge.entity.KnowledgesEntity;
1919
import org.support.project.knowledge.entity.TagsEntity;
20+
import org.support.project.knowledge.logic.GroupLogic;
2021
import org.support.project.knowledge.logic.KnowledgeLogic;
2122
import org.support.project.knowledge.logic.TagLogic;
2223
import org.support.project.knowledge.logic.UploadedFileLogic;
@@ -26,6 +27,7 @@
2627
import org.support.project.web.boundary.Boundary;
2728
import org.support.project.web.common.HttpStatus;
2829
import org.support.project.web.dao.UsersDao;
30+
import org.support.project.web.entity.GroupsEntity;
2931
import org.support.project.web.entity.UsersEntity;
3032
import org.support.project.web.exception.InvalidParamException;
3133

@@ -108,6 +110,10 @@ public Boundary view() throws InvalidParamException {
108110
List<CommentsEntity> comments = commentsDao.selectOnKnowledgeId(knowledgeId);
109111
setAttribute("comments", comments);
110112

113+
// 表示するグループを取得
114+
List<GroupsEntity> groups = GroupLogic.get().selectGroupsOnKnowledgeId(knowledgeId);
115+
setAttribute("groups", groups);
116+
111117
return forward("view.jsp");
112118
}
113119

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package org.support.project.knowledge.control.open;
2+
3+
import java.util.Locale;
4+
5+
import org.support.project.knowledge.control.Control;
6+
import org.support.project.web.boundary.Boundary;
7+
import org.support.project.web.common.HttpUtil;
8+
9+
public class LangControl extends Control {
10+
11+
public Boundary en() {
12+
Locale locale = Locale.ENGLISH;
13+
HttpUtil.setLocale(super.getRequest(), locale);
14+
return redirect(getRequest().getContextPath() + "/index");
15+
}
16+
17+
18+
public Boundary ja() {
19+
Locale locale = Locale.JAPANESE;
20+
HttpUtil.setLocale(super.getRequest(), locale);
21+
return redirect(getRequest().getContextPath() + "/index");
22+
}
23+
24+
}

src/main/java/org/support/project/knowledge/control/open/SignupControl.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public Boundary save() {
6262
if (userAddType.getConfigValue().equals(SystemConfig.USER_ADD_TYPE_VALUE_USER)) {
6363
// ユーザが自分で登録
6464
addUser();
65-
addMsgInfo("ユーザ登録しました");
65+
addMsgInfo("knowledge.signup.success");
6666
return redirect(getRequest().getContextPath());
6767
} else if (userAddType.getConfigValue().equals(SystemConfig.USER_ADD_TYPE_VALUE_MAIL)) {
6868
// 招待メールで登録
@@ -75,7 +75,7 @@ public Boundary save() {
7575
// 無効なものなので、削除
7676
dao.delete(entity);
7777
} else {
78-
addMsgWarn("既に登録済です。登録されたメールアドレスに招待のメールを送信していますので、ご確認ください。");
78+
addMsgWarn("knowledge.signup.exists");
7979
return forward("signup.jsp");
8080
}
8181
}
@@ -92,7 +92,7 @@ public Boundary save() {
9292
ProvisionalRegistrationsDao dao = ProvisionalRegistrationsDao.get();
9393
List<ProvisionalRegistrationsEntity> check = dao.selectOnUserKey(getParam("userKey"));
9494
if (!check.isEmpty()) {
95-
addMsgWarn("既に登録済ですが管理者による確認がすんでいません。少々お待ちください。");
95+
addMsgWarn("knowledge.signup.waiting");
9696
return forward("signup.jsp");
9797
}
9898
// 仮登録を行う
@@ -153,14 +153,14 @@ private List<ValidateError> validate() {
153153
List<ValidateError> errors = UsersEntity.get().validate(getParams());
154154
if (!StringUtils.isEmpty(getParam("password"))) {
155155
if (!getParam("password").equals(getParam("confirm_password", String.class))) {
156-
ValidateError error = new ValidateError("PasswordとConfirm Passwordが違っています");
156+
ValidateError error = new ValidateError("knowledge.user.invalid.same.password");
157157
errors.add(error);
158158
}
159159
}
160160
UsersDao dao = UsersDao.get();
161161
UsersEntity user = dao.selectOnUserKey(getParam("userKey"));
162162
if (user != null) {
163-
ValidateError error = new ValidateError("既に登録されているEmail Addressです");
163+
ValidateError error = new ValidateError("knowledge.user.mail.exist");
164164
errors.add(error);
165165
}
166166

@@ -210,7 +210,7 @@ public Boundary activate() {
210210
AuthenticationLogic logic = Container.getComp(DefaultAuthenticationLogicImpl.class);
211211
logic.setSession(entity.getUserKey(), getRequest());
212212

213-
addMsgInfo("ユーザ登録が完了しました");
213+
addMsgInfo("knowledge.signup.done");
214214
return devolution("Index/index");
215215
}
216216

0 commit comments

Comments
 (0)