More "Getting Category Stuff Done" Commits

Lots of commented code, but it gets better

git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4636 8810af33-2d31-482b-a856-94f89814c4df
ccm-docs
baka 2017-03-22 17:11:44 +00:00
parent 1225c001d2
commit e7361c5066
5 changed files with 39 additions and 178 deletions

View File

@ -18,17 +18,7 @@
*/
package com.arsdigita.cms.ui.category;
import com.arsdigita.bebop.ActionLink;
import com.arsdigita.bebop.BaseLink;
import com.arsdigita.bebop.Component;
import com.arsdigita.bebop.Form;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.Link;
import com.arsdigita.bebop.Page;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.ParameterSingleSelectionModel;
import com.arsdigita.bebop.SimpleContainer;
import com.arsdigita.bebop.SingleSelectionModel;
import com.arsdigita.bebop.*;
import com.arsdigita.bebop.event.ActionEvent;
import com.arsdigita.bebop.event.ActionListener;
import com.arsdigita.bebop.event.ChangeEvent;
@ -73,6 +63,7 @@ import org.libreccm.security.User;
import org.librecms.contentsection.ContentItem;
import org.librecms.contentsection.ContentItemManager;
import org.librecms.contentsection.privileges.AdminPrivileges;
import org.librecms.contentsection.privileges.ItemPrivileges;
/**
* Edits a single category.
@ -129,8 +120,8 @@ class CategoryItemPane extends BaseItemPane {
//Move link
final ActionLink moveLink = new MoveLink(new Label(gz("cms.ui.category.move")));
//final Form moveForm = new CategoryMoveForm(m_category, contextModel);
//add(moveForm);
final Form moveForm = new CategoryMoveForm(m_category, contextModel);
add(moveForm);
ViewItemLink viewIndexLink = new ViewItemLink(new Label(gz(
"cms.ui.category.view_index_item")), "");
@ -174,13 +165,13 @@ class CategoryItemPane extends BaseItemPane {
}
};
/*
CategoryLocalizationAddForm addCategoryLocalizationForm =
new CategoryLocalizationAddForm(m_category);
m_detailPane.add(new CategoryLocalizationSection(addCategoryLocalizationLink));
add(addCategoryLocalizationForm);
connect(addCategoryLocalizationLink, addCategoryLocalizationForm);
connect(addCategoryLocalizationForm);*/
connect(addCategoryLocalizationForm);
// Quasimodo: END
// Subcategories
@ -189,11 +180,11 @@ class CategoryItemPane extends BaseItemPane {
// Linked categories
final ActionLink linkAddLink = new ActionLink(new Label(gz("cms.ui.category.linked_add")));
//final Form linkForm = new LinkForm(m_category);
//add(linkForm);
final Form linkForm = new LinkForm(m_category);
add(linkForm);
//linkAddLink.addActionListener(new NavigationListener(linkForm));
//linkForm.addSubmissionListener(new CancelListener(linkForm));
linkAddLink.addActionListener(new NavigationListener(linkForm));
linkForm.addSubmissionListener(new CancelListener(linkForm));
m_detailPane.add(new LinkedCategorySection(linkAddLink));
@ -201,13 +192,14 @@ class CategoryItemPane extends BaseItemPane {
m_detailPane.add(new AdminVisible(new CategoryTemplateSection()));
// Permissions
m_detailPane.add(new PermissionsSection());
//m_detailPane.add(new PermissionsSection());
m_detailPane.add(new Text("PermissionSection Placeholder"));
connect(indexLink, indexForm);
connect(indexForm);
//connect(moveLink, moveForm);
//connect(moveForm);
connect(moveLink, moveForm);
connect(moveForm);
connect(orderItemsLink, orderItemsForm);
connect(orderItemsForm);
@ -644,8 +636,7 @@ class CategoryItemPane extends BaseItemPane {
if (!indexItem.isPresent()) {
return false;
} else {
return permissionChecker.isPermitted(AdminPrivileges.ADMINISTER_CATEGORIES, indexItem.get());
//return isItemEditable((ContentItem) indexItem, state);
return permissionChecker.isPermitted(ItemPrivileges.EDIT, indexItem.get());
}
}
};

View File

@ -65,8 +65,8 @@ public class CategoryMoveForm extends CMSForm {
setMethod(Form.POST);
this.selectedCategory = selectedCategory;
//final Label header = new Label(GlobalizationUtil.globalize("cms.ui.category.move"));
final Label header = new Label();
final Label header = new Label(GlobalizationUtil.globalize("cms.ui.category.move"));
//final Label header = new Label();
header.addPrintListener(new PrintListener() {
@Override
public void prepare(final PrintEvent event) {

View File

@ -31,11 +31,13 @@ import org.libreccm.categorization.CategoryTreeModelLite;
* Lists category tree.
*
* @author Tri Tran (tri@arsdigita.com)
* @version $Id: CategoryTreeModelBuilder.java 1942 2009-05-29 07:53:23Z terry $
* @author <a href="mailto:yannick.buelter@yabue.de">Yannick Bülter</a>
*/
class CategoryTreeModelBuilder extends LockableImpl
implements TreeModelBuilder {
private static String DEFAULT_USE_CONTEXT = "<default>";
private SingleSelectionModel m_contextModel = null;
public CategoryTreeModelBuilder() {
@ -59,7 +61,7 @@ class CategoryTreeModelBuilder extends LockableImpl
String context = null;
if (m_contextModel != null) {
context = (String) m_contextModel.getSelectedKey(state);
if ((CategoryUseContextModelBuilder.DEFAULT_USE_CONTEXT).equals(context)) {
if ((DEFAULT_USE_CONTEXT).equals(context)) {
context = null;
}
}

View File

@ -55,7 +55,7 @@ import java.util.Optional;
public class IndexItemSelectionForm extends CMSForm {
private static final Logger LOGGER = LogManager.getLogger(
CategoryEditForm.class);
IndexItemSelectionForm.class);
private final CategoryRequestLocal m_category;
private RadioGroup m_options;
@ -159,31 +159,28 @@ public class IndexItemSelectionForm extends CMSForm {
addSubmissionListener(new FormSecurityListener(AdminPrivileges.ADMINISTER_CATEGORIES));
// Process listener
addProcessListener(new FormProcessListener() {
public void process(FormSectionEvent event)
throws FormProcessException {
PageState state = event.getPageState();
FormData data = event.getFormData();
ParameterData param = data.getParameter(m_options.getParameterModel().getName());
String selectedValue = (String) param.getValue();
addProcessListener(event -> {
PageState state = event.getPageState();
FormData data = event.getFormData();
ParameterData param = data.getParameter(m_options.getParameterModel().getName());
String selectedValue = (String) param.getValue();
Category category
= getCategory(event.getPageState());
Category category
= getCategory(event.getPageState());
if (selectedValue != null) {
Optional<ContentItem> optionalItem = contentItemRepository.findById(Long.parseLong(selectedValue));
if (optionalItem.isPresent()) {
ContentItem item = contentItemManager.getDraftVersion(optionalItem.get(), ContentItem.class);
try {
categoryManager.setIndexObject(category, item);
categoryRepository.save(category);
} catch (ObjectNotAssignedToCategoryException e) {
throw new FormProcessException(e);
}
if (selectedValue != null) {
Optional<ContentItem> optionalItem = contentItemRepository.findById(Long.parseLong(selectedValue));
if (optionalItem.isPresent()) {
ContentItem item = contentItemManager.getDraftVersion(optionalItem.get(), ContentItem.class);
try {
categoryManager.setIndexObject(category, item);
categoryRepository.save(category);
} catch (ObjectNotAssignedToCategoryException e) {
throw new FormProcessException(e);
}
}
}
});
}
@ -205,7 +202,6 @@ public class IndexItemSelectionForm extends CMSForm {
*/
protected Category getCategory(PageState state) {
Category category = m_category.getCategory(state);
Assert.exists(category);
return category;
}

View File

@ -1,128 +0,0 @@
/*
* Copyright (C) 2001-2004 Red Hat Inc. All Rights Reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.ui.category;
import com.arsdigita.bebop.ColumnPanel;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.form.Submit;
import com.arsdigita.categorization.Category;
import com.arsdigita.categorization.CategoryCollection;
import com.arsdigita.cms.SecurityManager;
import com.arsdigita.cms.ui.CategoryForm;
import com.arsdigita.cms.ui.FormSecurityListener;
import com.arsdigita.kernel.ACSObject;
import com.arsdigita.toolbox.ui.Cancellable;
import java.math.BigDecimal;
import org.apache.log4j.Logger;
/**
* A form which edits secondary parents
*
* @author Michael Pih
* @author Stanislav Freidin
* @version $Revision: #18 $ $DateTime: 2004/08/17 23:15:09 $
*/
public class LinkForm extends CategoryForm implements Cancellable {
private final static Logger s_log = Logger.getLogger(LinkForm.class);
private final CategoryRequestLocal m_category;
private final Submit m_cancelButton;
public LinkForm(final CategoryRequestLocal category) {
super("LinkForm");
m_category = category;
m_cancelButton = new Submit("Finish");
add(m_cancelButton, ColumnPanel.FULL_WIDTH | ColumnPanel.LEFT);
setAssignedCaption("Linked Categories");
addSubmissionListener
(new FormSecurityListener(SecurityManager.CATEGORY_ADMIN));
}
public final boolean isCancelled(final PageState state) {
return m_cancelButton.isSelected(state);
}
/**
* Load all categories which are assigned to the current item.
*/
protected void initAssignedCategories(PageState state, CategoryMap m) {
final Category category = m_category.getCategory(state);
final BigDecimal parentID = category.getDefaultParentCategory().getID();
CategoryCollection links = category.getParents();
while ( links.next() ) {
Category cat = links.getCategory();
if ( !cat.getID().equals(parentID) ) {
m.add(cat);
}
}
links.close();
}
/**
* Assign a secondary parent.
*/
public void assignCategory(PageState state, Category category) {
final Category child = m_category.getCategory(state);
if (category.canEdit()) {
category.addChild(child);
category.save();
}
}
/**
* Unassign a secondary parent.
*/
public void unassignCategory(PageState state, Category category) {
final Category child = m_category.getCategory(state);
if (category.canEdit()) {
category.removeChild(child);
category.save();
}
}
/**
* The category cannot be its own parent. Its children cannot
* be parents either.
*/
public Category getExcludedCategory(PageState state) {
return m_category.getCategory(state);
}
/**
* This method returns the URL for the given item to make sure that
* there are not two objects in the same category with the same URL.
*/
protected final String getItemURL(final PageState state) {
return m_category.getCategory(state).getURL();
}
protected final ACSObject getObject(final PageState state) {
return (Category) m_category.getCategory(state);
}
}