The images attached to a ContentItem are now shown in a table.

git-svn-id: https://svn.libreccm.org/ccm/trunk@2696 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2014-06-12 15:16:23 +00:00
parent 03f920d8c6
commit ba8419d8b2
12 changed files with 955 additions and 352 deletions

View File

@ -7,3 +7,5 @@ cms.contentassets.ui.image_step.move_attached_image_down=Move down
cms.contentassets.ui.image_step.move_attached_image_up=Move up cms.contentassets.ui.image_step.move_attached_image_up=Move up
cms.contentassets.ui.image_step.edit_attached_image=Edit caption cms.contentassets.ui.image_step.edit_attached_image=Edit caption
cms.contentassets.ui.image_step.caption=Caption cms.contentassets.ui.image_step.caption=Caption
cms.contentassets.ui.image_step.image_table.thumbnail=Thumbnail
cms.contentassets.ui.image_step.remove_attached_image.confirm=Are you sure to remove this attached image?

View File

@ -7,3 +7,5 @@ cms.contentassets.ui.image_step.move_attached_image_down=Nach unten verschieben
cms.contentassets.ui.image_step.move_attached_image_up=Nach oben verschieben cms.contentassets.ui.image_step.move_attached_image_up=Nach oben verschieben
cms.contentassets.ui.image_step.edit_attached_image=Bildunterschrift editieren cms.contentassets.ui.image_step.edit_attached_image=Bildunterschrift editieren
cms.contentassets.ui.image_step.caption=Bildunterschrift cms.contentassets.ui.image_step.caption=Bildunterschrift
cms.contentassets.ui.image_step.image_table.thumbnail=Vorschau
cms.contentassets.ui.image_step.remove_attached_image.confirm=Sind Sie sicher das Sie die Zuordnung dieses Bildes entfernen m\u00f6chten?

View File

@ -7,3 +7,5 @@ cms.contentassets.ui.image_step.move_attached_image_down=Move down
cms.contentassets.ui.image_step.move_attached_image_up=Move up cms.contentassets.ui.image_step.move_attached_image_up=Move up
cms.contentassets.ui.image_step.edit_attached_image=Edit caption cms.contentassets.ui.image_step.edit_attached_image=Edit caption
cms.contentassets.ui.image_step.caption=Caption cms.contentassets.ui.image_step.caption=Caption
cms.contentassets.ui.image_step.image_table.thumbnail=Thumbnail
cms.contentassets.ui.image_step.remove_attached_image.confirm=cms.contentassets.ui.image_step.remove_attached_image.confirm

View File

@ -50,7 +50,8 @@ public class ImageStep extends SecurityPropertyEditor {
private final ItemSelectionModel m_itemSelection; private final ItemSelectionModel m_itemSelection;
private final AttachmentSelectionModel m_attachmentSelection; private final AttachmentSelectionModel m_attachmentSelection;
private final AuthoringKitWizard m_parent; private final AuthoringKitWizard m_parent;
private final ImageStepDisplay m_display; //private final ImageStepDisplay m_display;
private final ImageStepDisplayTable m_display;
private final ImageStepEdit m_add; private final ImageStepEdit m_add;
private final OIDParameter m_attachmentOID; private final OIDParameter m_attachmentOID;
@ -84,7 +85,8 @@ public class ImageStep extends SecurityPropertyEditor {
new ImageAttachmentEditForm(this)); new ImageAttachmentEditForm(this));
/* ImageDisplayStep to display all already attached images */ /* ImageDisplayStep to display all already attached images */
m_display = new ImageStepDisplay(this); // Component to display //m_display = new ImageStepDisplay(this); // Component to display
m_display = new ImageStepDisplayTable(this);
setDisplayComponent(m_display); // all attached images. setDisplayComponent(m_display); // all attached images.
Iterator imageComponents = m_add.getImageComponents(); Iterator imageComponents = m_add.getImageComponents();

View File

@ -94,6 +94,7 @@ public class ImageStepDisplay extends SimpleContainer {
m_listModelBuilder = new ImageListModelBuilder(); m_listModelBuilder = new ImageListModelBuilder();
List imageList = new List(m_listModelBuilder) { List imageList = new List(m_listModelBuilder) {
@Override @Override
public void respond(PageState ps) throws ServletException { public void respond(PageState ps) throws ServletException {
if (DELETE.equals(ps.getControlEventName())) { if (DELETE.equals(ps.getControlEventName())) {
@ -338,6 +339,7 @@ public class ImageStepDisplay extends SimpleContainer {
// Add CMS ImageDisplay element to BoxPanel container an overwrite // Add CMS ImageDisplay element to BoxPanel container an overwrite
// generateImagePropertiesXM to add attachment's meta data. // generateImagePropertiesXM to add attachment's meta data.
container.add(new ImageDisplay(null) { container.add(new ImageDisplay(null) {
@Override @Override
protected void generateImagePropertiesXML(ImageAsset image, protected void generateImagePropertiesXML(ImageAsset image,
PageState state, PageState state,
@ -398,6 +400,7 @@ public class ImageStepDisplay extends SimpleContainer {
ControlLink moveUpLink = new ControlLink(new Label( ControlLink moveUpLink = new ControlLink(new Label(
ImageStepGlobalizationUtil.globalize( ImageStepGlobalizationUtil.globalize(
"cms.contentassets.ui.image_step.move_attached_image_up"))) { "cms.contentassets.ui.image_step.move_attached_image_up"))) {
@Override @Override
public void setControlEvent(PageState ps) { public void setControlEvent(PageState ps) {
String oid = ps.getControlEventValue(); String oid = ps.getControlEventValue();
@ -424,6 +427,7 @@ public class ImageStepDisplay extends SimpleContainer {
ControlLink moveDownLink = new ControlLink(new Label( ControlLink moveDownLink = new ControlLink(new Label(
ImageStepGlobalizationUtil.globalize( ImageStepGlobalizationUtil.globalize(
"cms.contentassets.ui.image_step.move_attached_image_down"))) { "cms.contentassets.ui.image_step.move_attached_image_down"))) {
@Override @Override
public void setControlEvent(PageState ps) { public void setControlEvent(PageState ps) {
String oid = ps.getControlEventValue(); String oid = ps.getControlEventValue();
@ -500,4 +504,5 @@ public class ImageStepDisplay extends SimpleContainer {
} }
} }
} }

View File

@ -0,0 +1,571 @@
/*
* Copyright (c) 2010 Jens Pelzetter
*
* 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.Component;
import com.arsdigita.bebop.ControlLink;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.Table;
import com.arsdigita.bebop.event.TableActionEvent;
import com.arsdigita.bebop.event.TableActionListener;
import com.arsdigita.bebop.table.TableCellRenderer;
import com.arsdigita.bebop.table.TableColumn;
import com.arsdigita.bebop.table.TableColumnModel;
import com.arsdigita.bebop.table.TableModel;
import com.arsdigita.bebop.table.TableModelBuilder;
import com.arsdigita.cms.CMS;
import com.arsdigita.cms.ContentItem;
import com.arsdigita.cms.ImageAsset;
import com.arsdigita.cms.Service;
import com.arsdigita.cms.contentassets.ItemImageAttachment;
import com.arsdigita.cms.contentassets.util.ImageStepGlobalizationUtil;
import com.arsdigita.cms.ui.ImageDisplay;
import com.arsdigita.cms.util.GlobalizationUtil;
import com.arsdigita.domain.DomainObject;
import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.globalization.GlobalizedMessage;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.OID;
import com.arsdigita.util.LockableImpl;
import com.arsdigita.web.URL;
import com.arsdigita.xml.Element;
import java.math.BigDecimal;
/**
*
* @author Jens Pelzetter <jens@jp-digital.de>
*/
public class ImageStepDisplayTable extends Table {
private final static String TABLE_COL_EDIT = "table_col_edit";
private final static String TABLE_COL_DEL = "table_col_del";
private final static String TABLE_COL_UP = "table_col_up";
private final static String TABLE_COL_DOWN = "table_col_down";
private final static int TABLE_COL_INDEX_THUMBNAIL = 0;
private final static int TABLE_COL_INDEX_NAME = 1;
private final static int TABLE_COL_INDEX_DIMENSIONS = 2;
private final static int TABLE_COL_INDEX_TYPE = 3;
private final static int TABLE_COL_INDEX_CAPTION = 4;
private final static int TABLE_COL_INDEX_EDIT = 5;
private final static int TABLE_COL_INDEX_UP = 6;
private final static int TABLE_COL_INDEX_DOWN = 7;
private final static int TABLE_COL_INDEX_DEL = 8;
private final static int UP = -1;
private final static int DOWN = 1;
private final ImageStep imageStep;
public ImageStepDisplayTable(final ImageStep imageStep) {
super();
this.imageStep = imageStep;
setEmptyView(new Label(ImageStepGlobalizationUtil.globalize(
"cms.contentassets.ui.image_step.no_image_attached")));
final TableColumnModel columnModel = getColumnModel();
columnModel.add(new TableColumn(
TABLE_COL_INDEX_THUMBNAIL,
ImageStepGlobalizationUtil.globalize(
"cms.contentassets.ui.image_step.image_table.thumbnail")));
columnModel.add(new TableColumn(
TABLE_COL_INDEX_NAME,
GlobalizationUtil.globalize(
"cms.contentasset.image.ui.display.name")));
columnModel.add(new TableColumn(
TABLE_COL_INDEX_DIMENSIONS,
GlobalizationUtil.globalize("cms.contentasset.image.ui.display.dimensions")));
columnModel.add(new TableColumn(
TABLE_COL_INDEX_TYPE,
GlobalizationUtil.globalize(
"cms.contentasset.image.ui.display.type")));
columnModel.add(new TableColumn(
TABLE_COL_INDEX_CAPTION,
GlobalizationUtil.globalize("cms.contentasset.image.ui.caption")));
columnModel.add(new TableColumn(
TABLE_COL_INDEX_EDIT,
ImageStepGlobalizationUtil.globalize(
"cms.contentassets.ui.image_step.edit_attached_image"),
TABLE_COL_EDIT));
columnModel.add(new TableColumn(
TABLE_COL_INDEX_UP,
ImageStepGlobalizationUtil.globalize(
"cms.contentassets.ui.image_step.move_attached_image_up"),
TABLE_COL_UP));
columnModel.add(new TableColumn(
TABLE_COL_INDEX_DOWN,
ImageStepGlobalizationUtil.globalize(
"cms.contentassets.ui.image_step.move_attached_image_down"),
TABLE_COL_DOWN));
columnModel.add(new TableColumn(
TABLE_COL_INDEX_DEL,
ImageStepGlobalizationUtil.globalize(
"cms.contentassets.ui.image_step.remove_attached_image"),
TABLE_COL_DEL));
setModelBuilder(new ImageTableModelBuilder(imageStep));
columnModel.get(0).setCellRenderer(new ThumbnailCellRenderer());
columnModel.get(1).setCellRenderer(new NameCellRenderer());
columnModel.get(2).setCellRenderer(new DimensionsCellRenderer());
columnModel.get(3).setCellRenderer(new TypeCellRenderer());
columnModel.get(4).setCellRenderer(new CaptionCellRenderer());
columnModel.get(5).setCellRenderer(new EditCellRenderer());
columnModel.get(6).setCellRenderer(new UpCellRenderer());
columnModel.get(7).setCellRenderer(new DownCellRenderer());
columnModel.get(8).setCellRenderer(new DeleteCellRenderer());
addTableActionListener(new ImageStepTableActionListener());
}
private class ImageTableModelBuilder extends LockableImpl implements TableModelBuilder {
private final ImageStep imageStep;
public ImageTableModelBuilder(final ImageStep imageStep) {
this.imageStep = imageStep;
}
@Override
public TableModel makeModel(final Table table,
final PageState state) {
table.getRowSelectionModel().clearSelection(state);
return new ImageTableModel(table, state, imageStep.getItem(state));
}
}
private class ImageTableModel implements TableModel {
private final Table table;
private final ContentItem item;
private final DataCollection images;
public ImageTableModel(final Table table,
final PageState state,
final ContentItem item) {
this.table = table;
this.item = item;
images = ItemImageAttachment.getImageAttachments(item);
}
@Override
public int getColumnCount() {
return table.getColumnModel().size();
}
@Override
public boolean nextRow() {
if (images == null) {
return false;
} else {
return images.next();
}
}
@Override
public Object getElementAt(final int columnIndex) {
final ItemImageAttachment image = (ItemImageAttachment) DomainObjectFactory.newInstance(
images.getDataObject());
switch (columnIndex) {
case TABLE_COL_INDEX_THUMBNAIL:
return image;
case TABLE_COL_INDEX_NAME:
return image.getImage().getName();
case TABLE_COL_INDEX_DIMENSIONS:
return String.format("%sx%s px", image.getImage().getWidth().toString(),
image.getImage().getHeight().toString());
case TABLE_COL_INDEX_TYPE:
return image.getImage().getMimeType().getLabel();
case TABLE_COL_INDEX_CAPTION:
return image.getCaption();
case TABLE_COL_INDEX_EDIT:
return ImageStepGlobalizationUtil.globalize(
"cms.contentassets.ui.image_step.edit_attached_image");
case TABLE_COL_INDEX_UP:
return ImageStepGlobalizationUtil.globalize(
"cms.contentassets.ui.image_step.move_attached_image_up");
case TABLE_COL_INDEX_DOWN:
return ImageStepGlobalizationUtil.globalize(
"cms.contentassets.ui.image_step.move_attached_image_down");
case TABLE_COL_INDEX_DEL:
return ImageStepGlobalizationUtil.globalize(
"cms.contentassets.ui.image_step.remove_attached_image");
default:
return null;
}
}
@Override
public Object getKeyAt(final int columnIndex) {
return images.getDataObject().getOID().toString();
}
}
private class ThumbnailCellRenderer extends LockableImpl implements TableCellRenderer {
@Override
public Component getComponent(final Table table,
final PageState state,
final Object value,
final boolean isSelected,
final Object key,
final int row,
final int column) {
final ItemImageAttachment image = (ItemImageAttachment) value;
return new ImageStepImageDisplay(image.getImage());
}
}
private class ImageStepImageDisplay extends ImageDisplay {
private final ImageAsset image;
public ImageStepImageDisplay(final ImageAsset image) {
super(null);
this.image = image;
}
@Override
protected ImageAsset getImageAsset(final PageState state) {
return image;
}
@Override
protected void generateImagePropertiesXML(final ImageAsset image,
final PageState state,
final Element element) {
element.addAttribute("name", image.getName());
element.addAttribute("src", URL.getDispatcherPath()
+ Service.getImageURL(image));
final BigDecimal width = image.getWidth();
if (width != null) {
element.addAttribute("width", width.toString());
}
final BigDecimal height = image.getHeight();
if (height != null) {
element.addAttribute("height", height.toString());
}
element.addAttribute("plain", "true");
}
}
private class NameCellRenderer extends LockableImpl implements TableCellRenderer {
@Override
public Component getComponent(final Table table,
final PageState state,
final Object value,
final boolean isSelected,
final Object key,
final int row,
final int column) {
return new Label((String) value);
}
}
private class DimensionsCellRenderer extends LockableImpl implements TableCellRenderer {
@Override
public Component getComponent(final Table table,
final PageState state,
final Object value,
final boolean isSelected,
final Object key,
final int row,
final int column) {
return new Label((String) value);
}
}
private class TypeCellRenderer extends LockableImpl implements TableCellRenderer {
@Override
public Component getComponent(final Table table,
final PageState state,
final Object value,
final boolean isSelected,
final Object key,
final int row,
final int column) {
return new Label((String) value);
}
}
private class CaptionCellRenderer extends LockableImpl implements TableCellRenderer {
@Override
public Component getComponent(final Table table,
final PageState state,
final Object value,
final boolean isSelected,
final Object key,
final int row,
final int column) {
return new Label((String) value);
}
}
private class EditCellRenderer extends LockableImpl implements TableCellRenderer {
@Override
public Component getComponent(final Table table,
final PageState state,
final Object value,
final boolean isSelected,
final Object key,
final int row,
final int column) {
final com.arsdigita.cms.SecurityManager securityManager = CMS.getSecurityManager(state);
final ContentItem item = imageStep.getItem(state);
final boolean canEdit = securityManager.canAccess(
state.getRequest(),
com.arsdigita.cms.SecurityManager.EDIT_ITEM,
item);
if (canEdit) {
return new ControlLink(new Label((GlobalizedMessage) value));
} else {
return new Label("");
}
}
}
private class UpCellRenderer extends LockableImpl implements TableCellRenderer {
@Override
public Component getComponent(final Table table,
final PageState state,
final Object value,
final boolean isSelected,
final Object key,
final int row,
final int column) {
if (0 == row) {
//First row, don't show up link
return new Label("");
} else {
return new ControlLink(new Label((GlobalizedMessage) value));
}
}
}
private class DownCellRenderer extends LockableImpl implements TableCellRenderer {
@Override
public Component getComponent(final Table table,
final PageState state,
final Object value,
final boolean isSelected,
final Object key,
final int row,
final int column) {
final ContentItem item = imageStep.getItem(state);
final DataCollection images = ItemImageAttachment.getImageAttachments(item);
if ((images.size() - 1) == row) {
//Last row in table, don't show down link
return new Label("");
} else {
return new ControlLink(new Label((GlobalizedMessage) value));
}
}
}
private class DeleteCellRenderer extends LockableImpl implements TableCellRenderer {
@Override
public Component getComponent(final Table table,
final PageState state,
final Object value,
final boolean isSelected,
final Object key,
final int row,
final int column) {
final com.arsdigita.cms.SecurityManager securityManager = CMS.getSecurityManager(state);
final ContentItem item = imageStep.getItem(state);
final boolean canEdit = securityManager.canAccess(
state.getRequest(),
com.arsdigita.cms.SecurityManager.EDIT_ITEM,
item);
if (canEdit) {
final ControlLink link = new ControlLink(new Label((GlobalizedMessage) value));
link.setConfirmation(ImageStepGlobalizationUtil.globalize(
"cms.contentassets.ui.image_step.remove_attached_image.confirm"));
return link;
} else {
return new Label("");
}
}
}
private class ImageStepTableActionListener implements TableActionListener {
public ImageStepTableActionListener() {
//Nothing
}
@Override
public void cellSelected(final TableActionEvent event) {
final PageState state = event.getPageState();
final TableColumn column = getColumnModel().get(event.getColumn().intValue());
if (TABLE_COL_EDIT.equals(column.getHeaderKey().toString())) {
imageStep.setAttachment(state, ItemImageAttachment.retrieve(OID.valueOf(event
.getRowKey().toString())));
imageStep.showComponent(state, "edit");
} else if (TABLE_COL_UP.equals(column.getHeaderKey().toString())) {
move(OID.valueOf(event.getRowKey().toString()), UP, state);
} else if (TABLE_COL_DOWN.equals(column.getHeaderKey().toString())) {
move(OID.valueOf(event.getRowKey().toString()), DOWN, state);
} else if (TABLE_COL_DEL.equals(column.getHeaderKey().toString())) {
DomainObjectFactory.newInstance(OID.valueOf(event.getRowKey().toString())).delete();
regenSortKeys(state);
}
}
@Override
public void headSelected(final TableActionEvent event) {
//Nothing to do here.
}
}
private void regenSortKeys(final PageState state) {
final ContentItem item = imageStep.getItem(state);
final DataCollection images = ItemImageAttachment.getImageAttachments(item);
int pos = 0;
while (images.next()) {
pos++;
final DomainObject domainObject = DomainObjectFactory
.newInstance(images.getDataObject());
if (domainObject instanceof ItemImageAttachment) {
final ItemImageAttachment image = (ItemImageAttachment) domainObject;
if (image.getSortKey() != pos) {
image.setSortKey(pos);
image.save();
}
}
}
}
private void move(final OID imageOid, final int direction, final PageState state) {
final ContentItem item = imageStep.getItem(state);
final DataCollection images = ItemImageAttachment.getImageAttachments(item);
if (imageOid == null) {
throw new IllegalArgumentException("OID of ImageAttachment must not be null.");
}
// No move, nothing to do
if (direction == 0) {
return;
}
// Find the image in the collection
while (images.next()) {
if (images.getDataObject().getOID().equals(imageOid)) {
break;
}
}
// Throw an {@link IllegalArgumentxception} if the imageOid was not found
if (!images.getDataObject().getOID().equals(imageOid)) {
throw new IllegalArgumentException("OID " + imageOid + " is not in collection");
}
// Get the image to move and test if it is really an ItemImageAttachment
final DomainObject sortDomainObject = DomainObjectFactory
.newInstance(images.getDataObject());
int move = direction;
if (sortDomainObject instanceof ItemImageAttachment) {
// Change the sortKey of the ItemImageAttachment to the desired
// value but respect bounds of the current list
final int newSortKey = Math.max(1,
Math.min((int) images.size(),
((ItemImageAttachment) sortDomainObject).
getSortKey() + move));
((ItemImageAttachment) sortDomainObject).setSortKey(newSortKey);
sortDomainObject.save();
// Now, move all the object between the original position and the
// new postition one step in the nessecary direction
if (move < 0) {
while (images.previous() && move < 0) {
final DomainObject domainObject = DomainObjectFactory.newInstance(images.
getDataObject());
if (domainObject instanceof ItemImageAttachment) {
((ItemImageAttachment) domainObject).setSortKey(
((ItemImageAttachment) domainObject).getSortKey() + 1);
domainObject.save();
move++;
}
}
}
if (move > 0) {
while (images.next() && move > 0) {
final DomainObject domainObject = DomainObjectFactory.newInstance(images.
getDataObject());
if (domainObject instanceof ItemImageAttachment) {
((ItemImageAttachment) domainObject).setSortKey(
((ItemImageAttachment) domainObject).getSortKey() - 1);
domainObject.save();
move--;
}
}
}
}
// close the collection manually to avimageOid warnings because the list
// will not be closed automatically
images.close();
}
}

View File

@ -32,8 +32,7 @@ import com.arsdigita.xml.Element;
import java.math.BigDecimal; import java.math.BigDecimal;
/** /**
* Displays a single ImageAsset, showing its image, width, height, name and * Displays a single ImageAsset, showing its image, width, height, name and mime-type.
* mime-type.
* *
* @author Michael Pih (pihman@arsdigita.com) * @author Michael Pih (pihman@arsdigita.com)
* @author Stanislav Freidin (sfreidin@arsdigita.com) * @author Stanislav Freidin (sfreidin@arsdigita.com)
@ -46,8 +45,8 @@ public class ImageDisplay extends SimpleComponent {
/** /**
* Construct a new ImageDisplay * Construct a new ImageDisplay
* *
* @param m The {@link ItemSelectionModel} which will supply this component * @param m The {@link ItemSelectionModel} which will supply this component with the
* with the {@link ImageAsset} * {@link ImageAsset}
*/ */
public ImageDisplay(ItemSelectionModel m) { public ImageDisplay(ItemSelectionModel m) {
super(); super();
@ -55,8 +54,8 @@ public class ImageDisplay extends SimpleComponent {
} }
/** /**
* @return the {@link ItemSelectionModel} which supplies this component with * @return the {@link ItemSelectionModel} which supplies this component with the
* the {@link ImageAsset} * {@link ImageAsset}
*/ */
public final ItemSelectionModel getImageSelectionModel() { public final ItemSelectionModel getImageSelectionModel() {
return m_item; return m_item;
@ -147,6 +146,7 @@ public class ImageDisplay extends SimpleComponent {
/** /**
* *
* @param state * @param state
*
* @return * @return
*/ */
protected ImageAsset getImageAsset(PageState state) { protected ImageAsset getImageAsset(PageState state) {
@ -154,4 +154,5 @@ public class ImageDisplay extends SimpleComponent {
Assert.exists(image, "Image asset"); Assert.exists(image, "Image asset");
return image; return image;
} }
} }

View File

@ -25,9 +25,9 @@ import java.io.IOException;
/** /**
* An image upload component. * An image upload component.
* *
* This component can be used in different places to add image upload * This component can be used in different places to add image upload capabilities in a convinient
* capabilities in a convinient way. This class uses a listener class which * way. This class uses a listener class which should be extended from
* should be extended from {@link ImageComponentAbstractListener}. * {@link ImageComponentAbstractListener}.
* *
* @author unknown * @author unknown
* @author Sören Bernstein <quasi@quasiweb.de> * @author Sören Bernstein <quasi@quasiweb.de>
@ -83,7 +83,6 @@ public class ImageUploadComponent extends Form implements ImageComponent {
// We only show the title and description fields in the case where // We only show the title and description fields in the case where
// getIsImageStepDescriptionAndTitleShown is false. // getIsImageStepDescriptionAndTitleShown is false.
// if (ItemImageAttachment.getConfig().getIsImageStepDescriptionAndTitleShown()) { // if (ItemImageAttachment.getConfig().getIsImageStepDescriptionAndTitleShown()) {
// add(new Label("Title")); // add(new Label("Title"));
// m_title.addValidationListener(new NotNullValidationListener()); // m_title.addValidationListener(new NotNullValidationListener());
@ -99,7 +98,6 @@ public class ImageUploadComponent extends Form implements ImageComponent {
// add(m_description); // add(m_description);
// //
// } // }
add(new Label(GlobalizationUtil add(new Label(GlobalizationUtil
.globalize("cms.contentasset.image.ui.use_context"))); .globalize("cms.contentasset.image.ui.use_context")));
m_useContext.setSize(40); m_useContext.setSize(40);
@ -174,4 +172,5 @@ public class ImageUploadComponent extends Form implements ImageComponent {
public Form getForm() { public Form getForm() {
return this; return this;
} }
} }

View File

@ -9,7 +9,7 @@
name="ScientificCMS" name="ScientificCMS"
prettyName="Scientific CMS" prettyName="Scientific CMS"
version="2.3.0" version="2.3.0"
release="devel-SNAPSHOT-r2664" release="devel-SNAPSHOT-r2691"
webxml="sci-web.xml" webxml="sci-web.xml"
portletxml="sci-portlet.xml" portletxml="sci-portlet.xml"
webapp="libreccm" webapp="libreccm"

View File

@ -93,12 +93,15 @@
<xsl:value-of select="@height"/> <xsl:value-of select="@height"/>
</xsl:attribute> </xsl:attribute>
</xsl:if> </xsl:if>
<xsl:if test="@plain != 'true'">
<div class="cmsImageInfoOverlay"> <div class="cmsImageInfoOverlay">
<xsl:if test="$setImageName = 'true'"> <xsl:if test="$setImageName = 'true'">
<span class="key"> <span class="key">
<xsl:value-of select="@name_label"/> <xsl:value-of select="@name_label"/>
</span> </span>
<span class="value"><xsl:value-of select="@name"/></span> <span class="value">
<xsl:value-of select="@name"/>
</span>
<br/> <br/>
</xsl:if> </xsl:if>
<xsl:if test="$setMimeType = 'true'"> <xsl:if test="$setMimeType = 'true'">
@ -126,14 +129,18 @@
<span class="key"> <span class="key">
<xsl:value-of select="@dimension_label"/> <xsl:value-of select="@dimension_label"/>
</span> </span>
<span class="value"><xsl:value-of select="@width"/> x <xsl:value-of select="@height"/></span> <span class="value">
<xsl:value-of select="@width"/> x <xsl:value-of select="@height"/>
</span>
<br/> <br/>
</xsl:if> </xsl:if>
<xsl:if test="$setContext = 'true'"> <xsl:if test="$setContext = 'true'">
<span class="key"> <span class="key">
<xsl:value-of select="@context_label"/> <xsl:value-of select="@context_label"/>
</span> </span>
<span class="value"><xsl:value-of select="@context"/></span> <span class="value">
<xsl:value-of select="@context"/>
</span>
<br/> <br/>
</xsl:if> </xsl:if>
<xsl:if test="$setCaption = 'true'"> <xsl:if test="$setCaption = 'true'">
@ -145,6 +152,7 @@
</span> </span>
</xsl:if> </xsl:if>
</div> </div>
</xsl:if>
</img> </img>
</xsl:template> </xsl:template>

View File

@ -47,7 +47,7 @@
<!-- <!--
<xsl:if test="count($resultTree//cms:item/image | $resultTree//cms:item/imageAttachments/image) > 1"> <xsl:if test="count($resultTree//cms:item/image | $resultTree//cms:item/imageAttachments/image) > 1">
--> -->
<script type="text/javascript" src="/assets/fancybox2/source/jquery.fancybox.pack.js"/> <!--<script type="text/javascript" src="/assets/fancybox2/source/jquery.fancybox.pack.js"/>-->
<!--script type="text/javascript" src="/assets/fancybox/jquery.easing.pack.js"/--> <!--script type="text/javascript" src="/assets/fancybox/jquery.easing.pack.js"/-->
<!-- Add mousewheel plugin (this is optional) --> <!-- Add mousewheel plugin (this is optional) -->
@ -68,16 +68,17 @@
<!-- Add Media helper (this is optional) --> <!-- Add Media helper (this is optional) -->
<script type="text/javascript" src="/assets/fancybox2/source/helpers/jquery.fancybox-media.js"></script> <script type="text/javascript" src="/assets/fancybox2/source/helpers/jquery.fancybox-media.js"></script>
<script type="text/javascript">$(document).ready(function() {$("a.imageZoom").fancybox({'type':'image'}); $("a.imageGallery").fancybox({'type':'image'});});</script>
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() { $(document).ready(function() {
$("a.imageZoom").fancybox({'type':'image'}); $("a.imageZoom").fancybox({'type':'image'});
$("a.imageGallery").fancybox({ $("a.imageGallery").fancybox({
'type': 'image', type: 'image',
'helpers': { helpers: {
'buttons': { title: {
'position': 'bottom', type: 'inside',
},
buttons: {
position: 'bottom',
} }
} }
}); });
@ -120,7 +121,7 @@
</xsl:choose> </xsl:choose>
</xsl:variable> </xsl:variable>
<xsl:if test="../id = $firstMatch"> <!--<xsl:if test="../id = $firstMatch">
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() { $(document).ready(function() {
$("a.<xsl:value-of select="$imageGallery"/>").fancybox({ $("a.<xsl:value-of select="$imageGallery"/>").fancybox({
@ -140,16 +141,16 @@
<xsl:with-param name="settingName" select="@id"/> <xsl:with-param name="settingName" select="@id"/>
<xsl:with-param name="value" select="."/> <xsl:with-param name="value" select="."/>
</xsl:call-template> </xsl:call-template>
</xsl:for-each> </xsl:for-each>-->
<!-- DE Hack, um ein korrektes Array zu erzeugen. Es gibt leider keine Möglichkeit <!-- DE Hack, um ein korrektes Array zu erzeugen. Es gibt leider keine Möglichkeit
das Komma hinter den letzten Eintrag wegzulassen, daher wird hier ein "leerer" das Komma hinter den letzten Eintrag wegzulassen, daher wird hier ein "leerer"
Eintrag angelegt, den fancybox ignoriert. --> Eintrag angelegt, den fancybox ignoriert. -->
<xsl:text>'dummyEntry' : 'ignoreMe'</xsl:text> <!--<xsl:text>'dummyEntry' : 'ignoreMe'</xsl:text>
}); });
}); });
</script> </script>
</xsl:if> </xsl:if>-->
</xsl:template> </xsl:template>
<xsl:template name="mandalay:setImageGalleryConfigParam"> <xsl:template name="mandalay:setImageGalleryConfigParam">

View File

@ -19,6 +19,16 @@
along with Mandalay. If not, see <http://www.gnu.org/licenses/>. along with Mandalay. If not, see <http://www.gnu.org/licenses/>.
--> -->
<!--
_
| | Currently not used due to compatibility problems between FancyBox 2 and the code in
| | imageGallery.js which interprets the settings!
|_|
(_)
-->
<settings> <settings>
<setting id="padding">10</setting> <setting id="padding">10</setting>
<setting id="margin">20</setting> <setting id="margin">20</setting>