Compare commits

...

56 Commits

Author SHA1 Message Date
Hardy Pottinger
b5b1d429ae [maven-release-plugin] prepare release dspace-1.8.3 2013-07-25 08:40:24 -05:00
Tim Donohue
d1eee3c804 Merge pull request #263 from hardyoyo/DS-1603-backport_to_18
backporting patch to DS-1603 to dspace 1.8
2013-07-24 13:21:09 -07:00
Hardy Pottinger
bb46eb44f4 backporting patch to DS-1603 to dspace 1.8 2013-07-24 14:49:22 -05:00
Tim Donohue
27573deea0 More line ending normalization (related to DS-1587) 2013-07-24 19:35:56 +00:00
vagrant
24224dbd0e Line ending normalization (related to DS-1587) 2013-07-23 21:05:49 +00:00
Tim Donohue
42bb874a92 Fixing incorrect path (related to DS-1587) 2013-06-26 12:37:32 -05:00
Tim Donohue
7b9e0230a8 Still more line ending cleanup (related to DS-1587) 2013-06-26 09:49:33 -05:00
Tim Donohue
d3487915e8 Even more line ending cleanup (related to changes in DS-1587), argh. 2013-06-26 09:46:37 -05:00
Tim Donohue
3cb3054fd1 More line ending cleanup (related to changes in DS-1587) 2013-06-26 09:43:22 -05:00
Tim Donohue
5b5960e72a Fix line endings (related to changes in DS-1587) 2013-06-26 09:33:43 -05:00
Tim Donohue
1a01ab804b Merge pull request #243 from DSpace/DS-1587-1.8.x
DS-1587: Fix 1.8.x Branch for Git/GitHub
2013-06-26 07:28:29 -07:00
Tim Donohue
292ef8a639 Fix license headers in files which were missing them 2013-06-26 09:16:20 -05:00
Tim Donohue
e0fe7ebdac Cleanup POMs to work with GitHub and also merge in old "dspace-pom" functionality into dspace-parent POM 2013-06-26 09:14:47 -05:00
Tim Donohue
553b242cbd DS-1587 - Commit .gitignore and .gitattributes. Fix line endings in several POMs 2013-06-25 16:43:44 -05:00
Ivan Masár
f377bac528 DS-1581 Prevent double-up of restriction message 2013-06-20 09:31:04 +02:00
helix84
5816e75571 Merge pull request #107 from doctorlard/buildfix2_1_8_x
Keep empty directories so that Maven builds without errors.
2012-12-08 15:03:18 -08:00
Jonathan Harker
200757a8c1 Keep empty directories so that Maven builds without errors. 2012-10-20 03:25:12 +13:00
Tim Donohue
d23cb5969b Updating PDF manual in 1.8.x branch. This both updates the PDF manual for folks forking via this branch as well as the one linked off www.dspace.org (as the main website now points at the PDF manuals stored in corresponding GitHub branch). 2012-06-12 14:01:44 -05:00
Tim Donohue
3fdcb3bb3e [maven-release-plugin] prepare for next development iteration
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6956 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2012-02-24 16:27:02 +00:00
Tim Donohue
c7dcf15487 [maven-release-plugin] prepare release dspace-1.8.2
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6954 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2012-02-24 16:26:46 +00:00
Tim Donohue
cfacc241db Committing a slightly updated version of DSpace PDF Manual for 1.8.2
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6952 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2012-02-24 15:51:11 +00:00
Tim Donohue
3182d5b2cf Fix for DS-1122: When adding a Bitstream to a Bundle, the 'bitstream_order' is always set to the 'sequence_id' (applied to both 1.8.x branch and Trunk). Also fixes issues with AIPs being able to restore bitstream ordering.
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6948 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2012-02-20 22:00:19 +00:00
Kevin Van de Velde
e7369eff13 [DS-1129] Edit Harvesting Collection Content Source tab broken
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6945 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2012-02-18 10:50:14 +00:00
Kevin Van de Velde
2ec032bb0e [DS-918] Concurrent task claiming and editing of metadata possible for same item in submission workflow
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6944 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2012-02-18 10:26:42 +00:00
Kevin Van de Velde
a2381e00f7 [DS-1048] Superfluous warning in dspace.log
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6942 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2012-02-18 10:14:43 +00:00
Kevin Van de Velde
a42f5ede3f [DS-910] Encoding of discovery facet urls
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6941 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2012-02-18 09:38:15 +00:00
Tim Donohue
b25a877d14 Fix for DS-1120: AIP Backup & Restore : SITE AIP has a different checksum everytime when orphaned Collection/Community groups exist (applied to both 1.8.x branch and Trunk)
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6940 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2012-02-15 19:04:16 +00:00
Tim Donohue
4ccab20836 Backporting fix for DS-1108 to 1.8.x branch: AIP Backup & Restore doesn't restore a Bitstream's "Sequence ID"
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6938 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2012-02-15 17:54:27 +00:00
Tim Donohue
c1b4e3f04c Backporting fix for DS-1107 to 1.8.x branch: System-wide Curation Task UI is missing a "Task" label
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6937 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2012-02-15 17:49:48 +00:00
Scott Phillips
d792352696 DS-1124, increase the default upload maximum to 2GB
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6935 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2012-02-13 22:03:00 +00:00
Scott Phillips
c979086f51 DS-1012: updated the configuration parameters to use the modules syntax instead of the old style all in one.
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6914 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2011-12-20 17:30:02 +00:00
Robin Taylor
ac3fa09efa [maven-release-plugin] prepare for next development iteration
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6912 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2011-12-15 10:24:03 +00:00
Robin Taylor
20943b7192 [maven-release-plugin] prepare release dspace-1.8.1
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6910 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2011-12-15 10:23:26 +00:00
Robin Taylor
8eb972dd3e Correct SCM element in dspace-1.8.x/pom.xml
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6909 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2011-12-15 10:14:04 +00:00
Robin Taylor
44047a38e3 [maven-release-plugin] rollback the release of dspace-1.8.1
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6908 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2011-12-15 10:10:02 +00:00
Robin Taylor
2836e3c9a5 [maven-release-plugin] prepare release dspace-1.8.1
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6907 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2011-12-15 10:02:52 +00:00
Robin Taylor
3cce8ae734 [maven-release-plugin] rollback the release of dspace-1.8.1
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6906 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2011-12-15 09:51:02 +00:00
Robin Taylor
86496eb53c [maven-release-plugin] prepare release dspace-1.8.1
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6905 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2011-12-15 09:38:59 +00:00
Robin Taylor
5255f9f13d Add licence to StaticPage
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6904 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2011-12-15 09:20:03 +00:00
Peter Dietz
952cc523e7 DS-1076 Add a simple StaticPage.java and map requests to page/* to it. Overrides happen in XSL. Have a demo at page/about.
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6902 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2011-12-14 23:26:10 +00:00
Scott Phillips
97e769977d DS-1094: Fixed an NPE error while mapping errors, fixed a typo in unknown, and the authors column pull from creator or contributor.
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6899 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2011-12-12 19:42:49 +00:00
Peter Dietz
abd0262a9e DS-1090 Fix fetchURL method for CC License, so that it does not fail due to recent CC changes.
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6897 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2011-12-08 18:26:40 +00:00
Kevin Van de Velde
43f2c10746 [DS-899] Last modified timestamp doesn't trigger on bitstream delete bugfix
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6888 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2011-12-07 16:23:40 +00:00
Kevin Van de Velde
67b82c063f [DS-1064] Authentication error bugfix with external login in JSPUI
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6873 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2011-12-04 10:59:17 +00:00
Tim Donohue
ec3593b5c7 Fix for DS-1077: XMLUI & CLI always show a NullPointerException after running a Site-wide Curation Task. This patch ensures that the Curator is not too quick to call complete() on its Context object when running a Site-wide task. It also ensures the Curator doesn't continually create a new Context each time 'curationContext()' is called -- instead a newly created context is cached so that it can be used for the remainder of the task processing. This fix has been applied to trunk and 1.8.x branch.
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6871 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2011-12-02 17:53:03 +00:00
Scott Phillips
53079bceab DS-1055: Limit display of harvested bitstreams when using harvesting by reference. (Committed to branch and trunk)
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6865 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2011-11-28 20:17:43 +00:00
Scott Phillips
e369276e9f DS-1052: Items with null date.accessioned are perminantly sorted to the top of all date based searches. (committed to both trunk and branch)
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6864 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2011-11-28 20:06:09 +00:00
Scott Phillips
2bb7d1715d DS-1012: Lazy Shibboleth authentication.
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6861 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2011-11-28 20:03:02 +00:00
Scott Phillips
96b3992377 DS-1068: Removing a metadata field from an item does not update the browse sorting indexes. (committed to both trunk and branch)
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6860 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2011-11-28 20:01:44 +00:00
Scott Phillips
99c07e1400 DS-1062: Emails report new items twice, sometimes. (this change was committed to branch and trunk)
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6857 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2011-11-28 19:58:26 +00:00
Scott Phillips
69cdf807c6 DS-1065: Login CHooser will place plank div prior to login form (committed to both trunk and branch)
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6856 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2011-11-28 19:57:03 +00:00
Robin Taylor
641cf1030b [DS-1075] - Fix separator replacement in URIs
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6852 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2011-11-28 11:20:31 +00:00
Robin Taylor
967008c637 [DS-1074] - Fix DB connection leak in DAVServlet
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6850 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2011-11-28 10:24:29 +00:00
Andrea Schweer
de2a2c2f3a [DS-1070] DSpaceObjectManager unnecessarily keeps references to DSpace objects
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6846 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2011-11-21 04:44:31 +00:00
Robin Taylor
acd00a24f3 Updated 1_8_x branch to correct version and scm elements.
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6838 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2011-11-05 10:03:13 +00:00
Robin Taylor
c2292282f7 Creating a branch for 1.8.x bug-fix releases.
git-svn-id: http://scm.dspace.org/svn/repo/dspace/branches/dspace-1_8_x@6837 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2011-11-04 14:35:31 +00:00
186 changed files with 23332 additions and 22225 deletions

14
.gitattributes vendored Normal file
View File

@@ -0,0 +1,14 @@
# Auto detect text files and perform LF normalization
* text=auto
# Standard to msysgit
*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain

23
.gitignore vendored Normal file
View File

@@ -0,0 +1,23 @@
## Ignore the MVN compiled output directories from version tracking
target/
## Ignore project files created by Eclipse
.settings/
.project
.classpath
## Ignore project files created by IntelliJ IDEA
*.iml
*.ipr
*.iws
.idea/
## Ignore project files created by NetBeans
nbproject/private/
build/
nbbuild/
dist/
nbdist/
nbactions.xml
nb-configuration.xml
META-INF/

5
LICENSE_HEADER Normal file
View File

@@ -0,0 +1,5 @@
The contents of this file are subject to the license and copyright
detailed in the LICENSE and NOTICE files at the root of the source
tree and available online at
http://www.dspace.org/license/

View File

@@ -13,20 +13,14 @@
<parent>
<groupId>org.dspace</groupId>
<artifactId>dspace-parent</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<!--
The Subversion repository location is used by Continuum to update against
when changes have occurred, this spawns a new build cycle and releases snapshots
into the snapshot repository below.
-->
<scm>
<connection>scm:svn:http://scm.dspace.org/svn/repo/dspace/trunk/dspace</connection>
<developerConnection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace</url>
</scm>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/..</root.basedir>
</properties>
<!--
Runtime and Compile Time dependencies for DSpace.
@@ -256,6 +250,11 @@
<artifactId>rome-modules</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>com.coverity.security</groupId>
<artifactId>coverity-escapers</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>
</project>

View File

@@ -836,6 +836,7 @@ public class BrowseDAOOracle implements BrowseDAO
{
queryBuf.append(" DESC ");
}
queryBuf.append(" NULLS LAST ");
}
}

View File

@@ -844,6 +844,7 @@ public class BrowseDAOPostgres implements BrowseDAO
{
queryBuf.append(" DESC ");
}
queryBuf.append(" NULLS LAST ");
}
}

View File

@@ -564,6 +564,9 @@ public class IndexBrowse
{
String nValue = OrderFormat.makeSortString(value.value, value.language, so.getType());
sortMap.put(key, nValue);
} else {
// Add an empty entry to clear out any old values in the sort columns.
sortMap.put(key, null);
}
}

View File

@@ -449,11 +449,19 @@ public class Bundle extends DSpaceObject
// FIXME: multiple inclusion is affected by this...
AuthorizeManager.inheritPolicies(ourContext, this, b);
//Determine the current highest bitstream order in our bundle2bitstream table
//This will always append a newly added bitstream as the last one
int bitstreamOrder = 0; //bitstream order starts at '0' index
TableRow tableRow = DatabaseManager.querySingle(ourContext, "SELECT MAX(bitstream_order) as max_value FROM bundle2bitstream WHERE bundle_id=?", getID());
if(tableRow != null){
bitstreamOrder = tableRow.getIntColumn("max_value") + 1;
}
// Add the mapping row to the database
TableRow mappingRow = DatabaseManager.row("bundle2bitstream");
mappingRow.setColumn("bundle_id", getID());
mappingRow.setColumn("bitstream_id", b.getID());
mappingRow.setColumn("bitstream_order", b.getSequenceID());
mappingRow.setColumn("bitstream_order", bitstreamOrder);
DatabaseManager.insert(ourContext, mappingRow);
}
@@ -491,6 +499,14 @@ public class Bundle extends DSpaceObject
// Place the bitstream in the list of bitstreams in this bundle
bitstreams.add(bitstreamMap.get(bitstreamId));
}
//The order of the bitstreams has changed, ensure that we update the last modified of our item
Item owningItem = (Item) getParentObject();
if(owningItem != null)
{
owningItem.updateLastModified();
owningItem.update();
}
}
@@ -532,6 +548,15 @@ public class Bundle extends DSpaceObject
ourContext.addEvent(new Event(Event.REMOVE, Constants.BUNDLE, getID(), Constants.BITSTREAM, b.getID(), String.valueOf(b.getSequenceID())));
//Ensure that the last modified from the item is triggered !
Item owningItem = (Item) getParentObject();
if(owningItem != null)
{
owningItem.updateLastModified();
owningItem.update();
}
// In the event that the bitstream to remove is actually
// the primary bitstream, be sure to unset the primary
// bitstream.

View File

@@ -123,10 +123,29 @@ public class InstallItem
handle = HandleManager.createHandle(c, item, suppliedHandle);
}
//NOTE: this method specifically skips over "populateMetadata()"
// As this is a "restore" all the metadata should have already been restored
// Even though we are restoring an item it may not have a have the proper dates. So lets
// double check that it has a date accessioned and date issued, and if either of those dates
// are not set then set them to today.
DCDate now = DCDate.getCurrent();
//@TODO: Do we actually want a "Restored on ..." provenance message? Or perhaps kick off an event?
// If the item dosn't have a date.accessioned create one.
DCValue[] dateAccessioned = item.getDC("date", "accessioned", Item.ANY);
if (dateAccessioned.length == 0)
{
item.addDC("date", "accessioned", null, now.toString());
}
// create issue date if not present
DCValue[] currentDateIssued = item.getDC("date", "issued", Item.ANY);
if (currentDateIssued.length == 0)
{
DCDate issued = new DCDate(now.getYear(),now.getMonth(),now.getDay(),-1,-1,-1);
item.addDC("date", "issued", null, issued.toString());
}
// Record that the item was restored
String provDescription = "Restored into DSpace on "+ now + " (GMT).";
item.addDC("description", "provenance", "en", provDescription);
return finishItem(c, item, is, null);
}
@@ -153,7 +172,7 @@ public class InstallItem
}
}
// fill in metadata needed by new Item.
private static void populateMetadata(Context c, Item item, DCDate embargoLiftDate)
throws SQLException, IOException, AuthorizeException
{

View File

@@ -306,6 +306,15 @@ public class Item extends DSpaceObject
return myDate;
}
/**
* Method that updates the last modified date of the item
* The modified boolean will be set to true and the actual date update will occur on item.update().
*/
void updateLastModified()
{
modified = true;
}
/**
* Set the "is_archived" flag. This is public and only
* <code>WorkflowItem.archive()</code> should set this.

View File

@@ -792,6 +792,11 @@ public abstract class AbstractMETSIngester extends AbstractPackageIngester
Bitstream bitstream = bundle.createBitstream(fileStream);
bitstream.setName(path);
// Set bitstream sequence id, if known
String seqID = mfile.getAttributeValue("SEQ");
if(seqID!=null && !seqID.isEmpty())
bitstream.setSequenceID(Integer.parseInt(seqID));
// crosswalk this bitstream's administrative metadata located in
// METS manifest (or referenced externally)
manifest.crosswalkBitstream(context, params, bitstream, mfileID,

View File

@@ -834,14 +834,16 @@ public class PackageUtils
if(dso==null)
{
// No such object. Change the name to something harmless.
// No such object. Change the name to something harmless, but predictable.
// NOTE: this name *must* be predictable. If we generate the same AIP
// twice in a row, we must end up with the same group name each time.
String newName;
if (orphanGroups.containsKey(groupName))
newName = orphanGroups.get(groupName);
else
{
newName= "GROUP_" + Utils.generateHexKey() + "_"
+ objType + "_" + groupType;
newName= "ORPHANED_" + objType + "_GROUP_"
+ objID + "_" + groupType;
orphanGroups.put(groupName, newName);
// A given group should only be translated once, since the
// new name contains unique random elements which would be

View File

@@ -26,7 +26,7 @@ import java.util.Calendar;
import java.util.GregorianCalendar;
import java.text.SimpleDateFormat;
import java.text.ParseException;
import com.coverity.security.Escape;
import org.apache.log4j.Logger;
/**
@@ -280,21 +280,8 @@ public final class Utils
*/
public static String addEntities(String value)
{
if (value==null || value.length() == 0)
{
return value;
}
value = value.replaceAll("&", "&amp;");
value = value.replaceAll("\"", "&quot;");
// actually, &apos; is an XML entity, not in HTML.
// that's why it's commented out.
// value = value.replaceAll("'", "&apos;");
value = value.replaceAll("<", "&lt;");
value = value.replaceAll(">", "&gt;");
return value;
return Escape.html(value);
}
/**

View File

@@ -24,7 +24,6 @@ import org.dspace.content.Site;
import org.dspace.core.Constants;
import org.dspace.core.Context;
import org.dspace.core.PluginManager;
import org.dspace.eperson.EPerson;
import org.dspace.handle.HandleManager;
/**
@@ -365,19 +364,27 @@ public class Curator
}
/**
* Returns the context object used in the current curation performance.
* Returns the context object used in the current curation thread.
* This is primarily a utility method to allow tasks access to the context when necessary.
* <P>
* If the context is null or not set, then this just returns
* a brand new Context object representing an Anonymous User.
*
* @return curation Context object (or anonymous Context if curation is null)
* @return curation thread's Context object (or a new, anonymous Context if no curation Context exists)
*/
public static Context curationContext() throws SQLException
{
// Return curation context or new context if undefined
// Return curation context or new context if undefined/invalid
Context curCtx = curationCtx.get();
return (curCtx != null) ? curCtx : new Context();
if(curCtx==null || !curCtx.isValid())
{
//Create a new context (represents an Anonymous User)
curCtx = new Context();
//Save it to current execution thread
curationCtx.set(curCtx);
}
return curCtx;
}
/**
@@ -403,10 +410,12 @@ public class Curator
Context ctx = null;
try
{
//get access to the curation thread's current context
ctx = curationContext();
// Site-wide Tasks really should have an EPerson performer associated with them,
// otherwise they are run as an "anonymous" user with limited access rights.
if(ctx.getCurrentUser()==null)
if(ctx.getCurrentUser()==null && !ctx.ignoreAuthorization())
{
log.warn("You are running one or more Site-Wide curation tasks in ANONYMOUS USER mode," +
" as there is no EPerson 'performer' associated with this task. To associate an EPerson 'performer' " +
@@ -428,16 +437,9 @@ public class Curator
return false;
}
}
//complete & close our created Context
ctx.complete();
}
catch (SQLException sqlE)
{
//abort Context & all changes
if(ctx!=null)
ctx.abort();
throw new IOException(sqlE);
}
@@ -534,7 +536,7 @@ public class Curator
}
catch (SQLException sqlE)
{
throw new IOException(sqlE.getMessage());
throw new IOException(sqlE.getMessage(), sqlE);
}
}
}

View File

@@ -12,10 +12,12 @@ import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.ResourceBundle;
import java.util.TimeZone;
import javax.mail.MessagingException;
@@ -343,15 +345,23 @@ public class Subscribe
ResourceBundle labels = ResourceBundle.getBundle("Messages", supportedLocale);
// Get the start and end dates for yesterday
Date thisTimeYesterday = new Date(System.currentTimeMillis()
- (24 * 60 * 60 * 1000));
DCDate dcDateYesterday = new DCDate(thisTimeYesterday);
// The date should reflect the timezone as well. Otherwise we stand to lose that information
// in truncation and roll to an earlier date than intended.
Calendar cal = Calendar.getInstance(TimeZone.getDefault());
cal.setTime(new Date());
// this time yesterday in ISO 8601, stripping the time
String isoDateYesterday = dcDateYesterday.toString().substring(0, 10);
// What we actually want to pass to Harvest is "Midnight of yesterday in my current timezone"
// Truncation will actually pass in "Midnight of yesterday in UTC", which will be,
// at least in CDT, "7pm, the day before yesterday, in my current timezone".
cal.add(Calendar.HOUR, -24);
Date thisTimeYesterday = cal.getTime();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
Date midnightYesterday = cal.getTime();
String startDate = isoDateYesterday;
// FIXME: text of email should be more configurable from an
// i18n viewpoint
@@ -366,7 +376,7 @@ public class Subscribe
boolean includeAll = ConfigurationManager.getBooleanProperty("harvest.includerestricted.subscription", true);
// we harvest all the changed item from yesterday until now
List<HarvestedItemInfo> itemInfos = Harvest.harvest(context, c, startDate, null, 0, // Limit
List<HarvestedItemInfo> itemInfos = Harvest.harvest(context, c, new DCDate(midnightYesterday).toString(), null, 0, // Limit
// and
// offset
// zero,

View File

@@ -7,16 +7,11 @@
*/
package org.dspace.license;
import java.io.InputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.StringWriter;
import java.io.*;
import java.net.URL;
import java.net.URLConnection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import javax.xml.transform.Templates;
import javax.xml.transform.TransformerConfigurationException;
@@ -25,6 +20,7 @@ import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.apache.log4j.Logger;
import org.dspace.authorize.AuthorizeException;
import org.dspace.content.Bitstream;
import org.dspace.content.BitstreamFormat;
@@ -34,10 +30,12 @@ import org.dspace.content.Item;
import org.dspace.core.ConfigurationManager;
import org.dspace.core.Context;
import org.dspace.core.Utils;
import org.dspace.license.CCLookup;
public class CreativeCommons
{
/** log4j category */
private static Logger log = Logger.getLogger(CreativeCommons.class);
/**
* The Bundle Name
*/
@@ -429,30 +427,23 @@ public class CreativeCommons
{
try
{
String line = "";
URL url = new URL(url_string);
URLConnection connection = url.openConnection();
byte[] bytes = new byte[connection.getContentLength()];
InputStream inputStream = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder sb = new StringBuilder();
// loop and read the data until it's done
int offset = 0;
while (true)
while ((line = reader.readLine()) != null)
{
int len = connection.getInputStream().read(bytes, offset,
bytes.length - offset);
if (len == -1)
{
break;
sb.append(line);
}
offset += len;
}
return bytes;
return sb.toString().getBytes();
}
catch (Exception exc)
{
log.error(exc.getMessage());
return null;
}
}

View File

@@ -4,7 +4,7 @@
<packaging>jar</packaging>
<groupId>org.dspace</groupId>
<artifactId>dspace-discovery-provider</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<name>DSpace Discovery :: Discovery Provider Library</name>
<description>
@@ -17,10 +17,15 @@
<parent>
<groupId>org.dspace</groupId>
<artifactId>dspace-discovery</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/../..</root.basedir>
</properties>
<dependencies>
<dependency>
@@ -98,16 +103,4 @@
</plugins>
</build>
<!--
The Subversion repository location is used by Continuum to update
against when changes have occured, this spawns a new build cycle
and releases snapshots into the snapshot repository below.
-->
<scm>
<connection>scm:svn:http://scm.dspace.org/svn/repo/dspace/trunk/dspace-discovery/dspace-discovery-provider</connection>
<developerConnection>
scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-discovery/dspace-discovery-provider
</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace-discovery/dspace-discovery-provider</url>
</scm>
</project>

View File

@@ -11,6 +11,7 @@ import org.dspace.content.DSpaceObject;
import org.dspace.core.Context;
import org.dspace.discovery.configuration.DiscoverySortConfiguration;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.List;
@@ -27,9 +28,9 @@ public interface SearchService {
DiscoverResult search(Context context, DSpaceObject dso, DiscoverQuery query) throws SearchServiceException;
String searchJSON(DiscoverQuery query, String jsonIdentifier) throws SearchServiceException;
InputStream searchJSON(DiscoverQuery query, String jsonIdentifier) throws SearchServiceException;
String searchJSON(DiscoverQuery query, DSpaceObject dso, String jsonIdentifier) throws SearchServiceException;
InputStream searchJSON(DiscoverQuery query, DSpaceObject dso, String jsonIdentifier) throws SearchServiceException;
List<DSpaceObject> search(Context context, String query, String orderfield, boolean ascending, int offset, int max, String... filterquery);

View File

@@ -4,16 +4,21 @@
<packaging>jar</packaging>
<groupId>org.dspace</groupId>
<artifactId>dspace-discovery-solr</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<name>DSpace Discovery :: Discovery Solr Implementation</name>
<parent>
<groupId>org.dspace</groupId>
<artifactId>dspace-discovery</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/../..</root.basedir>
</properties>
<dependencies>
<dependency>
<groupId>org.dspace</groupId>
@@ -46,16 +51,4 @@
</dependencies>
<!--
The Subversion repository location is used by Continuum to update
against when changes have occured, this spawns a new build cycle
and releases snapshots into the snapshot repository below.
-->
<scm>
<connection>scm:svn:http://scm.dspace.org/svn/repo/dspace/trunk/dspace-discovery/dspace-discovery-solr</connection>
<developerConnection>
scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-discovery/dspace-discovery-solr
</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace-discovery/dspace-discovery-solr</url>
</scm>
</project>

View File

@@ -17,6 +17,7 @@ import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer;
import org.apache.solr.client.solrj.response.FacetField;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.client.solrj.util.ClientUtils;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
@@ -1145,7 +1146,7 @@ public class SolrServiceImpl implements SearchService, IndexingService {
}
@Override
public String searchJSON(DiscoverQuery query, DSpaceObject dso, String jsonIdentifier) throws SearchServiceException {
public InputStream searchJSON(DiscoverQuery query, DSpaceObject dso, String jsonIdentifier) throws SearchServiceException {
if(dso != null){
if (dso instanceof Community) {
query.addFilterQueries("location:m" + dso.getID());
@@ -1159,7 +1160,7 @@ public class SolrServiceImpl implements SearchService, IndexingService {
}
public String searchJSON(DiscoverQuery query, String jsonIdentifier) throws SearchServiceException {
public InputStream searchJSON(DiscoverQuery query, String jsonIdentifier) throws SearchServiceException {
Map<String, String> params = new HashMap<String, String>();
String solrRequestUrl = solr.getBaseURL() + "/select";
@@ -1229,7 +1230,7 @@ public class SolrServiceImpl implements SearchService, IndexingService {
try {
GetMethod get = new GetMethod(solrRequestUrl);
new HttpClient().executeMethod(get);
return get.getResponseBodyAsString();
return get.getResponseBodyAsStream();
} catch (Exception e) {
log.error("Error while getting json solr result for discovery search recommendation", e);

View File

@@ -5,16 +5,21 @@
<packaging>jar</packaging>
<groupId>org.dspace</groupId>
<artifactId>dspace-discovery-xmlui-api</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<name>DSpace Discovery :: Discovery XMLUI API</name>
<parent>
<groupId>org.dspace</groupId>
<artifactId>dspace-discovery</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/../..</root.basedir>
</properties>
<dependencies>
<dependency>
@@ -116,17 +121,4 @@
</plugins>
</build>
<!--
The Subversion repository location is used by Continuum to update
against when changes have occured, this spawns a new build cycle
and releases snapshots into the snapshot repository below.
-->
<scm>
<connection>scm:svn:http://scm.dspace.org/svn/repo/dspace/trunk/dspace-discovery/dspace-discovery-xmlui-api</connection>
<developerConnection>
scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-discovery/dspace-discovery-xmlui-api
</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace-discovery/dspace-discovery-xmlui-api</url>
</scm>
</project>

View File

@@ -40,6 +40,7 @@ import org.xml.sax.SAXException;
import java.io.IOException;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.sql.SQLException;
import java.util.*;
import java.util.List;
@@ -414,7 +415,7 @@ public class SearchFacetFilter extends AbstractDSpaceTransformer implements Cach
//Add already existing filter queries
url = addFilterQueriesToUrl(url);
//Last add the current filter query
url += "&fq=" + filterQuery;
url += "&fq=" + URLEncoder.encode(filterQuery, "UTF-8");
cell.addXref(url, displayedValue + " (" + value.getCount() + ")"
);
}

View File

@@ -35,6 +35,7 @@ import org.xml.sax.SAXException;
import java.io.IOException;
import java.io.Serializable;
import java.net.URLEncoder;
import java.sql.SQLException;
import java.util.*;
import java.util.regex.Matcher;
@@ -243,8 +244,7 @@ public class SidebarFacetsTransformer extends AbstractDSpaceTransformer implemen
"/discover?" +
paramsQuery +
"fq=" +
//TODO: encode URLEncoder ?
filterQuery,
URLEncoder.encode(filterQuery, "UTF-8"),
displayedValue + " (" + value.getCount() + ")"
);
}

View File

@@ -28,6 +28,7 @@ import org.xml.sax.SAXException;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.Map;
@@ -41,7 +42,7 @@ import java.util.Map;
public class JSONDiscoverySearcher extends AbstractReader implements Recyclable {
private static Logger log = Logger.getLogger(JSONDiscoverySearcher.class);
private String JSONString;
private InputStream JSONStream;
/** The Cocoon response */
@@ -117,7 +118,7 @@ public class JSONDiscoverySearcher extends AbstractReader implements Recyclable
try {
Context context = ContextUtil.obtainContext(objectModel);
JSONString = getSearchService().searchJSON(queryArgs, getScope(context, objectModel), jsonWrf);
JSONStream = getSearchService().searchJSON(queryArgs, getScope(context, objectModel), jsonWrf);
} catch (Exception e) {
log.error("Error while retrieving JSON string for Discovery auto complete", e);
}
@@ -125,14 +126,12 @@ public class JSONDiscoverySearcher extends AbstractReader implements Recyclable
}
public void generate() throws IOException, SAXException, ProcessingException {
if(JSONString != null){
ByteArrayInputStream inputStream = new ByteArrayInputStream(JSONString.getBytes("UTF-8"));
if(JSONStream != null){
byte[] buffer = new byte[8192];
response.setHeader("Content-Length", String.valueOf(JSONString.length()));
response.setHeader("Content-Length", String.valueOf(JSONStream.available()));
int length;
while ((length = inputStream.read(buffer)) > -1)
while ((length = JSONStream.read(buffer)) > -1)
{
out.write(buffer, 0, length);
}

View File

@@ -191,16 +191,7 @@ and searching the repository.
<map:serialize type="xml"/>
</map:match>
</map:match>
<map:match type="HandleAuthorizedMatcher" pattern="!READ">
<map:transform type="RestrictedItem">
<map:parameter name="header" value="xmlui.ArtifactBrowser.RestrictedItem.auth_header"/>
<map:parameter name="message" value="xmlui.ArtifactBrowser.RestrictedItem.auth_message"/>
</map:transform>
<map:serialize type="xml"/>
</map:match>
</map:match>
</map:match> <!-- End match handle/*/** -->

View File

@@ -5,16 +5,21 @@
<packaging>war</packaging>
<groupId>org.dspace</groupId>
<artifactId>dspace-discovery-xmlui-webapp</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<name>DSpace Discovery :: Discovery XMLUI Webapp</name>
<parent>
<groupId>org.dspace</groupId>
<artifactId>dspace-discovery</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/../..</root.basedir>
</properties>
<dependencies>
<dependency>
@@ -31,7 +36,7 @@
<dependency>
<groupId>org.dspace</groupId>
<artifactId>dspace-discovery-xmlui-api</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
</dependency>
<!-- external -->
@@ -136,17 +141,4 @@
</plugins>
</build>
<!--
The Subversion repository location is used by Continuum to update
against when changes have occured, this spawns a new build cycle
and releases snapshots into the snapshot repository below.
-->
<scm>
<connection>scm:svn:http://scm.dspace.org/svn/repo/dspace/trunk/dspace-discovery/dspace-discovery-xmlui-webapp</connection>
<developerConnection>
scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-discovery/dspace-discovery-xmlui-webapp
</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace-discovery/dspace-discovery-xmlui-webapp</url>
</scm>
</project>

View File

@@ -54,7 +54,7 @@ AjaxSolr.AutocompleteWidget = AjaxSolr.AbstractFacetWidget.extend({
}
var fqs = $("input[name='fq']");
for(var j = 0; j < fqs.length; j ++){
params.push('fq=' + $(fqs[j]).val());
params.push('fq=' + encodeURIComponent($(fqs[j]).val()));
}
//Attempt to add our scope !
var scope = $("input[name='discovery-json-scope']").val();

View File

@@ -5,16 +5,21 @@
<packaging>pom</packaging>
<groupId>org.dspace</groupId>
<artifactId>dspace-discovery</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<name>DSpace Discovery :: Modules</name>
<parent>
<artifactId>dspace-parent</artifactId>
<groupId>org.dspace</groupId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/..</root.basedir>
</properties>
<modules>
<module>dspace-discovery-provider</module>
<module>dspace-discovery-solr</module>
@@ -48,19 +53,6 @@
</plugins>
</build>
<!--
The Subversion repository location is used by Continuum to update
against when changes have occured, this spawns a new build cycle
and releases snapshots into the snapshot repository below.
-->
<scm>
<connection>scm:svn:http://scm.dspace.org/svn/repo/dspace/trunk/dspace-discovery</connection>
<developerConnection>
scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-discovery
</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace-discovery</url>
</scm>
<issueManagement>
<system>JIRA</system>
<url>http://jira.dspace.org/jira/browse/DISCOVERY</url>

View File

@@ -14,20 +14,14 @@
<parent>
<groupId>org.dspace</groupId>
<artifactId>dspace-jspui</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<!--
The Subversion repository location is used by Continuum to update against
when changes have occured, this spawns a new build cycle and releases snapshots
into the snapshot repository below.
-->
<scm>
<connection>scm:svn:http://scm.dspace.org/svn/repo/dspace/trunk/dspace-jspui/dspace-jspui-api</connection>
<developerConnection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-jspui/dspace-jspui-api</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace-jspui/dspace-jspui-api</url>
</scm>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/../..</root.basedir>
</properties>
<dependencies>
<dependency>

View File

@@ -163,8 +163,16 @@ public class Authenticate
{
loggedIn(context, request, context.getCurrentUser());
log.info(LogManager.getHeader(context, "login", "type=implicit"));
if(context.getCurrentUser() != null){
//We have a new user
Authenticate.resumeInterruptedRequest(request, response);
return false;
}else{
//Couldn't log & authentication finished
return true;
}
}
else
{
// Since we may be doing a redirect, make sure the redirect is not

View File

@@ -14,20 +14,14 @@
<parent>
<groupId>org.dspace</groupId>
<artifactId>dspace-jspui</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<!--
The Subversion repository location is used by Continuum to update against
when changes have occured, this spawns a new build cycle and releases snapshots
into the snapshot repository below.
-->
<scm>
<connection>scm:svn:http://scm.dspace.org/svn/repo/dspace/trunk/dspace-jspui/dspace-jspui-webapp</connection>
<developerConnection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-jspui/dspace-jspui-webapp</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace-jspui/dspace-jspui-webapp</url>
</scm>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/../..</root.basedir>
</properties>
<build>
<plugins>

View File

@@ -27,6 +27,7 @@
<%@ taglib uri="http://www.dspace.org/dspace-tags.tld" prefix="dspace" %>
<%@ page import="org.dspace.eperson.EPerson" %>
<%@ page import="org.dspace.core.Utils" %>
<%
EPerson[] epeople =
@@ -115,10 +116,10 @@
<%= (e.getEmail() == null ? "" : e.getEmail()) %>
</td>
<td headers="t3" class="<%= row %>RowOddCol">
<%= (e.getLastName() == null ? "" : e.getLastName()) %>
<%= (e.getLastName() == null ? "" : Utils.addEntities(e.getLastName())) %>
</td>
<td headers="t4" class="<%= row %>RowEvenCol">
<%= (e.getFirstName() == null ? "" : e.getFirstName()) %>
<%= (e.getFirstName() == null ? "" : Utils.addEntities(e.getFirstName())) %>
</td>
<td headers="t5" class="<%= row %>RowOddCol" align="center">
<%= e.canLogIn() ? "yes" : "no" %>
@@ -130,7 +131,7 @@
<%= e.getSelfRegistered() ? "yes" : "no" %>
</td>
<td headers="t8" class="<%= row %>RowEvenCol">
<%= (e.getMetadata("phone") == null ? "" : e.getMetadata("phone")) %>
<%= (e.getMetadata("phone") == null ? "" : Utils.addEntities(e.getMetadata("phone"))) %>
</td>
<td headers="t9" class="<%= row %>RowOddCol">
<input type="hidden" name="eperson_id" value="<%= e.getID() %>"/>

View File

@@ -20,6 +20,7 @@
prefix="fmt" %>
<%@ page import="org.dspace.eperson.EPerson" %>
<%@ page import="org.dspace.core.Utils" %>
<%@ taglib uri="http://www.dspace.org/dspace-tags.tld" prefix="dspace" %>
@@ -32,9 +33,9 @@
parenttitlekey="jsp.administer"
parentlink="/dspace-admin">
<%-- <h1>Delete e-person: <%= eperson.getFullName() %> (<%= eperson.getEmail() %>)</h1> --%>
<%-- <h1>Delete e-person: <%= Utils.addEntities(eperson.getFullName()) %> (<%= eperson.getEmail() %>)</h1> --%>
<h1><fmt:message key="jsp.dspace-admin.eperson-confirm-delete.heading">
<fmt:param><%= eperson.getFullName() %></fmt:param>
<fmt:param><%= Utils.addEntities(eperson.getFullName()) %></fmt:param>
<fmt:param><%= eperson.getEmail() %></fmt:param>
</fmt:message></h1>

View File

@@ -28,11 +28,12 @@
<%@ page import="org.dspace.eperson.EPerson" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.Iterator" %>
<%@ page import="org.dspace.core.Utils" %>
<%
EPerson eperson = (EPerson) request.getAttribute("eperson");
List tableList = (List) request.getAttribute("tableList");
String fullName = eperson.getFullName();
String fullName = Utils.addEntities(eperson.getFullName());
Iterator tableIt = tableList.iterator();
%>

View File

@@ -28,6 +28,7 @@
<%@ page import="org.dspace.eperson.EPerson" %>
<%@ page import="org.dspace.eperson.Group" %>
<%@ page import="org.dspace.content.WorkspaceItem" %>
<%@ page import="org.dspace.core.Utils" %>
<%
// get item and group out of the request
@@ -75,7 +76,7 @@
<br/><br/>
<strong><fmt:message key="jsp.dspace-admin.supervise-confirm-remove.authorheader"/></strong>:
<br/>
<a href="mailto:<%= submitter.getEmail() %>"><%= submitter.getFullName() %></a>
<a href="mailto:<%= submitter.getEmail() %>"><%= Utils.addEntities(submitter.getFullName()) %></a>
<br/><br/>
<strong><fmt:message key="jsp.dspace-admin.supervise-confirm-remove.supervisorgroupheader"/></strong>:
<br/>

View File

@@ -28,6 +28,7 @@
<%@ page import="org.dspace.eperson.EPerson" %>
<%@ page import="org.dspace.eperson.Group" %>
<%@ page import="org.dspace.eperson.Supervisor" %>
<%@ page import="org.dspace.core.Utils" %>
<%
// get objects from request
@@ -109,7 +110,7 @@
<%= workspaceItems[i].getID() %>
</td>
<td class="<%= row %>RowEvenCol">
<a href="mailto:<%= submitter.getEmail() %>"><%= submitter.getFullName() %></a>
<a href="mailto:<%= submitter.getEmail() %>"><%= Utils.addEntities(submitter.getFullName()) %></a>
</td>
<td class="<%= row %>RowOddCol">
<%

View File

@@ -25,6 +25,7 @@
<%@ page import="org.dspace.content.SupervisedItem" %>
<%@ page import="org.dspace.eperson.EPerson" %>
<%@ page import="org.dspace.eperson.Group" %>
<%@ page import="org.dspace.core.Utils" %>
<%
// get the object array out of the request
@@ -97,7 +98,7 @@
<%= supervisors[j].getName() %>
</td>
<td class="<%= row %>RowOddCol">
<a href="mailto:<%= submitter.getEmail() %>"><%= submitter.getFullName() %></a>
<a href="mailto:<%= submitter.getEmail() %>"><%= Utils.addEntities(submitter.getFullName()) %></a>
</td>
<td class="<%= row %>RowEvenCol">
<%

View File

@@ -25,7 +25,6 @@
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"
prefix="fmt" %>
<%@ taglib uri="http://www.dspace.org/dspace-tags.tld" prefix="dspace" %>
<%@ page import="javax.servlet.jsp.jstl.fmt.LocaleSupport" %>
@@ -78,7 +77,7 @@
<tr>
<td align="left">
<h1>
<fmt:message key="jsp.mydspace"/>: <%= user.getFullName() %>
<fmt:message key="jsp.mydspace"/>: <%= Utils.addEntities(user.getFullName()) %>
</h1>
</td>
<td align="right" class="standard">
@@ -136,7 +135,7 @@
</td>
<td headers="t2" class="<%= row %>RowEvenCol"><%= Utils.addEntities(title) %></td>
<td headers="t3" class="<%= row %>RowOddCol"><%= owned[i].getCollection().getMetadata("name") %></td>
<td headers="t4" class="<%= row %>RowEvenCol"><a href="mailto:<%= submitter.getEmail() %>"><%= submitter.getFullName() %></a></td>
<td headers="t4" class="<%= row %>RowEvenCol"><a href="mailto:<%= submitter.getEmail() %>"><%= Utils.addEntities(submitter.getFullName()) %></a></td>
<!-- <td headers="t5" class="<%= row %>RowOddCol"></td> -->
<td headers="t5" class="<%= row %>RowEvenCol">
<form action="<%= request.getContextPath() %>/mydspace" method="post">
@@ -200,7 +199,7 @@
</td>
<td headers="t7" class="<%= row %>RowEvenCol"><%= Utils.addEntities(title) %></td>
<td headers="t8" class="<%= row %>RowOddCol"><%= pooled[i].getCollection().getMetadata("name") %></td>
<td headers="t9" class="<%= row %>RowEvenCol"><a href="mailto:<%= submitter.getEmail() %>"><%= submitter.getFullName() %></a></td>
<td headers="t9" class="<%= row %>RowEvenCol"><a href="mailto:<%= submitter.getEmail() %>"><%= Utils.addEntities(submitter.getFullName()) %></a></td>
<td class="<%= row %>RowOddCol">
<form action="<%= request.getContextPath() %>/mydspace" method="post">
<input type="hidden" name="step" value="<%= MyDSpaceServlet.MAIN_PAGE %>" />
@@ -285,7 +284,7 @@
</form>
</td>
<td headers="t10" class="<%= row %>RowEvenCol">
<a href="mailto:<%= submitter.getEmail() %>"><%= submitter.getFullName() %></a>
<a href="mailto:<%= submitter.getEmail() %>"><%= Utils.addEntities(submitter.getFullName()) %></a>
</td>
<td headers="t11" class="<%= row %>RowOddCol"><%= Utils.addEntities(title) %></td>
<td headers="t12" class="<%= row %>RowEvenCol"><%= workspaceItems[i].getCollection().getMetadata("name") %></td>
@@ -332,7 +331,7 @@
</form>
</td>
<td class="<%= row %>RowEvenCol">
<a href="mailto:<%= submitter.getEmail() %>"><%= submitter.getFullName() %></a>
<a href="mailto:<%= submitter.getEmail() %>"><%= Utils.addEntities(submitter.getFullName()) %></a>
</td>
<td class="<%= row %>RowOddCol"><%= Utils.addEntities(title) %></td>
<td class="<%= row %>RowEvenCol"><%= supervisedItems[i].getCollection().getMetadata("name") %></td>

View File

@@ -29,6 +29,7 @@
<%@ page import="org.dspace.app.webui.servlet.RegisterServlet" %>
<%@ page import="org.dspace.eperson.EPerson" %>
<%@ page import="org.dspace.core.Utils" %>
<%
EPerson eperson = (EPerson) request.getAttribute("eperson");
@@ -43,9 +44,9 @@
<%-- <h1>Enter a New Password</h1> --%>
<h1><fmt:message key="jsp.register.new-password.title"/></h1>
<!-- <p>Hello <%= eperson.getFullName() %>,</p> -->
<!-- <p>Hello <%= Utils.addEntities(eperson.getFullName()) %>,</p> -->
<p><fmt:message key="jsp.register.new-password.hello">
<fmt:param><%= eperson.getFullName() %></fmt:param>
<fmt:param><%= Utils.addEntities(eperson.getFullName()) %></fmt:param>
</fmt:message></p>
<%

View File

@@ -25,6 +25,7 @@
<%@ page import="org.dspace.app.webui.servlet.RegisterServlet" %>
<%@ page import="org.dspace.eperson.EPerson" %>
<%@ page import="org.dspace.core.Utils" %>
<%
EPerson eperson = (EPerson) request.getAttribute("eperson");
@@ -35,9 +36,9 @@
<%-- <h1>Registration Complete</h1> --%>
<h1><fmt:message key="jsp.register.registered.title"/></h1>
<%-- <p>Thank you <%= eperson.getFirstName() %>,</p> --%>
<%-- <p>Thank you <%= Utils.addEntities(eperson.getFirstName()) %>,</p> --%>
<p><fmt:message key="jsp.register.registered.thank">
<fmt:param><%= eperson.getFirstName() %></fmt:param>
<fmt:param><%= Utils.addEntities(eperson.getFirstName()) %></fmt:param>
</fmt:message></p>
<%-- <p>You're now registered to use the DSpace system. You can subscribe to

View File

@@ -50,6 +50,7 @@
<%@ page import="org.dspace.content.authority.ChoiceAuthorityManager" %>
<%@ page import="org.dspace.content.authority.Choices" %>
<%@ page import="org.dspace.core.ConfigurationManager" %>
<%@ page import="org.dspace.core.Utils" %>
<%@ taglib uri="http://www.dspace.org/dspace-tags.tld" prefix="dspace" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
@@ -325,9 +326,9 @@
if (repeatable && !readonly && i < defaults.length)
{
name.setLength(0);
name.append(dpn.getLastName())
name.append(Utils.addEntities(dpn.getLastName()))
.append(' ')
.append(dpn.getFirstNames());
.append(Utils.addEntities(dpn.getFirstNames()));
// put a remove button next to filled in values
sb.append("<td><input type=\"submit\" name=\"submit_")
.append(fieldName)

View File

@@ -281,7 +281,7 @@ function clearEPeople()
{
EPerson e = epeople[i];
// Make sure no quotes in full name will mess up our Javascript
String fullname = e.getFullName().replace('\'', ' ');
String fullname = Utils.addEntities(e.getFullName().replace('\'', ' '));
%>
<tr>
<td headers="t1" class="<%= row %>RowOddCol">
@@ -291,10 +291,10 @@ function clearEPeople()
<td headers="t2" class="<%= row %>RowEvenCol"><%= e.getID() %></td>
<td headers="t3" class="<%= row %>RowOddCol"><%= e.getEmail() %></td>
<td headers="t4" class="<%= row %>RowEvenCol">
<%= (e.getLastName() == null ? "" : e.getLastName()) %>
<%= (e.getLastName() == null ? "" : Utils.addEntities(e.getLastName())) %>
</td>
<td headers="t5" class="<%= row %>RowOddCol">
<%= (e.getFirstName() == null ? "" : e.getFirstName()) %>
<%= (e.getFirstName() == null ? "" : Utils.addEntities(e.getFirstName())) %>
</td>
<td headers="t6" class="<%= row %>RowOddCol">
<%= (e.getLanguage() == null ? "" : e.getLanguage()) %>

View File

@@ -26,6 +26,7 @@
<%@ page import="org.dspace.content.WorkspaceItem" %>
<%@ page import="org.dspace.eperson.EPerson" %>
<%@ page import="javax.servlet.jsp.jstl.fmt.LocaleSupport" %>
<%@ page import="org.dspace.core.Utils" %>
<%
// get the workspace item from the request
@@ -73,7 +74,7 @@
}
%>
<p><strong><a href="mailto:<%= submitter.getEmail() %>"><%= submitter.getFullName() %></a></strong></p>
<p><strong><a href="mailto:<%= submitter.getEmail() %>"><%= Utils.addEntities(submitter.getFullName()) %></a></strong></p>
<p><fmt:message key="jsp.workspace.ws-main.submitmsg"/>
<%= workspaceItem.getCollection().getMetadata("name") %></p>

View File

@@ -14,20 +14,14 @@
<parent>
<groupId>org.dspace</groupId>
<artifactId>dspace-parent</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<!--
The Subversion repository location is used by Continuum to update against
when changes have occured, this spawns a new build cycle and releases snapshots
into the snapshot repository below.
-->
<scm>
<connection>scm:svn:http://scm.dspace.org/svn/repo/dspace/trunk/dspace-jspui</connection>
<developerConnection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-jspui</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace-jspui</url>
</scm>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/..</root.basedir>
</properties>
<modules>
<module>dspace-jspui-api</module>

View File

@@ -12,15 +12,14 @@
<parent>
<groupId>org.dspace</groupId>
<artifactId>dspace-lni</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<scm>
<connection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-lni/dspace-lni-client</connection>
<developerConnection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-lni/dspace-lni-client</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace-lni/dspace-lni-client</url>
</scm>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/../..</root.basedir>
</properties>
<profiles>
<profile>

View File

@@ -1,4 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
The contents of this file are subject to the license and copyright
detailed in the LICENSE and NOTICE files at the root of the source
tree and available online at
http://www.dspace.org/license/
-->
<wsdl:definitions targetNamespace="http://dspace.org/xmlns/lni" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://dspace.org/xmlns/lni" xmlns:intf="http://dspace.org/xmlns/lni" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns1="http://lang.java" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!--WSDL created by Apache Axis version: 1.3
Built on Oct 05, 2005 (05:23:37 EDT)-->

View File

@@ -10,15 +10,14 @@
<parent>
<groupId>org.dspace</groupId>
<artifactId>dspace-lni</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<scm>
<connection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-lni/dspace-lni-core</connection>
<developerConnection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-lni/dspace-lni-core</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace-lni/dspace-lni-core</url>
</scm>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/../..</root.basedir>
</properties>
<dependencies>
<dependency>

View File

@@ -89,7 +89,12 @@ abstract class DAVDSpaceObject extends DAVResource
int hs;
if (handleSeparator != '/')
{
if(handleSeparator != '$') {
handle = handle.replaceFirst("/", String.valueOf(handleSeparator));
} else {
// handle $ specially
handle = handle.replaceFirst("/", "\\$");
}
}
return "dso_" + encodeHandle(handle);
}

View File

@@ -289,10 +289,13 @@ public class DAVServlet extends HttpServlet
{
Context context = new Context();
try {
if (getAuthFromCookie(context, request))
{
putAuthCookie(context, request, response, false);
return context;
Context returnContext = context;
context = null;
return returnContext;
}
// get username/password from Basic auth header if avail:
@@ -320,6 +323,8 @@ public class DAVServlet extends HttpServlet
}
}
}
// Authenticate the user.
if (AuthenticationManager.authenticate(context, username, password,
null, request) == AuthenticationMethod.SUCCESS)
{
@@ -362,7 +367,14 @@ public class DAVServlet extends HttpServlet
log.debug("Adding Special Group id=" + String.valueOf(element));
}
putAuthCookie(context, request, response, true);
return context;
Context returnContext = context;
context = null;
return returnContext;
} finally {
if(context != null)
context.abort();
}
}
/**

View File

@@ -12,15 +12,14 @@
<parent>
<groupId>org.dspace</groupId>
<artifactId>dspace-lni</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<scm>
<connection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-lni/dspace-lni-webapp</connection>
<developerConnection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-lni/dspace-lni-webapp</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace-lni/dspace-lni-webapp</url>
</scm>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/../..</root.basedir>
</properties>
<build>
<plugins>

View File

@@ -1,4 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
The contents of this file are subject to the license and copyright
detailed in the LICENSE and NOTICE files at the root of the source
tree and available online at
http://www.dspace.org/license/
-->
<!--
Description of DSpace Lightweight Network Interface (LNI) API
This is the WSDD (Web Services Deployment Descriptor) for

View File

@@ -1,4 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
The contents of this file are subject to the license and copyright
detailed in the LICENSE and NOTICE files at the root of the source
tree and available online at
http://www.dspace.org/license/
-->
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<!-- Server Deployment Descriptor for DSpace LNI, on Axis 1.2

View File

@@ -12,20 +12,14 @@
<parent>
<groupId>org.dspace</groupId>
<artifactId>dspace-parent</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<!--
The Subversion repository location is used by Continuum to update against
when changes have occured, this spawns a new build cycle and releases snapshots
into the snapshot repository below.
-->
<scm>
<connection>scm:svn:http://scm.dspace.org/svn/repo/dspace/trunk/dspace-lni</connection>
<developerConnection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-lni</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace-lni</url>
</scm>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/..</root.basedir>
</properties>
<modules>
<module>dspace-lni-core</module>

View File

@@ -14,20 +14,14 @@
<parent>
<groupId>org.dspace</groupId>
<artifactId>dspace-oai</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<!--
The Subversion repository location is used by Continuum to update against
when changes have occured, this spawns a new build cycle and releases snapshots
into the snapshot repository below.
-->
<scm>
<connection>scm:svn:http://scm.dspace.org/svn/repo/dspace/trunk/dspace-oai/dspace-oai-api</connection>
<developerConnection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-oai/dspace-oai-api</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace-oai/dspace-oai-api</url>
</scm>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/../..</root.basedir>
</properties>
<dependencies>
<dependency>

View File

@@ -14,20 +14,14 @@
<parent>
<groupId>org.dspace</groupId>
<artifactId>dspace-oai</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<!--
The Subversion repository location is used by Continuum to update against
when changes have occured, this spawns a new build cycle and releases snapshots
into the snapshot repository below.
-->
<scm>
<connection>scm:svn:http://scm.dspace.org/svn/repo/dspace/trunk/dspace-oai/dspace-oai-webapp</connection>
<developerConnection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-oai/dspace-oai-webapp</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace-oai/dspace-oai-webapp</url>
</scm>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/../..</root.basedir>
</properties>
<build>
<plugins>

View File

@@ -14,20 +14,14 @@
<parent>
<groupId>org.dspace</groupId>
<artifactId>dspace-parent</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<!--
The Subversion repository location is used by Continuum to update against
when changes have occured, this spawns a new build cycle and releases snapshots
into the snapshot repository below.
-->
<scm>
<connection>scm:svn:http://scm.dspace.org/svn/repo/dspace/trunk/dspace-oai</connection>
<developerConnection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-oai</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace-oai</url>
</scm>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/..</root.basedir>
</properties>
<modules>
<module>dspace-oai-api</module>

View File

@@ -3,7 +3,7 @@
<parent>
<artifactId>dspace-parent</artifactId>
<groupId>org.dspace</groupId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
@@ -11,19 +11,13 @@
<groupId>org.dspace</groupId>
<artifactId>dspace-stats</artifactId>
<name>DSpace Solr Statistics Logging Client Library</name>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<description>Library of Shared UsageEvent and EventConsumer Tools for Logging to Solr.</description>
<!--
The Subversion repository location is used by Continuum to update
against when changes have occured, this spawns a new build cycle and
releases snapshots into the snapshot repository below.
-->
<scm>
<connection>scm:svn:http://scm.dspace.org/svn/repo/dspace/trunk/dspace-stats</connection>
<developerConnection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-stats</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace-stats</url>
</scm>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/..</root.basedir>
</properties>
<developers>
<developer>

View File

@@ -5,16 +5,21 @@
<packaging>jar</packaging>
<groupId>org.dspace</groupId>
<artifactId>dspace-sword-client-api</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<name>DSpace Sword Client :: Sword Client API</name>
<parent>
<groupId>org.dspace</groupId>
<artifactId>dspace-sword-client</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/../..</root.basedir>
</properties>
<dependencies>
<dependency>
<groupId>org.dspace</groupId>
@@ -27,17 +32,4 @@
</dependencies>
<!--
The Subversion repository location is used by Continuum to update
against when changes have occured, this spawns a new build cycle
and releases snapshots into the snapshot repository below.
-->
<scm>
<connection>scm:svn:http://scm.dspace.org/svn/repo/dspace/trunk/dspace-sword-client/dspace-sword-client-api</connection>
<developerConnection>
scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-sword-client/dspace-sword-client-api
</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace-sword-client/dspace-sword-client-api</url>
</scm>
</project>

View File

@@ -5,16 +5,21 @@
<packaging>jar</packaging>
<groupId>org.dspace</groupId>
<artifactId>dspace-sword-client-xmlui-api</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<name>DSpace Sword Client :: Sword Client XMLUI API</name>
<parent>
<groupId>org.dspace</groupId>
<artifactId>dspace-sword-client</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/../..</root.basedir>
</properties>
<dependencies>
<dependency>
@@ -42,18 +47,4 @@
</dependencies>
<!--
The Subversion repository location is used by Continuum to update
against when changes have occured, this spawns a new build cycle
and releases snapshots into the snapshot repository below.
-->
<scm>
<connection>scm:svn:http://scm.dspace.org/svn/repo/dspace/trunk/dspace-sword-client/dspace-sword-client-xmlui-api
</connection>
<developerConnection>
scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-sword-client/dspace-sword-client-xmlui-api
</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace-sword-client/dspace-sword-client-xmlui-api</url>
</scm>
</project>

View File

@@ -4,16 +4,21 @@
<packaging>war</packaging>
<groupId>org.dspace</groupId>
<artifactId>dspace-sword-client-xmlui-webapp</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<name>DSpace Sword Client :: Sword Client XMLUI Webapp</name>
<parent>
<groupId>org.dspace</groupId>
<artifactId>dspace-sword-client</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/../..</root.basedir>
</properties>
<dependencies>
<dependency>
@@ -75,19 +80,4 @@
</plugins>
</build>
<!--
The Subversion repository location is used by Continuum to update
against when changes have occured, this spawns a new build cycle
and releases snapshots into the snapshot repository below.
-->
<scm>
<connection>
scm:svn:http://scm.dspace.org/svn/repo/dspace/trunk/dspace-sword-client/dspace-sword-client-xmlui-webapp
</connection>
<developerConnection>
scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-sword-client/dspace-sword-client-xmlui-webapp
</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace-sword-client/dspace-sword-client-xmlui-webapp</url>
</scm>
</project>

View File

@@ -0,0 +1 @@
# Keep this empty directory in git.

View File

@@ -4,13 +4,13 @@
<packaging>pom</packaging>
<groupId>org.dspace</groupId>
<artifactId>dspace-sword-client</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<name>DSpace Sword Client</name>
<parent>
<artifactId>dspace-parent</artifactId>
<groupId>org.dspace</groupId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
@@ -20,18 +20,10 @@
<module>dspace-sword-client-xmlui-webapp</module>
</modules>
<!--
The Subversion repository location is used by Continuum to update
against when changes have occurred, this spawns a new build cycle
and releases snapshots into the snapshot repository below.
-->
<scm>
<connection>scm:svn:http://scm.dspace.org/svn/repo/dspace/trunk/dspace-sword-client</connection>
<developerConnection>
scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-sword-client
</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace-sword-client</url>
</scm>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/..</root.basedir>
</properties>
<issueManagement>
<system>JIRA</system>

View File

@@ -16,22 +16,14 @@
<parent>
<groupId>org.dspace</groupId>
<artifactId>dspace-sword</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<!--
The Subversion repository location is used by Continuum to update against
when changes have occured, this spawns a new build cycle and releases snapshots
into the snapshot repository below.
-->
<scm>
<connection>scm:svn:http://scm.dspace.org/svn/repo/dspace/trunk/dspace-sword/dspace-sword-api</connection>
<developerConnection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-sword/dspace-sword-api
</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace-sword/dspace-sword-api</url>
</scm>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/../..</root.basedir>
</properties>
<dependencies>

View File

@@ -14,20 +14,14 @@
<parent>
<groupId>org.dspace</groupId>
<artifactId>dspace-sword</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<!--
The Subversion repository location is used by Continuum to update against
when changes have occured, this spawns a new build cycle and releases snapshots
into the snapshot repository below.
-->
<scm>
<connection>scm:svn:http://scm.dspace.org/svn/repo/dspace/trunk/dspace-sword/dspace-sword-webapp</connection>
<developerConnection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-sword/dspace-sword-webapp</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace-sword/dspace-sword-webapp</url>
</scm>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/../..</root.basedir>
</properties>
<build>
<plugins>
@@ -114,7 +108,7 @@
<dependency>
<groupId>org.dspace</groupId>
<artifactId>dspace-sword-api</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
</dependency>
</dependencies>

View File

@@ -16,20 +16,14 @@
<parent>
<groupId>org.dspace</groupId>
<artifactId>dspace-parent</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<!--
The Subversion repository location is used by Continuum to update against
when changes have occured, this spawns a new build cycle and releases snapshots
into the snapshot repository below.
-->
<scm>
<connection>scm:svn:http://scm.dspace.org/svn/repo/dspace/trunk/dspace-sword</connection>
<developerConnection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-sword</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace-sword</url>
</scm>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/..</root.basedir>
</properties>
<modules>

View File

@@ -14,20 +14,14 @@
<parent>
<groupId>org.dspace</groupId>
<artifactId>dspace-parent</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<!--
The Subversion repository location is used by Continuum to update against
when changes have occurred, this spawns a new build cycle and releases snapshots
into the snapshot repository below.
-->
<scm>
<connection>scm:svn:http://scm.dspace.org/svn/repo/dspace/trunk/dspace-swordv2</connection>
<developerConnection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-swordv2</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace-swordv2</url>
</scm>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/..</root.basedir>
</properties>
<build>
<plugins>

View File

@@ -13,16 +13,14 @@
<parent>
<groupId>org.dspace</groupId>
<artifactId>dspace-xmlui</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<scm>
<connection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-xmlui/dspace-xmlui-api</connection>
<developerConnection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-xmlui/dspace-xmlui-api
</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace-xmlui/dspace-xmlui-api/</url>
</scm>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/../..</root.basedir>
</properties>
<dependencies>

View File

@@ -9,7 +9,6 @@ package org.dspace.app.xmlui.aspect.administrative;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.sql.SQLException;
import java.util.Map;
import org.xml.sax.SAXException;
@@ -30,7 +29,6 @@ import org.dspace.app.xmlui.wing.element.Para;
import org.dspace.app.xmlui.wing.element.Select;
import org.dspace.app.xmlui.wing.element.Text;
import org.dspace.authorize.AuthorizeException;
import org.dspace.core.ConfigurationManager;
/**
* Generates the Administrative Curate Form, from which any DSpace object can
@@ -118,7 +116,7 @@ public class CurateForm extends AbstractDSpaceTransformer
{
Select groupSelect = form.addItem().addSelect("select_curate_group");
groupSelect = FlowCurationUtils.getGroupSelectOptions(groupSelect);
groupSelect.setLabel(T_taskgroup_label_name); // todo: i18n this
groupSelect.setLabel(T_taskgroup_label_name);
groupSelect.setSize(1);
groupSelect.setRequired();
groupSelect.setEvtBehavior("submitOnChange");
@@ -130,6 +128,7 @@ public class CurateForm extends AbstractDSpaceTransformer
}
Select taskSelect = form.addItem().addSelect("curate_task");
taskSelect = FlowCurationUtils.getTaskSelectOptions(taskSelect, curateGroup);
taskSelect.setLabel(T_task_label_name);
taskSelect.setSize(1);
taskSelect.setRequired();
if(taskSelected!=null)

View File

@@ -95,12 +95,21 @@ public class SearchItemForm extends AbstractDSpaceTransformer {
{
String itemID = String.valueOf(item.getID());
Collection owningCollection = item.getOwningCollection();
String owning = owningCollection.getMetadata("name");
String author = "unkown";
DCValue[] dcAuthors = item.getDC("contributor",Item.ANY,Item.ANY);
if (dcAuthors != null && dcAuthors.length >= 1)
String owning = "unknown";
if (owningCollection != null)
owning = owningCollection.getMetadata("name");
String author = "unknown";
DCValue[] dcCreators = item.getDC("creator",Item.ANY,Item.ANY);
if (dcCreators != null && dcCreators.length >= 1)
{
author = dcAuthors[0].value;
author = dcCreators[0].value;
} else {
// Do a fall back look for contributors
DCValue[] dcContributors = item.getDC("contributor",Item.ANY,Item.ANY);
if (dcContributors != null && dcContributors.length >= 1)
{
author = dcContributors[0].value;
}
}
String title = "untitled";

View File

@@ -0,0 +1,44 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.xmlui.aspect.browseArtifacts;
import org.apache.cocoon.ProcessingException;
import org.dspace.app.xmlui.cocoon.AbstractDSpaceTransformer;
import org.dspace.app.xmlui.utils.UIException;
import org.dspace.app.xmlui.wing.WingException;
import org.dspace.app.xmlui.wing.element.Body;
import org.dspace.app.xmlui.wing.element.Division;
import org.dspace.app.xmlui.wing.element.PageMeta;
import org.dspace.authorize.AuthorizeException;
import org.xml.sax.SAXException;
import java.io.IOException;
import java.sql.SQLException;
/**
* Created by IntelliJ IDEA.
* User: peterdietz
* Date: 07/12/11
* Time: 11:39 PM
* To change this template use File | Settings | File Templates.
*/
public class StaticPage extends AbstractDSpaceTransformer {
@Override
public void addPageMeta(PageMeta pageMeta) throws SAXException, WingException, UIException, SQLException, IOException, AuthorizeException {
pageMeta.addMetadata("title").addContent("StaticPageTitle");
pageMeta.addTrail().addContent("StaticTrail");
}
@Override
public void addBody(Body body) throws SAXException, WingException, UIException, SQLException, IOException, AuthorizeException, ProcessingException {
Division division = body.addDivision("staticpage");
division.setHead("StaticPageBodyHead");
division.addPara("StaticPageBodyPara");
}
}

View File

@@ -146,7 +146,9 @@ public class LoginChooser extends AbstractDSpaceTransformer implements
String characters = (String) session
.getAttribute(AuthenticationUtil.REQUEST_INTERRUPTED_CHARACTERS);
if (header != null || message != null || characters != null) {
if ( (header != null && header.trim().length() > 0) ||
(message != null && message.trim().length() > 0) ||
(characters != null && characters.trim().length() > 0)) {
Division reason = body.addDivision("login-reason");
if (header != null)

View File

@@ -25,6 +25,8 @@ import org.dspace.workflow.WorkflowManager;
import javax.servlet.ServletException;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
/**
* This is a utility class to aid in the workflow flow scripts.
* Since data validation is cumbersome inside a flow script this
@@ -113,6 +115,12 @@ public class FlowUtils {
public static void processClaimTask(Context context, String id) throws SQLException, UIException, ServletException, AuthorizeException, IOException
{
WorkflowItem workflowItem = findWorkflow(context, id);
if(workflowItem.getState() != WorkflowManager.WFSTATE_STEP1POOL &&
workflowItem.getState() != WorkflowManager.WFSTATE_STEP2POOL &&
workflowItem.getState() != WorkflowManager.WFSTATE_STEP3POOL){
//Only allow tasks in the pool to be claimed !
throw new AuthorizeException("Error while claiming task: this task has already been claimed !");
}
// Claim the task
WorkflowManager.claim(context, workflowItem, context.getCurrentUser());
@@ -127,6 +135,38 @@ public class FlowUtils {
+ "new_state=" + workflowItem.getState()));
}
/**
* Verifies if the currently logged in user has proper rights to perform the workflow task on the item
* @param context the current dspace context
* @param workflowItemId the identifier of the workflow item
* @throws org.dspace.authorize.AuthorizeException thrown if the user doesn't have sufficient rights to perform the task at hand
* @throws java.sql.SQLException is thrown when something is wrong with the database
*/
public static void authorizeWorkflowItem(Context context, String workflowItemId) throws AuthorizeException, SQLException {
WorkflowItem workflowItem = WorkflowItem.find(context, Integer.parseInt(workflowItemId.substring(1)));
if((workflowItem.getState() == WorkflowManager.WFSTATE_STEP1 ||
workflowItem.getState() == WorkflowManager.WFSTATE_STEP2 ||
workflowItem.getState() == WorkflowManager.WFSTATE_STEP3) && workflowItem.getOwner().getID() != context.getCurrentUser().getID()){
throw new AuthorizeException("You are not allowed to perform this task.");
}else
if((workflowItem.getState() == WorkflowManager.WFSTATE_STEP1POOL ||
workflowItem.getState() == WorkflowManager.WFSTATE_STEP2POOL ||
workflowItem.getState() == WorkflowManager.WFSTATE_STEP3POOL)){
//Verify if the current user has the current workflowItem among his pooled tasks
boolean hasPooledTask = false;
List<WorkflowItem> pooledTasks = WorkflowManager.getPooledTasks(context, context.getCurrentUser());
for (WorkflowItem pooledItem : pooledTasks) {
if(pooledItem.getID() == workflowItem.getID()){
hasPooledTask = true;
}
}
if(!hasPooledTask){
throw new AuthorizeException("You are not allowed to perform this task.");
}
}
}
/**
* Reject the given task for the given reason. If the user did not provide

View File

@@ -33,8 +33,6 @@ import org.dspace.handle.HandleManager;
public class DSpaceObjectManager implements ObjectManager
{
/** List of all managed DSpaceObjects */
private List<DSpaceObject> dsos = new ArrayList<DSpaceObject>();
/**
* Manage the given object, if this manager is unable to manage the object then false must be returned.
@@ -43,32 +41,11 @@ public class DSpaceObjectManager implements ObjectManager
* The object to be managed.
* @return The object identifiers
*/
public boolean manageObject(Object object) throws WingException
public boolean manageObject(Object object)
{
// First check that the object is of a type we can manage.
if (object instanceof BrowseItem)
{
dsos.add((BrowseItem) object);
return true;
}
else if (object instanceof Item)
{
dsos.add((Item) object);
return true;
}
else if (object instanceof Collection)
{
dsos.add((Collection) object);
return true;
}
else if (object instanceof Community)
{
dsos.add((Community) object);
return true;
}
// We are unable to manage this object.
return false;
// Check that the object is of a type we can manage.
return (object instanceof BrowseItem) || (object instanceof Item) || (object instanceof Collection)
|| (object instanceof Community);
}
@@ -114,7 +91,7 @@ public class DSpaceObjectManager implements ObjectManager
* Return a pretty specific string giving a hint to the theme as to what
* type of DSpace object is being refrenced.
*/
public String getObjectType(Object object) throws WingException
public String getObjectType(Object object)
{
if (object instanceof Item || object instanceof BrowseItem)
{
@@ -146,7 +123,7 @@ public class DSpaceObjectManager implements ObjectManager
*/
public String getRepositoryURL(Object object) throws WingException
{
String handlePrefix = ConfigurationManager.getProperty("handel.prefix");
String handlePrefix = HandleManager.getPrefix();
return "/metadata/internal/repository/"+handlePrefix +"/mets.xml";
}

View File

@@ -2613,7 +2613,8 @@ function doSetupCollectionHarvesting(collectionID)
assertAdminCollection(collectionID);
if (cocoon.request.get("submit_return") || cocoon.request.get("submit_metadata") ||
cocoon.request.get("submit_roles") || cocoon.request.get("submit_harvesting"))
cocoon.request.get("submit_roles") || cocoon.request.get("submit_harvesting") ||
cocoon.request.get("submit_curate"))
{
// return to the editCollection function which will determine where to go next.
return null;

View File

@@ -24,6 +24,7 @@ collections / items / and bitstreams.
<map:transformer name="CommunityRecentSubmissions" src="org.dspace.app.xmlui.aspect.artifactbrowser.CommunityRecentSubmissions"/>
<map:transformer name="CollectionRecentSubmissions" src="org.dspace.app.xmlui.aspect.artifactbrowser.CollectionRecentSubmissions"/>
<map:transformer name="ConfigurableBrowse" src="org.dspace.app.xmlui.aspect.artifactbrowser.ConfigurableBrowse"/>
<map:transformer name="StaticPage" src="org.dspace.app.xmlui.aspect.browseArtifacts.StaticPage"/>
</map:transformers>
<map:matchers default="wildcard">
@@ -57,6 +58,11 @@ collections / items / and bitstreams.
<map:serialize type="xml"/>
</map:match>
<map:match pattern="page/*">
<map:transform type="StaticPage"/>
<map:serialize type="xml"/>
</map:match>
<!-- Browse (by anything) -->
<map:match pattern="browse">
<map:transform type="ConfigurableBrowse"/>
@@ -91,7 +97,6 @@ collections / items / and bitstreams.
</map:match>
<!-- Not a URL we care about, so just pass it on. -->
<map:serialize type="xml"/>

View File

@@ -130,6 +130,8 @@ function doWorkflow()
do
{
//Ensure that the currently logged in user can perform the task
FlowUtils.authorizeWorkflowItem(getDSContext(), workflowID);
sendPageAndWait("handle/"+handle+"/workflow/performTaskStep",{"id":workflowID,"step":"0"});
if (cocoon.request.get("submit_leave"))

View File

@@ -13,16 +13,14 @@
<parent>
<groupId>org.dspace</groupId>
<artifactId>dspace-xmlui</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<scm>
<connection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-xmlui/dspace-xmlui-webapp</connection>
<developerConnection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-xmlui/dspace-xmlui-webapp
</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace-xmlui/dspace-xmlui-webapp</url>
</scm>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/../..</root.basedir>
</properties>
<build>
<plugins>
@@ -132,9 +130,6 @@
</dependency>
</dependencies>
<properties>
<netbeans.hint.deploy.server>Tomcat</netbeans.hint.deploy.server>
</properties>
</project>

View File

@@ -40,8 +40,9 @@ org.apache.cocoon.uploads.autosave=true
org.apache.cocoon.uploads.overwrite=rename
# Specify maximum allowed size of the upload. Defaults to 10 Mb.
# DSpace Community: Set here to as high as possible.
org.apache.cocoon.uploads.maxsize=1000000000
# DSpace Community: 2GB. The HTTP spec allows this to be increased to 4GB but
# cocoon places a limit because the parameter is read into a signed integer.
org.apache.cocoon.uploads.maxsize=2147483647
# This parameter allows to specify where Cocoon should create its page
# and other objects cache. The path specified can be either absolute or

View File

@@ -34,6 +34,12 @@
<xsl:output indent="yes"/>
<!--
Requested Page URI. Some functions may alter behavior of processing depending if URI matches a pattern.
Specifically, adding a static page will need to override the DRI, to directly add content.
-->
<xsl:variable name="request-uri" select="/dri:document/dri:meta/dri:pageMeta/dri:metadata[@element='request'][@qualifier='URI']"/>
<!--
The starting point of any XSL processing is matching the root element. In DRI the root element is document,
which contains a version attribute and three top level elements: body, options, meta (in that order).
@@ -280,6 +286,9 @@
<xsl:variable name="page_title" select="/dri:document/dri:meta/dri:pageMeta/dri:metadata[@element='title']" />
<title>
<xsl:choose>
<xsl:when test="starts-with($request-uri, 'page/about')">
<xsl:text>About This Repository</xsl:text>
</xsl:when>
<xsl:when test="not($page_title)">
<xsl:text> </xsl:text>
</xsl:when>
@@ -389,6 +398,9 @@
<div id="ds-trail-wrapper">
<ul id="ds-trail">
<xsl:choose>
<xsl:when test="starts-with($request-uri, 'page/about')">
<xsl:text>About This Repository</xsl:text>
</xsl:when>
<xsl:when test="count(/dri:document/dri:meta/dri:pageMeta/dri:trail) = 0">
<li class="ds-trail-link first-link">-</li>
</xsl:when>
@@ -561,7 +573,25 @@
</p>
</div>
</xsl:if>
<!-- Check for the custom pages -->
<xsl:choose>
<xsl:when test="starts-with($request-uri, 'page/about')">
<div>
<h1>About This Repository</h1>
<p>To add your own content to this page, edit webapps/xmlui/themes/Mirage/lib/xsl/core/page-structure.xsl and
add your own content to the title, trail, and body. If you wish to add additional pages, you
will need to create an additional xsl:when block and match the request-uri to whatever page
you are adding. Currently, static pages created through altering XSL are only available
under the URI prefix of page/.</p>
</div>
</xsl:when>
<!-- Otherwise use default handling of body -->
<xsl:otherwise>
<xsl:apply-templates />
</xsl:otherwise>
</xsl:choose>
</div>
</xsl:template>

View File

@@ -30,6 +30,8 @@
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xalan="http://xml.apache.org/xalan"
xmlns:encoder="xalan://java.net.URLEncoder"
xmlns:dcterms="http://purl.org/dc/terms/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
exclude-result-prefixes="xalan encoder i18n dri mets dim xlink xsl">
@@ -59,6 +61,9 @@
<!-- Iterate over the links in the ORE resource maps and make them into bitstream references in the file section -->
<xsl:template match="atom:link[@rel='http://www.openarchives.org/ore/terms/aggregates']">
<xsl:variable name="link_href" select="@href"/>
<xsl:if test="/atom:entry/oreatom:triples/rdf:Description[@rdf:about=$link_href][dcterms:description='ORIGINAL']
or not(/atom:entry/oreatom:triples/rdf:Description[@rdf:about=$link_href])">
<tr>
<xsl:attribute name="class">
<xsl:text>ds-table-row </xsl:text>
@@ -136,6 +141,7 @@
</a>
</td>
</tr>
</xsl:if>
</xsl:template>
</xsl:stylesheet>

View File

@@ -33,6 +33,12 @@
<xsl:output indent="yes"/>
<!--
Requested Page URI. Some functions may alter behavior of processing depending if URI matches a pattern.
Specifically, adding a static page will need to override the DRI, to directly add content.
-->
<xsl:variable name="request-uri" select="/dri:document/dri:meta/dri:pageMeta/dri:metadata[@element='request'][@qualifier='URI']"/>
<!--
The starting point of any XSL processing is matching the root element. In DRI the root element is document,
which contains a version attribute and three top level elements: body, options, meta (in that order).
@@ -232,6 +238,9 @@
<xsl:variable name="page_title" select="/dri:document/dri:meta/dri:pageMeta/dri:metadata[@element='title']" />
<title>
<xsl:choose>
<xsl:when test="starts-with($request-uri, 'page/about')">
<xsl:text>About This Repository</xsl:text>
</xsl:when>
<xsl:when test="not($page_title)">
<xsl:text> </xsl:text>
</xsl:when>
@@ -284,6 +293,9 @@
<ul id="ds-trail">
<xsl:choose>
<xsl:when test="starts-with($request-uri, 'page/about')">
<xsl:text>About This Repository</xsl:text>
</xsl:when>
<xsl:when test="count(/dri:document/dri:meta/dri:pageMeta/dri:trail) = 0">
<li class="ds-trail-link first-link"> - </li>
</xsl:when>
@@ -500,7 +512,25 @@
</p>
</div>
</xsl:if>
<!-- Check for the custom pages -->
<xsl:choose>
<xsl:when test="starts-with($request-uri, 'page/about')">
<div>
<h1>About This Repository</h1>
<p>To add your own content to this page, edit webapps/xmlui/themes/dri2xhtml-alt/core/page-structure.xsl and
add your own content to the title, trail, and body. If you wish to add additional pages, you
will need to create an additional xsl:when block and match the request-uri to whatever page
you are adding. Currently, static pages created through altering XSL are only available
under the URI prefix of page/.</p>
</div>
</xsl:when>
<!-- Otherwise use default handling of body -->
<xsl:otherwise>
<xsl:apply-templates />
</xsl:otherwise>
</xsl:choose>
</div>
</xsl:template>

View File

@@ -47,6 +47,12 @@
-->
<xsl:variable name="theme-path" select="concat($context-path,'/themes/',/dri:document/dri:meta/dri:pageMeta/dri:metadata[@element='theme'][@qualifier='path'])"/>
<!--
Requested Page URI. Some functions may alter behavior of processing depending if URI matches a pattern.
Specifically, adding a static page will need to override the DRI, to directly add content.
-->
<xsl:variable name="request-uri" select="/dri:document/dri:meta/dri:pageMeta/dri:metadata[@element='request'][@qualifier='URI']"/>
<!--
This style sheet will be written in several stages:
1. Establish all the templates that catch all the elements
@@ -266,6 +272,9 @@
<xsl:variable name="page_title" select="/dri:document/dri:meta/dri:pageMeta/dri:metadata[@element='title']" />
<title>
<xsl:choose>
<xsl:when test="starts-with($request-uri, 'page/about')">
<xsl:text>About This Repository</xsl:text>
</xsl:when>
<xsl:when test="not($page_title) or (string-length($page_title) &lt; 1)">
<i18n:text>xmlui.dri2xhtml.METS-1.0.no-title</i18n:text>
</xsl:when>
@@ -318,6 +327,9 @@
<ul id="ds-trail">
<xsl:choose>
<xsl:when test="starts-with($request-uri, 'page/about')">
<xsl:text>About This Repository</xsl:text>
</xsl:when>
<xsl:when test="count(/dri:document/dri:meta/dri:pageMeta/dri:trail) = 0">
<li class="ds-trail-link first-link"> - </li>
</xsl:when>
@@ -535,7 +547,27 @@
</p>
</div>
</xsl:if>
<!-- Check for the custom pages -->
<xsl:choose>
<xsl:when test="starts-with($request-uri, 'page/about')">
<div>
<h1>About This Repository</h1>
<p>To add your own content to this page, edit webapps/xmlui/themes/dri2xhtml/structural.xsl and
add your own content to the title, trail, and body. If you wish to add additional pages, you
will need to create an additional xsl:when block and match the request-uri to whatever page
you are adding. Currently, static pages created through altering XSL are only available
under the URI prefix of page/.</p>
</div>
</xsl:when>
<!-- Otherwise use default handling of body -->
<xsl:otherwise>
<xsl:apply-templates />
</xsl:otherwise>
</xsl:choose>
<xsl:if test="/dri:document/dri:meta/dri:pageMeta/dri:metadata[@element='sfx'][@qualifier='server']">
<a>
<xsl:attribute name="href">

View File

@@ -10,16 +10,14 @@
<parent>
<groupId>org.dspace</groupId>
<artifactId>dspace-xmlui</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<scm>
<connection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-xmlui/dspace-xmlui-wing</connection>
<developerConnection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-xmlui/dspace-xmlui-wing
</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace-xmlui/dspace-xmlui-wing</url>
</scm>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/../..</root.basedir>
</properties>
<dependencies>

View File

@@ -12,20 +12,14 @@
<parent>
<groupId>org.dspace</groupId>
<artifactId>dspace-parent</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<!--
The Subversion repository location is used by Continuum to update against
when changes have occured, this spawns a new build cycle and releases snapshots
into the snapshot repository below.
-->
<scm>
<connection>scm:svn:http://scm.dspace.org/svn/repo/dspace/trunk/dspace-xmlui</connection>
<developerConnection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace-xmlui</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace-xmlui</url>
</scm>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/..</root.basedir>
</properties>
<modules>
<module>dspace-xmlui-wing</module>

View File

@@ -4,79 +4,176 @@
# Configuration properties used by the Shibboleth #
# Authentication plugin, when it is enabled. #
#---------------------------------------------------------------#
#### Shibboleth Authentication Configuration Settings ####
# Shibboleth is a distributed authentication system for securely authenticating
# users and passing attributes about the user from one or more identity
# providers. In the Shibboleth terminology DSpace is a Service Provider which
# receives authentication information and then based upon that provides a
# service to the user. With Shibboleth DSpace will require that you use
# Apache installed with the mod_shib module acting as a proxy for all HTTP
# requests for your servlet container (typically Tomcat). DSpace will receive
# authentication information from the mod_shib module through HTTP headers.
#
# In order to enable Shibboleth Authentication, you must first ensure the
# 'org.dspace.authenticate.ShibAuthentication' class is added to the
# list of enabled AuthenticationMethods in 'authenticate.cfg'.
# See 'authenticate.cfg' for more info.
# See for more information on installing and configuring a Shibboleth
# Service Provider:
# https://wiki.shibboleth.net/confluence/display/SHIB2/Installation
##
## Shibboleth Sessions:
##
# When configuring your Shibboleth Service Provider there are two paradigms you
# may use: Active or Lazy Sessions. Active sessions is where the mob_shib
# module is configured to product a URL space. No one will be able to access
# that URL without first authenticating with Shibboleth. Using this method you
# will need to configure shibboleth to protect the URL: "/shibboleth-login".
# The alternative, Lazy Session does not protect any specific URL. Instead
# apache will allow access to any URL, and when the application wants to it
# may initiate an authenticated session. The Lazy Session method is preferable
# for most DSpace installations where you want public access to most of DSpace
# but restricted access to limitted areas - such as administration.
# Whether to use lazy sessions or active sessions.
lazysession = true
# The url to start a shibboleth session (only for lazy sessions)
lazysession.loginurl = /Shibboleth.sso/Login
# Force HTTPS when authenticating (only for lazy sessions)
lazysession.secure = true
##
## Shibboleth Authentication Methods:
##
# DSpace supports authentication using NetID, or email address. A user's NetID
# is a unique identifier from the IdP that identifies a particular user. The
# NetID can be of almost any form such as a unique integer, string, or with
# Shibboleth 2.0 you can use "targeted ids". You will need to coordinate with
# your shibboleth federation or identity provider. There are three ways to
# supply identity information to DSpace:
#
# Check https://mams.melcoe.mq.edu.au/zope/mams/pubs/Installation/dspace15/view
# for installation detail.
# 1) NetID from Shibboleth Header (best)
#
# DSpace requires email as user's credential. There are 2 ways of providing
# email to DSpace:
# 1) by explicitly specifying to the user which attribute (header)
# carries the email address.
# 2) by turning on the user-email-using-tomcat=true which means
# the software will try to acquire the user's email from Tomcat
# The first option takes PRECEDENCE when specified. Both options can
# be enabled to allow fallback.
# The NetID-based method is superior because users may change their email
# address with the identity provider. When this happens DSpace will not be
# able to associate their new address with their old account.
#
# 2) Email address from Shibboleth Header (okay)
#
# In the case where a NetID header is not available or not found DSpace
# will fall back to identifying a user based-upon their email address.
#
# 3) Tomcat's Remote User (worst)
#
# In the event that neither Shibboleth headers are found then as a last
# resort DSpace will look at Tomcat's remote user field. This is the least
# attractive option because Tomcat has no way to supply additional
# attributes about a user. Because of this the autoregister option is not
# supported if this method is used.
#
# Identity Scheme Migration Strategies:
# If you are currently using Email based authentication (either 1 or 2) and
# want to upgrade to NetID based authentication then there is an easy path.
# Simply enable shibboleth to pass the NetID attribute and set the netid-header
# below to the correct value. When a user attempts to log in to DSpace first
# DSpace will look for an EPerson with the passed NetID, however when this
# fails DSpace will fall back to email based authentication. Then DSpace will
# update the user's EPerson account record to set their netted so all future
# authentications for this user will be based upon netted. One thing to note
# is that DSpace will prevent an account from switching NetIDs. If an account
# all ready has a NetID set and then they try and authenticate with a
# different NetID the authentication will fail.
# this option below specifies that the email comes from the mentioned header.
# The value is CASE-Sensitive.
email-header = MAIL
# Authentication headers for Mail, NetID, and Tomcat's Remote User.
# Supply all parameters possible.
netid-header = SHIB-NETID
email-header = SHIB-MAIL
email-use-tomcat-remote-user = false
# optional. Specify the header that carries user's first name
# this is going to be used for creation of new-user
firstname-header = SHIB-EP-GIVENNAME
# optional. Specify the header that carries user's last name
# this is used for creation of new user
lastname-header = SHIB-EP-SURNAME
# this option below forces the software to acquire the email from Tomcat.
email-use-tomcat-remote-user = true
# should we allow new users to be registered automtically
# if the IdP provides sufficient info (and user not exists in DSpace)
# Should we allow new users to be registered automatically?
autoregister = true
# these two header here specify which attribute that is responsible
# for providing user's roles to DSpace and unscope the attributes if needed.
# When not specified, it is defaulted to 'Shib-EP-UnscopedAffiliation', and
# ignore-scope is defaulted to 'false'.
# The value is specified in AAP.xml (Shib 1.3.x) or
# attribute-filter.xml (Shib 2.x). The value is CASE-Sensitive.
# The values provided in this header are separated by semi-colon or comma.
# If your sp only provides scoped role header, you need to set
# role-header.ignore-Scope as true.
# for example if you only get Shib-EP-ScopedAffiliation instead of Shib-EP-ScopedAffiliation,
# you have to make your setting as:
# role-header = Shib-EP-ScopedAffiliation
# role-header.ignore-scope = true
# Sword compatability will allow this authentication method to work when using
# sword. Sort relies on username and password based authentication and is
# entirely incapable of supporting shibboleth. This option allows you to
# authenticate username and passwords for sword sessions with out adding
# another authentication method onto the stack. You will need to ensure that
# a user has a password. One way to do that is to create the user via the
# create-administrator command line command and then edit their permissions.
sword.compatability = false
# role-header = Shib-EP-UnscopedAffiliation
role-header.ignore-scope = false
# when user is fully authN on IdP but would not like to release
# his/her roles to DSpace (for privacy reason?), what should be
# the default roles be given to such users?
# The values are separated by semi-colon or comma
# default-roles = Staff, Walk-ins
##
## EPerson Metadata:
##
# One of the primary benefits of using Shibboleth based authentication is
# receiving additional attributes about users such as their names, telephone
# numbers, and possibly their academic department or graduation semester if
# desired. DSpace treats the first and last name attributes differently because
# they (along with email address) are the three pieces of minimal information
# required to create a new user account. For both first and last name supply
# direct mappings to the Shibboleth headers. In additional to the first and
# last name DSpace supports other metadata fields such as phone, or really
# anything you want to store on an eperson object. Beyond the phone field,
# which is accessible in the user's profile screen, none of these additional
# metadata fields will be used by DSpace out-of-the box. However if you
# develop any local modification you may access these attributes from the
# EPerson object. The Vireo ETD workflow system utilizes this to aid
# students when submitting an ETD.
# The following mappings specify role mapping between IdP and Dspace.
# the left side of the entry is IdP's role (prefixed with
# "role.") which will be mapped to
# the right entry from DSpace. DSpace's group as indicated on the
# right entry has to EXIST in DSpace, otherwise user will be identified
# as 'anonymous'. Multiple values on the right entry should be separated
# by comma. The values are CASE-Sensitive. Heuristic one-to-one mapping
# will be done when the IdP groups entry are not listed below (i.e.
# if "X" group in IdP is not specified here, then it will be mapped
# to "X" group in DSpace if it exists, otherwise it will be mapped
# to simply 'anonymous')
# Metadata Headers
# Shibboleth-based headers for the first and last name attirbutes
firstname-header = SHIB-GIVENNAME
lastname-header = SHIB-SURNAME
# Additional user attributes mapping, multiple attributes may be stored
# for each user. The left side is the Shibboleth-based metadata Header
# and the right side is the eperson metadata field to map the attribute to.
#eperson.metadata = \
# SHIB-telephone => phone, \
# SHIB-cn => cn
# If the eperson metadata field is not found, should it be automatically created?
eperson.metadata.autocreate = true;
##
## Role-based Groups:
##
# DSpace is able to place users into pre-defined groups based upon values
# received from Shibboleth. Using this option you can place all faculty members
# into a DSpace group when the correct affiliation's attribute is provided.
# When DSpace does this they are considered 'special groups', these are really
# groups but the user's membership within these groups is not recorded in the
# database. Each time a user authenticates they are automatically placed within
# the pre-defined DSpace group, so if the user loses their affiliation then the
# next time they login they will no longer be in the group.
#
# Given sufficient demand, future release could support regex for the mapping
# special characters need to be escaped by \
role.Senior\ Researcher = Researcher, Staff
role.Librarian = Administrator
# Depending upon the shibboleth attributed use in the role-header it may be
# scoped. Scoped is shibboleth terminology for identifying where an attribute
# originated from. For example a students affiliation may be encoded as
# "student@tamu.edu". The part after the @ sign is the scope, and the preceding
# value is the value. You may use the whole value or only the value or scope.
# Using this you could generate a role for students and one institution
# different than students at another institution. Or if you turn on
# ignore-scope you could ignore the institution and place all students into
# one group.
# The values extracted (a user may have multiple roles) will be used to look
# up which groups to place the user into. The groups are defined as
# "role.<role-name>" which is a comma separated list of
# DSpace groups.
# The shibboleth header to do role-based mappings
role-header = SHIB-SCOPED-AFFILIATION
# Weather to ignore the attribute's scope or value.
role-header.ignore-scope = true
#role-header.ignore-value = false
# Default mappings of roles values to a comma separated list of DSpace group
# names (Case Sensitive).
#role.faculty = Faculty, Member
#role.staff = Staff, Member
#role.student = Students, Member

Binary file not shown.

View File

@@ -10,10 +10,15 @@
<parent>
<groupId>org.dspace</groupId>
<artifactId>modules</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/../../..</root.basedir>
</properties>
<profiles>
<!--
@@ -74,12 +79,6 @@
</profiles>
<scm>
<connection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace/modules/jspui</connection>
<developerConnection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace/modules/jspui</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace/modules/jspui</url>
</scm>
<build>
<plugins>
<plugin>

View File

@@ -0,0 +1 @@
# Keep this empty directory in git.

View File

@@ -12,15 +12,14 @@
<parent>
<groupId>org.dspace</groupId>
<artifactId>modules</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<scm>
<connection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace/modules/lni</connection>
<developerConnection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace/modules/lni</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace/modules/lni</url>
</scm>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/../../..</root.basedir>
</properties>
<build>
<plugins>

View File

@@ -0,0 +1 @@
# Keep this empty directory in git.

View File

@@ -16,20 +16,14 @@
<parent>
<groupId>org.dspace</groupId>
<artifactId>modules</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<!--
The Subversion repository location is used by Continuum to update against
when changes have occured, this spawns a new build cycle and releases snapshots
into the snapshot repository below.
-->
<scm>
<connection>scm:svn:http://scm.dspace.org/svn/repo/dspace/trunk/dspace/modules/oai</connection>
<developerConnection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace/modules/oai</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace/modules/oai</url>
</scm>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/../../..</root.basedir>
</properties>
<build>
<plugins>

View File

@@ -0,0 +1 @@
# Keep this empty directory in git.

View File

@@ -10,15 +10,14 @@
<parent>
<groupId>org.dspace</groupId>
<artifactId>dspace-parent</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<scm>
<connection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace/modules</connection>
<developerConnection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace/modules</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace/modules</url>
</scm>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/../..</root.basedir>
</properties>
<!--
List of enabled DSpace Modules to build/install.

View File

@@ -2,7 +2,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.dspace.modules</groupId>
<artifactId>solr</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<packaging>war</packaging>
<name>DSpace SOLR :: Web Application</name>
<description>
@@ -10,26 +10,20 @@
</description>
<!--
Solr uses DSpace POM to avoid limitations forced
in dependencies found in dspace-parent pom. Solr is
a standalone webapplication.
A Parent POM that Maven inherits DSpace Default
POM atrributes from.
-->
<parent>
<groupId>org.dspace</groupId>
<artifactId>dspace-pom</artifactId>
<version>12</version>
<artifactId>modules</artifactId>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<!--
The Subversion repository location is used by Continuum to update
against when changes have occured, this spawns a new build cycle
and releases snapshots into the snapshot repository below.
-->
<scm>
<connection>scm:svn:http://dspace.svn.sourceforge.net/svnroot/dspace/trunk/dspace/modules/solr</connection>
<developerConnection>scm:svn:https://dspace.svn.sourceforge.net/svnroot/dspace/trunk/dspace/modules/solr</developerConnection>
<url>http://dspace.svn.sourceforge.net/svnroot/dspace/trunk/dspace/modules/solr</url>
</scm>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/../../..</root.basedir>
</properties>
<build>
<plugins>

View File

@@ -0,0 +1 @@
# Keep this empty directory in git.

View File

@@ -16,20 +16,14 @@
<parent>
<groupId>org.dspace</groupId>
<artifactId>modules</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<!--
The Subversion repository location is used by Continuum to update against
when changes have occured, this spawns a new build cycle and releases snapshots
into the snapshot repository below.
-->
<scm>
<connection>scm:svn:http://scm.dspace.org/svn/repo/dspace/trunk/dspace/modules/sword</connection>
<developerConnection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace/modules/sword</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace/modules/sword</url>
</scm>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/../../..</root.basedir>
</properties>
<build>
<plugins>

View File

@@ -0,0 +1 @@
# Keep this empty directory in git.

View File

@@ -16,20 +16,14 @@
<parent>
<groupId>org.dspace</groupId>
<artifactId>modules</artifactId>
<version>3.0-SNAPSHOT</version>
<version>1.8.3</version>
<relativePath>..</relativePath>
</parent>
<!--
The Subversion repository location is used by Continuum to update against
when changes have occured, this spawns a new build cycle and releases snapshots
into the snapshot repository below.
-->
<scm>
<connection>scm:svn:http://scm.dspace.org/svn/repo/dspace/trunk/dspace/modules/swordv2</connection>
<developerConnection>scm:svn:https://scm.dspace.org/svn/repo/dspace/trunk/dspace/modules/swordv2</developerConnection>
<url>http://scm.dspace.org/svn/repo/dspace/trunk/dspace/modules/swordv2</url>
</scm>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/../../..</root.basedir>
</properties>
<build>
<plugins>

View File

@@ -0,0 +1 @@
# Keep this empty directory in git.

Some files were not shown because too many files have changed in this diff Show More