Shinsuke Sugaya 9 vuotta sitten
vanhempi
commit
df788ca09c

+ 13 - 0
src/main/java/org/codelibs/fess/app/service/GroupService.java

@@ -23,11 +23,14 @@ import javax.annotation.Resource;
 import org.codelibs.core.beans.util.BeanUtil;
 import org.codelibs.core.beans.util.BeanUtil;
 import org.codelibs.fess.Constants;
 import org.codelibs.fess.Constants;
 import org.codelibs.fess.app.pager.GroupPager;
 import org.codelibs.fess.app.pager.GroupPager;
+import org.codelibs.fess.es.user.bsbhv.BsGroupBhv;
 import org.codelibs.fess.es.user.cbean.GroupCB;
 import org.codelibs.fess.es.user.cbean.GroupCB;
 import org.codelibs.fess.es.user.exbhv.GroupBhv;
 import org.codelibs.fess.es.user.exbhv.GroupBhv;
+import org.codelibs.fess.es.user.exbhv.UserBhv;
 import org.codelibs.fess.es.user.exentity.Group;
 import org.codelibs.fess.es.user.exentity.Group;
 import org.codelibs.fess.mylasta.direction.FessConfig;
 import org.codelibs.fess.mylasta.direction.FessConfig;
 import org.codelibs.fess.util.ComponentUtil;
 import org.codelibs.fess.util.ComponentUtil;
+import org.codelibs.fess.util.StreamUtil;
 import org.dbflute.cbean.result.PagingResultBean;
 import org.dbflute.cbean.result.PagingResultBean;
 import org.dbflute.optional.OptionalEntity;
 import org.dbflute.optional.OptionalEntity;
 
 
@@ -41,6 +44,9 @@ public class GroupService implements Serializable {
     @Resource
     @Resource
     protected FessConfig fessConfig;
     protected FessConfig fessConfig;
 
 
+    @Resource
+    protected UserBhv userBhv;
+
     public List<Group> getGroupList(final GroupPager groupPager) {
     public List<Group> getGroupList(final GroupPager groupPager) {
 
 
         final PagingResultBean<Group> groupList = groupBhv.selectPage(cb -> {
         final PagingResultBean<Group> groupList = groupBhv.selectPage(cb -> {
@@ -77,6 +83,13 @@ public class GroupService implements Serializable {
             op.setRefresh(true);
             op.setRefresh(true);
         });
         });
 
 
+        userBhv.selectCursor(cb -> {
+            cb.query().setGroups_Equal(group.getId());
+        }, entity -> {
+            entity.setGroups(StreamUtil.of(entity.getGroups()).filter(s -> !s.equals(group.getId())).toArray(n -> new String[n]));
+            userBhv.insertOrUpdate(entity);
+        });
+
     }
     }
 
 
     protected void setupListCondition(final GroupCB cb, final GroupPager groupPager) {
     protected void setupListCondition(final GroupCB cb, final GroupPager groupPager) {

+ 11 - 0
src/main/java/org/codelibs/fess/app/service/RoleService.java

@@ -25,9 +25,11 @@ import org.codelibs.fess.Constants;
 import org.codelibs.fess.app.pager.RolePager;
 import org.codelibs.fess.app.pager.RolePager;
 import org.codelibs.fess.es.user.cbean.RoleCB;
 import org.codelibs.fess.es.user.cbean.RoleCB;
 import org.codelibs.fess.es.user.exbhv.RoleBhv;
 import org.codelibs.fess.es.user.exbhv.RoleBhv;
+import org.codelibs.fess.es.user.exbhv.UserBhv;
 import org.codelibs.fess.es.user.exentity.Role;
 import org.codelibs.fess.es.user.exentity.Role;
 import org.codelibs.fess.mylasta.direction.FessConfig;
 import org.codelibs.fess.mylasta.direction.FessConfig;
 import org.codelibs.fess.util.ComponentUtil;
 import org.codelibs.fess.util.ComponentUtil;
+import org.codelibs.fess.util.StreamUtil;
 import org.dbflute.cbean.result.PagingResultBean;
 import org.dbflute.cbean.result.PagingResultBean;
 import org.dbflute.optional.OptionalEntity;
 import org.dbflute.optional.OptionalEntity;
 
 
@@ -41,6 +43,9 @@ public class RoleService implements Serializable {
     @Resource
     @Resource
     protected FessConfig fessConfig;
     protected FessConfig fessConfig;
 
 
+    @Resource
+    protected UserBhv userBhv;
+
     public List<Role> getRoleList(final RolePager rolePager) {
     public List<Role> getRoleList(final RolePager rolePager) {
 
 
         final PagingResultBean<Role> roleList = roleBhv.selectPage(cb -> {
         final PagingResultBean<Role> roleList = roleBhv.selectPage(cb -> {
@@ -77,6 +82,12 @@ public class RoleService implements Serializable {
             op.setRefresh(true);
             op.setRefresh(true);
         });
         });
 
 
+        userBhv.selectCursor(cb -> {
+            cb.query().setRoles_Equal(role.getId());
+        }, entity -> {
+            entity.setRoles(StreamUtil.of(entity.getRoles()).filter(s -> !s.equals(role.getId())).toArray(n -> new String[n]));
+            userBhv.insertOrUpdate(entity);
+        });
     }
     }
 
 
     protected void setupListCondition(final RoleCB cb, final RolePager rolePager) {
     protected void setupListCondition(final RoleCB cb, final RolePager rolePager) {

+ 0 - 39
src/main/java/org/codelibs/fess/app/web/admin/group/AdminGroupAction.java

@@ -120,26 +120,6 @@ public class AdminGroupAction extends FessAdminAction {
         });
         });
     }
     }
 
 
-    @Execute
-    public HtmlResponse edit(final EditForm form) {
-        validate(form, messages -> {}, () -> asListHtml());
-        final String id = form.id;
-        groupService.getGroup(id).ifPresent(entity -> {
-            copyBeanToBean(entity, form, op -> {});
-        }).orElse(() -> {
-            throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asListHtml());
-        });
-        saveToken();
-        if (form.crudMode.intValue() == CrudMode.EDIT) {
-            // back
-            form.crudMode = CrudMode.DETAILS;
-            return asDetailsHtml();
-        } else {
-            form.crudMode = CrudMode.EDIT;
-            return asEditHtml();
-        }
-    }
-
     // -----------------------------------------------------
     // -----------------------------------------------------
     //                                               Details
     //                                               Details
     //                                               -------
     //                                               -------
@@ -183,25 +163,6 @@ public class AdminGroupAction extends FessAdminAction {
         return redirect(getClass());
         return redirect(getClass());
     }
     }
 
 
-    @Execute
-    public HtmlResponse update(final EditForm form) {
-        verifyCrudMode(form.crudMode, CrudMode.EDIT);
-        validate(form, messages -> {}, () -> asEditHtml());
-        verifyToken(() -> asEditHtml());
-        getGroup(form).ifPresent(entity -> {
-            try {
-                groupService.store(entity);
-                saveInfo(messages -> messages.addSuccessCrudUpdateCrudTable(GLOBAL));
-            } catch (Exception e) {
-                logger.error("Failed to update " + entity, e);
-                throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.id), () -> asEditHtml());
-            }
-        }).orElse(() -> {
-            throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.id), () -> asEditHtml());
-        });
-        return redirect(getClass());
-    }
-
     @Execute
     @Execute
     public HtmlResponse delete(final EditForm form) {
     public HtmlResponse delete(final EditForm form) {
         verifyCrudMode(form.crudMode, CrudMode.DETAILS);
         verifyCrudMode(form.crudMode, CrudMode.DETAILS);

+ 0 - 39
src/main/java/org/codelibs/fess/app/web/admin/role/AdminRoleAction.java

@@ -120,26 +120,6 @@ public class AdminRoleAction extends FessAdminAction {
         });
         });
     }
     }
 
 
