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-94f89814c4df
master
konermann 2015-05-13 15:57:28 +00:00
parent a04278d1c0
commit a386fc9811
14 changed files with 887 additions and 176 deletions

View File

@ -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:

View File

@ -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:

View File

@ -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());
}
}
}

View File

@ -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();
}
}

View File

@ -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());
}
}
}
}

View File

@ -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);
}
}

View File

@ -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);

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
*/

View File

@ -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());

View File

@ -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 {