RelatedLinks: added possibility to add captions. Therefor reworked LinkPropertiesStep so it works with SecurityPropertyEditor
git-svn-id: https://svn.libreccm.org/ccm/trunk@3400 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
a04278d1c0
commit
a386fc9811
|
|
@ -3,3 +3,7 @@ cms.contentassets.related_link.description=Related Links
|
|||
cms.contentassets.ui.related_link.resource_size=Resource Size
|
||||
cms.contentassets.ui.related_link.resource_type=Resource Type
|
||||
cms.contentassets.ui.related_link.resource_type_unknown=Unknown
|
||||
cms.contentassets.ui.related_link.add_caption=Add a caption
|
||||
cms.contentassets.ui.related_link.add_link=Add a Link
|
||||
cms.contentassets.ui.related_link.caption=Caption:
|
||||
cms.contentassets.ui.related_link.Description=Description/Caption:
|
||||
|
|
|
|||
|
|
@ -3,3 +3,7 @@ cms.contentassets.related_link.description=Weiterf\u00fchrende Links
|
|||
cms.contentassets.ui.related_link.resource_size=Gr\u00f6\u00dfe
|
||||
cms.contentassets.ui.related_link.resource_type=Ressourcen Typ
|
||||
cms.contentassets.ui.related_link.resource_type_unknown=Unbekannt
|
||||
cms.contentassets.ui.related_link.add_caption=Zwischentitel hinzuf\u00fcgen
|
||||
cms.contentassets.ui.related_link.add_link=Link hinzuf\u00fcgen
|
||||
cms.contentassets.ui.related_link.caption=Zwischentitel:
|
||||
cms.contentassets.ui.related_link.Description=Beschreibung/Zwischentitel:
|
||||
|
|
|
|||
|
|
@ -0,0 +1,49 @@
|
|||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package com.arsdigita.cms.contentassets.ui;
|
||||
|
||||
import com.arsdigita.bebop.FormData;
|
||||
import com.arsdigita.bebop.FormProcessException;
|
||||
import com.arsdigita.bebop.PageState;
|
||||
import com.arsdigita.bebop.event.FormSectionEvent;
|
||||
import com.arsdigita.cms.ItemSelectionModel;
|
||||
import com.arsdigita.cms.contentassets.RelatedLink;
|
||||
import com.arsdigita.cms.contenttypes.ui.LinkSelectionModel;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Koalamann
|
||||
*/
|
||||
public class RelatedLinkCaptionEditForm extends RelatedLinkCaptionForm {
|
||||
|
||||
public RelatedLinkCaptionEditForm(ItemSelectionModel itemModel,
|
||||
LinkSelectionModel link, String linkListName) {
|
||||
super(itemModel, link, linkListName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Init listener. For edit actions, fills the form with current data
|
||||
*
|
||||
* @param fse the FormSectionEvent
|
||||
*
|
||||
* @throws com.arsdigita.bebop.FormProcessException
|
||||
*/
|
||||
@Override
|
||||
public void init(FormSectionEvent fse) throws FormProcessException {
|
||||
FormData data = fse.getFormData();
|
||||
PageState state = fse.getPageState();
|
||||
setVisible(state, false);
|
||||
RelatedLink link;
|
||||
if (m_linkModel.isSelected(state)) {
|
||||
link = (RelatedLink) m_linkModel.getSelectedLink(state);
|
||||
if (link.getTitle().equals("caption")) {
|
||||
//make this form visible because we are editing and it is a caption not a link
|
||||
setVisible(state, true);
|
||||
}
|
||||
m_description.setValue(state, link.getDescription());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,351 @@
|
|||
/*
|
||||
* Copyright (C) 2003-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.contentassets.ui;
|
||||
|
||||
import com.arsdigita.bebop.ColumnPanel;
|
||||
import com.arsdigita.bebop.FormData;
|
||||
import com.arsdigita.bebop.FormSection;
|
||||
import com.arsdigita.bebop.FormProcessException;
|
||||
import com.arsdigita.bebop.Label;
|
||||
import com.arsdigita.bebop.PageState;
|
||||
import com.arsdigita.bebop.SaveCancelSection;
|
||||
import com.arsdigita.bebop.event.PrintEvent;
|
||||
import com.arsdigita.bebop.event.PrintListener;
|
||||
import com.arsdigita.bebop.event.FormInitListener;
|
||||
import com.arsdigita.bebop.event.FormProcessListener;
|
||||
import com.arsdigita.bebop.event.FormSectionEvent;
|
||||
import com.arsdigita.bebop.event.FormValidationListener;
|
||||
import com.arsdigita.bebop.event.FormSubmissionListener;
|
||||
import com.arsdigita.bebop.form.Submit;
|
||||
import com.arsdigita.bebop.form.TextArea;
|
||||
import com.arsdigita.bebop.parameters.StringLengthValidationListener;
|
||||
import com.arsdigita.cms.CMSConfig;
|
||||
import com.arsdigita.util.Assert;
|
||||
import com.arsdigita.util.UncheckedWrapperException;
|
||||
|
||||
import com.arsdigita.cms.ContentItem;
|
||||
import com.arsdigita.cms.ContentType;
|
||||
import com.arsdigita.cms.ItemSelectionModel;
|
||||
import com.arsdigita.cms.contentassets.RelatedLink;
|
||||
import com.arsdigita.cms.contentassets.util.RelatedLinkGlobalizationUtil;
|
||||
import com.arsdigita.cms.contenttypes.Link;
|
||||
import com.arsdigita.cms.contenttypes.ui.LinkSelectionModel;
|
||||
import com.arsdigita.cms.util.GlobalizationUtil;
|
||||
import com.arsdigita.mimetypes.MimeType;
|
||||
import com.arsdigita.persistence.DataCollection;
|
||||
|
||||
import java.util.TooManyListenersException;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
/**
|
||||
* Form to edit captions. based on LinkPropertyForm and RelatedLinkPropertyForm
|
||||
*
|
||||
* @version $Revision: 1# $ $Date: 2015/04/13 $
|
||||
* @author konerman (konerman@tzi.de)
|
||||
*/
|
||||
public class RelatedLinkCaptionForm extends FormSection
|
||||
implements FormInitListener, FormProcessListener,
|
||||
FormValidationListener, FormSubmissionListener {
|
||||
|
||||
private static final Logger s_log = Logger.getLogger(RelatedLinkCaptionForm.class);
|
||||
|
||||
/**
|
||||
* Name of this form
|
||||
*/
|
||||
public static final String ID = "caption";
|
||||
public static final String SSL_PROTOCOL = "https://";
|
||||
public static final String HTTP_PROTOCOL = "http://";
|
||||
protected TextArea m_description;
|
||||
protected ItemSelectionModel m_itemModel;
|
||||
protected LinkSelectionModel m_linkModel;
|
||||
private SaveCancelSection m_saveCancelSection;
|
||||
protected final String ITEM_SEARCH = "contentItem";
|
||||
private ContentType m_contentType;
|
||||
private String m_linkListName;
|
||||
|
||||
/**
|
||||
* Constructor creates a new form to edit the Link object specified by the
|
||||
* item selection model passed in.
|
||||
*
|
||||
* @param itemModel The ItemSelectionModel to use to obtain the ContentItem
|
||||
* to which this link is (or will be) attached
|
||||
* @param link The LinkSelectionModel to use to obtain the Link to work on
|
||||
* @param linkListName
|
||||
*/
|
||||
public RelatedLinkCaptionForm(ItemSelectionModel itemModel,
|
||||
LinkSelectionModel link, String linkListName) {
|
||||
this(itemModel, link, linkListName, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor creates a new form to edit the Link object specified by the
|
||||
* item selection model passed in.
|
||||
*
|
||||
* @param itemModel
|
||||
* @param link
|
||||
* @param contentType
|
||||
*/
|
||||
public RelatedLinkCaptionForm(ItemSelectionModel itemModel,
|
||||
LinkSelectionModel link, String linkListName,
|
||||
ContentType contentType) {
|
||||
super(new ColumnPanel(2));
|
||||
m_linkListName = linkListName;
|
||||
|
||||
s_log.debug("caption form constructor");
|
||||
m_linkModel = link;
|
||||
m_itemModel = itemModel;
|
||||
m_contentType = contentType;
|
||||
|
||||
addWidgets();
|
||||
addSaveCancelSection();
|
||||
|
||||
addInitListener(this);
|
||||
|
||||
addValidationListener(this);
|
||||
|
||||
addProcessListener(this);
|
||||
addSubmissionListener(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds widgets to the form.
|
||||
*/
|
||||
protected void addWidgets() {
|
||||
|
||||
/* Add the standard description field */
|
||||
m_description = new TextArea("description");
|
||||
m_description.setCols(40);
|
||||
m_description.setRows(5);
|
||||
m_description.addValidationListener(new StringLengthValidationListener(CMSConfig
|
||||
.getInstanceOf().getLinkDescMaxLength()));
|
||||
add(new Label(RelatedLinkGlobalizationUtil.globalize("cms.contentassets.ui.related_link.caption")));
|
||||
add(m_description);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the saveCancelSection
|
||||
*/
|
||||
public void addSaveCancelSection() {
|
||||
m_saveCancelSection = new SaveCancelSection();
|
||||
try {
|
||||
m_saveCancelSection.getCancelButton().addPrintListener(
|
||||
new PrintListener() {
|
||||
|
||||
@Override
|
||||
public void prepare(PrintEvent e) {
|
||||
Submit target = (Submit) e.getTarget();
|
||||
if (m_linkModel.isSelected(e.getPageState())) {
|
||||
target.setButtonLabel(GlobalizationUtil.globalize(
|
||||
"cms.contenttyes.link.ui.button_cancel"));
|
||||
} else {
|
||||
target.setButtonLabel(GlobalizationUtil.globalize(
|
||||
"cms.contenttyes.link.ui.button_reset"));
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
m_saveCancelSection.getSaveButton().addPrintListener(
|
||||
new PrintListener() {
|
||||
|
||||
@Override
|
||||
public void prepare(PrintEvent e) {
|
||||
Submit target = (Submit) e.getTarget();
|
||||
if (m_linkModel.isSelected(e.getPageState())) {
|
||||
target.setButtonLabel(GlobalizationUtil.globalize(
|
||||
"cms.contenttyes.link.ui.button_save"));
|
||||
} else {
|
||||
target.setButtonLabel(GlobalizationUtil.globalize(
|
||||
"cms.contenttyes.link.ui.button_create"));
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
} catch (TooManyListenersException e) {
|
||||
throw new UncheckedWrapperException("this cannot happen", e);
|
||||
}
|
||||
add(m_saveCancelSection, ColumnPanel.FULL_WIDTH);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the saveCancelSection.
|
||||
*
|
||||
* @return Save/Cencel section
|
||||
*/
|
||||
public SaveCancelSection getSaveCancelSection() {
|
||||
return m_saveCancelSection;
|
||||
}
|
||||
|
||||
/**
|
||||
* return selection model for Link that we are dealing with.
|
||||
*/
|
||||
protected LinkSelectionModel getLinkSelectionModel() {
|
||||
return m_linkModel;
|
||||
}
|
||||
|
||||
/**
|
||||
* Submission listener. Handles cancel events.
|
||||
*
|
||||
* @param e the FormSectionEvent
|
||||
*
|
||||
* @throws com.arsdigita.bebop.FormProcessException
|
||||
*/
|
||||
@Override
|
||||
public void submitted(FormSectionEvent e)
|
||||
throws FormProcessException {
|
||||
if (m_saveCancelSection.getCancelButton().isSelected(e.getPageState())) {
|
||||
s_log.debug("cancel in submission listener");
|
||||
m_linkModel.clearSelection(e.getPageState());
|
||||
init(e);
|
||||
throw new FormProcessException(
|
||||
GlobalizationUtil.globalize("cms.contenttypes.ui.cancelled"));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Validation listener. Ensures consistency of internal vs. external link
|
||||
* data
|
||||
*
|
||||
* @param event the FormSectionEvent
|
||||
*
|
||||
* @throws com.arsdigita.bebop.FormProcessException
|
||||
*/
|
||||
@Override
|
||||
public void validate(FormSectionEvent event)
|
||||
throws FormProcessException {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the current ContentItem
|
||||
*
|
||||
* @param s the PageState
|
||||
*
|
||||
* @return the ContentItem
|
||||
*/
|
||||
protected ContentItem getContentItem(PageState s) {
|
||||
return (ContentItem) m_itemModel.getSelectedObject(s);
|
||||
}
|
||||
|
||||
/**
|
||||
* Take care of basic Link creation steps
|
||||
*
|
||||
* @param s the PageState
|
||||
*
|
||||
* @return the newly-created Link
|
||||
*/
|
||||
protected Link createLink(PageState s) {
|
||||
ContentItem item = getContentItem(s);
|
||||
Assert.exists(item, ContentItem.class);
|
||||
RelatedLink link = new RelatedLink();
|
||||
|
||||
// remove the following line if we make Link extend ACSObject
|
||||
//link.setName(item.getName() + "_link_" + item.getID());
|
||||
// set the owner of the link
|
||||
link.setLinkOwner(item);
|
||||
|
||||
return link;
|
||||
}
|
||||
|
||||
/**
|
||||
* Init listener. For edit actions, fills the form with current data
|
||||
*
|
||||
* @param fse the FormSectionEvent
|
||||
*
|
||||
* @throws com.arsdigita.bebop.FormProcessException
|
||||
*/
|
||||
@Override
|
||||
public void init(FormSectionEvent fse) throws FormProcessException {
|
||||
FormData data = fse.getFormData();
|
||||
PageState state = fse.getPageState();
|
||||
s_log.debug("Init");
|
||||
s_log.debug("new link");
|
||||
m_description.setValue(state, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Process listener. Saves/creates the new or modified Link
|
||||
*
|
||||
* @param fse the FormSectionEvent
|
||||
*
|
||||
* @throws com.arsdigita.bebop.FormProcessException
|
||||
*/
|
||||
@Override
|
||||
public void process(FormSectionEvent fse) throws FormProcessException {
|
||||
PageState state = fse.getPageState();
|
||||
RelatedLink link;
|
||||
|
||||
// save only if save button was pressed
|
||||
if (getSaveCancelSection().getCancelButton().isSelected(state)) {
|
||||
// cancel button is selected
|
||||
m_linkModel.clearSelection(state);
|
||||
s_log.debug("link save canceled");
|
||||
|
||||
} else {
|
||||
|
||||
if (m_linkModel.isSelected(state)) {
|
||||
// Editing a link
|
||||
s_log.debug("processing link edit");
|
||||
link = (RelatedLink) m_linkModel.getSelectedLink(state);
|
||||
} else {
|
||||
s_log.debug("processing new link");
|
||||
link = (RelatedLink) createLink(state);
|
||||
}
|
||||
//call to set various properties of Link.
|
||||
setLinkProperties(link, fse);
|
||||
s_log.debug("Created Link with ID: " + link.getOID().toString()
|
||||
+ "Title " + link.getTitle());
|
||||
}
|
||||
// XXX Initialize the form
|
||||
m_linkModel.clearSelection(state);
|
||||
init(fse);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set various properties of the Link.Child clases can over-ride this method
|
||||
* to add additional properties to Link.
|
||||
*
|
||||
* @param link
|
||||
* @param fse
|
||||
*/
|
||||
protected void setLinkProperties(RelatedLink link, FormSectionEvent fse) {
|
||||
PageState state = fse.getPageState();
|
||||
FormData data = fse.getFormData();
|
||||
link.setTitle("caption");
|
||||
link.setDescription((String) m_description.getValue(state));
|
||||
link.setTargetType(RelatedLink.EXTERNAL_LINK);
|
||||
link.setTargetURI(null);
|
||||
link.setTargetWindow("");
|
||||
link.setResourceSize("");
|
||||
link.setResourceType(MimeType.loadMimeType("text/html"));
|
||||
link.setTargetItem(null);
|
||||
link.setLinkListName(m_linkListName);
|
||||
DataCollection links = RelatedLink.getRelatedLinks(
|
||||
getContentItem(fse.getPageState()),
|
||||
m_linkListName);
|
||||
//Only change link order if we are creating a new link
|
||||
if (!getLinkSelectionModel().isSelected(fse.getPageState())) {
|
||||
link.setOrder((int) links.size() + 1);
|
||||
}
|
||||
|
||||
link.save();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,106 @@
|
|||
/*
|
||||
* Copyright (C) 2004 Red Hat Inc. All Rights Reserved.
|
||||
*
|
||||
* The contents of this file are subject to the Open Software License v2.1
|
||||
* (the "License"); you may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at
|
||||
* http://rhea.redhat.com/licenses/osl2.1.html.
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
*/
|
||||
package com.arsdigita.cms.contentassets.ui;
|
||||
|
||||
import com.arsdigita.bebop.FormData;
|
||||
import com.arsdigita.bebop.FormProcessException;
|
||||
import com.arsdigita.bebop.Label;
|
||||
import com.arsdigita.bebop.PageState;
|
||||
import com.arsdigita.bebop.event.FormSectionEvent;
|
||||
import com.arsdigita.bebop.form.Hidden;
|
||||
import com.arsdigita.bebop.form.Option;
|
||||
import com.arsdigita.bebop.form.SingleSelect;
|
||||
import com.arsdigita.bebop.form.TextField;
|
||||
import com.arsdigita.bebop.parameters.StringParameter;
|
||||
import com.arsdigita.cms.ContentItem;
|
||||
import com.arsdigita.cms.ContentType;
|
||||
import com.arsdigita.cms.ItemSelectionModel;
|
||||
import com.arsdigita.cms.contentassets.RelatedLink;
|
||||
import com.arsdigita.cms.contentassets.RelatedLinkConfig;
|
||||
import com.arsdigita.cms.contentassets.util.RelatedLinkGlobalizationUtil;
|
||||
import com.arsdigita.cms.contenttypes.Link;
|
||||
import com.arsdigita.cms.contenttypes.ui.LinkPropertyForm;
|
||||
import com.arsdigita.cms.contenttypes.ui.LinkSelectionModel;
|
||||
import com.arsdigita.mimetypes.MimeType;
|
||||
import com.arsdigita.mimetypes.MimeTypeCollection;
|
||||
import com.arsdigita.persistence.DataCollection;
|
||||
import com.arsdigita.util.Assert;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
/**
|
||||
* Form to edit the basic properties of a RelatedLink. This form is a copy&paste
|
||||
* of relatedlinkform
|
||||
*
|
||||
* @version $Revision: #3 $ $Date: 2004/03/30 $
|
||||
* @author Scott Seago (sseago@redhat.com)
|
||||
*/
|
||||
public class RelatedLinkEditForm extends RelatedLinkPropertyForm {
|
||||
|
||||
private static final Logger logger = Logger.getLogger(
|
||||
RelatedLinkEditForm.class);
|
||||
private static boolean isHideNewTargetWindow = RelatedLinkConfig.getInstance()
|
||||
.isHideNewTargetWindow();
|
||||
private static boolean isHideAdditionalResourceFields = RelatedLinkConfig.getInstance()
|
||||
.isHideAdditionalResourceFields();
|
||||
private String m_linkListName;
|
||||
|
||||
/**
|
||||
* Creates a new form to edit the RelatedLink object specified by the item
|
||||
* selection model passed in.
|
||||
*
|
||||
* @param itemModel The ItemSelectionModel to use to obtain the ContentItem
|
||||
* to which this link is (or will be) attached
|
||||
* @param link The LinkSelectionModel to use to obtain the Link to work on
|
||||
*/
|
||||
public RelatedLinkEditForm(ItemSelectionModel itemModel,
|
||||
LinkSelectionModel link, String linkListName) {
|
||||
|
||||
super(itemModel, link, linkListName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Over-ride super class method to initialize addtional fields specific to
|
||||
* <code>RelatedLink</code> content asset.
|
||||
*/
|
||||
@Override
|
||||
public void init(FormSectionEvent fse) throws FormProcessException {
|
||||
super.init(fse);
|
||||
FormData data = fse.getFormData();
|
||||
PageState ps = fse.getPageState();
|
||||
RelatedLink rl;
|
||||
setVisible(ps, false);
|
||||
if (isHideAdditionalResourceFields) {
|
||||
// Do nothing except protect the poor users from themselves.
|
||||
} else {
|
||||
if (getLinkSelectionModel().isSelected(ps)) {
|
||||
|
||||
rl = (RelatedLink) getLinkSelectionModel().getSelectedLink(ps);
|
||||
if (!rl.getTitle().equals("caption")) {
|
||||
//make this form visible because we are editing and its not a caption
|
||||
setVisible(ps, true);
|
||||
}
|
||||
//We are editing the link , populate our addtional fields.
|
||||
data.put(RelatedLink.RESOURCE_SIZE, rl.getResourceSize());
|
||||
if (rl.getResourceType() != null) {
|
||||
data.put(RelatedLink.RESOURCE_TYPE,
|
||||
rl.getResourceType().getMimeType());
|
||||
}
|
||||
data.put(RelatedLink.LINK_LIST_NAME, rl.getLinkListName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -15,45 +15,127 @@
|
|||
package com.arsdigita.cms.contentassets.ui;
|
||||
|
||||
import com.arsdigita.bebop.Component;
|
||||
import com.arsdigita.bebop.Form;
|
||||
import com.arsdigita.bebop.FormSection;
|
||||
import com.arsdigita.bebop.Label;
|
||||
import com.arsdigita.bebop.PageState;
|
||||
import com.arsdigita.bebop.SaveCancelSection;
|
||||
import com.arsdigita.bebop.SimpleContainer;
|
||||
import com.arsdigita.cms.ContentSection;
|
||||
import com.arsdigita.bebop.event.ActionEvent;
|
||||
import com.arsdigita.bebop.event.ActionListener;
|
||||
import com.arsdigita.bebop.event.PrintEvent;
|
||||
import com.arsdigita.bebop.event.PrintListener;
|
||||
import com.arsdigita.cms.ContentItem;
|
||||
import com.arsdigita.cms.ContentType;
|
||||
import com.arsdigita.cms.contentassets.RelatedLinkConfig;
|
||||
import com.arsdigita.cms.ItemSelectionModel;
|
||||
import com.arsdigita.cms.contentassets.RelatedLink;
|
||||
import com.arsdigita.cms.contentassets.util.RelatedLinkGlobalizationUtil;
|
||||
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
|
||||
import com.arsdigita.cms.contenttypes.ui.LinkPropertiesStep;
|
||||
import com.arsdigita.cms.contenttypes.ui.LinkTable;
|
||||
import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess;
|
||||
import com.arsdigita.cms.ui.workflow.WorkflowLockedContainer;
|
||||
import com.arsdigita.persistence.DataCollection;
|
||||
|
||||
/**
|
||||
* Authoring step to create a RelatedLink and change ordering.
|
||||
*
|
||||
* It is just a front end to the cms Link asset and makes RelatedLink accessible
|
||||
* Authoring step to create a RelatedLink and change ordering.
|
||||
*
|
||||
* It is just a front end to the cms Link asset and makes RelatedLink accessible
|
||||
* as installable add related link authoring step
|
||||
*/
|
||||
public class RelatedLinkPropertiesStep extends LinkPropertiesStep {
|
||||
|
||||
protected String linkListName;
|
||||
protected ContentType contentType;
|
||||
private SaveCancelSection m_saveCancelSection;
|
||||
private RelatedLinkPropertyForm m_RelatedLinkPropertyForm;
|
||||
private RelatedLinkCaptionForm m_RelatedLinkCaptionForm;
|
||||
private RelatedLinkTable m_linkList;
|
||||
|
||||
/**
|
||||
* Constructor. Creates a <code>RelatedLinkPropertiesStep</code> given an
|
||||
* <code>ItemSelectionModel</code> and an
|
||||
* <code>AuthoringKitWizard</code>.
|
||||
* <code>ItemSelectionModel</code> and an <code>AuthoringKitWizard</code>.
|
||||
*
|
||||
* @param itemModel The <code>ItemSelectionModel</code> for the current page.
|
||||
* @param parent The <code>AuthoringKitWizard</code> to track the
|
||||
* current link
|
||||
* @param itemModel The <code>ItemSelectionModel</code> for the current
|
||||
* page.
|
||||
* @param parent The <code>AuthoringKitWizard</code> to track the current
|
||||
* link
|
||||
*/
|
||||
public RelatedLinkPropertiesStep(ItemSelectionModel itemModel,
|
||||
AuthoringKitWizard parent) {
|
||||
AuthoringKitWizard parent) {
|
||||
super(itemModel, parent);
|
||||
|
||||
// Reset the editing when this component becomes visible
|
||||
parent.getList().addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent event) {
|
||||
PageState state = event.getPageState();
|
||||
showDisplayPane(state);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void addForms() {
|
||||
|
||||
m_Form = new RelatedLinkPropertyForm(m_itemModel, m_linkModel, linkListName);
|
||||
add("addlink", RelatedLinkGlobalizationUtil.globalize("cms.contentassets.ui.related_link.add_link"),
|
||||
new WorkflowLockedComponentAccess(m_Form, m_itemModel),
|
||||
m_Form.getSaveCancelSection().getCancelButton());
|
||||
|
||||
m_RelatedLinkCaptionForm = new RelatedLinkCaptionForm(m_itemModel, m_linkModel, linkListName);
|
||||
add("caption", RelatedLinkGlobalizationUtil.globalize(
|
||||
"cms.contentassets.ui.related_link.add_caption"),
|
||||
new WorkflowLockedComponentAccess(m_RelatedLinkCaptionForm, m_itemModel),
|
||||
m_RelatedLinkCaptionForm.getSaveCancelSection().getCancelButton());
|
||||
|
||||
// the link edit form
|
||||
Form linkform = new Form("linkEditForm");
|
||||
linkform.add(getEditSheet());
|
||||
|
||||
WorkflowLockedContainer edit = new WorkflowLockedContainer(m_itemModel);
|
||||
edit.add(linkform);
|
||||
add(edit);
|
||||
|
||||
//the caption edit form
|
||||
Form captionform = new Form("captionEditForm");
|
||||
captionform.add(getcaptionSheet());
|
||||
|
||||
WorkflowLockedContainer captionEdit = new WorkflowLockedContainer(m_itemModel);
|
||||
captionEdit.add(captionform);
|
||||
add(captionEdit);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addTable() {
|
||||
m_linkList = new RelatedLinkTable(m_itemModel, m_linkModel, linkListName);
|
||||
Label mainLabel = new Label("bla");
|
||||
mainLabel.setFontWeight(Label.ITALIC);
|
||||
mainLabel.addPrintListener(new PrintListener() {
|
||||
public void prepare(PrintEvent event) {
|
||||
PageState state = event.getPageState();
|
||||
ContentItem item = (ContentItem) m_itemModel.getSelectedObject(state);
|
||||
if (item != null) {
|
||||
DataCollection rlinks = RelatedLink.getRelatedLinks(item);
|
||||
Label mainTarget = (Label) event.getTarget();
|
||||
if (rlinks.isEmpty()) {
|
||||
mainTarget.setLabel(
|
||||
"no RELATEDLinks");
|
||||
} else {
|
||||
mainTarget.setLabel("");
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
m_display.add(mainLabel);
|
||||
m_display.add(m_linkList);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets a RelatedLinkSelectionModel as the LinkSelectionModel for this
|
||||
* authoring step.
|
||||
* Also, set the linkListName and contentType if neccessary
|
||||
* Sets a RelatedLinkSelectionModel as the LinkSelectionModel for this
|
||||
* authoring step. Also, set the linkListName and contentType if neccessary
|
||||
*/
|
||||
@Override
|
||||
protected void setLinkSelectionModel() {
|
||||
|
|
@ -62,11 +144,11 @@ public class RelatedLinkPropertiesStep extends LinkPropertiesStep {
|
|||
}
|
||||
|
||||
/**
|
||||
* Returns a RelatedLinkTable as the display component for this authoring
|
||||
* Returns a RelatedLinkTable as the display component for this authoring
|
||||
* step.
|
||||
*
|
||||
* Uses CMS LinkTable and its display facilities.
|
||||
*
|
||||
*
|
||||
* @return The display component to use for the authoring step
|
||||
*/
|
||||
@Override
|
||||
|
|
@ -77,32 +159,67 @@ public class RelatedLinkPropertiesStep extends LinkPropertiesStep {
|
|||
LinkTable table;
|
||||
if (RelatedLinkConfig.getInstance().isHideAdditionalResourceFields()) {
|
||||
// CMS LinkTable it it's standard form
|
||||
table = new LinkTable(getItemSelectionModel(),
|
||||
getLinkSelectionModel());
|
||||
table.setModelBuilder(new
|
||||
RelatedLinkTableModelBuilder(getItemSelectionModel(),
|
||||
linkListName));
|
||||
table = new LinkTable(getItemSelectionModel(),
|
||||
getLinkSelectionModel());
|
||||
table.setModelBuilder(new RelatedLinkTableModelBuilder(getItemSelectionModel(),
|
||||
linkListName));
|
||||
} else {
|
||||
// Add columns to standard CMS LinkTable
|
||||
table = new RelatedLinkTable(getItemSelectionModel(),
|
||||
getLinkSelectionModel(),
|
||||
linkListName);
|
||||
table = new RelatedLinkTable(getItemSelectionModel(),
|
||||
getLinkSelectionModel(),
|
||||
linkListName);
|
||||
}
|
||||
|
||||
container.add(table);
|
||||
return container;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrieves the saveCancelSection.
|
||||
*
|
||||
* @return Save/Cencel section
|
||||
*/
|
||||
public SaveCancelSection getSaveCancelSection() {
|
||||
m_saveCancelSection = new SaveCancelSection();
|
||||
// add(m_saveCancelSection, ColumnPanel.FULL_WIDTH | ColumnPanel.LEFT);
|
||||
|
||||
return m_saveCancelSection;
|
||||
}
|
||||
|
||||
// public String getLinkListName() {
|
||||
// return linkListName;
|
||||
//
|
||||
// }
|
||||
|
||||
/**
|
||||
* Gets the edit form for related links
|
||||
*
|
||||
* @return The edit form
|
||||
*/
|
||||
// @Override
|
||||
// protected FormSection getEditSheet() {
|
||||
// return new RelatedLinkPropertyForm(m_itemModel, m_linkModel, linkListName);
|
||||
// }
|
||||
|
||||
/**
|
||||
* Gets the edit form for captions
|
||||
*
|
||||
* @return The edit form
|
||||
*/
|
||||
protected FormSection getcaptionSheet() {
|
||||
return new RelatedLinkCaptionEditForm(m_itemModel, m_linkModel, linkListName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the edit form (a RelatedLinkPropertyForm)
|
||||
*
|
||||
* @return The edit form
|
||||
*/
|
||||
@Override
|
||||
protected FormSection getEditSheet() {
|
||||
return new RelatedLinkPropertyForm(getItemSelectionModel(),
|
||||
getLinkSelectionModel(),
|
||||
linkListName,
|
||||
contentType);
|
||||
return new RelatedLinkEditForm(getItemSelectionModel(),
|
||||
getLinkSelectionModel(), linkListName);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,9 +41,10 @@ import com.arsdigita.util.Assert;
|
|||
import org.apache.log4j.Logger;
|
||||
|
||||
/**
|
||||
* Form to edit the basic properties of a RelatedLink. This form extends LinkPropertyForm in order
|
||||
* to create items of the correct subclass and set the linkOwner property. Users have found the
|
||||
* additional fields confusing at authoring time (resourceSize and resourceType) so we have added a
|
||||
* Form to edit the basic properties of a RelatedLink. This form extends
|
||||
* LinkPropertyForm in order to create items of the correct subclass and set the
|
||||
* linkOwner property. Users have found the additional fields confusing at
|
||||
* authoring time (resourceSize and resourceType) so we have added a
|
||||
* configuration parameter that allows us to hide them on a site wide basis.
|
||||
*
|
||||
* @version $Revision: #3 $ $Date: 2004/03/30 $
|
||||
|
|
@ -52,30 +53,30 @@ import org.apache.log4j.Logger;
|
|||
public class RelatedLinkPropertyForm extends LinkPropertyForm {
|
||||
|
||||
private static final Logger logger = Logger.getLogger(
|
||||
RelatedLinkPropertyForm.class);
|
||||
RelatedLinkPropertyForm.class);
|
||||
private static boolean isHideNewTargetWindow = RelatedLinkConfig.getInstance()
|
||||
.isHideNewTargetWindow();
|
||||
.isHideNewTargetWindow();
|
||||
private static boolean isHideAdditionalResourceFields = RelatedLinkConfig.getInstance()
|
||||
.isHideAdditionalResourceFields();
|
||||
.isHideAdditionalResourceFields();
|
||||
private String m_linkListName;
|
||||
|
||||
/**
|
||||
* Creates a new form to edit the RelatedLink object specified by the item selection model
|
||||
* passed in.
|
||||
* Creates a new form to edit the RelatedLink object specified by the item
|
||||
* selection model passed in.
|
||||
*
|
||||
* @param itemModel The ItemSelectionModel to use to obtain the ContentItem to which this link
|
||||
* is (or will be) attached
|
||||
* @param link The LinkSelectionModel to use to obtain the Link to work on
|
||||
* @param itemModel The ItemSelectionModel to use to obtain the ContentItem
|
||||
* to which this link is (or will be) attached
|
||||
* @param link The LinkSelectionModel to use to obtain the Link to work on
|
||||
*/
|
||||
public RelatedLinkPropertyForm(ItemSelectionModel itemModel,
|
||||
LinkSelectionModel link, String linkListName) {
|
||||
LinkSelectionModel link, String linkListName) {
|
||||
|
||||
this(itemModel, link, linkListName, null);
|
||||
}
|
||||
|
||||
public RelatedLinkPropertyForm(ItemSelectionModel itemModel,
|
||||
LinkSelectionModel link, String linkListName,
|
||||
ContentType contentType) {
|
||||
LinkSelectionModel link, String linkListName,
|
||||
ContentType contentType) {
|
||||
|
||||
super(itemModel, link, contentType);
|
||||
logger.debug(String.format("linkListName = %s", linkListName));
|
||||
|
|
@ -107,25 +108,25 @@ public class RelatedLinkPropertyForm extends LinkPropertyForm {
|
|||
// Do nothing except protect the poor users from themselves.
|
||||
} else {
|
||||
add(new Label(RelatedLinkGlobalizationUtil.globalize(
|
||||
"cms.contentassets.ui.related_link.resource_size")));
|
||||
"cms.contentassets.ui.related_link.resource_size")));
|
||||
TextField resSize = new TextField(new StringParameter(RelatedLink.RESOURCE_SIZE));
|
||||
add(resSize);
|
||||
|
||||
add(new Label(RelatedLinkGlobalizationUtil.globalize(
|
||||
"cms.contentassets.ui.related_link.resource_type")));
|
||||
"cms.contentassets.ui.related_link.resource_type")));
|
||||
SingleSelect resType = new SingleSelect(new StringParameter(RelatedLink.RESOURCE_TYPE));
|
||||
addMimeOptions(resType);
|
||||
add(resType);
|
||||
}
|
||||
|
||||
Hidden linkListName = new Hidden(new StringParameter(
|
||||
RelatedLink.LINK_LIST_NAME));
|
||||
RelatedLink.LINK_LIST_NAME));
|
||||
add(linkListName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add mime-type options to the option group by loading all mime types which match a certain
|
||||
* prefix from the database
|
||||
* Add mime-type options to the option group by loading all mime types which
|
||||
* match a certain prefix from the database
|
||||
*
|
||||
* @param w The mime type widget to which options should be added
|
||||
*
|
||||
|
|
@ -140,8 +141,8 @@ public class RelatedLinkPropertyForm extends LinkPropertyForm {
|
|||
}
|
||||
|
||||
/**
|
||||
* Take care of basic RelatedLink creation steps. Creates the RelatedLink and sets the linkOwner
|
||||
* property.
|
||||
* Take care of basic RelatedLink creation steps. Creates the RelatedLink
|
||||
* and sets the linkOwner property.
|
||||
*
|
||||
* @param s the PageState
|
||||
*
|
||||
|
|
@ -174,26 +175,17 @@ public class RelatedLinkPropertyForm extends LinkPropertyForm {
|
|||
if (isHideAdditionalResourceFields) {
|
||||
// Do nothing except protect the poor users from themselves.
|
||||
} else {
|
||||
if (getLinkSelectionModel().isSelected(ps)) {
|
||||
//We are editing the link , populate our addtional fields.
|
||||
rl = (RelatedLink) getLinkSelectionModel().getSelectedLink(ps);
|
||||
data.put(RelatedLink.RESOURCE_SIZE, rl.getResourceSize());
|
||||
if (rl.getResourceType() != null) {
|
||||
data.put(RelatedLink.RESOURCE_TYPE,
|
||||
rl.getResourceType().getMimeType());
|
||||
}
|
||||
data.put(RelatedLink.LINK_LIST_NAME, rl.getLinkListName());
|
||||
} else {
|
||||
// New Link creation , clear the fields.
|
||||
data.put(RelatedLink.RESOURCE_SIZE, null);
|
||||
data.put(RelatedLink.RESOURCE_TYPE, null);
|
||||
data.put(RelatedLink.LINK_LIST_NAME, m_linkListName);
|
||||
}
|
||||
|
||||
// New Link creation , clear the fields.
|
||||
data.put(RelatedLink.RESOURCE_SIZE, null);
|
||||
data.put(RelatedLink.RESOURCE_TYPE, null);
|
||||
data.put(RelatedLink.LINK_LIST_NAME, m_linkListName);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* over-ride super class method to set extended properties for <code>RelatedLink</code>.
|
||||
* over-ride super class method to set extended properties for
|
||||
* <code>RelatedLink</code>.
|
||||
*/
|
||||
@Override
|
||||
protected void setLinkProperties(Link link, FormSectionEvent fse) {
|
||||
|
|
@ -212,8 +204,8 @@ public class RelatedLinkPropertyForm extends LinkPropertyForm {
|
|||
rl.setLinkListName((String) data.get(RelatedLink.LINK_LIST_NAME));
|
||||
|
||||
DataCollection links = RelatedLink.getRelatedLinks(
|
||||
getContentItem(fse.getPageState()),
|
||||
m_linkListName);
|
||||
getContentItem(fse.getPageState()),
|
||||
m_linkListName);
|
||||
//Only change link order if we are creating a new link
|
||||
if (!getLinkSelectionModel().isSelected(fse.getPageState())) {
|
||||
rl.setOrder((int) links.size() + 1);
|
||||
|
|
|
|||
|
|
@ -1011,7 +1011,7 @@ cms.ui.authoring.go=Go
|
|||
cms.ui.upload=File Upload
|
||||
cms.ui.section.new_section_name=Name of the new Content Section
|
||||
cms.contenttyes.link.ui.table_header_link=Link
|
||||
cms.contenttyes.link.ui.table_header_descr=Description
|
||||
cms.contenttyes.link.ui.table_header_descr=Description/Caption
|
||||
cms.contenttyes.link.ui.table_header_edit=Edit
|
||||
cms.contenttyes.link.ui.table_header_delete=Delete
|
||||
cms.contenttyes.link.ui.table_header_move_up=Move Up
|
||||
|
|
@ -1109,3 +1109,6 @@ cms.ui.authoring.html_file_missing_body_tags=The file (which should be type HTML
|
|||
cms.ui.lifecycle.publish.not_possible_abstract_category\ =
|
||||
cms.ui.authoring.couldnt_create_item=Couldn't create new Item
|
||||
cms.ui.type.content_editing_failed=Failed to edit the content type: {0}
|
||||
cms.contenttyes.link.ui.caption=Caption:
|
||||
cms.contenttyes.link.ui.option_group.caption=caption
|
||||
cms.contenttypes.ui.title_is_required=A title is required
|
||||
|
|
|
|||
|
|
@ -1005,9 +1005,9 @@ cms.ui.authoring.go=Anlegen
|
|||
cms.ui.upload=Datei laden
|
||||
cms.ui.section.new_section_name=Name der neuen Content Section
|
||||
cms.contenttyes.link.ui.table_header_link=Link
|
||||
cms.contenttyes.link.ui.table_header_descr=Beschreibung
|
||||
cms.contenttyes.link.ui.table_header_descr=Beschreibung/Zwischentitel
|
||||
cms.contenttyes.link.ui.table_header_edit=Bearbeiten
|
||||
cms.contenttyes.link.ui.table_header_delete=DeleteEntfernen
|
||||
cms.contenttyes.link.ui.table_header_delete=Entfernen
|
||||
cms.contenttyes.link.ui.table_header_move_up=Nach Oben bewegen
|
||||
cms.contenttyes.link.ui.table_header_move_down=Nach Unten bewegen
|
||||
cms.contenttyes.link.ui.table_cell_edit_link=bearbeiten
|
||||
|
|
@ -1103,3 +1103,6 @@ cms.ui.authoring.html_file_missing_body_tags=Der Datei (vom Type HTML) fehlt der
|
|||
cms.ui.lifecycle.publish.not_possible_abstract_category\ =
|
||||
cms.ui.authoring.couldnt_create_item=Konnte ein neues Element nicht erstellen
|
||||
cms.ui.type.content_editing_failed=Bearbeitung des Dokumenttyps: {0} ist fehlgeschlagen
|
||||
cms.contenttyes.link.ui.caption=Zwischentitel:
|
||||
cms.contenttyes.link.ui.option_group.caption=Zwischentitel
|
||||
cms.contenttypes.ui.title_is_required=Ein Titel wird ben\u00f6tigt
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ cms.ui.authoring.go=Go
|
|||
cms.ui.upload=File Upload
|
||||
cms.ui.section.new_section_name=
|
||||
cms.contenttyes.link.ui.table_header_link=Link
|
||||
cms.contenttyes.link.ui.table_header_descr=Description
|
||||
cms.contenttyes.link.ui.table_header_descr=Description/Caption
|
||||
cms.contenttyes.link.ui.table_header_edit=Edit
|
||||
cms.contenttyes.link.ui.table_header_delete=Delete
|
||||
cms.contenttyes.link.ui.table_header_move_up=Move Up
|
||||
|
|
@ -147,3 +147,6 @@ cms.ui.authoring.html_file_missing_body_tags=
|
|||
cms.ui.lifecycle.publish.not_possible_abstract_category\ =
|
||||
cms.ui.authoring.couldnt_create_item=
|
||||
cms.ui.type.content_editing_failed=
|
||||
cms.contenttyes.link.ui.caption=Caption:
|
||||
cms.contenttyes.link.ui.option_group.caption=caption
|
||||
cms.contenttypes.ui.title_is_required=A title is required
|
||||
|
|
|
|||
|
|
@ -526,7 +526,7 @@ cms.ui.title=Title
|
|||
cms.ui.upload=Transf\u00e9re
|
||||
cms.ui.section.new_section_name=
|
||||
cms.contenttyes.link.ui.table_header_link=Link
|
||||
cms.contenttyes.link.ui.table_header_descr=Description
|
||||
cms.contenttyes.link.ui.table_header_descr=Description/Caption
|
||||
cms.contenttyes.link.ui.table_header_edit=Edit
|
||||
cms.contenttyes.link.ui.table_header_delete=Delete
|
||||
cms.contenttyes.link.ui.table_header_move_up=Move Up
|
||||
|
|
@ -619,3 +619,6 @@ cms.ui.authoring.html_file_missing_body_tags=Le fichier (qui devrait \u00eatre d
|
|||
cms.ui.lifecycle.publish.not_possible_abstract_category\ =
|
||||
cms.ui.authoring.couldnt_create_item=Impossible de cr\u00e9er un nouveau \u00e9l\u00e9ment
|
||||
cms.ui.type.content_editing_failed=Impossible de modifier le type de contenu: {0}
|
||||
cms.contenttyes.link.ui.caption=Caption:
|
||||
cms.contenttyes.link.ui.option_group.caption=caption
|
||||
cms.contenttypes.ui.title_is_required=A title is required
|
||||
|
|
|
|||
|
|
@ -18,108 +18,178 @@
|
|||
*/
|
||||
package com.arsdigita.cms.contenttypes.ui;
|
||||
|
||||
import com.arsdigita.bebop.Form;
|
||||
import com.arsdigita.bebop.FormSection;
|
||||
import com.arsdigita.bebop.Page;
|
||||
import com.arsdigita.bebop.Component;
|
||||
import com.arsdigita.bebop.Form;
|
||||
import com.arsdigita.bebop.Label;
|
||||
import com.arsdigita.bebop.PageState;
|
||||
import com.arsdigita.bebop.SimpleContainer;
|
||||
import com.arsdigita.bebop.event.ActionEvent;
|
||||
import com.arsdigita.bebop.event.ActionListener;
|
||||
import com.arsdigita.bebop.event.PrintEvent;
|
||||
import com.arsdigita.bebop.event.PrintListener;
|
||||
import com.arsdigita.bebop.parameters.BigDecimalParameter;
|
||||
import com.arsdigita.cms.ContentItem;
|
||||
import com.arsdigita.cms.ItemSelectionModel;
|
||||
import com.arsdigita.cms.contenttypes.Link;
|
||||
import com.arsdigita.cms.ui.CMSContainer;
|
||||
import com.arsdigita.cms.ui.SecurityPropertyEditor;
|
||||
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
|
||||
import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess;
|
||||
import com.arsdigita.cms.ui.workflow.WorkflowLockedContainer;
|
||||
import com.arsdigita.cms.util.GlobalizationUtil;
|
||||
import com.arsdigita.persistence.DataCollection;
|
||||
|
||||
/**
|
||||
* Authoring step to create a link and change ordering. This class is
|
||||
* declared abstract, as this and related Link* base classes do not
|
||||
* assign the Links to a specific role/association.
|
||||
* <code>RelatedLinkPropertiesStep</code> extends this functionality to
|
||||
* view/assign RelatedLinks in the specific "links" role on ContentItem.
|
||||
* Authoring step to create a link and change ordering. This class is declared
|
||||
* abstract, as this and related Link* base classes do not assign the Links to a
|
||||
* specific role/association. <code>RelatedLinkPropertiesStep</code> extends
|
||||
* this functionality to view/assign RelatedLinks in the specific "links" role
|
||||
* on ContentItem.
|
||||
*/
|
||||
public abstract class LinkPropertiesStep extends ResettableContainer {
|
||||
public abstract class LinkPropertiesStep extends SecurityPropertyEditor {
|
||||
|
||||
private AuthoringKitWizard m_parent;
|
||||
private ItemSelectionModel m_itemModel;
|
||||
public ItemSelectionModel m_itemModel;
|
||||
private BigDecimalParameter m_linkParam = new BigDecimalParameter("link");
|
||||
private LinkSelectionModel m_linkModel = new LinkSelectionModel(m_linkParam);
|
||||
public LinkSelectionModel m_linkModel = new LinkSelectionModel(m_linkParam);
|
||||
protected CMSContainer m_display;
|
||||
protected LinkPropertyForm m_Form;
|
||||
private LinkTable m_linkList;
|
||||
|
||||
/**
|
||||
* Constructor. Creates a <code>LinkPropertiesStep</code> given an
|
||||
* <code>ItemSelectionModel</code> and an
|
||||
* <code>AuthoringKitWizard</code>.
|
||||
* <code>ItemSelectionModel</code> and an <code>AuthoringKitWizard</code>.
|
||||
*
|
||||
* @param itemModel The <code>ItemSelectionModel</code> for the current page.
|
||||
* @param parent The <code>AuthoringKitWizard</code> to track the
|
||||
* current link
|
||||
* @param itemModel The <code>ItemSelectionModel</code> for the current
|
||||
* page.
|
||||
* @param parent The <code>AuthoringKitWizard</code> to track the current
|
||||
* link
|
||||
*/
|
||||
public LinkPropertiesStep(ItemSelectionModel itemModel,
|
||||
AuthoringKitWizard parent) {
|
||||
|
||||
m_itemModel = itemModel;
|
||||
m_parent = parent;
|
||||
setLinkSelectionModel();
|
||||
add(getDisplayComponent());
|
||||
m_display = new CMSContainer();
|
||||
|
||||
setLinkSelectionModel();
|
||||
|
||||
//add(getDisplayComponent());
|
||||
addTable();
|
||||
|
||||
setDisplayComponent(m_display);
|
||||
|
||||
m_parent.getList().addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent event) {
|
||||
PageState state = event.getPageState();
|
||||
showDisplayPane(state);
|
||||
}
|
||||
});
|
||||
addForms();
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds buttons to create a new link and adds the editform
|
||||
*
|
||||
* Override this method if you want different forms or more than one
|
||||
*
|
||||
* @author konerman
|
||||
*/
|
||||
protected void addForms() {
|
||||
//button to add a new link
|
||||
m_Form = new LinkPropertyForm(m_itemModel, m_linkModel);
|
||||
add("addlink", GlobalizationUtil.globalize("Link hinzufügen"),
|
||||
new WorkflowLockedComponentAccess(m_Form, m_itemModel),
|
||||
m_Form.getSaveCancelSection().getCancelButton());
|
||||
|
||||
// shows the propertyform to edit
|
||||
Form form = new Form("linkEditForm");
|
||||
form.add(getEditSheet());
|
||||
|
||||
WorkflowLockedContainer edit = new WorkflowLockedContainer(itemModel);
|
||||
WorkflowLockedContainer edit = new WorkflowLockedContainer(m_itemModel);
|
||||
edit.add(form);
|
||||
add(edit);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the LinkSelectionModel for this authoring step. Subclasses
|
||||
* should override this method if a custom LinkSelectionModel is desired.
|
||||
* Adds a table with links.
|
||||
*/
|
||||
protected void addTable() {
|
||||
m_linkList = new LinkTable(m_itemModel, m_linkModel);
|
||||
Label mainLabel = new Label("bla");
|
||||
mainLabel.setFontWeight(Label.ITALIC);
|
||||
mainLabel.addPrintListener(new PrintListener() {
|
||||
public void prepare(PrintEvent event) {
|
||||
PageState state = event.getPageState();
|
||||
ContentItem item = (ContentItem) m_itemModel.getSelectedObject(state);
|
||||
if (item != null) {
|
||||
DataCollection links = Link.getReferringLinks(item);
|
||||
Label mainTarget = (Label) event.getTarget();
|
||||
if (links.isEmpty()) {
|
||||
mainTarget.setLabel(
|
||||
"no Links");
|
||||
} else {
|
||||
mainTarget.setLabel("");
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
m_display.add(mainLabel);
|
||||
|
||||
m_display.add(m_linkList);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the LinkSelectionModel for this authoring step. Subclasses should
|
||||
* override this method if a custom LinkSelectionModel is desired.
|
||||
*/
|
||||
protected void setLinkSelectionModel() {
|
||||
setLinkSelectionModel(new LinkSelectionModel(m_linkParam));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the LinkSelectionModel for this authoring step.
|
||||
* Sets the LinkSelectionModel for this authoring step.
|
||||
*
|
||||
* @param linkModel The <code>LinkSelectionModel</code> to use for
|
||||
* the authoring step
|
||||
* @param linkModel The <code>LinkSelectionModel</code> to use for the
|
||||
* authoring step
|
||||
*/
|
||||
protected void setLinkSelectionModel(LinkSelectionModel linkModel) {
|
||||
m_linkModel = linkModel;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the LinkSelectionModel for this authoring step.
|
||||
* Gets the LinkSelectionModel for this authoring step.
|
||||
*
|
||||
* @return The <code>LinkSelectionModel</code> to use for
|
||||
* the authoring step
|
||||
* @return The <code>LinkSelectionModel</code> to use for the authoring step
|
||||
*/
|
||||
protected LinkSelectionModel getLinkSelectionModel() {
|
||||
return m_linkModel;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the ItemSelectionModel for this authoring step.
|
||||
* Gets the ItemSelectionModel for this authoring step.
|
||||
*
|
||||
* @return The <code>ItemSelectionModel</code> to use for
|
||||
* the authoring step
|
||||
* @return The <code>ItemSelectionModel</code> to use for the authoring step
|
||||
*/
|
||||
protected ItemSelectionModel getItemSelectionModel() {
|
||||
return m_itemModel;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the link parameter for this authoring step.
|
||||
* Gets the link parameter for this authoring step.
|
||||
*
|
||||
* @return The link parameter to use for
|
||||
* the authoring step
|
||||
* @return The link parameter to use for the authoring step
|
||||
*/
|
||||
protected BigDecimalParameter getLinkParam() {
|
||||
return m_linkParam;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the display compoent for this authoring step.
|
||||
* Gets the display compoent for this authoring step.
|
||||
*
|
||||
* @return The display component to use for
|
||||
* the authoring step
|
||||
* @return The display component to use for the authoring step
|
||||
*/
|
||||
public Component getDisplayComponent() {
|
||||
SimpleContainer container = new SimpleContainer();
|
||||
|
|
@ -137,8 +207,8 @@ public abstract class LinkPropertiesStep extends ResettableContainer {
|
|||
}
|
||||
|
||||
/**
|
||||
* When this component is registered, the link parameter is added
|
||||
* as a ComponentStateParameter
|
||||
* When this component is registered, the link parameter is added as a
|
||||
* ComponentStateParameter
|
||||
*
|
||||
* @param p The Page object
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -157,7 +157,7 @@ public class LinkPropertyForm extends FormSection
|
|||
add(new Label(GlobalizationUtil.globalize(
|
||||
"cms.contenttypes.ui.description")));
|
||||
add(m_description);
|
||||
|
||||
|
||||
//add(new Label(
|
||||
add(new Embedded(
|
||||
"<script language=\"javascript\">\n"
|
||||
|
|
@ -495,13 +495,17 @@ public class LinkPropertyForm extends FormSection
|
|||
@Override
|
||||
public void init(FormSectionEvent fse) throws FormProcessException {
|
||||
FormData data = fse.getFormData();
|
||||
PageState state = fse.getPageState();
|
||||
PageState state = fse.getPageState();
|
||||
s_log.debug("Init");
|
||||
setVisible(state, true);
|
||||
Link link;
|
||||
if (m_linkModel.isSelected(state)) {
|
||||
s_log.debug("Edit");
|
||||
link = m_linkModel.getSelectedLink(state);
|
||||
|
||||
if(link.getTitle().equals("caption")){
|
||||
setVisible(state,false);
|
||||
}
|
||||
try {
|
||||
m_title.setValue(state, link.getTitle());
|
||||
m_description.setValue(state, link.getDescription());
|
||||
|
|
|
|||
|
|
@ -46,12 +46,11 @@ import com.arsdigita.util.Assert;
|
|||
import java.math.BigDecimal;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
|
||||
/**
|
||||
* Bebop table to display a list of Links associated with a ContentItem.
|
||||
*
|
||||
*
|
||||
* It is the UI for the CMS build in Link asset.
|
||||
*
|
||||
*
|
||||
* It's current prominent use is by the RelatedLink asset authjoring step.
|
||||
*
|
||||
* @version $Revision: #6 $ $Date: 2004/08/17 $
|
||||
|
|
@ -72,11 +71,11 @@ public class LinkTable extends Table {
|
|||
private RequestLocal m_editor;
|
||||
|
||||
// match columns by (symbolic) index, makes for easier reordering
|
||||
private static final int COL_IDX_LINK = 0; //Link;
|
||||
private static final int COL_IDX_DESCR = 1; //Description;
|
||||
private static final int COL_IDX_EDIT = 2; //Description;
|
||||
private static final int COL_IDX_DELETE = 3; //Description;
|
||||
private static final int COL_IDX_MOVE_UP = 4; //Description;
|
||||
private static final int COL_IDX_LINK = 0; //Link;
|
||||
private static final int COL_IDX_DESCR = 1; //Description;
|
||||
private static final int COL_IDX_EDIT = 2; //Description;
|
||||
private static final int COL_IDX_DELETE = 3; //Description;
|
||||
private static final int COL_IDX_MOVE_UP = 4; //Description;
|
||||
private static final int COL_IDX_MOVE_DOWN = 5; //Description;
|
||||
|
||||
protected static final String EDIT_EVENT = "Edit";
|
||||
|
|
@ -86,13 +85,11 @@ public class LinkTable extends Table {
|
|||
|
||||
/**
|
||||
* Constructor. Creates a <code>LinkTable</code> given an
|
||||
* <code>ItemSelectionModel</code> and a
|
||||
* <code>LinkSelectionModel</code>, which track the current item
|
||||
* and link.
|
||||
* <code>ItemSelectionModel</code> and a <code>LinkSelectionModel</code>,
|
||||
* which track the current item and link.
|
||||
*
|
||||
* @param item The <code>ItemSelectionModel</code> for the current page.
|
||||
* @param link The <code>LinkSelectionModel</code> to track the
|
||||
* current link
|
||||
* @param link The <code>LinkSelectionModel</code> to track the current link
|
||||
*/
|
||||
public LinkTable(ItemSelectionModel item, LinkSelectionModel link) {
|
||||
|
||||
|
|
@ -104,21 +101,21 @@ public class LinkTable extends Table {
|
|||
m_size = new RequestLocal();
|
||||
m_editor = new RequestLocal() {
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
public Object initialValue(PageState state) {
|
||||
SecurityManager sm = CMS.getSecurityManager(state);
|
||||
ContentItem item = (ContentItem) m_itemModel
|
||||
.getSelectedObject(state);
|
||||
.getSelectedObject(state);
|
||||
Boolean val = new Boolean(sm.canAccess(state.getRequest(),
|
||||
SecurityManager.EDIT_ITEM,
|
||||
item));
|
||||
SecurityManager.EDIT_ITEM,
|
||||
item));
|
||||
return val;
|
||||
}
|
||||
};
|
||||
|
||||
Label empty = new Label(GlobalizationUtil.globalize(
|
||||
"cms.contenttyes.link.ui.table_no_entries"));
|
||||
"cms.contenttyes.link.ui.table_no_entries"));
|
||||
setEmptyView(empty);
|
||||
addTableActionListener(new LinkTableActionListener());
|
||||
setRowSelectionModel(m_linkModel);
|
||||
|
|
@ -133,35 +130,35 @@ public class LinkTable extends Table {
|
|||
TableColumnModel model = getColumnModel();
|
||||
|
||||
m_titleCol = new TableColumn(
|
||||
COL_IDX_LINK,
|
||||
new Label(GlobalizationUtil.globalize(
|
||||
"cms.contenttyes.link.ui.table_header_link"))
|
||||
);
|
||||
COL_IDX_LINK,
|
||||
new Label(GlobalizationUtil.globalize(
|
||||
"cms.contenttyes.link.ui.table_header_link"))
|
||||
);
|
||||
m_descCol = new TableColumn(
|
||||
COL_IDX_DESCR,
|
||||
new Label(GlobalizationUtil.globalize(
|
||||
"cms.contenttyes.link.ui.table_header_descr"))
|
||||
);
|
||||
COL_IDX_DESCR,
|
||||
new Label(GlobalizationUtil.globalize(
|
||||
"cms.contenttyes.link.ui.table_header_descr"))
|
||||
);
|
||||
m_editCol = new TableColumn(
|
||||
COL_IDX_EDIT,
|
||||
new Label(GlobalizationUtil.globalize(
|
||||
"cms.contenttyes.link.ui.table_header_edit"))
|
||||
);
|
||||
COL_IDX_EDIT,
|
||||
new Label(GlobalizationUtil.globalize(
|
||||
"cms.contenttyes.link.ui.table_header_edit"))
|
||||
);
|
||||
m_delCol = new TableColumn(
|
||||
COL_IDX_DELETE,
|
||||
new Label(GlobalizationUtil.globalize(
|
||||
"cms.contenttyes.link.ui.table_header_delete"))
|
||||
);
|
||||
COL_IDX_DELETE,
|
||||
new Label(GlobalizationUtil.globalize(
|
||||
"cms.contenttyes.link.ui.table_header_delete"))
|
||||
);
|
||||
m_moveUpCol = new TableColumn(
|
||||
COL_IDX_MOVE_UP,
|
||||
new Label(GlobalizationUtil.globalize(
|
||||
"cms.contenttyes.link.ui.table_header_move_up"))
|
||||
);
|
||||
COL_IDX_MOVE_UP,
|
||||
new Label(GlobalizationUtil.globalize(
|
||||
"cms.contenttyes.link.ui.table_header_move_up"))
|
||||
);
|
||||
m_moveDownCol = new TableColumn(
|
||||
COL_IDX_MOVE_DOWN,
|
||||
new Label(GlobalizationUtil.globalize(
|
||||
"cms.contenttyes.link.ui.table_header_move_down"))
|
||||
);
|
||||
COL_IDX_MOVE_DOWN,
|
||||
new Label(GlobalizationUtil.globalize(
|
||||
"cms.contenttyes.link.ui.table_header_move_down"))
|
||||
);
|
||||
|
||||
model.add(m_titleCol);
|
||||
model.add(m_descCol);
|
||||
|
|
@ -179,7 +176,7 @@ public class LinkTable extends Table {
|
|||
private class LinkTableRenderer implements TableCellRenderer {
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @param table
|
||||
* @param state
|
||||
* @param value
|
||||
|
|
@ -187,31 +184,36 @@ public class LinkTable extends Table {
|
|||
* @param key
|
||||
* @param row
|
||||
* @param column
|
||||
* @return
|
||||
* @return
|
||||
*/
|
||||
public Component getComponent(Table table,
|
||||
PageState state,
|
||||
Object value,
|
||||
boolean isSelected,
|
||||
Object key,
|
||||
int row,
|
||||
int column) {
|
||||
PageState state,
|
||||
Object value,
|
||||
boolean isSelected,
|
||||
Object key,
|
||||
int row,
|
||||
int column) {
|
||||
|
||||
Link link = (Link) value;
|
||||
boolean isFirst = (row == 0);
|
||||
if (m_size.get(state) == null) {
|
||||
m_size.set(state,
|
||||
new Long(((LinkTableModelBuilder.LinkTableModel) table.
|
||||
getTableModel(state)).size()));
|
||||
new Long(((LinkTableModelBuilder.LinkTableModel) table.
|
||||
getTableModel(state)).size()));
|
||||
}
|
||||
boolean isLast = (row == ((Long) m_size.get(state)).intValue() - 1);
|
||||
|
||||
|
||||
if (column == m_titleCol.getModelIndex()) {
|
||||
String url = link.getInternalOrExternalURI(state);
|
||||
ExternalLink extLink = new ExternalLink(link.getTitle(), url);
|
||||
extLink.setTargetFrame("_blank");
|
||||
return extLink;
|
||||
if (column == m_titleCol.getModelIndex()) {
|
||||
String url = link.getInternalOrExternalURI(state);
|
||||
if (link.getTitle().equals("caption")) {
|
||||
ExternalLink extLink = new ExternalLink("", url);
|
||||
extLink.setTargetFrame("_blank");
|
||||
return extLink;
|
||||
} else {
|
||||
ExternalLink extLink = new ExternalLink(link.getTitle(), url);
|
||||
extLink.setTargetFrame("_blank");
|
||||
return extLink;
|
||||
}
|
||||
} else if (column == m_descCol.getModelIndex()) {
|
||||
if (isSelected) {
|
||||
return new Label(link.getDescription(), Label.BOLD);
|
||||
|
|
@ -222,28 +224,28 @@ public class LinkTable extends Table {
|
|||
if (Boolean.TRUE.equals(m_editor.get(state))) {
|
||||
if (isSelected) {
|
||||
return new Label(GlobalizationUtil.globalize(
|
||||
"cms.contenttyes.link.ui.table_cell_edit_link"),
|
||||
"cms.contenttyes.link.ui.table_cell_edit_link"),
|
||||
Label.BOLD);
|
||||
} else {
|
||||
return new ControlLink( new Label(GlobalizationUtil.globalize(
|
||||
"cms.contenttyes.link.ui.table_cell_edit_link")) );
|
||||
return new ControlLink(new Label(GlobalizationUtil.globalize(
|
||||
"cms.contenttyes.link.ui.table_cell_edit_link")));
|
||||
}
|
||||
} else {
|
||||
return new Label(GlobalizationUtil.globalize(
|
||||
"cms.contenttyes.link.ui.table_cell_edit_link"));
|
||||
"cms.contenttyes.link.ui.table_cell_edit_link"));
|
||||
}
|
||||
} else if (column == m_delCol.getModelIndex()) {
|
||||
if (Boolean.TRUE.equals(m_editor.get(state))) {
|
||||
return new ControlLink( new Label(GlobalizationUtil.globalize(
|
||||
"cms.contenttyes.link.ui.table_cell_delete_link")) );
|
||||
return new ControlLink(new Label(GlobalizationUtil.globalize(
|
||||
"cms.contenttyes.link.ui.table_cell_delete_link")));
|
||||
} else {
|
||||
return new Label(GlobalizationUtil.globalize(
|
||||
"cms.contenttyes.link.ui.table_cell_delete_link"));
|
||||
"cms.contenttyes.link.ui.table_cell_delete_link"));
|
||||
}
|
||||
} else if (column == m_moveUpCol.getModelIndex()) {
|
||||
if (Boolean.TRUE.equals(m_editor.get(state)) && !isFirst) {
|
||||
Label upLabel = new Label(GlobalizationUtil.globalize(
|
||||
"cms.contenttyes.link.ui.table_cell_move_up"));
|
||||
"cms.contenttyes.link.ui.table_cell_move_up"));
|
||||
upLabel.setClassAttr("linkSort");
|
||||
return new ControlLink(upLabel);
|
||||
} else {
|
||||
|
|
@ -252,7 +254,7 @@ public class LinkTable extends Table {
|
|||
} else if (column == m_moveDownCol.getModelIndex()) {
|
||||
if (Boolean.TRUE.equals(m_editor.get(state)) && !isLast) {
|
||||
Label downLabel = new Label(GlobalizationUtil.globalize(
|
||||
"cms.contenttyes.link.ui.table_cell_move_down"));
|
||||
"cms.contenttyes.link.ui.table_cell_move_down"));
|
||||
downLabel.setClassAttr("linkSort");
|
||||
return new ControlLink(downLabel);
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Reference in New Issue