-    @Execute
-    public HtmlResponse edit(final EditForm form) {
-        validate(form, messages -> {}, () -> asListHtml());
-        final String id = form.id;
-        roleService.getRole(id).ifPresent(entity -> {
-            copyBeanToBean(entity, form, op -> {});
-        }).orElse(() -> {
-            throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asListHtml());
-        });
-        saveToken();
-        if (form.crudMode.intValue() == CrudMode.EDIT) {
-            // back
-            form.crudMode = CrudMode.DETAILS;
-            return asDetailsHtml();
-        } else {
-            form.crudMode = CrudMode.EDIT;
-            return asEditHtml();
-        }
-    }
-
     // -----------------------------------------------------
     // -----------------------------------------------------
     //                                               Details
     //                                               Details
     //                                               -------
     //                                               -------
@@ -183,25 +163,6 @@ public class AdminRoleAction extends FessAdminAction {
         return redirect(getClass());
         return redirect(getClass());
     }
     }
 
 
-    @Execute
-    public HtmlResponse update(final EditForm form) {
-        verifyCrudMode(form.crudMode, CrudMode.EDIT);
-        validate(form, messages -> {}, () -> asEditHtml());
-        verifyToken(() -> asEditHtml());
-        getRole(form).ifPresent(entity -> {
-            try {
-                roleService.store(entity);
-                saveInfo(messages -> messages.addSuccessCrudUpdateCrudTable(GLOBAL));
-            } catch (Exception e) {
-                logger.error("Failed to update " + entity, e);
-                throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.id), () -> asEditHtml());
-            }
-        }).orElse(() -> {
-            throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.id), () -> asEditHtml());
-        });
-        return redirect(getClass());
-    }
-
     @Execute
     @Execute
     public HtmlResponse delete(final EditForm form) {
     public HtmlResponse delete(final EditForm form) {
         verifyCrudMode(form.crudMode, CrudMode.DETAILS);
         verifyCrudMode(form.crudMode, CrudMode.DETAILS);

+ 43 - 1
src/main/webapp/WEB-INF/view/admin/group/admin_group_details.jsp

@@ -57,7 +57,49 @@
 								</div>
 								</div>
 								<!-- /.box-body -->
 								<!-- /.box-body -->
 								<div class="box-footer">
 								<div class="box-footer">
-									<jsp:include page="/WEB-INF/view/common/admin/crud/buttons.jsp"></jsp:include>
+									<button type="submit" class="btn btn-default" name="list" value="back">
+										<i class="fa fa-arrow-circle-left"></i>
+										<la:message key="labels.crud_button_back" />
+									</button>
+									<button type="button" class="btn btn-danger" name="delete"
+										data-toggle="modal" data-target="#confirmToDelete"
+										value="<la:message key="labels.crud_button_delete" />">
+										<i class="fa fa-trash"></i>
+										<la:message key="labels.crud_button_delete" />
+									</button>
+									<div class="modal modal-danger fade" id="confirmToDelete" tabindex="-1"
+										role="dialog">
+										<div class="modal-dialog">
+											<div class="modal-content">
+												<div class="modal-header">
+													<button type="button" class="close" data-dismiss="modal"
+														aria-label="Close">
+														<span aria-hidden="true">×</span>
+													</button>
+													<h4 class="modal-title">
+														<la:message key="labels.crud_title_delete" />
+													</h4>
+												</div>
+												<div class="modal-body">
+													<p>
+														<la:message key="labels.crud_delete_confirmation" />
+													</p>
+												</div>
+												<div class="modal-footer">
+													<button type="button" class="btn btn-outline pull-left"
+														data-dismiss="modal">
+														<la:message key="labels.crud_button_cancel" />
+													</button>
+													<button type="submit" class="btn btn-outline btn-danger"
+														name="delete"
+														value="<la:message key="labels.crud_button_delete" />">
+														<i class="fa fa-trash"></i>
+														<la:message key="labels.crud_button_delete" />
+													</button>
+												</div>
+											</div>
+										</div>
+									</div>
 								</div>
 								</div>
 								<!-- /.box-footer -->
 								<!-- /.box-footer -->
 							</div>
 							</div>

+ 43 - 1
src/main/webapp/WEB-INF/view/admin/role/admin_role_details.jsp

@@ -56,7 +56,49 @@
 								</div>
 								</div>
 								<!-- /.box-body -->
 								<!-- /.box-body -->
 								<div class="box-footer">
 								<div class="box-footer">
-									<jsp:include page="/WEB-INF/view/common/admin/crud/buttons.jsp"></jsp:include>
+									<button type="submit" class="btn btn-default" name="list" value="back">
+										<i class="fa fa-arrow-circle-left"></i>
+										<la:message key="labels.crud_button_back" />
+									</button>
+									<button type="button" class="btn btn-danger" name="delete"
+										data-toggle="modal" data-target="#confirmToDelete"
+										value="<la:message key="labels.crud_button_delete" />">
+										<i class="fa fa-trash"></i>
+										<la:message key="labels.crud_button_delete" />
+									</button>
+									<div class="modal modal-danger fade" id="confirmToDelete" tabindex="-1"
+										role="dialog">
+										<div class="modal-dialog">
+											<div class="modal-content">
+												<div class="modal-header">
+													<button type="button" class="close" data-dismiss="modal"
+														aria-label="Close">
+														<span aria-hidden="true">×</span>
+													</button>
+													<h4 class="modal-title">
+														<la:message key="labels.crud_title_delete" />
+													</h4>
+												</div>
+												<div class="modal-body">
+													<p>
+														<la:message key="labels.crud_delete_confirmation" />
+													</p>
+												</div>
+												<div class="modal-footer">
+													<button type="button" class="btn btn-outline pull-left"
+														data-dismiss="modal">
+														<la:message key="labels.crud_button_cancel" />
+													</button>
+													<button type="submit" class="btn btn-outline btn-danger"
+														name="delete"
+														value="<la:message key="labels.crud_button_delete" />">
+														<i class="fa fa-trash"></i>
+														<la:message key="labels.crud_button_delete" />
+													</button>
+												</div>
+											</div>
+										</div>
+									</div>
 									<la:link styleClass="btn btn-success" href="/admin/roletype/createnew/${f:u(name)}">
 									<la:link styleClass="btn btn-success" href="/admin/roletype/createnew/${f:u(name)}">
 										<i class="fa fa-plus-circle"></i>
 										<i class="fa fa-plus-circle"></i>
 										<la:message key="labels.role_button_create_crawler_role" />
 										<la:message key="labels.role_button_create_crawler_role" />