- Problem bei Publizieren bei Contact behoben
- Verschiedene Formatierungen git-svn-id: https://svn.libreccm.org/ccm/trunk@593 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
a27fff3a5f
commit
17c35737f9
|
|
@ -46,7 +46,7 @@ object type GenericContactEntry extends ContentItem {
|
|||
|
||||
association {
|
||||
|
||||
GenericPerson[0..1] person = join cms_contacts.contact_id
|
||||
GenericPerson[0..n] person = join cms_contacts.contact_id
|
||||
to cms_person_contact_map.contact_id,
|
||||
join cms_person_contact_map.person_id
|
||||
to cms_persons.person_id;
|
||||
|
|
|
|||
|
|
@ -20,12 +20,12 @@
|
|||
|
||||
model com.arsdigita.cms.contenttypes;
|
||||
|
||||
import com.arsdigita.cms.ContentPage;
|
||||
import com.arsdigita.cms.*;
|
||||
import com.arsdigita.domain.*;
|
||||
import com.arsdigita.kernel.ACSObject;
|
||||
|
||||
// PDL definition for a commons base type for organizations, departments, projects etc.
|
||||
object type GenericOrganizationalUnit extends ContentPage {
|
||||
//String[0..1] orgaunit_name = cms_organizationalunits.name VARCHAR(256);
|
||||
|
||||
String[0..1] addendum = cms_organizationalunits.addendum VARCHAR(512);
|
||||
|
||||
reference key (cms_organizationalunits.organizationalunit_id);
|
||||
|
|
@ -34,7 +34,7 @@ object type GenericOrganizationalUnit extends ContentPage {
|
|||
// Link for contact points.
|
||||
association {
|
||||
|
||||
GenericOrganizationalUnit[0..1] organizationalunit = join cms_contacts.contact_id
|
||||
GenericOrganizationalUnit[0..n] organizationalunit = join cms_contacts.contact_id
|
||||
to cms_organizationalunits_contact_map.contact_id,
|
||||
join cms_organizationalunits_contact_map.organizationalunit_id
|
||||
to cms_organizationalunits.organizationalunit_id;
|
||||
|
|
@ -55,7 +55,7 @@ association {
|
|||
|
||||
GenericOrganizationalUnit[0..n] organizationalunit = join cms_persons.person_id
|
||||
to cms_organizationalunits_person_map.person_id,
|
||||
join cms_organizationalunits_person_map.organizationalunit_id
|
||||
join cms_organizationalunits_person_map.organizationalunit_id
|
||||
to cms_organizationalunits.organizationalunit_id;
|
||||
|
||||
GenericPerson[0..n] persons = join cms_organizationalunits.organizationalunit_id
|
||||
|
|
@ -64,6 +64,15 @@ association {
|
|||
to cms_persons.person_id;
|
||||
|
||||
// Additional attributes for the association
|
||||
String role_name = cms_organizationalunits_person_map.role_name VARCHAR(100);
|
||||
String[0..1] role_name = cms_organizationalunits_person_map.role_name VARCHAR(100);
|
||||
|
||||
}
|
||||
|
||||
//object type GenericOrganizationalUnitPersonAssociation extends ACSObject {
|
||||
//
|
||||
// GenericPerson[0..1] person = join cms_organizationalunit_person_assoc.person_id
|
||||
// to cms_persons.person_id;
|
||||
// String[0..1] roleName = cms_organizationalunit_person_assoc.role_name VARCHAR(100);
|
||||
//
|
||||
// reference key (cms_organizationalunit_person_assoc.assoc_id);
|
||||
//}
|
||||
|
|
|
|||
|
|
@ -30,30 +30,30 @@ import com.arsdigita.util.Assert;
|
|||
import java.math.BigDecimal;
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
|
||||
/**
|
||||
* This content type represents an basic contact
|
||||
*
|
||||
*/
|
||||
public class GenericContact extends ContentPage implements RelationAttributeInterface {
|
||||
public class GenericContact extends ContentPage implements
|
||||
RelationAttributeInterface {
|
||||
|
||||
/** PDL property names */
|
||||
public static final String PERSON = "person";
|
||||
// public static final String CONTACT_TYPE = "";
|
||||
public static final String ADDRESS = "address";
|
||||
public static final String CONTACT_ENTRIES = "contactentries";
|
||||
|
||||
private static final String RELATION_ATTRIBUTES = "GenericContactType;GenericContactEntryType";
|
||||
|
||||
private static final String RELATION_ATTRIBUTES =
|
||||
"GenericContactType;GenericContactEntryType";
|
||||
// Config
|
||||
private static final GenericContactConfig s_config = new GenericContactConfig();
|
||||
private static final GenericContactConfig s_config =
|
||||
new GenericContactConfig();
|
||||
|
||||
static {
|
||||
s_config.load();
|
||||
s_config.load();
|
||||
}
|
||||
|
||||
/** Data object type for tihs domain object */
|
||||
public static final String BASE_DATA_OBJECT_TYPE
|
||||
= "com.arsdigita.cms.contenttypes.GenericContact";
|
||||
public static final String BASE_DATA_OBJECT_TYPE =
|
||||
"com.arsdigita.cms.contenttypes.GenericContact";
|
||||
|
||||
public GenericContact() {
|
||||
super(BASE_DATA_OBJECT_TYPE);
|
||||
|
|
@ -75,12 +75,13 @@ public class GenericContact extends ContentPage implements RelationAttributeInte
|
|||
|
||||
public GenericContact(String type) {
|
||||
super(type);
|
||||
//unsetPerson();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void beforeSave() {
|
||||
super.beforeSave();
|
||||
|
||||
|
||||
Assert.exists(getContentType(), ContentType.class);
|
||||
}
|
||||
|
||||
|
|
@ -90,19 +91,42 @@ public class GenericContact extends ContentPage implements RelationAttributeInte
|
|||
public static final GenericContactConfig getConfig() {
|
||||
return s_config;
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// accessors
|
||||
|
||||
// Get the person for this contact
|
||||
public GenericPerson getPerson() {
|
||||
return (GenericPerson) DomainObjectFactory.newInstance((DataObject)get(PERSON));
|
||||
DataCollection collection;
|
||||
|
||||
collection = (DataCollection) get(PERSON);
|
||||
|
||||
if (collection.size() == 0) {
|
||||
return null;
|
||||
} else {
|
||||
DataObject dobj;
|
||||
|
||||
collection.next();
|
||||
dobj = collection.getDataObject();
|
||||
|
||||
return (GenericPerson) DomainObjectFactory.newInstance(dobj);
|
||||
}
|
||||
//return (GenericPerson) DomainObjectFactory.newInstance((DataObject)get(PERSON));
|
||||
}
|
||||
|
||||
// Set the person for this contact
|
||||
public void setPerson(GenericPerson person) {
|
||||
set(PERSON, person);
|
||||
//set(PERSON, person);
|
||||
if (getPerson() != null) {
|
||||
unsetPerson();
|
||||
}
|
||||
|
||||
if (person != null) {
|
||||
Assert.exists(person, GenericPerson.class);
|
||||
DataObject link = add(PERSON, person);
|
||||
link.set(GenericPerson.CONTACTS_ORDER,
|
||||
new BigDecimal(person.getContacts().size()));
|
||||
link.save();
|
||||
}
|
||||
}
|
||||
|
||||
// // Get the type for this contact
|
||||
|
|
@ -114,44 +138,50 @@ public class GenericContact extends ContentPage implements RelationAttributeInte
|
|||
// public void setContactType(String type) {
|
||||
// set(CONTACT_TYPE, type);
|
||||
// }
|
||||
|
||||
// Unset the address for this contact
|
||||
public void unsetPerson() {
|
||||
set(PERSON, null);
|
||||
//set(PERSON, null);
|
||||
GenericPerson oldPerson;
|
||||
oldPerson = getPerson();
|
||||
if (oldPerson != null) {
|
||||
remove(PERSON, oldPerson);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Get the address for this contact
|
||||
public GenericAddress getAddress() {
|
||||
return (GenericAddress)DomainObjectFactory.newInstance((DataObject)get(ADDRESS));
|
||||
return (GenericAddress) DomainObjectFactory.newInstance((DataObject) get(
|
||||
ADDRESS));
|
||||
}
|
||||
|
||||
|
||||
// Set the address for this contact
|
||||
public void setAddress(GenericAddress address) {
|
||||
set(ADDRESS, address);
|
||||
}
|
||||
|
||||
|
||||
// Unset the address for this contact
|
||||
public void unsetAddress() {
|
||||
set(ADDRESS, null);
|
||||
}
|
||||
|
||||
|
||||
// Get all contact entries for this contact, p. ex. phone number, type of contact etc.
|
||||
public GenericContactEntryCollection getContactEntries() {
|
||||
return new GenericContactEntryCollection ((DataCollection) get(CONTACT_ENTRIES));
|
||||
return new GenericContactEntryCollection((DataCollection) get(
|
||||
CONTACT_ENTRIES));
|
||||
}
|
||||
|
||||
|
||||
// Add a contact entry for this contact
|
||||
public void addContactEntry(GenericContactEntry contactEntry) {
|
||||
Assert.exists(contactEntry, GenericContactEntry.class);
|
||||
add(CONTACT_ENTRIES, contactEntry);
|
||||
}
|
||||
|
||||
|
||||
// Remove a contect entry for this contact
|
||||
public void removeContactEntry(GenericContactEntry contactEntry) {
|
||||
Assert.exists(contactEntry, GenericContactEntry.class);
|
||||
remove(CONTACT_ENTRIES, contactEntry);
|
||||
}
|
||||
|
||||
|
||||
public boolean hasPerson() {
|
||||
return !(this.getPerson() == null);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,14 +41,15 @@ import org.apache.log4j.Logger;
|
|||
*/
|
||||
public class GenericOrganizationalUnit extends ContentPage {
|
||||
|
||||
private static final Logger logger = Logger.getLogger(GenericOrganizationalUnit.class);
|
||||
private static final Logger logger = Logger.getLogger(
|
||||
GenericOrganizationalUnit.class);
|
||||
//public final static String ORGAUNIT_NAME = "ORGAUNIT_NAME";
|
||||
public final static String ADDENDUM = "addendum";
|
||||
public final static String CONTACTS = "contacts";
|
||||
public final static String CONTACT_TYPE = "contact_type";
|
||||
public final static String CONTACT_ORDER = "contact_order";
|
||||
public final static String PERSONS = "persons";
|
||||
public final static String ROLE = "role_name";
|
||||
public final static String ROLE = "role_name";
|
||||
public final static String BASE_DATA_OBJECT_TYPE =
|
||||
"com.arsdigita.cms.contenttypes.GenericOrganizationalUnit";
|
||||
|
||||
|
|
@ -56,8 +57,8 @@ public class GenericOrganizationalUnit extends ContentPage {
|
|||
this(BASE_DATA_OBJECT_TYPE);
|
||||
}
|
||||
|
||||
public GenericOrganizationalUnit(BigDecimal id)
|
||||
throws DataObjectNotFoundException {
|
||||
public GenericOrganizationalUnit(BigDecimal id)
|
||||
throws DataObjectNotFoundException {
|
||||
this(new OID(BASE_DATA_OBJECT_TYPE, id));
|
||||
}
|
||||
|
||||
|
|
@ -90,11 +91,12 @@ public class GenericOrganizationalUnit extends ContentPage {
|
|||
public void addContact(GenericContact contact, String contactType) {
|
||||
Assert.exists(contact, GenericContact.class);
|
||||
|
||||
logger.debug(String.format("Adding contact of type \"%s\"...", contactType));
|
||||
logger.debug(String.format("Adding contact of type \"%s\"...",
|
||||
contactType));
|
||||
DataObject link = add(CONTACTS, contact);
|
||||
|
||||
link.set(CONTACT_TYPE, contactType);
|
||||
link.set(CONTACT_ORDER, Integer.valueOf((int)getContacts().size()));
|
||||
link.set(CONTACT_ORDER, Integer.valueOf((int) getContacts().size()));
|
||||
link.save();
|
||||
}
|
||||
|
||||
|
|
@ -108,8 +110,9 @@ public class GenericOrganizationalUnit extends ContentPage {
|
|||
}
|
||||
|
||||
public GenericOrganizationalUnitPersonCollection getPersons() {
|
||||
return new GenericOrganizationalUnitPersonCollection((DataCollection) get(
|
||||
PERSONS));
|
||||
DataCollection dataColl = (DataCollection) get(PERSONS);
|
||||
logger.debug(String.format("GenericOrganizationalUnitPersonCollection size = %d", dataColl.size()));
|
||||
return new GenericOrganizationalUnitPersonCollection(dataColl);
|
||||
}
|
||||
|
||||
public void addPerson(GenericPerson person, String role) {
|
||||
|
|
@ -118,12 +121,13 @@ public class GenericOrganizationalUnit extends ContentPage {
|
|||
DataObject link = add(PERSONS, person);
|
||||
|
||||
link.set(ROLE, role);
|
||||
link.save();
|
||||
link.save();
|
||||
}
|
||||
|
||||
public void removePerson(GenericPerson person) {
|
||||
Assert.exists(person, GenericPerson.class);
|
||||
remove(PERSONS, person);
|
||||
public void removePerson(GenericPerson person) {
|
||||
logger.debug("Removing person association...");
|
||||
Assert.exists(person, GenericPerson.class);
|
||||
remove(PERSONS, person);
|
||||
}
|
||||
|
||||
public boolean hasPersons() {
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@ package com.arsdigita.cms.contenttypes;
|
|||
|
||||
import com.arsdigita.domain.DomainCollection;
|
||||
import com.arsdigita.persistence.DataCollection;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* Collection class for the GenericOrganizationalUnit -> Person relation.
|
||||
|
|
@ -29,13 +28,14 @@ import java.math.BigDecimal;
|
|||
*/
|
||||
public class GenericOrganizationalUnitPersonCollection extends DomainCollection {
|
||||
|
||||
public static final String PERSON_ROLE = "link.role_name";
|
||||
public static final String PERSON_ROLE = "link.role_name";
|
||||
|
||||
public GenericOrganizationalUnitPersonCollection(
|
||||
DataCollection dataCollection) {
|
||||
super(dataCollection);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the name of the role of this orgaunit-person link
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -74,6 +74,7 @@ public class GenericPerson extends ContentPage implements RelationAttributeInter
|
|||
|
||||
public GenericPerson(String type) {
|
||||
super(type);
|
||||
//set(CONTACTS, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -13,12 +13,10 @@ import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
|
|||
import com.arsdigita.cms.ui.authoring.BasicPageForm;
|
||||
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
|
||||
import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess;
|
||||
import com.arsdigita.toolbox.ui.DomainObjectPropertySheet;
|
||||
import com.arsdigita.bebop.Component;
|
||||
import com.arsdigita.bebop.Label;
|
||||
import com.arsdigita.bebop.PageState;
|
||||
import com.arsdigita.cms.contenttypes.GenericContact;
|
||||
import com.arsdigita.cms.contenttypes.GenericPerson;
|
||||
import com.arsdigita.cms.contenttypes.util.ContenttypesGlobalizationUtil;
|
||||
|
||||
/**
|
||||
|
|
@ -63,12 +61,15 @@ public class GenericContactPersonPropertiesStep extends SimpleEditStep {
|
|||
}
|
||||
|
||||
public static Component getPersonPropertySheet(ItemSelectionModel itemModel) {
|
||||
DomainObjectPropertySheet sheet = new DomainObjectPropertySheet(itemModel);
|
||||
/*DomainObjectPropertySheet sheet = new DomainObjectPropertySheet(itemModel);
|
||||
|
||||
sheet.add((String) ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.person.surname").localize(), "person." + GenericPerson.SURNAME);
|
||||
sheet.add((String) ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.person.givenname").localize(), "person." + GenericPerson.GIVENNAME);
|
||||
sheet.add((String) ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.person.titlepre").localize(), "person." + GenericPerson.TITLEPRE);
|
||||
sheet.add((String) ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.person.titlepost").localize(), "person." + GenericPerson.TITLEPOST);
|
||||
sheet.add(ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.person.surname"), "person." + GenericPerson.SURNAME);
|
||||
sheet.add(ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.person.givenname"), "person." + GenericPerson.GIVENNAME);
|
||||
sheet.add(ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.person.titlepre"), "person." + GenericPerson.TITLEPRE);
|
||||
sheet.add(ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.person.titlepost"), "person." + GenericPerson.TITLEPOST);*/
|
||||
|
||||
GenericContactPersonSheet sheet = new GenericContactPersonSheet(
|
||||
itemModel);
|
||||
|
||||
return sheet;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -72,8 +72,8 @@ public class GenericOrganizationalUnitPersonAddForm extends BasicItemForm {
|
|||
add(new Label(ContenttypesGlobalizationUtil.globalize(
|
||||
"cms.contenttypes.ui.genericorgaunit.person.role")));
|
||||
ParameterModel roleParam =
|
||||
new StringParameter(
|
||||
GenericOrganizationalUnitPersonCollection.PERSON_ROLE);
|
||||
new StringParameter(
|
||||
GenericOrganizationalUnitPersonCollection.PERSON_ROLE);
|
||||
SingleSelect roleSelect = new SingleSelect(roleParam);
|
||||
roleSelect.addValidationListener(new NotNullValidationListener());
|
||||
roleSelect.addOption(
|
||||
|
|
@ -120,8 +120,8 @@ public class GenericOrganizationalUnitPersonAddForm extends BasicItemForm {
|
|||
getFullName()));
|
||||
}
|
||||
orga.addPerson((GenericPerson) data.get(ITEM_SEARCH),
|
||||
(String) data.get(
|
||||
GenericOrganizationalUnitPersonCollection.PERSON_ROLE));
|
||||
(String) data.get(
|
||||
GenericOrganizationalUnitPersonCollection.PERSON_ROLE));
|
||||
}
|
||||
|
||||
init(fse);
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ package com.arsdigita.cms.contenttypes.ui;
|
|||
import com.arsdigita.bebop.Component;
|
||||
import com.arsdigita.bebop.ControlLink;
|
||||
import com.arsdigita.bebop.Label;
|
||||
import com.arsdigita.bebop.Link;
|
||||
import com.arsdigita.bebop.PageState;
|
||||
import com.arsdigita.bebop.Table;
|
||||
import com.arsdigita.bebop.event.TableActionEvent;
|
||||
|
|
@ -31,14 +32,18 @@ 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.bebop.util.GlobalizationUtil;
|
||||
import com.arsdigita.cms.CMS;
|
||||
import com.arsdigita.cms.ContentItem;
|
||||
import com.arsdigita.cms.ContentSection;
|
||||
import com.arsdigita.cms.ItemSelectionModel;
|
||||
import com.arsdigita.cms.RelationAttributeCollection;
|
||||
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit;
|
||||
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitPersonCollection;
|
||||
import com.arsdigita.cms.contenttypes.GenericPerson;
|
||||
import com.arsdigita.cms.contenttypes.util.ContenttypesGlobalizationUtil;
|
||||
import com.arsdigita.cms.dispatcher.ItemResolver;
|
||||
import com.arsdigita.cms.dispatcher.Utilities;
|
||||
import com.arsdigita.domain.DataObjectNotFoundException;
|
||||
import com.arsdigita.util.LockableImpl;
|
||||
import java.math.BigDecimal;
|
||||
import org.apache.log4j.Logger;
|
||||
|
|
@ -78,24 +83,27 @@ public class GenericOrganizationalUnitPersonsTable extends Table implements
|
|||
new TableColumn(
|
||||
2,
|
||||
ContenttypesGlobalizationUtil.globalize(
|
||||
"cms.contenttypes.ui.genericorgaunit.persons.delete").localize()));
|
||||
"cms.contenttypes.ui.genericorgaunit.persons.delete").localize(),
|
||||
TABLE_COL_DEL));
|
||||
|
||||
setModelBuilder(
|
||||
new GenericOrganizationalUnitTableModelBuilder(itemModel));
|
||||
|
||||
tabModel.get(0).setCellRenderer(new EditCellRenderer());
|
||||
tabModel.get(2).setCellRenderer(new DeleteCellRenderer());
|
||||
|
||||
addTableActionListener(this);
|
||||
}
|
||||
|
||||
private class GenericOrganizationalUnitTableModelBuilder
|
||||
extends LockableImpl
|
||||
implements TableModelBuilder {
|
||||
|
||||
private ItemSelectionModel m_itemModel;
|
||||
private ItemSelectionModel m_itemModel;
|
||||
|
||||
public GenericOrganizationalUnitTableModelBuilder(
|
||||
ItemSelectionModel itemModel) {
|
||||
m_itemModel = itemModel;
|
||||
m_itemModel = itemModel;
|
||||
}
|
||||
|
||||
public TableModel makeModel(Table table, PageState state) {
|
||||
|
|
@ -113,14 +121,16 @@ public class GenericOrganizationalUnitPersonsTable extends Table implements
|
|||
|
||||
private Table m_table;
|
||||
private GenericOrganizationalUnitPersonCollection m_personsCollection;
|
||||
private GenericPerson m_person;
|
||||
private GenericPerson m_person;
|
||||
|
||||
private GenericOrganizationalUnitTableModel(
|
||||
Table table,
|
||||
PageState state,
|
||||
GenericOrganizationalUnit orgaunit) {
|
||||
m_table = table;
|
||||
m_personsCollection = orgaunit.getPersons();
|
||||
m_personsCollection = orgaunit.getPersons();
|
||||
s_log.debug(String.format("m_personsCollection.size() = %d", m_personsCollection.
|
||||
size()));
|
||||
}
|
||||
|
||||
public int getColumnCount() {
|
||||
|
|
@ -145,17 +155,19 @@ public class GenericOrganizationalUnitPersonsTable extends Table implements
|
|||
switch (columnIndex) {
|
||||
case 0:
|
||||
return m_person.getFullName();
|
||||
case 1:
|
||||
case 1:
|
||||
RelationAttributeCollection role = new RelationAttributeCollection(
|
||||
getRoleAttributeName(),
|
||||
m_personsCollection.getRoleName());
|
||||
m_personsCollection.getRoleName());
|
||||
if (role.next()) {
|
||||
return role.getName();
|
||||
} else {
|
||||
return ContenttypesGlobalizationUtil.globalize("cms.ui.unknownRole");
|
||||
return ContenttypesGlobalizationUtil.globalize(
|
||||
"cms.ui.unknownRole");
|
||||
}
|
||||
case 2:
|
||||
return ContenttypesGlobalizationUtil.globalize("cms.ui.delete").localize();
|
||||
return ContenttypesGlobalizationUtil.globalize(
|
||||
"cms.ui.delete").localize();
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
|
|
@ -177,7 +189,7 @@ public class GenericOrganizationalUnitPersonsTable extends Table implements
|
|||
Object key,
|
||||
int row,
|
||||
int col) {
|
||||
/*com.arsdigita.cms.SecurityManager securityManager = Utilities.
|
||||
com.arsdigita.cms.SecurityManager securityManager = Utilities.
|
||||
getSecurityManager(state);
|
||||
GenericOrganizationalUnit orgaunit = (GenericOrganizationalUnit) m_itemModel.
|
||||
getSelectedObject(
|
||||
|
|
@ -187,11 +199,27 @@ public class GenericOrganizationalUnitPersonsTable extends Table implements
|
|||
com.arsdigita.cms.SecurityManager.EDIT_ITEM,
|
||||
orgaunit);
|
||||
if (canEdit) {
|
||||
ControlLink link = new ControlLink(value.toString());
|
||||
GenericPerson person;
|
||||
try {
|
||||
person = new GenericPerson((BigDecimal) key);
|
||||
} catch (DataObjectNotFoundException ex) {
|
||||
s_log.warn(String.format("No object with key '%s' found.",
|
||||
key),
|
||||
ex);
|
||||
return new Label(value.toString());
|
||||
}
|
||||
ContentSection section = CMS.getContext().getContentSection();
|
||||
ItemResolver resolver = section.getItemResolver();
|
||||
Link link = new Link(value.toString(),
|
||||
resolver.generateItemURL(state,
|
||||
person,
|
||||
section,
|
||||
person.getVersion()));
|
||||
|
||||
return link;
|
||||
} else {*/
|
||||
} else {
|
||||
return new Label(value.toString());
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -230,7 +258,11 @@ public class GenericOrganizationalUnitPersonsTable extends Table implements
|
|||
|
||||
@Override
|
||||
public void cellSelected(TableActionEvent event) {
|
||||
s_log.debug("Cell selected.");
|
||||
PageState state = event.getPageState();
|
||||
s_log.debug(String.format("RowKey = %s", event.getRowKey().toString()));
|
||||
s_log.debug(String.format("Selected column: %d", event.getColumn().
|
||||
intValue()));
|
||||
|
||||
GenericPerson person = new GenericPerson(new BigDecimal(event.getRowKey().
|
||||
toString()));
|
||||
|
|
@ -240,20 +272,26 @@ public class GenericOrganizationalUnitPersonsTable extends Table implements
|
|||
|
||||
TableColumn col = getColumnModel().get(event.getColumn().intValue());
|
||||
|
||||
if (col.getHeaderKey().toString().equals(TABLE_COL_EDIT)) {
|
||||
}
|
||||
|
||||
if (col.getHeaderKey().toString().equals(TABLE_COL_DEL)) {
|
||||
|
||||
if (col.getHeaderKey().toString().equals(TABLE_COL_EDIT)) {
|
||||
} else if (col.getHeaderKey().toString().equals(TABLE_COL_DEL)) {
|
||||
s_log.debug("Removing person assoc...");
|
||||
orga.removePerson(person);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void headSelected(TableActionEvent event) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
|
||||
|
||||
}
|
||||
|
||||
protected String getRoleAttributeName() {
|
||||
return "GenericOrganizationalUnitRole";
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -72,8 +72,8 @@ public abstract class DomainObjectTraversal {
|
|||
|
||||
private Set m_visited = new HashSet();
|
||||
private static Map s_adapters = new HashMap();
|
||||
private static final Logger s_log = Logger.getLogger(DomainObjectTraversal.class);
|
||||
|
||||
private static final Logger s_log = Logger.getLogger(
|
||||
DomainObjectTraversal.class);
|
||||
public final static String LINK_NAME = "link";
|
||||
|
||||
/**
|
||||
|
|
@ -89,17 +89,14 @@ public abstract class DomainObjectTraversal {
|
|||
final String context) {
|
||||
Assert.exists(adapter,
|
||||
"The DomainObjectTraversalAdapter is null for context '"
|
||||
+ context + "' and object type '" + type);
|
||||
Assert.exists(type, "The ObjectType for context '" + context +
|
||||
"' and adapter '" + adapter + "' is null");
|
||||
+ context + "' and object type '" + type);
|
||||
Assert.exists(type, "The ObjectType for context '" + context
|
||||
+ "' and adapter '" + adapter + "' is null");
|
||||
Assert.exists(context, String.class);
|
||||
if (s_log.isDebugEnabled()) {
|
||||
s_log.debug("Registering adapter " +
|
||||
adapter.getClass() +
|
||||
" for object type " +
|
||||
type.getQualifiedName() +
|
||||
" in context " +
|
||||
context);
|
||||
s_log.debug("Registering adapter " + adapter.getClass()
|
||||
+ " for object type " + type.getQualifiedName()
|
||||
+ " in context " + context);
|
||||
}
|
||||
s_adapters.put(new AdapterKey(type, context), adapter);
|
||||
}
|
||||
|
|
@ -117,11 +114,8 @@ public abstract class DomainObjectTraversal {
|
|||
Assert.exists(context, String.class);
|
||||
|
||||
if (s_log.isDebugEnabled()) {
|
||||
s_log.debug("Removing adapter " +
|
||||
" for object type " +
|
||||
type.getQualifiedName() +
|
||||
" in context " +
|
||||
context);
|
||||
s_log.debug("Removing adapter " + " for object type " + type.
|
||||
getQualifiedName() + " in context " + context);
|
||||
}
|
||||
|
||||
s_adapters.remove(new AdapterKey(type, context));
|
||||
|
|
@ -137,7 +131,7 @@ public abstract class DomainObjectTraversal {
|
|||
*/
|
||||
public static void registerAdapter(final String type,
|
||||
final DomainObjectTraversalAdapter adapter,
|
||||
final String context) {
|
||||
final String context) {
|
||||
registerAdapter(SessionManager.getMetadataRoot().getObjectType(type),
|
||||
adapter,
|
||||
context);
|
||||
|
|
@ -163,20 +157,19 @@ public abstract class DomainObjectTraversal {
|
|||
* @param type the object type to lookup
|
||||
* @param context the adapter context
|
||||
*/
|
||||
public static DomainObjectTraversalAdapter lookupAdapter(final ObjectType type,
|
||||
public static DomainObjectTraversalAdapter lookupAdapter(
|
||||
final ObjectType type,
|
||||
final String context) {
|
||||
Assert.exists(type, ObjectType.class);
|
||||
Assert.exists(context, String.class);
|
||||
if (s_log.isDebugEnabled()) {
|
||||
s_log.debug("lookupAdapter for type " +
|
||||
type.getQualifiedName() +
|
||||
" in context " +
|
||||
context);
|
||||
s_log.debug("lookupAdapter for type " + type.getQualifiedName()
|
||||
+ " in context " + context);
|
||||
|
||||
}
|
||||
|
||||
return (DomainObjectTraversalAdapter)s_adapters
|
||||
.get(new AdapterKey(type, context));
|
||||
return (DomainObjectTraversalAdapter) s_adapters.get(
|
||||
new AdapterKey(type, context));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -193,21 +186,19 @@ public abstract class DomainObjectTraversal {
|
|||
Assert.exists(type, ObjectType.class);
|
||||
Assert.exists(context, String.class);
|
||||
if (s_log.isDebugEnabled()) {
|
||||
s_log.debug("findAdapter for type " +
|
||||
type.getQualifiedName() +
|
||||
" in context " +
|
||||
context);
|
||||
s_log.debug("findAdapter for type " + type.getQualifiedName()
|
||||
+ " in context " + context);
|
||||
|
||||
StringBuffer buf = new StringBuffer();
|
||||
buf.append( "Adapters contain:\n" );
|
||||
buf.append("Adapters contain:\n");
|
||||
Iterator keys = s_adapters.keySet().iterator();
|
||||
while( keys.hasNext() ) {
|
||||
while (keys.hasNext()) {
|
||||
Object key = keys.next();
|
||||
buf.append( key.toString() ).append( ": " );
|
||||
buf.append( s_adapters.get( key ).toString() ).append( '\n' );
|
||||
buf.append(key.toString()).append(": ");
|
||||
buf.append(s_adapters.get(key).toString()).append('\n');
|
||||
}
|
||||
|
||||
s_log.debug( buf.toString() );
|
||||
s_log.debug(buf.toString());
|
||||
}
|
||||
DomainObjectTraversalAdapter adapter = null;
|
||||
ObjectType tmpType = type;
|
||||
|
|
@ -216,10 +207,8 @@ public abstract class DomainObjectTraversal {
|
|||
tmpType = tmpType.getSupertype();
|
||||
}
|
||||
if (adapter == null) {
|
||||
s_log.warn("Could not find adapter for object type " +
|
||||
type.getQualifiedName() +
|
||||
" in context " +
|
||||
context);
|
||||
s_log.warn("Could not find adapter for object type " + type.
|
||||
getQualifiedName() + " in context " + context);
|
||||
}
|
||||
return adapter;
|
||||
}
|
||||
|
|
@ -233,13 +222,12 @@ public abstract class DomainObjectTraversal {
|
|||
*/
|
||||
public void walk(final DomainObject obj,
|
||||
final String context) {
|
||||
final DomainObjectTraversalAdapter adapter = findAdapter(obj.getObjectType(),
|
||||
context);
|
||||
final DomainObjectTraversalAdapter adapter = findAdapter(obj.
|
||||
getObjectType(),
|
||||
context);
|
||||
if (adapter == null) {
|
||||
final String errorMsg = "No adapter for object " +
|
||||
obj.getOID() +
|
||||
" in context " +
|
||||
context;
|
||||
final String errorMsg = "No adapter for object " + obj.getOID()
|
||||
+ " in context " + context;
|
||||
s_log.error(errorMsg);
|
||||
throw new IllegalArgumentException(errorMsg);
|
||||
}
|
||||
|
|
@ -259,16 +247,16 @@ public abstract class DomainObjectTraversal {
|
|||
// ContentBundle instead of the content item. To get the corresponding
|
||||
// content item during XML generation, I have to test for ContentBundle and
|
||||
// negotiate the language version. This is not possible in com.arsdigita.ccm.
|
||||
|
||||
protected void walk(final DomainObjectTraversalAdapter adapter,
|
||||
final DomainObject obj,
|
||||
final String path,
|
||||
final String context,
|
||||
final DomainObject linkObject) {
|
||||
final DomainObject obj,
|
||||
final String path,
|
||||
final String context,
|
||||
final DomainObject linkObject) {
|
||||
s_log.debug(String.format("Walking with path %s and context %s...", path, context));
|
||||
OID oid = obj.getOID();
|
||||
OID linkOid = null;
|
||||
if (linkObject != null) {
|
||||
linkOid = linkObject.getOID();
|
||||
linkOid = linkObject.getOID();
|
||||
}
|
||||
OID[] visitedKey = {oid, linkOid};
|
||||
// Prevent infinite recursion
|
||||
|
|
@ -284,7 +272,7 @@ public abstract class DomainObjectTraversal {
|
|||
|
||||
if (linkObject != null) {
|
||||
beginLink(linkObject, path);
|
||||
walk(adapter,
|
||||
walk(adapter,
|
||||
linkObject,
|
||||
appendToPath(path, LINK_NAME),
|
||||
context,
|
||||
|
|
@ -295,7 +283,7 @@ public abstract class DomainObjectTraversal {
|
|||
ObjectType type = obj.getObjectType();
|
||||
|
||||
// Test all properties against the traversal xml
|
||||
for (Iterator i = type.getProperties(); i.hasNext(); ) {
|
||||
for (Iterator i = type.getProperties(); i.hasNext();) {
|
||||
Property prop = (Property) i.next();
|
||||
String propName = prop.getName();
|
||||
|
||||
|
|
@ -303,20 +291,19 @@ public abstract class DomainObjectTraversal {
|
|||
appendToPath(path, prop.getName()),
|
||||
prop,
|
||||
context)) {
|
||||
if( s_log.isDebugEnabled() ) {
|
||||
s_log.debug( "Not processing " +
|
||||
appendToPath( path, prop.getName() ) +
|
||||
" in object " + oid + " and context " +
|
||||
context + " with adapter " +
|
||||
adapter.getClass().getName() );
|
||||
if (s_log.isDebugEnabled()) {
|
||||
s_log.debug("Not processing " + appendToPath(path, prop.
|
||||
getName()) + " in object " + oid + " and context "
|
||||
+ context + " with adapter " + adapter.getClass().
|
||||
getName());
|
||||
}
|
||||
continue;
|
||||
}
|
||||
Object propValue = obj.get(propName);
|
||||
if (propValue == null) {
|
||||
if( s_log.isDebugEnabled() ) {
|
||||
s_log.debug( "Object " + oid.toString() + " doesn't " +
|
||||
"contain property " + propName );
|
||||
if (s_log.isDebugEnabled()) {
|
||||
s_log.debug("Object " + oid.toString() + " doesn't "
|
||||
+ "contain property " + propName);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
|
@ -324,75 +311,76 @@ public abstract class DomainObjectTraversal {
|
|||
if (prop.isAttribute()) {
|
||||
handleAttribute(obj, path, prop);
|
||||
|
||||
// Property is a DataObject, so start recursion
|
||||
// Property is a DataObject, so start recursion
|
||||
} else if (propValue instanceof DataObject) {
|
||||
if( s_log.isDebugEnabled() ) {
|
||||
s_log.debug( prop.getName() + " is a DataObject" );
|
||||
if (s_log.isDebugEnabled()) {
|
||||
s_log.debug(prop.getName() + " is a DataObject");
|
||||
}
|
||||
|
||||
beginRole(obj, path, prop);
|
||||
|
||||
walk(adapter,
|
||||
DomainObjectFactory.newInstance((DataObject)propValue),
|
||||
walk(adapter,
|
||||
DomainObjectFactory.newInstance((DataObject) propValue),
|
||||
appendToPath(path, propName),
|
||||
context,
|
||||
null);
|
||||
|
||||
endRole(obj, path, prop);
|
||||
} else if (propValue instanceof DataAssociation) {
|
||||
|
||||
|
||||
// see #25808 - this hack prevents the content field of cms_files
|
||||
// (which is a blob) from being queried when all we need is a
|
||||
// list of the files on an item..
|
||||
if (prop.getName().equals("fileAttachments") &&
|
||||
!Domain.getConfig().queryBlobContentForFileAttachments()) {
|
||||
|
||||
|
||||
// see #25808 - this hack prevents the content field of cms_files
|
||||
// (which is a blob) from being queried when all we need is a
|
||||
// list of the files on an item..
|
||||
if (prop.getName().equals("fileAttachments") && !Domain.
|
||||
getConfig().queryBlobContentForFileAttachments()) {
|
||||
// make true a config
|
||||
DataQuery fileAttachmentsQuery =
|
||||
SessionManager.getSession().retrieveQuery(
|
||||
"com.arsdigita.cms.contentassets.fileAttachmentsQuery");
|
||||
|
||||
fileAttachmentsQuery.setParameter("item_id",
|
||||
DataQuery fileAttachmentsQuery =
|
||||
SessionManager.getSession().retrieveQuery(
|
||||
"com.arsdigita.cms.contentassets.fileAttachmentsQuery");
|
||||
|
||||
fileAttachmentsQuery.setParameter("item_id",
|
||||
obj.getOID().get("id"));
|
||||
|
||||
DataCollection files = new DataQueryDataCollectionAdapter(
|
||||
fileAttachmentsQuery, "file");
|
||||
|
||||
while(files.next()) {
|
||||
DataObject file = files.getDataObject();
|
||||
walk(adapter,
|
||||
DomainObjectFactory.newInstance
|
||||
(file),
|
||||
appendToPath(path, propName),
|
||||
context,
|
||||
null);
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
if( s_log.isDebugEnabled() ) {
|
||||
s_log.debug( prop.getName() + " is a DataAssociation" );
|
||||
}
|
||||
beginAssociation(obj, path, prop);
|
||||
|
||||
DataAssociationCursor daCursor =
|
||||
((DataAssociation)propValue).getDataAssociationCursor();
|
||||
|
||||
while (daCursor.next()) {
|
||||
DataObject link = daCursor.getLink();
|
||||
DomainObject linkObj = null;
|
||||
if (link != null) {
|
||||
linkObj = new LinkDomainObject(link);
|
||||
|
||||
DataCollection files = new DataQueryDataCollectionAdapter(
|
||||
fileAttachmentsQuery, "file");
|
||||
|
||||
while (files.next()) {
|
||||
DataObject file = files.getDataObject();
|
||||
walk(adapter,
|
||||
DomainObjectFactory.newInstance(file),
|
||||
appendToPath(path, propName),
|
||||
context,
|
||||
null);
|
||||
}
|
||||
walk(adapter,
|
||||
DomainObjectFactory.newInstance
|
||||
(daCursor.getDataObject()),
|
||||
appendToPath(path, propName),
|
||||
context,
|
||||
linkObj);
|
||||
|
||||
} else {
|
||||
|
||||
if (s_log.isDebugEnabled()) {
|
||||
s_log.debug(prop.getName() + " is a DataAssociation");
|
||||
}
|
||||
beginAssociation(obj, path, prop);
|
||||
|
||||
DataAssociationCursor daCursor =
|
||||
((DataAssociation) propValue).
|
||||
getDataAssociationCursor();
|
||||
|
||||
while (daCursor.next()) {
|
||||
s_log.debug("Processing data assoication cursor...");
|
||||
DataObject link = daCursor.getLink();
|
||||
DomainObject linkObj = null;
|
||||
if (link != null) {
|
||||
linkObj = new LinkDomainObject(link);
|
||||
}
|
||||
walk(adapter,
|
||||
DomainObjectFactory.newInstance(daCursor.
|
||||
getDataObject()),
|
||||
appendToPath(path, propName),
|
||||
context,
|
||||
linkObj);
|
||||
}
|
||||
endAssociation(obj, path, prop);
|
||||
}
|
||||
endAssociation(obj, path, prop);
|
||||
}
|
||||
} else {
|
||||
// Unknown property value type - do nothing
|
||||
}
|
||||
|
|
@ -402,13 +390,13 @@ public abstract class DomainObjectTraversal {
|
|||
endObject(obj, path);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Method called when the processing of an object
|
||||
* starts
|
||||
*/
|
||||
protected abstract void beginObject(DomainObject obj,
|
||||
String path);
|
||||
|
||||
/**
|
||||
* Method called when the procesing of an object
|
||||
* completes
|
||||
|
|
@ -420,12 +408,17 @@ public abstract class DomainObjectTraversal {
|
|||
* Method called when the processing of a Link Object
|
||||
* starts
|
||||
*/
|
||||
protected void beginLink(DomainObject obj, String path) {}
|
||||
protected void beginLink(DomainObject obj, String path) {
|
||||
s_log.debug(String.format("Starting link with path = %s", path));
|
||||
}
|
||||
|
||||
/**
|
||||
* Method called when the procesing of a Link Object
|
||||
* completes
|
||||
*/
|
||||
protected void endLink(DomainObject obj, String path) {}
|
||||
protected void endLink(DomainObject obj, String path) {
|
||||
s_log.debug(String.format("Finished link with path = %s", path));
|
||||
}
|
||||
|
||||
/**
|
||||
* Method called when a previously visited object
|
||||
|
|
@ -473,7 +466,6 @@ public abstract class DomainObjectTraversal {
|
|||
String path,
|
||||
Property property);
|
||||
|
||||
|
||||
protected String appendToPath(String path,
|
||||
String name) {
|
||||
if (path.endsWith("/" + name)) {
|
||||
|
|
@ -481,7 +473,7 @@ public abstract class DomainObjectTraversal {
|
|||
} else if (!path.endsWith("/" + name + "+")) {
|
||||
path = path + "/" + name;
|
||||
}
|
||||
|
||||
|
||||
return path;
|
||||
}
|
||||
|
||||
|
|
@ -507,8 +499,8 @@ public abstract class DomainObjectTraversal {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
protected static class AdapterKey {
|
||||
|
||||
private final ObjectType m_type;
|
||||
private final String m_context;
|
||||
|
||||
|
|
@ -522,9 +514,8 @@ public abstract class DomainObjectTraversal {
|
|||
|
||||
public boolean equals(Object o) {
|
||||
if (o instanceof AdapterKey) {
|
||||
AdapterKey k = (AdapterKey)o;
|
||||
return k.m_type.equals(m_type) &&
|
||||
k.m_context.equals(m_context);
|
||||
AdapterKey k = (AdapterKey) o;
|
||||
return k.m_type.equals(m_type) && k.m_context.equals(m_context);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
|
@ -544,9 +535,9 @@ public abstract class DomainObjectTraversal {
|
|||
* but we don't have any other domain object to use.
|
||||
*/
|
||||
private class LinkDomainObject extends DomainObject {
|
||||
|
||||
LinkDomainObject(DataObject object) {
|
||||
super(object);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -218,6 +218,7 @@ public class DomainObjectXMLRenderer extends DomainObjectTraversal {
|
|||
return XML.format(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void walk(DomainObject obj,
|
||||
String context,
|
||||
DomainObjectTraversalAdapter adapter) {
|
||||
|
|
|
|||
|
|
@ -425,10 +425,13 @@ class DataObjectImpl implements DataObject {
|
|||
getSession().m_beforeFP.fireNow(new BeforeSaveEvent(this));
|
||||
|
||||
if (!getSsn().isFlushed(this)) {
|
||||
s_log.debug("Flushing...");
|
||||
getSsn().flush();
|
||||
s_log.debug("Checking flushing...");
|
||||
assertFlushed();
|
||||
} else {
|
||||
// with no changes on the object fire after save directly
|
||||
s_log.debug("Direct save...");
|
||||
getSession().m_afterFP.fireNow(new AfterSaveEvent(this));
|
||||
}
|
||||
} catch (ProtoException pe) {
|
||||
|
|
@ -441,6 +444,7 @@ class DataObjectImpl implements DataObject {
|
|||
for (Iterator it = getObjectType().getProperties();
|
||||
it.hasNext(); ) {
|
||||
Property p = (Property) it.next();
|
||||
s_log.debug(String.format("Asserting that property '%s' is flushed...", p.getName()));
|
||||
if (!getSsn().isFlushed(this, C.prop(m_ssn.getRoot(), p))) {
|
||||
// use m_ssn to generate the exception
|
||||
getSsn().assertFlushed(this);
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
*
|
||||
* 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
|
||||
* MERCHANTABILITY or FITNESS FOR sA PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
|
|
@ -18,6 +18,7 @@
|
|||
*/
|
||||
package com.redhat.persistence;
|
||||
|
||||
import com.arsdigita.persistence.DataObject;
|
||||
import com.arsdigita.util.UncheckedWrapperException;
|
||||
import com.redhat.persistence.metadata.Adapter;
|
||||
import com.redhat.persistence.metadata.ObjectType;
|
||||
|
|
@ -77,12 +78,8 @@ class Expander extends Event.Switch {
|
|||
final void expand(Event ev) {
|
||||
try {
|
||||
Session.trace(ev.getName(), new Object[]{ev});
|
||||
try {
|
||||
ev.dispatch(this);
|
||||
} catch (DuplicateObjectException ex) {
|
||||
s_log.warn("Duplicate object exception: ", ex);
|
||||
s_log.warn("This is maybe an error, but not in all cases.");
|
||||
}
|
||||
ev.dispatch(this);
|
||||
|
||||
} catch (RuntimeException re) {
|
||||
if (re instanceof ProtoException) {
|
||||
ProtoException pe = (ProtoException) re;
|
||||
|
|
@ -114,17 +111,20 @@ class Expander extends Event.Switch {
|
|||
|
||||
public void onCreate(CreateEvent e) {
|
||||
final Object obj = e.getObject();
|
||||
|
||||
|
||||
ObjectData od = m_ssn.getObjectData(obj);
|
||||
if (od == null) {
|
||||
od = new ObjectData(m_ssn, obj, od.INFANTILE);
|
||||
od = new ObjectData(m_ssn, obj, ObjectData.INFANTILE);
|
||||
} else if (!od.isDeleted()) {
|
||||
od.dump();
|
||||
ProtoException pe = new DuplicateObjectException(obj);
|
||||
pe.setInternal(false);
|
||||
throw pe;
|
||||
//od.dump();
|
||||
//ProtoException pe = new DuplicateObjectException(obj);
|
||||
//pe.setInternal(false);
|
||||
//throw pe;
|
||||
s_log.warn("Duplicate object: " + ((DataObject) od.getObject()).
|
||||
getOID());
|
||||
return;
|
||||
} else {
|
||||
od.setState(od.INFANTILE);
|
||||
od.setState(ObjectData.INFANTILE);
|
||||
}
|
||||
|
||||
Adapter a = m_ssn.getAdapter(obj);
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ import java.util.Collection;
|
|||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
/**
|
||||
* PropertyData
|
||||
|
|
@ -34,6 +35,8 @@ import java.util.List;
|
|||
|
||||
class PropertyData {
|
||||
|
||||
private final static Logger s_log = Logger.getLogger(PropertyData.class);
|
||||
|
||||
final private ObjectData m_odata;
|
||||
final private Property m_prop;
|
||||
private Object m_value;
|
||||
|
|
@ -92,6 +95,10 @@ class PropertyData {
|
|||
(getObject(), getProperty());
|
||||
return evs.size() == 0;
|
||||
} else {
|
||||
if (getSession().getEventStream().getLastEvent(getObject(), getProperty()) != null) {
|
||||
//s_log.error(String.format("Last event is not null, property '%s' is not flushed. Last event is: '%s'",
|
||||
// getProperty().getName(), getSession().getEventStream().getLastEvent(getObject(), getProperty()).getName()));
|
||||
}
|
||||
return getSession().getEventStream().getLastEvent
|
||||
(getObject(), getProperty()) == null;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -202,7 +202,7 @@
|
|||
</xrd:adapter>
|
||||
|
||||
<!-- Adds several image assets -->
|
||||
<xrd:adapter objectType="com.arsdigita.cms.Article">
|
||||
<xrd:adapter objectType="com.arsdigita.cms.contenttypes.GenericArticle">
|
||||
<xrd:attributes rule="exclude">
|
||||
<xrd:property name="/object/id"/>
|
||||
<xrd:property name="/object/defaultDomainClass"/>
|
||||
|
|
|
|||
|
|
@ -221,7 +221,7 @@ public class DataCollectionRenderer extends LockableImpl {
|
|||
|
||||
private void outputValue(final Element item, final Object value,
|
||||
final String name,
|
||||
final String[] paths, final int depth) {
|
||||
final String[] paths, final int depth) {
|
||||
if (null == value) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -298,5 +298,6 @@ public class DataCollectionRenderer extends LockableImpl {
|
|||
DataObject dobj,
|
||||
ACSObject obj,
|
||||
int index) {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,10 +15,11 @@
|
|||
* 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.london.navigation.cms;
|
||||
|
||||
import com.arsdigita.cms.ContentItem;
|
||||
import com.arsdigita.cms.ContentItemXMLRenderer;
|
||||
import com.arsdigita.cms.dispatcher.SimpleXMLGenerator;
|
||||
import com.arsdigita.domain.DomainObjectFactory;
|
||||
import com.arsdigita.kernel.ACSObject;
|
||||
import com.arsdigita.london.navigation.DataCollectionRenderer;
|
||||
|
|
@ -39,16 +40,24 @@ public class CMSDataCollectionRenderer extends DataCollectionRenderer {
|
|||
obj = (ACSObject) DomainObjectFactory.newInstance(dobj);
|
||||
}
|
||||
if (obj instanceof ContentItem) {
|
||||
OID oid = ( (ContentItem) obj).getDraftVersion().getOID();
|
||||
OID oid = ((ContentItem) obj).getDraftVersion().getOID();
|
||||
return Navigation.redirectURL(oid);
|
||||
}
|
||||
return super.getStableURL(dobj, obj);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void generateItemXML(Element item,
|
||||
DataObject dobj,
|
||||
ACSObject obj,
|
||||
int index) {
|
||||
if (obj != null) {
|
||||
ContentItemXMLRenderer renderer = new ContentItemXMLRenderer(item);
|
||||
renderer.setRevisitFullObject(false);
|
||||
renderer.setWrapAttributes(true);
|
||||
renderer.setWrapRoot(false);
|
||||
renderer.setWrapObjects(false);
|
||||
renderer.walk(obj, SimpleXMLGenerator.ADAPTER_CONTEXT);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,13 +8,21 @@
|
|||
The default properties for BaseContact are left as is and are inherited from ContentPage
|
||||
-->
|
||||
<xrd:context name="com.arsdigita.cms.dispatcher.SimpleXMLGenerator">
|
||||
<xrd:adapter objectType="com.arsdigita.cms.contenttypes.SciOrganization" extends="com.arsdigita.cms.ContentPage">
|
||||
<xrd:adapter objectType="com.arsdigita.cms.contenttypes.SciOrganization"
|
||||
extends="com.arsdigita.cms.ContentPage">
|
||||
<xrd:associations rule="include">
|
||||
<xrd:property name="/object/addendum"/>
|
||||
<xrd:property name="/object/contacts"/>
|
||||
<xrd:property name="/object/orgaunit_children"/>
|
||||
<xrd:property name="/object/persons"/>
|
||||
<xrd:property name="/object/contacts"/>
|
||||
<xrd:property name="/object/contacts/person"/>
|
||||
<xrd:property name="/object/contacts/address"/>
|
||||
<xrd:property name="/object/contacts/contactentries"/>
|
||||
<xrd:property name="/object/contacts/person"/>
|
||||
<xrd:property name="/object/departments"/>
|
||||
<xrd:property name="/object/departments/persons"/>
|
||||
<xrd:property name="/object/projects"/>
|
||||
<xrd:property name="/object/persons"/>
|
||||
</xrd:associations>
|
||||
</xrd:adapter>
|
||||
</xrd:context>
|
||||
|
||||
</xrd:adapters>
|
||||
|
|
@ -12,7 +12,6 @@
|
|||
<xrd:associations rule="include">
|
||||
<xrd:property name="/object/addendum"/>
|
||||
<xrd:property name="/object/contacts"/>
|
||||
<xrd:property name="/object/orgaunit_children"/>
|
||||
<xrd:property name="/object/persons"/>
|
||||
</xrd:associations>
|
||||
</xrd:adapter>
|
||||
|
|
|
|||
|
|
@ -26,8 +26,18 @@ package com.arsdigita.cms.contenttypes;
|
|||
*/
|
||||
public class SciOrganizationLoader extends AbstractContentTypeLoader {
|
||||
|
||||
public SciOrganizationLoader() {
|
||||
super();
|
||||
|
||||
/* Template.create("SciOrganization Description Only",
|
||||
"Display only the description of a SciOrganization",
|
||||
"/WEB-INF/content-types/com/arsdigita/cms/contenttypes/"
|
||||
+ "SciOrganizationDescription.jsp");*/
|
||||
|
||||
}
|
||||
private static final String[] TYPES = {
|
||||
"/WEB-INF/content-types/com/arsdigita/cms/contenttypes/SciOrganization.xml"
|
||||
"/WEB-INF/content-types/com/arsdigita/cms/contenttypes/"
|
||||
+ "SciOrganization.xml"
|
||||
};
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@
|
|||
* 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.aplaws;
|
||||
|
||||
import com.arsdigita.london.navigation.Navigation;
|
||||
|
|
@ -66,12 +65,10 @@ import java.util.Set;
|
|||
public class Loader extends PackageLoader {
|
||||
|
||||
private static final Logger s_log = Logger.getLogger(Loader.class);
|
||||
|
||||
private static final String[] categoryFiles = new String[] {
|
||||
"WEB-INF/aplaws/zes-nav-domain-1.00.xml"
|
||||
, "WEB-INF/aplaws/zes-nav-hierarchy-1.00.xml"
|
||||
private static final String[] categoryFiles = new String[]{
|
||||
"WEB-INF/aplaws/zes-nav-domain-1.00.xml",
|
||||
"WEB-INF/aplaws/zes-nav-hierarchy-1.00.xml"
|
||||
};
|
||||
|
||||
private StringParameter m_navigationDomain;
|
||||
// private StringParameter m_servicesDomain;
|
||||
// private StringParameter m_interactionDomain;
|
||||
|
|
@ -79,7 +76,7 @@ public class Loader extends PackageLoader {
|
|||
// private StringParameter m_rssDomain;
|
||||
|
||||
public Loader() {
|
||||
|
||||
|
||||
// Es werden stumpf mehrere Kategorisierungsdomains fuer TERMS
|
||||
// definiert und dann über xml Dateien gefüllt:
|
||||
// navigationDomain f. Navigation
|
||||
|
|
@ -88,60 +85,58 @@ public class Loader extends PackageLoader {
|
|||
// rssDomain fuer vermutlich RSS Feed
|
||||
//
|
||||
m_navigationDomain = new StringParameter(
|
||||
"com.arsdigita.aplaws.navigation_domain",
|
||||
Parameter.REQUIRED,
|
||||
"ZES-NAV");
|
||||
"com.arsdigita.aplaws.navigation_domain",
|
||||
Parameter.REQUIRED,
|
||||
"ZES-NAV");
|
||||
register(m_navigationDomain);
|
||||
|
||||
/*
|
||||
* You may add more catagory domains by adding resources
|
||||
* according the followin schema
|
||||
*/
|
||||
|
||||
|
||||
/* currently not used
|
||||
m_subjectDomain = new StringParameter(
|
||||
"com.arsdigita.aplaws.subject_domain",
|
||||
Parameter.REQUIRED,
|
||||
"LGCL");
|
||||
"com.arsdigita.aplaws.subject_domain",
|
||||
Parameter.REQUIRED,
|
||||
"LGCL");
|
||||
register(m_subjectDomain);
|
||||
*/
|
||||
|
||||
|
||||
/* currently not used
|
||||
m_interactionDomain = new StringParameter(
|
||||
"com.arsdigita.aplaws.subject_domain",
|
||||
Parameter.REQUIRED,
|
||||
"LGIL");
|
||||
"com.arsdigita.aplaws.subject_domain",
|
||||
Parameter.REQUIRED,
|
||||
"LGIL");
|
||||
register(m_interactionDomain);
|
||||
*/
|
||||
|
||||
|
||||
/* currently not used
|
||||
m_rssDomain = new StringParameter(
|
||||
"com.arsdigita.aplaws.rss_domain",
|
||||
Parameter.REQUIRED,
|
||||
"APLAWS-RSS");
|
||||
"com.arsdigita.aplaws.rss_domain",
|
||||
Parameter.REQUIRED,
|
||||
"APLAWS-RSS");
|
||||
register(m_rssDomain);
|
||||
*/
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void run(final ScriptContext ctx) {
|
||||
|
||||
|
||||
String[] files = categoryFiles;
|
||||
|
||||
final Parser parser = new Parser();
|
||||
for (int i = 0 ; i < files.length ; i++) {
|
||||
for (int i = 0; i < files.length; i++) {
|
||||
final String file = files[i];
|
||||
if (s_log.isInfoEnabled()) {
|
||||
s_log.info("Process " + file);
|
||||
}
|
||||
parser.parse(Thread.currentThread().getContextClassLoader
|
||||
().getResourceAsStream
|
||||
(file));
|
||||
parser.parse(Thread.currentThread().getContextClassLoader().
|
||||
getResourceAsStream(file));
|
||||
}
|
||||
|
||||
String navigationKey = (String)get(m_navigationDomain);
|
||||
String navigationKey = (String) get(m_navigationDomain);
|
||||
registerDomain(navigationKey, "/navigation/", null);
|
||||
registerDomain(navigationKey, "/content/", null);
|
||||
registerDomain(navigationKey, "/portal/", null);
|
||||
|
|
@ -169,16 +164,16 @@ public class Loader extends PackageLoader {
|
|||
// registerDomain(interactionKey, "/content/", "interaction");
|
||||
|
||||
|
||||
|
||||
|
||||
// register new / addidional JSP templates (index pages) in Navigation
|
||||
// registerServicesTemplate("/services/"); wird nicht gebraucht
|
||||
registerNavigationTemplates();
|
||||
|
||||
// Switch /portal/ to use 1 column layout for funky aplaws stuff.
|
||||
Workspace portal = (Workspace)Application
|
||||
.retrieveApplicationForPath("/portal/");
|
||||
portal.setDefaultLayout(PageLayout
|
||||
.findLayoutByFormat(PageLayout.FORMAT_ONE_COLUMN));
|
||||
Workspace portal = (Workspace) Application.retrieveApplicationForPath(
|
||||
"/portal/");
|
||||
portal.setDefaultLayout(PageLayout.findLayoutByFormat(
|
||||
PageLayout.FORMAT_ONE_COLUMN));
|
||||
}
|
||||
|
||||
// public void registerServicesTemplate(String appURL) {
|
||||
|
|
@ -197,7 +192,6 @@ public class Loader extends PackageLoader {
|
|||
// Template.DEFAULT_DISPATCHER_CONTEXT,
|
||||
// Template.DEFAULT_USE_CONTEXT );
|
||||
// }
|
||||
|
||||
/**
|
||||
* Use Package com.arsdigita.london.navigation to add additional
|
||||
* templates (JSP page - index page) for use in navigation.
|
||||
|
|
@ -208,35 +202,46 @@ public class Loader extends PackageLoader {
|
|||
*/
|
||||
public void registerNavigationTemplates() {
|
||||
|
||||
Template template ;
|
||||
Template template;
|
||||
|
||||
/* In navigation werden bereits Grund-Templates erstellt.
|
||||
*/
|
||||
/* In navigation werden bereits Grund-Templates erstellt.
|
||||
*/
|
||||
template = Template.create(
|
||||
"ZeS AtoZ paginator",
|
||||
"ZeS AtoZ paginator index page",
|
||||
"/packages/navigation/templates/zes-atoz.jsp");
|
||||
"ZeS AtoZ paginator",
|
||||
"ZeS AtoZ paginator index page",
|
||||
"/packages/navigation/templates/zes-atoz.jsp");
|
||||
|
||||
template = Template.create(
|
||||
"ZeS Default",
|
||||
"ZeS default index page",
|
||||
"/packages/navigation/templates/zes-default.jsp");
|
||||
"ZeS Default",
|
||||
"ZeS default index page",
|
||||
"/packages/navigation/templates/zes-default.jsp");
|
||||
|
||||
template = Template.create(
|
||||
"ZeS Portalseite",
|
||||
"ZeS Portal Page",
|
||||
"/packages/navigation/templates/zes-portal.jsp");
|
||||
"ZeS Portalseite",
|
||||
"ZeS Portal Page",
|
||||
"/packages/navigation/templates/zes-portal.jsp");
|
||||
|
||||
template = Template.create(
|
||||
"ZeS Recent",
|
||||
"ZeS reverse order page",
|
||||
"/packages/navigation/templates/zes-recent.jsp");
|
||||
"ZeS Recent",
|
||||
"ZeS reverse order page",
|
||||
"/packages/navigation/templates/zes-recent.jsp");
|
||||
|
||||
template = Template.create(
|
||||
"ZeS Welcome Page",
|
||||
"ZeS Welcome Page for navigation",
|
||||
"/packages/navigation/templates/zes-welcome.jsp");
|
||||
|
||||
"ZeS Welcome Page",
|
||||
"ZeS Welcome Page for navigation",
|
||||
"/packages/navigation/templates/zes-welcome.jsp");
|
||||
|
||||
template = Template.create(
|
||||
"ZeS Project List",
|
||||
"List of SciProjects",
|
||||
"/packages/navigation/templates/zes-project-list.jsp");
|
||||
|
||||
template = Template.create(
|
||||
"SciOrganization Description Only",
|
||||
"Display only the description of a SciOrganization",
|
||||
"/packages/navigation/templates/" +
|
||||
"SciOrganizationDescription.jsp");
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -247,85 +252,66 @@ public class Loader extends PackageLoader {
|
|||
* delivered.
|
||||
*/
|
||||
// -- public void registerDefaultNavigationDomain() {
|
||||
|
||||
// -- private StringParameter m_customNavKey;
|
||||
// -- private StringParameter m_customNavKey;
|
||||
// -- private URLParameter m_customNavDomainURL;
|
||||
// -- private StringParameter m_customNavPath;
|
||||
// -- private StringParameter m_customNavUseContext;
|
||||
// -- private StringParameter m_customNavTitle;
|
||||
// -- private StringParameter m_customNavDesc;
|
||||
|
||||
// -- m_customNavKey = new StringParameter(
|
||||
// -- "com.arsdigita.aplaws.custom_nav_key",
|
||||
// -- Parameter.REQUIRED,
|
||||
// -- "APLAWS-NAVIGATION");
|
||||
|
||||
/* Zugriff auf Website wird nicht benötigt, aber der Parameter bei Einrichtung
|
||||
* der Kategorien. Funktion URL prüft auf korrekte Syntax, nicht auf Existenz
|
||||
*/
|
||||
// -- try {
|
||||
// -- m_customNavDomainURL = new URLParameter(
|
||||
// -- "com.arsdigita.aplaws.custom_nav_domain_url",
|
||||
// -- Parameter.REQUIRED,
|
||||
// -- new URL("http://www.aplaws.org.uk/" +
|
||||
// -- "standards/custom/1.00/termslist.xml"));
|
||||
// -- } catch (MalformedURLException ex) {
|
||||
// -- throw new UncheckedWrapperException("Cannot parse url", ex);
|
||||
// -- }
|
||||
|
||||
|
||||
// -- m_customNavPath = new StringParameter(
|
||||
// -- "com.arsdigita.aplaws.custom_nav_path",
|
||||
// -- Parameter.REQUIRED,
|
||||
// -- "local");
|
||||
|
||||
// -- m_customNavUseContext = new StringParameter(
|
||||
// -- "com.arsdigita.aplaws.custom_nav_use_context",
|
||||
// -- Parameter.REQUIRED,
|
||||
// -- "local");
|
||||
|
||||
// -- m_customNavTitle = new StringParameter(
|
||||
// -- "com.arsdigita.aplaws.custom_nav_title",
|
||||
// -- Parameter.REQUIRED,
|
||||
// -- "APLAWS Custom Navigation");
|
||||
|
||||
// -- m_customNavDesc = new StringParameter(
|
||||
// -- "com.arsdigita.aplaws.custom_nav_desc",
|
||||
// -- Parameter.REQUIRED,
|
||||
// -- "Installation specific navigation tree");
|
||||
|
||||
|
||||
// -- register(m_customNavDesc);
|
||||
// -- register(m_customNavDomainURL);
|
||||
// -- register(m_customNavKey);
|
||||
// -- register(m_customNavPath);
|
||||
// -- register(m_customNavTitle);
|
||||
// -- register(m_customNavUseContext);
|
||||
|
||||
// -- String customNavPath = (String)get(m_customNavPath);
|
||||
// -- String customNavTitle = (String)get(m_customNavTitle);
|
||||
|
||||
// Package com.arsdigita.web
|
||||
// Application.createApplication(Navigation.BASE_DATA_OBJECT_TYPE,
|
||||
// customNavPath,
|
||||
// customNavTitle,
|
||||
// null);
|
||||
|
||||
|
||||
|
||||
// -- String customNavDesc = (String)get(m_customNavDesc);
|
||||
// -- String customNavKey = (String)get(m_customNavKey);
|
||||
// -- String customNavUseContext = (String)get(m_customNavUseContext);
|
||||
// -- URL customNavDomainURL = (URL)get(m_customNavDomainURL);
|
||||
|
||||
// -- Domain.create(customNavKey, customNavDomainURL,
|
||||
// -- customNavTitle, customNavDesc, "1.0.0", new Date());
|
||||
|
||||
// registerDomain(customNavKey, '/'+customNavPath+'/', null);
|
||||
// -- registerDomain(customNavKey, "/content/", customNavUseContext);
|
||||
|
||||
// -- m_customNavKey = new StringParameter(
|
||||
// -- "com.arsdigita.aplaws.custom_nav_key",
|
||||
// -- Parameter.REQUIRED,
|
||||
// -- "APLAWS-NAVIGATION");
|
||||
/* Zugriff auf Website wird nicht benötigt, aber der Parameter bei Einrichtung
|
||||
* der Kategorien. Funktion URL prüft auf korrekte Syntax, nicht auf Existenz
|
||||
*/
|
||||
// -- try {
|
||||
// -- m_customNavDomainURL = new URLParameter(
|
||||
// -- "com.arsdigita.aplaws.custom_nav_domain_url",
|
||||
// -- Parameter.REQUIRED,
|
||||
// -- new URL("http://www.aplaws.org.uk/" +
|
||||
// -- "standards/custom/1.00/termslist.xml"));
|
||||
// -- } catch (MalformedURLException ex) {
|
||||
// -- throw new UncheckedWrapperException("Cannot parse url", ex);
|
||||
// -- }
|
||||
// -- m_customNavPath = new StringParameter(
|
||||
// -- "com.arsdigita.aplaws.custom_nav_path",
|
||||
// -- Parameter.REQUIRED,
|
||||
// -- "local");
|
||||
// -- m_customNavUseContext = new StringParameter(
|
||||
// -- "com.arsdigita.aplaws.custom_nav_use_context",
|
||||
// -- Parameter.REQUIRED,
|
||||
// -- "local");
|
||||
// -- m_customNavTitle = new StringParameter(
|
||||
// -- "com.arsdigita.aplaws.custom_nav_title",
|
||||
// -- Parameter.REQUIRED,
|
||||
// -- "APLAWS Custom Navigation");
|
||||
// -- m_customNavDesc = new StringParameter(
|
||||
// -- "com.arsdigita.aplaws.custom_nav_desc",
|
||||
// -- Parameter.REQUIRED,
|
||||
// -- "Installation specific navigation tree");
|
||||
// -- register(m_customNavDesc);
|
||||
// -- register(m_customNavDomainURL);
|
||||
// -- register(m_customNavKey);
|
||||
// -- register(m_customNavPath);
|
||||
// -- register(m_customNavTitle);
|
||||
// -- register(m_customNavUseContext);
|
||||
// -- String customNavPath = (String)get(m_customNavPath);
|
||||
// -- String customNavTitle = (String)get(m_customNavTitle);
|
||||
// Package com.arsdigita.web
|
||||
// Application.createApplication(Navigation.BASE_DATA_OBJECT_TYPE,
|
||||
// customNavPath,
|
||||
// customNavTitle,
|
||||
// null);
|
||||
// -- String customNavDesc = (String)get(m_customNavDesc);
|
||||
// -- String customNavKey = (String)get(m_customNavKey);
|
||||
// -- String customNavUseContext = (String)get(m_customNavUseContext);
|
||||
// -- URL customNavDomainURL = (URL)get(m_customNavDomainURL);
|
||||
// -- Domain.create(customNavKey, customNavDomainURL,
|
||||
// -- customNavTitle, customNavDesc, "1.0.0", new Date());
|
||||
// registerDomain(customNavKey, '/'+customNavPath+'/', null);
|
||||
// -- registerDomain(customNavKey, "/content/", customNavUseContext);
|
||||
// -- }
|
||||
|
||||
/**
|
||||
* Use Package com.arsdigita.london.terms to register a Domain for
|
||||
* Categorisation
|
||||
|
|
@ -334,42 +320,46 @@ public class Loader extends PackageLoader {
|
|||
String appURL,
|
||||
String context) {
|
||||
if (s_log.isDebugEnabled()) {
|
||||
s_log.debug("Mapping domain " + domainKey +
|
||||
" to app " + appURL +
|
||||
" in context " + context);
|
||||
s_log.debug("Mapping domain " + domainKey + " to app " + appURL
|
||||
+ " in context " + context);
|
||||
}
|
||||
|
||||
Domain domain = Domain.retrieve(domainKey); // package com.arsdigita.london.terms
|
||||
Application app = Application.retrieveApplicationForPath(appURL);
|
||||
domain.setAsRootForObject(app, context);
|
||||
if (app instanceof ContentSection) {
|
||||
RoleCollection coll = ((ContentSection) app).getStaffGroup().getOrderedRoles();
|
||||
RoleCollection coll = ((ContentSection) app).getStaffGroup().
|
||||
getOrderedRoles();
|
||||
Set adminRoles = new HashSet();
|
||||
Set categorizeRoles = new HashSet();
|
||||
while (coll.next()) {
|
||||
Role role = coll.getRole();
|
||||
final DataQuery privs = RoleFactory.getRolePrivileges
|
||||
(app.getID(), role.getGroup().getID());
|
||||
final DataQuery privs = RoleFactory.getRolePrivileges(
|
||||
app.getID(), role.getGroup().getID());
|
||||
while (privs.next()) {
|
||||
String priv = (String) privs.get(RoleFactory.PRIVILEGE);
|
||||
if (priv.equals(SecurityManager.CMS_CATEGORY_ADMIN)) {
|
||||
adminRoles.add(role);
|
||||
} else if (priv.equals(SecurityManager.CMS_CATEGORIZE_ITEMS)) {
|
||||
} else if (priv.equals(
|
||||
SecurityManager.CMS_CATEGORIZE_ITEMS)) {
|
||||
categorizeRoles.add(role);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
RootCategoryCollection catCollection = Category.getRootCategories(((ContentSection) app));
|
||||
RootCategoryCollection catCollection = Category.getRootCategories(
|
||||
((ContentSection) app));
|
||||
while (catCollection.next()) {
|
||||
Iterator adminIter = adminRoles.iterator();
|
||||
while (adminIter.hasNext()) {
|
||||
((Role) adminIter.next()).grantPermission(catCollection.getCategory(),
|
||||
((Role) adminIter.next()).grantPermission(catCollection.
|
||||
getCategory(),
|
||||
PrivilegeDescriptor.ADMIN);
|
||||
}
|
||||
Iterator categorizeIter = categorizeRoles.iterator();
|
||||
while (categorizeIter.hasNext()) {
|
||||
((Role) categorizeIter.next()).grantPermission(catCollection.getCategory(),
|
||||
((Role) categorizeIter.next()).grantPermission(catCollection.
|
||||
getCategory(),
|
||||
Category.MAP_DESCRIPTOR);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue