mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-07 01:54:22 +00:00
integrated from branch 1.5
Statistics viewer for XMLUI, based on existing DStat. Note that this generates the view from the analysis files (.dat), does not require HTML report generation. git-svn-id: http://scm.dspace.org/svn/repo/trunk@3102 9c30dcfa-912a-0410-8fc2-9e0234be79fd
This commit is contained in:
@@ -44,6 +44,7 @@ import org.dspace.app.statistics.Report;
|
||||
import org.dspace.app.statistics.Stat;
|
||||
import org.dspace.app.statistics.Statistics;
|
||||
import org.dspace.app.statistics.ReportTools;
|
||||
import org.dspace.core.ConfigurationManager;
|
||||
|
||||
import java.text.DateFormat;
|
||||
|
||||
@@ -54,13 +55,14 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import java.io.*;
|
||||
|
||||
/**
|
||||
* This class provides HTML reports for the ReportGenerator class
|
||||
*
|
||||
* @author Richard Jones
|
||||
*/
|
||||
public class HTMLReport extends Report
|
||||
public class HTMLReport implements Report
|
||||
{
|
||||
// FIXME: all of these methods should do some content escaping before
|
||||
// outputting anything
|
||||
@@ -79,6 +81,10 @@ public class HTMLReport extends Report
|
||||
|
||||
/** end date for report */
|
||||
private Date end = null;
|
||||
|
||||
/** the output file to which to write aggregation data */
|
||||
private static String output = ConfigurationManager.getProperty("dspace.dir") +
|
||||
File.separator + "log" + File.separator + "report";
|
||||
|
||||
/**
|
||||
* constructor for HTML reporting
|
||||
@@ -87,6 +93,14 @@ public class HTMLReport extends Report
|
||||
{
|
||||
// empty constructor
|
||||
}
|
||||
|
||||
public void setOutput(String newOutput)
|
||||
{
|
||||
if (newOutput != null)
|
||||
{
|
||||
output = newOutput;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* return a string containing the report as generated by this class
|
||||
@@ -119,6 +133,23 @@ public class HTMLReport extends Report
|
||||
|
||||
// output the footer and return
|
||||
frag.append(footer());
|
||||
|
||||
// NB: HTMLReport now takes responsibility to write the output file,
|
||||
// so that the Report/ReportGenerator can have more general usage
|
||||
// finally write the string into the output file
|
||||
try
|
||||
{
|
||||
FileOutputStream fos = new FileOutputStream(output);
|
||||
OutputStreamWriter osr = new OutputStreamWriter(fos, "UTF-8");
|
||||
PrintWriter out = new PrintWriter(osr);
|
||||
out.write(frag.toString());
|
||||
out.close();
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
System.out.println("Unable to write to output file " + output);
|
||||
System.exit(0);
|
||||
}
|
||||
|
||||
return frag.toString();
|
||||
}
|
||||
|
@@ -48,30 +48,18 @@ import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Abstract class to define an interface to a generic report generating
|
||||
* Sn interface to a generic report generating
|
||||
* class, and to provide the polymorphism necessary to allow the report
|
||||
* generator to generate any number of different formats of report
|
||||
*
|
||||
* Note: This used to be an abstract class, but has been made an interface as there wasn't
|
||||
* any logic contained within it. It's also been made public, so that you can create a Report
|
||||
* type without monkeying about in the statistics package.
|
||||
*
|
||||
* @author Richard Jones
|
||||
*/
|
||||
abstract class Report
|
||||
public interface Report
|
||||
{
|
||||
|
||||
/** a list of the statistics blocks being managed by this class */
|
||||
private List blocks = new ArrayList();
|
||||
|
||||
/** the title for the page */
|
||||
private String pageTitle = null;
|
||||
|
||||
/** the main title for the page */
|
||||
private String mainTitle = null;
|
||||
|
||||
/** start date for report */
|
||||
private Date start = null;
|
||||
|
||||
/** end date for report */
|
||||
private Date end = null;
|
||||
|
||||
/**
|
||||
* output any top headers that this page needs
|
||||
*
|
||||
|
@@ -70,6 +70,7 @@ import java.util.Map;
|
||||
import java.util.StringTokenizer;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import java.sql.SQLException;
|
||||
|
||||
/**
|
||||
* This class performs the action of coordinating a usage report being
|
||||
@@ -172,16 +173,9 @@ public class ReportGenerator
|
||||
// report generator config data
|
||||
////////////////
|
||||
|
||||
/** the format of the report to be output */
|
||||
private static String format = null;
|
||||
|
||||
/** the input file to build the report from */
|
||||
private static String input = null;
|
||||
|
||||
/** the output file to which to write aggregation data */
|
||||
private static String output = ConfigurationManager.getProperty("dspace.dir") +
|
||||
File.separator + "log" + File.separator + "report";
|
||||
|
||||
/** the log file action to human readable action map */
|
||||
private static String map = ConfigurationManager.getProperty("dspace.dir") +
|
||||
File.separator + "config" + File.separator + "dstat.map";
|
||||
@@ -240,6 +234,9 @@ public class ReportGenerator
|
||||
* aggregation data and output a file containing the report in the
|
||||
* requested format
|
||||
*
|
||||
* this method is retained for backwards compatibility, but delegates the actual
|
||||
* wprk to a new method
|
||||
*
|
||||
* @param context the DSpace context in which this action is performed
|
||||
* @param myFormat the desired output format (currently on HTML supported)
|
||||
* @param myInput the aggregation file to be turned into a report
|
||||
@@ -249,6 +246,32 @@ public class ReportGenerator
|
||||
String myInput, String myOutput,
|
||||
String myMap)
|
||||
throws Exception
|
||||
{
|
||||
// create the relevant report type
|
||||
// FIXME: at the moment we only support HTML report generation
|
||||
Report report = null;
|
||||
if (myFormat.equals("html"))
|
||||
{
|
||||
report = new HTMLReport();
|
||||
((HTMLReport)report).setOutput(myOutput);
|
||||
}
|
||||
|
||||
if (myMap != null)
|
||||
{
|
||||
map = myMap;
|
||||
}
|
||||
|
||||
ReportGenerator.processReport(context, report, myInput);
|
||||
}
|
||||
|
||||
/**
|
||||
* using the pre-configuration information passed here, read in the
|
||||
* aggregation data and output a file containing the report in the
|
||||
* requested format
|
||||
*/
|
||||
public static void processReport(Context context, Report report,
|
||||
String myInput)
|
||||
throws Exception, SQLException
|
||||
{
|
||||
startTime = new GregorianCalendar();
|
||||
|
||||
@@ -264,7 +287,7 @@ public class ReportGenerator
|
||||
generalSummary = new ArrayList();
|
||||
|
||||
// set the parameters for this analysis
|
||||
setParameters(myFormat, myInput, myOutput, myMap);
|
||||
setParameters(myInput);
|
||||
|
||||
// pre prepare our standard file readers and buffered readers
|
||||
FileReader fr = null;
|
||||
@@ -276,14 +299,6 @@ public class ReportGenerator
|
||||
// load the log file action to human readable action map
|
||||
readMap(map);
|
||||
|
||||
// create the relevant report type
|
||||
// FIXME: at the moment we only support HTML report generation
|
||||
Report report = null;
|
||||
if (format.equals("html"))
|
||||
{
|
||||
report = new HTMLReport();
|
||||
}
|
||||
|
||||
report.setStartDate(startDate);
|
||||
report.setEndDate(endDate);
|
||||
report.setMainTitle(name, serverName);
|
||||
@@ -352,7 +367,8 @@ public class ReportGenerator
|
||||
String info = null;
|
||||
for (i = 0; i < items.length; i++)
|
||||
{
|
||||
if (i < itemLookup)
|
||||
// Allow negative value to say that all items should be looked up
|
||||
if (itemLookup < 0 || i < itemLookup)
|
||||
{
|
||||
info = getItemInfo(context, items[i].getKey());
|
||||
}
|
||||
@@ -459,21 +475,8 @@ public class ReportGenerator
|
||||
process.add(proc);
|
||||
|
||||
report.addBlock(process);
|
||||
|
||||
// finally write the string into the output file
|
||||
try
|
||||
{
|
||||
FileOutputStream fos = new FileOutputStream(output);
|
||||
OutputStreamWriter osr = new OutputStreamWriter(fos, "UTF-8");
|
||||
PrintWriter out = new PrintWriter(osr);
|
||||
out.write(report.render());
|
||||
out.close();
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
System.out.println("Unable to write to output file " + output);
|
||||
System.exit(0);
|
||||
}
|
||||
|
||||
report.render();
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -595,34 +598,15 @@ public class ReportGenerator
|
||||
* the command line with args or calling the processReport method statically
|
||||
* from elsewhere
|
||||
*
|
||||
* @param myFormat the log file directory to be analysed
|
||||
* @param myInput regex for log file names
|
||||
* @param myOutput config file to use for dstat
|
||||
* @param myMap the action map file to use for translations
|
||||
*/
|
||||
public static void setParameters(String myFormat, String myInput,
|
||||
String myOutput, String myMap)
|
||||
public static void setParameters(String myInput)
|
||||
{
|
||||
if (myFormat != null)
|
||||
{
|
||||
format = myFormat;
|
||||
}
|
||||
|
||||
if (myInput != null)
|
||||
{
|
||||
input = myInput;
|
||||
}
|
||||
|
||||
if (myOutput != null)
|
||||
{
|
||||
output = myOutput;
|
||||
}
|
||||
|
||||
if (myMap != null)
|
||||
{
|
||||
map = myMap;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -650,9 +634,13 @@ public class ReportGenerator
|
||||
catch (IOException e)
|
||||
{
|
||||
System.out.println("Failed to read input file: " + input);
|
||||
System.exit(0);
|
||||
return;
|
||||
}
|
||||
|
||||
// first initialise a date format object to do our date processing
|
||||
// if necessary
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("dd'/'MM'/'yyyy");
|
||||
|
||||
// FIXME: although this works, it is not very elegant
|
||||
// loop through the aggregator file and read in the values
|
||||
while ((record = br.readLine()) != null)
|
||||
@@ -699,64 +687,48 @@ public class ReportGenerator
|
||||
}
|
||||
|
||||
// if the line is real, then we carry on
|
||||
|
||||
// first initialise a date format object to do our date processing
|
||||
// if necessary
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("dd'/'MM'/'yyyy");
|
||||
|
||||
// read the analysis contents in
|
||||
if (section.equals("archive"))
|
||||
{
|
||||
archiveStats.put(key, value);
|
||||
}
|
||||
|
||||
if (section.equals("action"))
|
||||
else if (section.equals("action"))
|
||||
{
|
||||
actionAggregator.put(key, value);
|
||||
}
|
||||
|
||||
if (section.equals("user"))
|
||||
else if (section.equals("user"))
|
||||
{
|
||||
userAggregator.put(key, value);
|
||||
}
|
||||
|
||||
if (section.equals("search"))
|
||||
else if (section.equals("search"))
|
||||
{
|
||||
searchAggregator.put(key, value);
|
||||
}
|
||||
|
||||
if (section.equals("item"))
|
||||
else if (section.equals("item"))
|
||||
{
|
||||
itemAggregator.put(key, value);
|
||||
}
|
||||
|
||||
// read the config details used to make this report in
|
||||
if (section.equals("user_email"))
|
||||
else if (section.equals("user_email"))
|
||||
{
|
||||
userEmail = value;
|
||||
}
|
||||
|
||||
if (section.equals("item_floor"))
|
||||
else if (section.equals("item_floor"))
|
||||
{
|
||||
itemFloor = Integer.parseInt(value);
|
||||
}
|
||||
|
||||
if (section.equals("search_floor"))
|
||||
else if (section.equals("search_floor"))
|
||||
{
|
||||
searchFloor = Integer.parseInt(value);
|
||||
}
|
||||
|
||||
if (section.equals("host_url"))
|
||||
else if (section.equals("host_url"))
|
||||
{
|
||||
url = value;
|
||||
}
|
||||
|
||||
if (section.equals("item_lookup"))
|
||||
else if (section.equals("item_lookup"))
|
||||
{
|
||||
itemLookup = Integer.parseInt(value);
|
||||
}
|
||||
|
||||
if (section.equals("avg_item_views"))
|
||||
else if (section.equals("avg_item_views"))
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -767,43 +739,35 @@ public class ReportGenerator
|
||||
avgItemViews = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (section.equals("server_name"))
|
||||
else if (section.equals("server_name"))
|
||||
{
|
||||
serverName = value;
|
||||
}
|
||||
|
||||
if (section.equals("service_name"))
|
||||
else if (section.equals("service_name"))
|
||||
{
|
||||
name = value;
|
||||
}
|
||||
|
||||
if (section.equals("start_date"))
|
||||
else if (section.equals("start_date"))
|
||||
{
|
||||
startDate = sdf.parse(value);
|
||||
}
|
||||
|
||||
if (section.equals("end_date"))
|
||||
else if (section.equals("end_date"))
|
||||
{
|
||||
endDate = sdf.parse(value);
|
||||
}
|
||||
|
||||
if (section.equals("analysis_process_time"))
|
||||
else if (section.equals("analysis_process_time"))
|
||||
{
|
||||
processTime = Integer.parseInt(value);
|
||||
}
|
||||
|
||||
if (section.equals("general_summary"))
|
||||
else if (section.equals("general_summary"))
|
||||
{
|
||||
generalSummary.add(value);
|
||||
}
|
||||
|
||||
if (section.equals("log_lines"))
|
||||
else if (section.equals("log_lines"))
|
||||
{
|
||||
logLines = Integer.parseInt(value);
|
||||
}
|
||||
|
||||
if (section.equals("warnings"))
|
||||
else if (section.equals("warnings"))
|
||||
{
|
||||
warnings = Integer.parseInt(value);
|
||||
}
|
||||
|
@@ -0,0 +1,397 @@
|
||||
/*
|
||||
* StatisticsLoader.java
|
||||
*
|
||||
* Version: $Revision: 1.0 $
|
||||
*
|
||||
* Date: $Date: 2007/08/28 10:00:00 $
|
||||
*
|
||||
* Copyright (c) 2002-2005, Hewlett-Packard Company and Massachusetts
|
||||
* Institute of Technology. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* - Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* - Neither the name of the Hewlett-Packard Company nor the name of the
|
||||
* Massachusetts Institute of Technology nor the names of their
|
||||
* contributors may be used to endorse or promote products derived from
|
||||
* this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
||||
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
||||
* DAMAGE.
|
||||
*/
|
||||
|
||||
package org.dspace.app.statistics;
|
||||
|
||||
import org.apache.commons.lang.time.DateUtils;
|
||||
import org.dspace.core.ConfigurationManager;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.regex.Matcher;
|
||||
import java.io.File;
|
||||
import java.io.FilenameFilter;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.text.ParseException;
|
||||
|
||||
/**
|
||||
* Helper class for loading the analysis / report files from the reports directory
|
||||
*/
|
||||
public class StatisticsLoader
|
||||
{
|
||||
private static Map<String, StatsFile> monthlyAnalysis = null;
|
||||
private static Map<String, StatsFile> monthlyReports = null;
|
||||
|
||||
private static StatsFile generalAnalysis = null;
|
||||
private static StatsFile generalReport = null;
|
||||
|
||||
private static Date lastLoaded = null;
|
||||
private static int fileCount = 0;
|
||||
|
||||
private static Pattern analysisMonthlyPattern;
|
||||
private static Pattern analysisGeneralPattern;
|
||||
private static Pattern reportMonthlyPattern;
|
||||
private static Pattern reportGeneralPattern;
|
||||
|
||||
private static SimpleDateFormat monthlySDF;
|
||||
private static SimpleDateFormat generalSDF;
|
||||
|
||||
// one time initialisation of the regex patterns and formatters we will use
|
||||
static
|
||||
{
|
||||
analysisMonthlyPattern = Pattern.compile("dspace-log-monthly-([0-9][0-9][0-9][0-9]-[0-9]+)\\.dat");
|
||||
analysisGeneralPattern = Pattern.compile("dspace-log-general-([0-9]+-[0-9]+-[0-9]+)\\.dat");
|
||||
reportMonthlyPattern = Pattern.compile("report-([0-9][0-9][0-9][0-9]-[0-9]+)\\.html");
|
||||
reportGeneralPattern = Pattern.compile("report-general-([0-9]+-[0-9]+-[0-9]+)\\.html");
|
||||
|
||||
monthlySDF = new SimpleDateFormat("yyyy'-'M");
|
||||
generalSDF = new SimpleDateFormat("yyyy'-'M'-'dd");
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an array of the dates of the report files
|
||||
* @return
|
||||
*/
|
||||
public static Date[] getMonthlyReportDates()
|
||||
{
|
||||
return sortDatesDescending(getDatesFromMap(monthlyReports));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an array of the dates of the analysis files
|
||||
* @return
|
||||
*/
|
||||
public static Date[] getMonthlyAnalysisDates()
|
||||
{
|
||||
return sortDatesDescending(getDatesFromMap(monthlyAnalysis));
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert the formatted dates that are the keys of the map into a date array
|
||||
* @param monthlyMap
|
||||
* @return
|
||||
*/
|
||||
protected static Date[] getDatesFromMap(Map<String, StatsFile> monthlyMap)
|
||||
{
|
||||
Set<String> keys = monthlyMap.keySet();
|
||||
Date[] dates = new Date[keys.size()];
|
||||
int i = 0;
|
||||
for (String date : keys)
|
||||
{
|
||||
try
|
||||
{
|
||||
dates[i] = monthlySDF.parse(date);
|
||||
}
|
||||
catch (ParseException pe)
|
||||
{
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
return dates;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sort the date array in descending (reverse chronological) order
|
||||
* @param dates
|
||||
* @return
|
||||
*/
|
||||
protected static Date[] sortDatesDescending(Date[] dates)
|
||||
{
|
||||
Arrays.sort(dates, new Comparator<Date>() {
|
||||
SimpleDateFormat sdf = monthlySDF;
|
||||
public int compare(Date d1, Date d2)
|
||||
{
|
||||
if (d1 == null && d2 == null)
|
||||
return 0;
|
||||
else if (d1 == null)
|
||||
return -1;
|
||||
else if (d2 == null)
|
||||
return 1;
|
||||
else if (d1.before(d2))
|
||||
return 1;
|
||||
else if (d2.before(d1))
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
});
|
||||
return dates;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the analysis file for a given date
|
||||
* @param date
|
||||
* @return
|
||||
*/
|
||||
public static File getAnalysisFor(String date)
|
||||
{
|
||||
StatisticsLoader.syncFileList();
|
||||
StatsFile sf = (monthlyAnalysis == null ? null : monthlyAnalysis.get(date));
|
||||
return sf == null ? null : sf.file;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the report file for a given date
|
||||
* @param date
|
||||
* @return
|
||||
*/
|
||||
public static File getReportFor(String date)
|
||||
{
|
||||
StatisticsLoader.syncFileList();
|
||||
StatsFile sf = (monthlyReports == null ? null : monthlyReports.get(date));
|
||||
return sf == null ? null : sf.file;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the current general analysis file
|
||||
* @return
|
||||
*/
|
||||
public static File getGeneralAnalysis()
|
||||
{
|
||||
StatisticsLoader.syncFileList();
|
||||
return generalAnalysis == null ? null : generalAnalysis.file;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the current general report file
|
||||
* @return
|
||||
*/
|
||||
public static File getGeneralReport()
|
||||
{
|
||||
StatisticsLoader.syncFileList();
|
||||
return generalReport == null ? null : generalReport.file;
|
||||
}
|
||||
|
||||
/**
|
||||
* Syncronize the cached list of analysis / report files with the reports directory
|
||||
*
|
||||
* We synchronize if:
|
||||
*
|
||||
* 1) The number of files is different (ie. files have been added or removed)
|
||||
* 2) We haven't cached anything yet
|
||||
* 3) The cache was last generate over an hour ago
|
||||
*/
|
||||
private static void syncFileList()
|
||||
{
|
||||
// Get an array of all the analysis and report files present
|
||||
File[] fileList = StatisticsLoader.getAnalysisAndReportFileList();
|
||||
|
||||
if (fileList != null && fileList.length != fileCount)
|
||||
StatisticsLoader.loadFileList(fileList);
|
||||
else if (lastLoaded == null)
|
||||
StatisticsLoader.loadFileList(fileList);
|
||||
else if (DateUtils.addHours(lastLoaded, 1).before(new Date()))
|
||||
StatisticsLoader.loadFileList(fileList);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate the cached file list from the array of files
|
||||
* @param fileList
|
||||
*/
|
||||
private static synchronized void loadFileList(File[] fileList)
|
||||
{
|
||||
// If we haven't been passed an array of files, get one now
|
||||
if (fileList == null || fileList.length == 0)
|
||||
{
|
||||
fileList = StatisticsLoader.getAnalysisAndReportFileList();
|
||||
}
|
||||
|
||||
// Create new maps for the monthly analyis / reports
|
||||
Map<String, StatsFile> newMonthlyAnalysis = new HashMap<String, StatsFile>();
|
||||
Map<String, StatsFile> newMonthlyReports = new HashMap<String, StatsFile>();
|
||||
|
||||
StatsFile newGeneralAnalysis = null;
|
||||
StatsFile newGeneralReport = null;
|
||||
|
||||
if (fileList != null)
|
||||
{
|
||||
for (File thisFile : fileList)
|
||||
{
|
||||
StatsFile statsFile = null;
|
||||
|
||||
// If we haven't identified this file yet
|
||||
if (statsFile == null)
|
||||
{
|
||||
// See if it is a monthly analysis file
|
||||
statsFile = makeStatsFile(thisFile, analysisMonthlyPattern, monthlySDF);
|
||||
if (statsFile != null)
|
||||
{
|
||||
// If it is, add it to the map
|
||||
newMonthlyAnalysis.put(statsFile.dateStr, statsFile);
|
||||
}
|
||||
}
|
||||
|
||||
// If we haven't identified this file yet
|
||||
if (statsFile == null)
|
||||
{
|
||||
// See if it is a monthly report file
|
||||
statsFile = makeStatsFile(thisFile, reportMonthlyPattern, monthlySDF);
|
||||
if (statsFile != null)
|
||||
{
|
||||
// If it is, add it to the map
|
||||
newMonthlyReports.put(statsFile.dateStr, statsFile);
|
||||
}
|
||||
}
|
||||
|
||||
// If we haven't identified this file yet
|
||||
if (statsFile == null)
|
||||
{
|
||||
// See if it is a general analysis file
|
||||
statsFile = makeStatsFile(thisFile, analysisGeneralPattern, generalSDF);
|
||||
if (statsFile != null)
|
||||
{
|
||||
// If it is, ensure that we are pointing to the most recent file
|
||||
if (newGeneralAnalysis == null || statsFile.date.after(newGeneralAnalysis.date))
|
||||
{
|
||||
newGeneralAnalysis = statsFile;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If we haven't identified this file yet
|
||||
if (statsFile == null)
|
||||
{
|
||||
// See if it is a general report file
|
||||
statsFile = makeStatsFile(thisFile, reportGeneralPattern, generalSDF);
|
||||
if (statsFile != null)
|
||||
{
|
||||
// If it is, ensure that we are pointing to the most recent file
|
||||
if (newGeneralReport == null || statsFile.date.after(newGeneralReport.date))
|
||||
{
|
||||
newGeneralReport = statsFile;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Store the newly discovered values in the member cache
|
||||
monthlyAnalysis = newMonthlyAnalysis;
|
||||
monthlyReports = newMonthlyReports;
|
||||
generalAnalysis = newGeneralAnalysis;
|
||||
generalReport = newGeneralReport;
|
||||
lastLoaded = new Date();
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate a StatsFile entry for this file. The pattern and date formatters are used to
|
||||
* identify the file as a particular type, and extract the relevant information.
|
||||
* If the file is not identified by the formatter provided, then we return null
|
||||
* @param thisFile
|
||||
* @param thisPattern
|
||||
* @param sdf
|
||||
* @return
|
||||
*/
|
||||
private static StatsFile makeStatsFile(File thisFile, Pattern thisPattern, SimpleDateFormat sdf)
|
||||
{
|
||||
Matcher matcher = thisPattern.matcher(thisFile.getName());
|
||||
if (matcher.matches())
|
||||
{
|
||||
StatsFile sf = new StatsFile();
|
||||
sf.file = thisFile;
|
||||
sf.path = thisFile.getPath();
|
||||
sf.dateStr = matcher.group(1).trim();
|
||||
|
||||
try
|
||||
{
|
||||
sf.date = sdf.parse(sf.dateStr);
|
||||
}
|
||||
catch (ParseException e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
return sf;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an array of all the analysis and report files
|
||||
* @return
|
||||
*/
|
||||
private static File[] getAnalysisAndReportFileList()
|
||||
{
|
||||
File reportDir = new File(ConfigurationManager.getProperty("report.dir"));
|
||||
if (reportDir != null)
|
||||
{
|
||||
return reportDir.listFiles(new AnalysisAndReportFilter());
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Simple class for holding information about an analysis/report file
|
||||
*/
|
||||
private static class StatsFile
|
||||
{
|
||||
File file;
|
||||
String path;
|
||||
Date date;
|
||||
String dateStr;
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter used to restrict files in the reports directory to just analysis or report types
|
||||
*/
|
||||
private static class AnalysisAndReportFilter implements FilenameFilter
|
||||
{
|
||||
public boolean accept(File dir, String name)
|
||||
{
|
||||
if (analysisMonthlyPattern.matcher(name).matches())
|
||||
return true;
|
||||
|
||||
if (analysisGeneralPattern.matcher(name).matches())
|
||||
return true;
|
||||
|
||||
if (reportMonthlyPattern.matcher(name).matches())
|
||||
return true;
|
||||
|
||||
if (reportGeneralPattern.matcher(name).matches())
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
@@ -73,10 +73,10 @@ import java.sql.SQLException;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
* Create the navigation options for everything in the administrative aspects. This includes
|
||||
*
|
||||
* Create the navigation options for everything in the administrative aspects. This includes
|
||||
* Epeople, group, item, access control, and registry management.
|
||||
*
|
||||
*
|
||||
* @author Scott Phillips
|
||||
* @author Afonso Araujo Neto (internationalization)
|
||||
* @author Alexey Maslov
|
||||
@@ -108,27 +108,29 @@ public class Navigation extends AbstractDSpaceTransformer implements CacheablePr
|
||||
private static final Message T_context_export_collection = message("xmlui.administrative.Navigation.context_export_collection");
|
||||
private static final Message T_context_export_community = message("xmlui.administrative.Navigation.context_export_community");
|
||||
private static final Message T_account_export = message("xmlui.administrative.Navigation.account_export");
|
||||
|
||||
|
||||
|
||||
private static final Message T_statistics = message("xmlui.administrative.Navigation.statistics");
|
||||
|
||||
|
||||
/** exports available for download */
|
||||
java.util.List<String> availableExports = null;
|
||||
|
||||
/** Cached validity object */
|
||||
private SourceValidity validity;
|
||||
|
||||
|
||||
/**
|
||||
* Generate the unique cache key.
|
||||
*
|
||||
* @return The generated key hashes the src
|
||||
*/
|
||||
public Serializable getKey()
|
||||
public Serializable getKey()
|
||||
{
|
||||
Request request = ObjectModelHelper.getRequest(objectModel);
|
||||
|
||||
// Special case, don't cache anything if the user is logging
|
||||
|
||||
// Special case, don't cache anything if the user is logging
|
||||
// in. The problem occures because of timming, this cache key
|
||||
// is generated before we know whether the operation has
|
||||
// succeded or failed. So we don't know whether to cache this
|
||||
// is generated before we know whether the operation has
|
||||
// succeded or failed. So we don't know whether to cache this
|
||||
// under the user's specific cache or under the anonymous user.
|
||||
if (request.getParameter("login_email") != null ||
|
||||
request.getParameter("login_password") != null ||
|
||||
@@ -136,7 +138,7 @@ public class Navigation extends AbstractDSpaceTransformer implements CacheablePr
|
||||
{
|
||||
return "0";
|
||||
}
|
||||
|
||||
|
||||
String key;
|
||||
if (context.getCurrentUser() != null)
|
||||
{
|
||||
@@ -149,17 +151,17 @@ public class Navigation extends AbstractDSpaceTransformer implements CacheablePr
|
||||
}
|
||||
else
|
||||
key = "anonymous";
|
||||
|
||||
|
||||
return HashUtil.hash(key);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Generate the validity object.
|
||||
*
|
||||
* @return The generated validity object or <code>null</code> if the
|
||||
* component is currently not cacheable.
|
||||
*/
|
||||
public SourceValidity getValidity()
|
||||
public SourceValidity getValidity()
|
||||
{
|
||||
if (this.validity == null)
|
||||
{
|
||||
@@ -168,17 +170,17 @@ public class Navigation extends AbstractDSpaceTransformer implements CacheablePr
|
||||
{
|
||||
try {
|
||||
DSpaceValidity validity = new DSpaceValidity();
|
||||
|
||||
|
||||
validity.add(eperson);
|
||||
|
||||
|
||||
Group[] groups = Group.allMemberGroups(context, eperson);
|
||||
for (Group group : groups)
|
||||
{
|
||||
validity.add(group);
|
||||
}
|
||||
|
||||
|
||||
this.validity = validity.complete();
|
||||
}
|
||||
}
|
||||
catch (SQLException sqle)
|
||||
{
|
||||
// Just ignore it and return invalid.
|
||||
@@ -191,8 +193,8 @@ public class Navigation extends AbstractDSpaceTransformer implements CacheablePr
|
||||
}
|
||||
return this.validity;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public void setup(SourceResolver resolver, Map objectModel, String src, Parameters parameters) throws ProcessingException, SAXException, IOException {
|
||||
super.setup(resolver, objectModel, src, parameters);
|
||||
try{
|
||||
@@ -202,12 +204,12 @@ public class Navigation extends AbstractDSpaceTransformer implements CacheablePr
|
||||
// nothing to do
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void addOptions(Options options) throws SAXException, WingException,
|
||||
UIException, SQLException, IOException, AuthorizeException
|
||||
{
|
||||
/* Create skeleton menu structure to ensure consistent order between aspects,
|
||||
* even if they are never used
|
||||
* even if they are never used
|
||||
*/
|
||||
options.addList("browse");
|
||||
List account = options.addList("account");
|
||||
@@ -223,7 +225,7 @@ public class Navigation extends AbstractDSpaceTransformer implements CacheablePr
|
||||
DSpaceObject dso = URIUtil.resolve(objectModel);
|
||||
if (dso instanceof Item)
|
||||
{
|
||||
|
||||
|
||||
Item item = (Item) dso;
|
||||
if (item.canEdit())
|
||||
{
|
||||
@@ -235,83 +237,84 @@ public class Navigation extends AbstractDSpaceTransformer implements CacheablePr
|
||||
else if (dso instanceof Collection)
|
||||
{
|
||||
Collection collection = (Collection) dso;
|
||||
|
||||
|
||||
|
||||
|
||||
// can they admin this collection?
|
||||
if (AuthorizeManager.authorizeActionBoolean(this.context, collection, Constants.COLLECTION_ADMIN))
|
||||
{
|
||||
context.setHead(T_context_head);
|
||||
context.addItemXref(contextPath+"/admin/collection?collectionID=" + collection.getID(), T_context_edit_collection);
|
||||
context.addItemXref(contextPath+"/admin/mapper?collectionID="+collection.getID(), T_context_item_mapper);
|
||||
context.addItemXref(contextPath+"/admin/collection?collectionID=" + collection.getID(), T_context_edit_collection);
|
||||
context.addItemXref(contextPath+"/admin/mapper?collectionID="+collection.getID(), T_context_item_mapper);
|
||||
context.addItem().addXref(contextPath+"/admin/export?collectionID="+collection.getID(), T_context_export_collection );
|
||||
}
|
||||
}
|
||||
else if (dso instanceof Community)
|
||||
{
|
||||
Community community = (Community) dso;
|
||||
|
||||
|
||||
// can they admin this collection?
|
||||
if (community.canEditBoolean())
|
||||
{
|
||||
context.setHead(T_context_head);
|
||||
context.addItemXref(contextPath+"/admin/community?communityID=" + community.getID(), T_context_edit_community);
|
||||
context.addItemXref(contextPath+"/admin/community?communityID=" + community.getID(), T_context_edit_community);
|
||||
context.addItem().addXref(contextPath+"/admin/export?communityID="+community.getID(), T_context_export_community );
|
||||
}
|
||||
|
||||
|
||||
// can they add to this community?
|
||||
if (AuthorizeManager.authorizeActionBoolean(this.context, community,Constants.ADD))
|
||||
{
|
||||
context.setHead(T_context_head);
|
||||
context.addItemXref(contextPath+"/admin/collection?createNew&communityID=" + community.getID(), T_context_create_collection);
|
||||
context.addItemXref(contextPath+"/admin/collection?createNew&communityID=" + community.getID(), T_context_create_collection);
|
||||
}
|
||||
|
||||
|
||||
// Only administrators can create communities
|
||||
if (AuthorizeManager.isAdmin(this.context))
|
||||
{
|
||||
context.setHead(T_context_head);
|
||||
context.addItemXref(contextPath+"/admin/community?createNew&communityID=" + community.getID(), T_context_create_subcommunity);
|
||||
context.addItemXref(contextPath+"/admin/community?createNew&communityID=" + community.getID(), T_context_create_subcommunity);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ("community-list".equals(this.sitemapURI))
|
||||
{
|
||||
if (AuthorizeManager.isAdmin(this.context))
|
||||
{
|
||||
context.setHead(T_context_head);
|
||||
context.addItemXref(contextPath+"/admin/community?createNew", T_context_create_community);
|
||||
context.addItemXref(contextPath+"/admin/community?createNew", T_context_create_community);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// System Administrator options!
|
||||
if (AuthorizeManager.isAdmin(this.context))
|
||||
{
|
||||
admin.setHead(T_administrative_head);
|
||||
|
||||
|
||||
List epeople = admin.addList("epeople");
|
||||
List registries = admin.addList("registries");
|
||||
|
||||
epeople.setHead(T_administrative_access_control);
|
||||
epeople.addItemXref(contextPath+"/admin/epeople", T_administrative_people);
|
||||
epeople.addItemXref(contextPath+"/admin/groups", T_administrative_groups);
|
||||
epeople.addItemXref(contextPath+"/admin/authorize", T_administrative_authorizations);
|
||||
|
||||
registries.setHead(T_administrative_registries);
|
||||
registries.addItemXref(contextPath+"/admin/metadata-registry",T_administrative_metadata);
|
||||
registries.addItemXref(contextPath+"/admin/format-registry",T_administrative_format);
|
||||
|
||||
admin.addItemXref(contextPath+"/admin/item", T_administrative_items);
|
||||
admin.addItemXref(contextPath+"/admin/withdrawn", T_administrative_withdrawn);
|
||||
|
||||
epeople.setHead(T_administrative_access_control);
|
||||
epeople.addItemXref(contextPath+"/admin/epeople", T_administrative_people);
|
||||
epeople.addItemXref(contextPath+"/admin/groups", T_administrative_groups);
|
||||
epeople.addItemXref(contextPath+"/admin/authorize", T_administrative_authorizations);
|
||||
|
||||
registries.setHead(T_administrative_registries);
|
||||
registries.addItemXref(contextPath+"/admin/metadata-registry",T_administrative_metadata);
|
||||
registries.addItemXref(contextPath+"/admin/format-registry",T_administrative_format);
|
||||
|
||||
admin.addItemXref(contextPath+"/admin/item", T_administrative_items);
|
||||
admin.addItemXref(contextPath+"/admin/withdrawn", T_administrative_withdrawn);
|
||||
admin.addItemXref(contextPath+"/admin/panel", T_administrative_control_panel);
|
||||
admin.addItemXref(contextPath+"/statistics", T_statistics);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public int addContextualOptions(List context) throws SQLException, WingException
|
||||
{
|
||||
// How many options were added.
|
||||
int options = 0;
|
||||
|
||||
|
||||
DSpaceObject dso = URIUtil.resolve(objectModel);
|
||||
|
||||
if (dso instanceof Item)
|
||||
|
@@ -88,18 +88,6 @@ public class Navigation extends AbstractDSpaceTransformer implements CacheablePr
|
||||
private static final Message T_communities_and_collections =
|
||||
message("xmlui.ArtifactBrowser.Navigation.communities_and_collections");
|
||||
|
||||
private static final Message T_browse_titles =
|
||||
message("xmlui.ArtifactBrowser.Navigation.browse_titles");
|
||||
|
||||
private static final Message T_browse_authors =
|
||||
message("xmlui.ArtifactBrowser.Navigation.browse_authors");
|
||||
|
||||
private static final Message T_browse_subjects =
|
||||
message("xmlui.ArtifactBrowser.Navigation.browse_subjects");
|
||||
|
||||
private static final Message T_browse_dates =
|
||||
message("xmlui.ArtifactBrowser.Navigation.browse_dates");
|
||||
|
||||
private static final Message T_head_this_collection =
|
||||
message("xmlui.ArtifactBrowser.Navigation.head_this_collection");
|
||||
|
||||
|
@@ -0,0 +1,640 @@
|
||||
/*
|
||||
* Statistics.java
|
||||
*
|
||||
* Version: $Revision: 1.0 $
|
||||
*
|
||||
* Date: $Date: 2007/08/28 10:00:00 $
|
||||
*
|
||||
* Copyright (c) 2002-2005, Hewlett-Packard Company and Massachusetts
|
||||
* Institute of Technology. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* - Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* - Neither the name of the Hewlett-Packard Company nor the name of the
|
||||
* Massachusetts Institute of Technology nor the names of their
|
||||
* contributors may be used to endorse or promote products derived from
|
||||
* this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
||||
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
||||
* DAMAGE.
|
||||
*/
|
||||
|
||||
package org.dspace.app.xmlui.aspect.artifactbrowser;
|
||||
|
||||
import org.dspace.app.xmlui.cocoon.AbstractDSpaceTransformer;
|
||||
import org.dspace.app.xmlui.wing.element.*;
|
||||
import org.dspace.app.xmlui.wing.element.List;
|
||||
import org.dspace.app.xmlui.wing.WingException;
|
||||
import org.dspace.app.xmlui.wing.Message;
|
||||
import org.dspace.app.xmlui.utils.UIException;
|
||||
import org.dspace.app.xmlui.utils.DSpaceValidity;
|
||||
import org.dspace.app.statistics.*;
|
||||
import org.dspace.authorize.AuthorizeException;
|
||||
import org.dspace.authorize.AuthorizeManager;
|
||||
import org.dspace.core.ConfigurationManager;
|
||||
import org.apache.cocoon.caching.CacheableProcessingComponent;
|
||||
import org.apache.cocoon.environment.Request;
|
||||
import org.apache.cocoon.environment.ObjectModelHelper;
|
||||
import org.apache.excalibur.source.SourceValidity;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
import java.io.*;
|
||||
import java.io.File;
|
||||
import java.sql.SQLException;
|
||||
import java.util.*;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.regex.Matcher;
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.text.ParseException;
|
||||
|
||||
/**
|
||||
* Transformer to display statistics data in XML UI.
|
||||
*
|
||||
* Unlike the JSP interface that pre-generates HTML and stores in the reports folder,
|
||||
* this class transforms the raw analysis data into a Wing representation
|
||||
*/
|
||||
public class StatisticsViewer extends AbstractDSpaceTransformer implements CacheableProcessingComponent
|
||||
{
|
||||
private final static Logger log = Logger.getLogger(StatisticsViewer.class);
|
||||
|
||||
private final static Message T_dspace_home = message("xmlui.general.dspace_home");
|
||||
|
||||
private final static Message T_choose_report = message("xmlui.ArtifactBrowser.StatisticsViewer.choose_month");
|
||||
private final static Message T_page_title = message("xmlui.ArtifactBrowser.StatisticsViewer.report.title");
|
||||
|
||||
private final static Message T_empty_title = message("xmlui.ArtifactBrowser.StatisticsViewer.no_report.title");
|
||||
private final static Message T_empty_text = message("xmlui.ArtifactBrowser.StatisticsViewer.no_report.text");
|
||||
|
||||
private final static SimpleDateFormat sdfDisplay = new SimpleDateFormat("MM'/'yyyy");
|
||||
private final static SimpleDateFormat sdfLink = new SimpleDateFormat("yyyy'-'M");
|
||||
|
||||
private boolean initialised = false;
|
||||
private String reportDate = null;
|
||||
private SourceValidity validity;
|
||||
|
||||
/**
|
||||
* Get the caching key for this report
|
||||
* @return
|
||||
*/
|
||||
public Serializable getKey()
|
||||
{
|
||||
initialise();
|
||||
|
||||
if (reportDate != null)
|
||||
return reportDate;
|
||||
|
||||
return "general";
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate the validity for this cached entry
|
||||
* @return
|
||||
*/
|
||||
public SourceValidity getValidity()
|
||||
{
|
||||
if (validity == null)
|
||||
{
|
||||
try
|
||||
{
|
||||
initialise();
|
||||
boolean showReport = ConfigurationManager.getBooleanProperty("report.public");
|
||||
|
||||
// If the report isn't public
|
||||
if (!showReport)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Administrators can always view reports
|
||||
showReport = AuthorizeManager.isAdmin(context);
|
||||
}
|
||||
catch (SQLException sqle)
|
||||
{
|
||||
log.error("Unable to check for administrator", sqle);
|
||||
}
|
||||
}
|
||||
|
||||
// Only generate a validity if the report is visible
|
||||
if (showReport)
|
||||
{
|
||||
File analysisFile = null;
|
||||
|
||||
// Get a file for the report data
|
||||
if (reportDate != null)
|
||||
analysisFile = StatisticsLoader.getAnalysisFor(reportDate);
|
||||
else
|
||||
analysisFile = StatisticsLoader.getGeneralAnalysis();
|
||||
|
||||
if (analysisFile != null)
|
||||
{
|
||||
// Generate the validity based on the properties of the report data file
|
||||
DSpaceValidity newValidity = new DSpaceValidity();
|
||||
newValidity.add(Long.toString(analysisFile.lastModified()));
|
||||
newValidity.add("-");
|
||||
newValidity.add(Long.toString(analysisFile.length()));
|
||||
validity = newValidity.complete();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return validity;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add additional navigation options. This is to allow selection of a monthly report
|
||||
*
|
||||
* @param options
|
||||
* @throws SAXException
|
||||
* @throws WingException
|
||||
* @throws UIException
|
||||
* @throws SQLException
|
||||
* @throws IOException
|
||||
* @throws AuthorizeException
|
||||
*/
|
||||
public void addOptions(Options options) throws SAXException, WingException,
|
||||
UIException, SQLException, IOException, AuthorizeException
|
||||
{
|
||||
Date[] monthlyDates = StatisticsLoader.getMonthlyAnalysisDates();
|
||||
|
||||
if (monthlyDates != null && monthlyDates.length > 0)
|
||||
{
|
||||
List statList = options.addList("statsreports");
|
||||
statList.setHead(T_choose_report);
|
||||
|
||||
HashMap<String, String> params = new HashMap<String, String>();
|
||||
for (Date date : monthlyDates)
|
||||
{
|
||||
params.put("date", sdfLink.format(date));
|
||||
statList.addItemXref(super.generateURL("statistics", params), sdfDisplay.format(date));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add title, etc. metadata
|
||||
*
|
||||
* @param pageMeta
|
||||
* @throws SAXException
|
||||
* @throws WingException
|
||||
* @throws UIException
|
||||
* @throws SQLException
|
||||
* @throws IOException
|
||||
* @throws AuthorizeException
|
||||
*/
|
||||
public void addPageMeta(PageMeta pageMeta) throws SAXException, WingException, UIException,
|
||||
SQLException, IOException, AuthorizeException
|
||||
{
|
||||
initialise();
|
||||
|
||||
pageMeta.addMetadata("title").addContent(T_page_title);
|
||||
pageMeta.addTrailLink(contextPath + "/", T_dspace_home);
|
||||
pageMeta.addTrail().addContent(T_page_title);
|
||||
}
|
||||
|
||||
/**
|
||||
* Output the body of the report
|
||||
*
|
||||
* @param body
|
||||
* @throws SAXException
|
||||
* @throws WingException
|
||||
* @throws UIException
|
||||
* @throws SQLException
|
||||
* @throws IOException
|
||||
* @throws AuthorizeException
|
||||
*/
|
||||
public void addBody(Body body) throws SAXException, WingException, UIException, SQLException,
|
||||
IOException, AuthorizeException
|
||||
{
|
||||
initialise();
|
||||
boolean publicise = ConfigurationManager.getBooleanProperty("report.public");
|
||||
|
||||
// Check that the reports are either public, or user is an administrator
|
||||
if (!publicise && !AuthorizeManager.isAdmin(context))
|
||||
throw new AuthorizeException();
|
||||
|
||||
// Retrieve the report data to display
|
||||
File analysisFile;
|
||||
if (reportDate != null)
|
||||
analysisFile = StatisticsLoader.getAnalysisFor(reportDate);
|
||||
else
|
||||
analysisFile = StatisticsLoader.getGeneralAnalysis();
|
||||
|
||||
// Create the renderer for the results
|
||||
Division div = body.addDivision("statistics", "primary");
|
||||
|
||||
if (analysisFile != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Generate the XML stream
|
||||
Report myRep = new XMLUIReport(div);
|
||||
ReportGenerator.processReport(context, myRep, analysisFile.getCanonicalPath());
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new UIException(e);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
div.setHead(T_empty_title);
|
||||
div.addPara(T_empty_text);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialise the member variables from the request
|
||||
*/
|
||||
private void initialise()
|
||||
{
|
||||
if (!initialised)
|
||||
{
|
||||
Request request = ObjectModelHelper.getRequest(objectModel);
|
||||
reportDate = (String) request.getParameter("date");
|
||||
|
||||
initialised = true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear the member variables so that the instance can be reused
|
||||
*/
|
||||
public void recycle()
|
||||
{
|
||||
initialised = false;
|
||||
reportDate = null;
|
||||
validity = null;
|
||||
super.recycle();
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementation of the Report interface, to output the statistics data for xmlui
|
||||
* Note that all methods that return Strings return 'null' in this implementation, as
|
||||
* all the outputting is done directly using the Wing framework.
|
||||
*/
|
||||
class XMLUIReport implements Report
|
||||
{
|
||||
private ArrayList<Statistics> blocks = new ArrayList<Statistics>();
|
||||
|
||||
private String mainTitle = null;
|
||||
private String pageTitle = null;
|
||||
|
||||
/** start date for report */
|
||||
private Date start = null;
|
||||
|
||||
/** end date for report */
|
||||
private Date end = null;
|
||||
|
||||
private Division rootDiv;
|
||||
private Division currDiv;
|
||||
|
||||
/**
|
||||
* Hide the default constructor, so that you have to pass in a Division
|
||||
*/
|
||||
private XMLUIReport() {}
|
||||
|
||||
/**
|
||||
* Create instance, providing the Wing element that we will be adding to
|
||||
*
|
||||
* @param myDiv
|
||||
*/
|
||||
public XMLUIReport(Division myDiv)
|
||||
{
|
||||
rootDiv = myDiv;
|
||||
currDiv = myDiv;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the header for the report - currently not supported
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public String header()
|
||||
{
|
||||
return header("");
|
||||
}
|
||||
|
||||
// Currently not supported
|
||||
public String header(String title)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the main title to the report
|
||||
* @return
|
||||
*/
|
||||
public String mainTitle()
|
||||
{
|
||||
try
|
||||
{
|
||||
rootDiv.setHead(mainTitle);
|
||||
}
|
||||
catch (WingException we)
|
||||
{
|
||||
log.error("Error creating XML for report", we);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Output the date range for this report
|
||||
* @return
|
||||
*/
|
||||
public String dateRange()
|
||||
{
|
||||
StringBuilder content = new StringBuilder();
|
||||
DateFormat df = DateFormat.getDateInstance();
|
||||
if (start != null)
|
||||
{
|
||||
content.append(df.format(start));
|
||||
}
|
||||
else
|
||||
{
|
||||
content.append("from start of records ");
|
||||
}
|
||||
|
||||
content.append(" to ");
|
||||
|
||||
if (end != null)
|
||||
{
|
||||
content.append(df.format(end));
|
||||
}
|
||||
else
|
||||
{
|
||||
content.append(" end of records");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
rootDiv.addDivision("reportDate").addPara(content.toString());
|
||||
}
|
||||
catch (WingException we)
|
||||
{
|
||||
log.error("Error creating XML for report", we);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Output the section header
|
||||
* @param title
|
||||
* @return
|
||||
*/
|
||||
public String sectionHeader(String title)
|
||||
{
|
||||
try
|
||||
{
|
||||
currDiv.setHead(title);
|
||||
}
|
||||
catch (WingException we)
|
||||
{
|
||||
log.error("Error creating XML for report", we);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Output the current statistics block
|
||||
* @param content
|
||||
* @return
|
||||
*/
|
||||
public String statBlock(Statistics content)
|
||||
{
|
||||
Stat[] stats = content.getStats();
|
||||
try
|
||||
{
|
||||
int rows = stats.length;
|
||||
if (content.getStatName() != null || content.getResultName() != null)
|
||||
rows++;
|
||||
|
||||
Table block = currDiv.addTable("reportBlock", rows, 2);
|
||||
|
||||
// prepare the table headers
|
||||
if (content.getStatName() != null || content.getResultName() != null)
|
||||
{
|
||||
Row row = block.addRow();
|
||||
if (content.getStatName() != null)
|
||||
{
|
||||
row.addCellContent(content.getStatName());
|
||||
}
|
||||
else
|
||||
{
|
||||
row.addCellContent(" ");
|
||||
}
|
||||
|
||||
if (content.getResultName() != null)
|
||||
{
|
||||
row.addCellContent(content.getResultName());
|
||||
}
|
||||
else
|
||||
{
|
||||
row.addCellContent(" ");
|
||||
}
|
||||
}
|
||||
|
||||
// output the statistics in the table
|
||||
for (int i = 0; i < stats.length; i++)
|
||||
{
|
||||
Row row = block.addRow();
|
||||
if (stats[i].getReference() != null)
|
||||
{
|
||||
row.addCell().addXref(stats[i].getReference()).addContent(stats[i].getKey());
|
||||
}
|
||||
else
|
||||
{
|
||||
row.addCell().addContent(stats[i].getKey());
|
||||
}
|
||||
|
||||
if (stats[i].getUnits() != null)
|
||||
{
|
||||
row.addCell(null, null, "right").addContent(stats[i].getValue() + " " + stats[i].getUnits());
|
||||
}
|
||||
else
|
||||
{
|
||||
row.addCell(null, null, "right").addContent(ReportTools.numberFormat(stats[i].getValue()));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (WingException we)
|
||||
{
|
||||
log.error("Error creating XML for report", we);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Output any information about the lower boundary restriction for this section
|
||||
* @param floor
|
||||
* @return
|
||||
*/
|
||||
public String floorInfo(int floor)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (floor > 0)
|
||||
{
|
||||
currDiv.addDivision("reportFloor").addPara("(more than " + ReportTools.numberFormat(floor) + " times)");
|
||||
}
|
||||
}
|
||||
catch (WingException we)
|
||||
{
|
||||
log.error("Error creating XML for report", we);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Output an explanation for this section
|
||||
*
|
||||
* @param explanation
|
||||
* @return
|
||||
*/
|
||||
public String blockExplanation(String explanation)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (explanation != null)
|
||||
{
|
||||
currDiv.addDivision("reportExplanation").addPara(explanation);
|
||||
}
|
||||
}
|
||||
catch (WingException we)
|
||||
{
|
||||
log.error("Error creating XML for report", we);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Output the footer
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public String footer()
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the main title for this report
|
||||
*
|
||||
* @param name
|
||||
* @param serverName
|
||||
*/
|
||||
public void setMainTitle(String name, String serverName)
|
||||
{
|
||||
mainTitle = "Statistics for " + name;
|
||||
|
||||
if (ConfigurationManager.getBooleanProperty("report.show.server", true))
|
||||
mainTitle += " on " + serverName;
|
||||
|
||||
if (pageTitle == null)
|
||||
{
|
||||
pageTitle = mainTitle;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a block to report on
|
||||
*
|
||||
* @param stat
|
||||
*/
|
||||
public void addBlock(Statistics stat)
|
||||
{
|
||||
blocks.add(stat);
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Render the statistics into an XML stream
|
||||
* @return
|
||||
*/
|
||||
public String render()
|
||||
{
|
||||
Pattern space = Pattern.compile(" ");
|
||||
|
||||
// Output the heading information
|
||||
header(pageTitle);
|
||||
mainTitle();
|
||||
dateRange();
|
||||
|
||||
// Loop through all the sections
|
||||
for (Statistics stats : blocks)
|
||||
{
|
||||
// navigation();
|
||||
try
|
||||
{
|
||||
String title = stats.getSectionHeader();
|
||||
String aName = title.toLowerCase();
|
||||
Matcher matchSpace = space.matcher(aName);
|
||||
aName = matchSpace.replaceAll("_");
|
||||
|
||||
// Create a new division for each section
|
||||
currDiv = rootDiv.addDivision(aName);
|
||||
sectionHeader(title);
|
||||
// topLink();
|
||||
blockExplanation(stats.getExplanation());
|
||||
floorInfo(stats.getFloor());
|
||||
statBlock(stats);
|
||||
currDiv = rootDiv;
|
||||
}
|
||||
catch (WingException we)
|
||||
{
|
||||
log.error("Error creating XML for report", we);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the start date for this report
|
||||
* @param start
|
||||
*/
|
||||
public void setStartDate(Date start)
|
||||
{
|
||||
this.start = start;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the end date for this report
|
||||
* @param end
|
||||
*/
|
||||
public void setEndDate(Date end)
|
||||
{
|
||||
this.end = end;
|
||||
}
|
||||
}
|
||||
}
|
@@ -64,15 +64,15 @@ and searching the repository.
|
||||
<map:transformer name="Contact" src="org.dspace.app.xmlui.aspect.artifactbrowser.Contact"/>
|
||||
<map:transformer name="RestrictedItem" src="org.dspace.app.xmlui.aspect.artifactbrowser.RestrictedItem"/>
|
||||
<map:transformer name="FrontPageSearch" src="org.dspace.app.xmlui.aspect.artifactbrowser.FrontPageSearch"/>
|
||||
</map:transformers>
|
||||
|
||||
<map:transformer name="Statistics" src="org.dspace.app.xmlui.aspect.artifactbrowser.StatisticsViewer"/>
|
||||
</map:transformers>
|
||||
|
||||
<map:matchers default="wildcard">
|
||||
<map:matcher name="HandleTypeMatcher" src="org.dspace.app.xmlui.aspect.general.HandleTypeMatcher"/>
|
||||
<map:matcher name="HandleAuthorizedMatcher" src="org.dspace.app.xmlui.aspect.general.HandleAuthorizedMatcher"/>
|
||||
</map:matchers>
|
||||
|
||||
|
||||
|
||||
|
||||
<map:actions>
|
||||
<map:action name="SendFeedbackAction" src="org.dspace.app.xmlui.aspect.artifactbrowser.SendFeedbackAction"/>
|
||||
</map:actions>
|
||||
@@ -81,49 +81,49 @@ and searching the repository.
|
||||
<map:selectors>
|
||||
<map:selector name="AuthenticatedSelector" src="org.dspace.app.xmlui.aspect.general.AuthenticatedSelector"/>
|
||||
</map:selectors>
|
||||
|
||||
|
||||
</map:components>
|
||||
<map:pipelines>
|
||||
<map:pipeline>
|
||||
|
||||
|
||||
|
||||
|
||||
<map:generate/>
|
||||
|
||||
<!--
|
||||
|
||||
<!--
|
||||
Add the basic navigation content to everypage. This includes:
|
||||
|
||||
1) Metadata about the current page (really just what the current
|
||||
|
||||
1) Metadata about the current page (really just what the current
|
||||
context path is)
|
||||
2) Navigation links to browse the repository.
|
||||
- This includes links that are relative to the currently
|
||||
- This includes links that are relative to the currently
|
||||
selected community or collection.
|
||||
3) Metadata about the search urls.
|
||||
-->
|
||||
<map:transform type="Navigation"/>
|
||||
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
Display the DSpace homepage. This includes the news.xml file
|
||||
along with a list of top level communities in DSpace.
|
||||
Display the DSpace homepage. This includes the news.xml file
|
||||
along with a list of top level communities in DSpace.
|
||||
-->
|
||||
<map:match pattern="">
|
||||
<!--
|
||||
<!--
|
||||
DSpacePropertyFileReader will read the DSpace property file and
|
||||
place the selected properties' value in this scope
|
||||
place the selected properties' value in this scope
|
||||
-->
|
||||
<map:act type="DSpacePropertyFileReader">
|
||||
<map:parameter name="dspace.dir" value="dspace.dir" />
|
||||
<map:transform type="Include" src="file://{dspace.dir}/config/news-xmlui.xml" />
|
||||
</map:act>
|
||||
|
||||
<map:transform type="Include" src="file://{dspace.dir}/config/news-xmlui.xml" />
|
||||
</map:act>
|
||||
|
||||
<map:transform type="FrontPageSearch"/>
|
||||
<map:transform type="CommunityBrowser">
|
||||
<map:parameter name="depth" value="1"/>
|
||||
</map:transform>
|
||||
<map:serialize type="xml"/>
|
||||
</map:match>
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- List all communities & collections in DSpace -->
|
||||
<map:match pattern="community-list">
|
||||
<map:transform type="CommunityBrowser">
|
||||
@@ -131,33 +131,33 @@ and searching the repository.
|
||||
</map:transform>
|
||||
<map:serialize type="xml"/>
|
||||
</map:match>
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Search -->
|
||||
<map:match pattern="search">
|
||||
<map:transform type="SimpleSearch"/>
|
||||
<map:serialize type="xml"/>
|
||||
</map:match>
|
||||
</map:match>
|
||||
<map:match pattern="simple-search">
|
||||
<map:transform type="SimpleSearch"/>
|
||||
<map:serialize type="xml"/>
|
||||
</map:match>
|
||||
</map:match>
|
||||
<map:match pattern="advanced-search">
|
||||
<map:transform type="AdvancedSearch"/>
|
||||
<map:serialize type="xml"/>
|
||||
</map:match>
|
||||
|
||||
|
||||
</map:match>
|
||||
|
||||
|
||||
<!-- Browse (by anything) -->
|
||||
<map:match pattern="browse">
|
||||
<map:transform type="ConfigurableBrowse"/>
|
||||
<map:serialize type="xml"/>
|
||||
</map:match>
|
||||
|
||||
|
||||
<!-- restricted resource -->
|
||||
<map:match pattern="restricted-resource">
|
||||
<map:transform type="RestrictedItem"/>
|
||||
<map:serialize type="xml"/>
|
||||
<map:serialize type="xml"/>
|
||||
</map:match>
|
||||
|
||||
<!-- general identifier features -->
|
||||
@@ -244,6 +244,12 @@ and searching the repository.
|
||||
<!-- Handle specific features (legacy) -->
|
||||
<map:match pattern="handle/*/**">
|
||||
|
||||
<!-- Display statistics -->
|
||||
<map:match pattern="statistics">
|
||||
<map:transform type="Statistics"/>
|
||||
<map:serialize type="xml"/>
|
||||
</map:match>
|
||||
|
||||
<!-- Inform the user that the item they are viewing is a restricted resource -->
|
||||
<map:match pattern="handle/*/*/restricted-resource">
|
||||
<map:transform type="RestrictedItem"/>
|
||||
|
@@ -158,14 +158,14 @@
|
||||
<message key="xmlui.ArtifactBrowser.AdvancedSearch.and">AND</message>
|
||||
<message key="xmlui.ArtifactBrowser.AdvancedSearch.or">OR</message>
|
||||
<message key="xmlui.ArtifactBrowser.AdvancedSearch.not">NOT</message>
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.artifactbrowser.ConfigureableBrowse.java -->
|
||||
<message key="xmlui.ArtifactBrowser.ConfigurableBrowse.general.starts_with">Or enter first few letters:</message>
|
||||
<message key="xmlui.ArtifactBrowser.ConfigurableBrowse.general.starts_with_help">Browse for items that begin with these letters</message>
|
||||
<message key="xmlui.ArtifactBrowser.ConfigurableBrowse.general.jump_select">Jump to a point in the index:</message>
|
||||
<message key="xmlui.ArtifactBrowser.ConfigurableBrowse.general.choose_month">(Choose month)</message>
|
||||
<message key="xmlui.ArtifactBrowser.ConfigurableBrowse.general.choose_year">(Choose year)</message>
|
||||
<message key="xmlui.ArtifactBrowser.ConfigurableBrowse.general.jump_select">Jump to a point in the index:</message>
|
||||
<message key="xmlui.ArtifactBrowser.ConfigurableBrowse.general.choose_month">(Choose month)</message>
|
||||
<message key="xmlui.ArtifactBrowser.ConfigurableBrowse.general.choose_year">(Choose year)</message>
|
||||
<message key="xmlui.ArtifactBrowser.ConfigurableBrowse.general.jump_year">Or type in a year: </message>
|
||||
<message key="xmlui.ArtifactBrowser.ConfigurableBrowse.general.jump_year_help">Browse for items that are from the given year.</message>
|
||||
<message key="xmlui.ArtifactBrowser.ConfigurableBrowse.general.sort_by"> Sort by: </message>
|
||||
@@ -190,17 +190,17 @@
|
||||
|
||||
<message key="xmlui.ArtifactBrowser.ConfigurableBrowse.title.metadata.subject">Browsing {0} by Subject {1}</message>
|
||||
<message key="xmlui.ArtifactBrowser.ConfigurableBrowse.trail.metadata.subject">Browsing {0} by Subject</message>
|
||||
|
||||
|
||||
<message key="xmlui.ArtifactBrowser.ConfigurableBrowse.title.item.title">Browsing {0} by Title {1}</message>
|
||||
<message key="xmlui.ArtifactBrowser.ConfigurableBrowse.trail.item.title">Browsing {0} by Title</message>
|
||||
|
||||
|
||||
<message key="xmlui.ArtifactBrowser.ConfigurableBrowse.title.item.dateissued">Browsing {0} by Issue Date {1}</message>
|
||||
<message key="xmlui.ArtifactBrowser.ConfigurableBrowse.trail.item.dateissued">Browsing {0} by Issue Date</message>
|
||||
|
||||
<message key="xmlui.ArtifactBrowser.ConfigurableBrowse.title.item.dateaccessioned">Browsing {0} by Submit Date {1}</message>
|
||||
<message key="xmlui.ArtifactBrowser.ConfigurableBrowse.trail.item.dateaccessioned">Browsing {0} by Submit Date</message>
|
||||
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.artifactbrowser.CollectionViewer.java -->
|
||||
<message key="xmlui.ArtifactBrowser.CollectionViewer.search_scope">Search Scope</message>
|
||||
<message key="xmlui.ArtifactBrowser.CollectionViewer.all_of_dspace">All of DSpace</message>
|
||||
@@ -211,7 +211,7 @@
|
||||
<message key="xmlui.ArtifactBrowser.CollectionViewer.browse_dates">Dates</message>
|
||||
<message key="xmlui.ArtifactBrowser.CollectionViewer.advanced_search_link">Advanced Search</message>
|
||||
<message key="xmlui.ArtifactBrowser.CollectionViewer.head_recent_submissions">Recent Submissions</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.artifactbrowser.CommunityBrowser.java -->
|
||||
<message key="xmlui.ArtifactBrowser.CommunityBrowser.title">Community List</message>
|
||||
<message key="xmlui.ArtifactBrowser.CommunityBrowser.trail">Community List</message>
|
||||
@@ -230,8 +230,8 @@
|
||||
<message key="xmlui.ArtifactBrowser.CommunityViewer.head_sub_communities">Sub-communities within this community</message>
|
||||
<message key="xmlui.ArtifactBrowser.CommunityViewer.head_sub_collections">Collections in this community</message>
|
||||
<message key="xmlui.ArtifactBrowser.CommunityViewer.head_recent_submissions">Recent Submissions</message>
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.artifactbrowser.Contact.java -->
|
||||
<message key="xmlui.ArtifactBrowser.Contact.title">Contact us</message>
|
||||
<message key="xmlui.ArtifactBrowser.Contact.trail">Contact us</message>
|
||||
@@ -240,7 +240,7 @@
|
||||
<message key="xmlui.ArtifactBrowser.Contact.feedback_label">On-line form</message>
|
||||
<message key="xmlui.ArtifactBrowser.Contact.feedback_link">Feedback</message>
|
||||
<message key="xmlui.ArtifactBrowser.Contact.email">Email</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.artifactbrowser.FeedbackForm.java -->
|
||||
<message key="xmlui.ArtifactBrowser.FeedbackForm.title">Give feedback</message>
|
||||
<message key="xmlui.ArtifactBrowser.FeedbackForm.trail">Give feedback</message>
|
||||
@@ -250,23 +250,23 @@
|
||||
<message key="xmlui.ArtifactBrowser.FeedbackForm.email_help">This address will be used to follow up on your feedback.</message>
|
||||
<message key="xmlui.ArtifactBrowser.FeedbackForm.comments">Comments</message>
|
||||
<message key="xmlui.ArtifactBrowser.FeedbackForm.submit">Send Feedback</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.artifactbrowser.FeedbackSent.java -->
|
||||
<message key="xmlui.ArtifactBrowser.FeedbackSent.title">Give feedback</message>
|
||||
<message key="xmlui.ArtifactBrowser.FeedbackSent.trail">Give feedback</message>
|
||||
<message key="xmlui.ArtifactBrowser.FeedbackSent.head">Feedback sent</message>
|
||||
<message key="xmlui.ArtifactBrowser.FeedbackSent.para1">Your comments have been received.</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.artifactbrowser.FrontPageSearch.java -->
|
||||
<message key="xmlui.ArtifactBrowser.FrontPageSearch.head">Search DSpace</message>
|
||||
<message key="xmlui.ArtifactBrowser.FrontPageSearch.para1">Enter some text in the box below to search DSpace.</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.artifactbrowser.ItemViewer.java -->
|
||||
<message key="xmlui.ArtifactBrowser.ItemViewer.trail">View Item</message>
|
||||
<message key="xmlui.ArtifactBrowser.ItemViewer.head_parent_collections">This item appears in the following Collection(s)</message>
|
||||
<message key="xmlui.ArtifactBrowser.ItemViewer.show_simple">Show simple item record</message>
|
||||
<message key="xmlui.ArtifactBrowser.ItemViewer.show_full">Show full item record</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.artifactbrowser.Navigation.java -->
|
||||
<message key="xmlui.ArtifactBrowser.Navigation.head_browse">Browse</message>
|
||||
<message key="xmlui.ArtifactBrowser.Navigation.head_all_of_dspace">All of DSpace</message>
|
||||
@@ -278,14 +278,14 @@
|
||||
<message key="xmlui.ArtifactBrowser.Navigation.browse_dateaccessioned">By Submit Date</message>
|
||||
<message key="xmlui.ArtifactBrowser.Navigation.head_this_collection">This Collection</message>
|
||||
<message key="xmlui.ArtifactBrowser.Navigation.head_this_community">This Community</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.artifactbrowser.SimpleSearch.java -->
|
||||
<message key="xmlui.ArtifactBrowser.SimpleSearch.title">Search</message>
|
||||
<message key="xmlui.ArtifactBrowser.SimpleSearch.trail">Search</message>
|
||||
<message key="xmlui.ArtifactBrowser.SimpleSearch.head">Search</message>
|
||||
<message key="xmlui.ArtifactBrowser.SimpleSearch.search_scope">Search Scope</message>
|
||||
<message key="xmlui.ArtifactBrowser.SimpleSearch.full_text_search">Full Text Search</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.artifactbrowser.RestrictedItem.java -->
|
||||
<message key="xmlui.ArtifactBrowser.RestrictedItem.title">This resource is restricted</message>
|
||||
<message key="xmlui.ArtifactBrowser.RestrictedItem.trail">Restricted</message>
|
||||
@@ -305,9 +305,9 @@
|
||||
<message key="xmlui.ArtifactBrowser.RestrictedItem.type_item">item</message>
|
||||
<message key="xmlui.ArtifactBrowser.RestrictedItem.type_resource">resource</message>
|
||||
<message key="xmlui.ArtifactBrowser.RestrictedItem.unknown">unknown</message>
|
||||
|
||||
|
||||
<!-- Authentication messages used at the top of the login page: -->
|
||||
<message key="xmlui.ArtifactBrowser.RestrictedItem.auth_header">The item is restricted</message>
|
||||
<message key="xmlui.ArtifactBrowser.RestrictedItem.auth_header">The item is restricted</message>
|
||||
<message key="xmlui.ArtifactBrowser.RestrictedItem.auth_message">The item you are attempting to access is a restricted item and requires credentials to view. Please login below to access the item.</message>
|
||||
|
||||
<message key="xmlui.ArtifactBrowser.StatisticsViewer.choose_month">Monthly Reports</message>
|
||||
@@ -317,34 +317,34 @@
|
||||
<message key="xmlui.ArtifactBrowser.StatisticsViewer.no_report.text">There are currently no reports available for this service. Please check back later.</message>
|
||||
|
||||
<!-- Authentication messages used for bitstream authentication -->
|
||||
<message key="xmlui.BitstreamReader.auth_header">The file is restricted</message>
|
||||
<message key="xmlui.BitstreamReader.auth_header">The file is restricted</message>
|
||||
<message key="xmlui.BitstreamReader.auth_message">The file you are attempting to access is a restricted file and requires credentials to view. Please login below to access the file.</message>
|
||||
|
||||
|
||||
<!-- Export Archive download messages -->
|
||||
<message key="xmlui.ItemExportDownloadReader.auth_header">This export archive is restricted.</message>
|
||||
<message key="xmlui.ItemExportDownloadReader.auth_message">The export archive you are attempting to access is a restricted resource and requires credentials to view. Please login below to access the export archive.</message>
|
||||
|
||||
<!--!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
|
||||
EPerson Aspect
|
||||
|
||||
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- General keys used by the EPerson aspect -->
|
||||
<message key="xmlui.EPerson.trail_new_registration">New user registration</message>
|
||||
<message key="xmlui.EPerson.trail_forgot_password">Forgot Password</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.eperson.CannotRegister.java -->
|
||||
<message key="xmlui.EPerson.CannotRegister.title">Registration unavailable</message>
|
||||
<message key="xmlui.EPerson.CannotRegister.head">Registration unavailable</message>
|
||||
<message key="xmlui.EPerson.CannotRegister.para1">The configuration of this DSpace repository does not allow registration in this context. Please contact the <a href="../contact">site administrator</a> with questions or comments.</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.eperson.EditProfile.java -->
|
||||
<message key="xmlui.EPerson.EditProfile.title_update">Update Profile</message>
|
||||
<message key="xmlui.EPerson.EditProfile.title_create">Create Profile</message>
|
||||
@@ -369,7 +369,7 @@
|
||||
<message key="xmlui.EPerson.EditProfile.error_invalid_password">Choose a password at least 6 characters long</message>
|
||||
<message key="xmlui.EPerson.EditProfile.error_unconfirmed_password">Please retype your password to confirm</message>
|
||||
<message key="xmlui.EPerson.EditProfile.head_auth">Authorization groups you belong to</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.eperson.EPersonUtils.java -->
|
||||
<message key="xmlui.EPerson.EPersonUtils.register_verify_email">Verify Email</message>
|
||||
<message key="xmlui.EPerson.EPersonUtils.register_create_profile">Create Profile</message>
|
||||
@@ -382,14 +382,14 @@
|
||||
<message key="xmlui.EPerson.ForgotPasswordFinished.title">Password reset</message>
|
||||
<message key="xmlui.EPerson.ForgotPasswordFinished.head">Password reset</message>
|
||||
<message key="xmlui.EPerson.ForgotPasswordFinished.para1">Your password has been reset.</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.eperson.InvalidToken.java -->
|
||||
<message key="xmlui.EPerson.InvalidToken.title">Invalid token</message>
|
||||
<message key="xmlui.EPerson.InvalidToken.trail">Invalid token</message>
|
||||
<message key="xmlui.EPerson.InvalidToken.head">Invalid token</message>
|
||||
<message key="xmlui.EPerson.InvalidToken.para1">The URL you provided is invalid. The URL may have been broken across multiple lines in your email client, like this:</message>
|
||||
<message key="xmlui.EPerson.InvalidToken.para2">If so, copy and paste the entire URL directly into your browser's address bar, rather than simply clicking on the link. The address bar should then contain something like:</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.eperson.Navigation.java -->
|
||||
<message key="xmlui.EPerson.Navigation.my_account">My Account</message>
|
||||
<message key="xmlui.EPerson.Navigation.profile">Profile</message>
|
||||
@@ -410,7 +410,7 @@
|
||||
<message key="xmlui.EPerson.PasswordLogin.head2">Register new user</message>
|
||||
<message key="xmlui.EPerson.PasswordLogin.para1">Register an account to subscribe to collections for email updates, and submit new items to DSpace.</message>
|
||||
<message key="xmlui.EPerson.PasswordLogin.register_link">Click here to register.</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.eperson.LDAPLogin.java -->
|
||||
<message key="xmlui.EPerson.LDAPLogin.title">Sign in</message>
|
||||
<message key="xmlui.EPerson.LDAPLogin.trail">Sign in</message>
|
||||
@@ -420,7 +420,7 @@
|
||||
<message key="xmlui.EPerson.LDAPLogin.error_bad_login">The user name and/or password supplied were not valid.</message>
|
||||
<message key="xmlui.EPerson.LDAPLogin.password">Password</message>
|
||||
<message key="xmlui.EPerson.LDAPLogin.submit">Sign in</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.eperson.LoginChooser.java -->
|
||||
<message key="xmlui.EPerson.LoginChooser.title">Choose a Login Method</message>
|
||||
<message key="xmlui.EPerson.LoginChooser.trail">Choose Login</message>
|
||||
@@ -438,24 +438,24 @@
|
||||
<message key="xmlui.EPerson.FailedAuthentication.title">Authentication Failed</message>
|
||||
<message key="xmlui.EPerson.FailedAuthentication.trail">Failed Authentication</message>
|
||||
<message key="xmlui.EPerson.FailedAuthentication.h1">Authentication Failed</message>
|
||||
|
||||
|
||||
<!-- Login xml files -->
|
||||
<message key="xmlui.eperson.noAuthMethod.head">No Authentication Method Found</message>
|
||||
<message key="xmlui.eperson.noAuthMethod.p1">No authentication method was found. Please contact the site administrator.</message>
|
||||
<message key="xmlui.eperson.shibbLoginFailure.head">Shibboleth Login Failed</message>
|
||||
<message key="xmlui.eperson.shibbLoginFailure.p1">Shibboleth authentication not available at this time. Please contact the site administrator.</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.eperson.ProfileUpdated.java -->
|
||||
<message key="xmlui.EPerson.ProfileUpdated.title">Profile updated</message>
|
||||
<message key="xmlui.EPerson.ProfileUpdated.trail">Update profile</message>
|
||||
<message key="xmlui.EPerson.ProfileUpdated.head">Profile updated</message>
|
||||
<message key="xmlui.EPerson.ProfileUpdated.para1">Your profile information has been updated.</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.eperson.RegistrationFinished.java -->
|
||||
<message key="xmlui.EPerson.RegistrationFinished.title">Registration finished</message>
|
||||
<message key="xmlui.EPerson.RegistrationFinished.head">Registration Finished</message>
|
||||
<message key="xmlui.EPerson.RegistrationFinished.para1">You're now registered to use the DSpace system. You can subscribe to collections to receive email updates about new items.</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.eperson.ResetPassword.java -->
|
||||
<message key="xmlui.EPerson.ResetPassword.title">Reset password</message>
|
||||
<message key="xmlui.EPerson.ResetPassword.head">Reset password</message>
|
||||
@@ -466,7 +466,7 @@
|
||||
<message key="xmlui.EPerson.ResetPassword.submit">Reset password</message>
|
||||
<message key="xmlui.EPerson.ResetPassword.error_invalid_password">Choose a password at least 6 characters long</message>
|
||||
<message key="xmlui.EPerson.ResetPassword.error_unconfirmed_password">Please retype your password to confirm</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.eperson.StartForgotPassword.java -->
|
||||
<message key="xmlui.EPerson.StartForgotPassword.title">Forgot Password</message>
|
||||
<message key="xmlui.EPerson.StartForgotPassword.head">Forgot Password</message>
|
||||
@@ -475,7 +475,7 @@
|
||||
<message key="xmlui.EPerson.StartForgotPassword.email_address_help">Enter the same address used when registering.</message>
|
||||
<message key="xmlui.EPerson.StartForgotPassword.error_not_found">Email address not found.</message>
|
||||
<message key="xmlui.EPerson.StartForgotPassword.submit">Send info</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.eperson.StartRegistration.java -->
|
||||
<message key="xmlui.EPerson.StartRegistration.title">New user registration</message>
|
||||
<message key="xmlui.EPerson.StartRegistration.head1">Email already in use</message>
|
||||
@@ -488,7 +488,7 @@
|
||||
<message key="xmlui.EPerson.StartRegistration.email_address_help">This address will be verified and used as your login name.</message>
|
||||
<message key="xmlui.EPerson.StartRegistration.error_bad_email">Unable to send email to this address.</message>
|
||||
<message key="xmlui.EPerson.StartRegistration.submit_register">Register</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.eperson.VerifyEmail.java -->
|
||||
<message key="xmlui.EPerson.VerifyEmail.title">Verification email sent</message>
|
||||
<message key="xmlui.EPerson.VerifyEmail.head">Verification email sent</message>
|
||||
@@ -500,12 +500,12 @@
|
||||
|
||||
|
||||
<!--!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
|
||||
Submission Aspect
|
||||
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-->
|
||||
|
||||
|
||||
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -516,7 +516,7 @@
|
||||
<message key="xmlui.Submission.general.go_mydspace">Go to MyDSpace Home</message>
|
||||
<message key="xmlui.Submission.general.submission.title">Item submission</message>
|
||||
<message key="xmlui.Submission.general.submission.trail">Item submission</message>
|
||||
<message key="xmlui.Submission.general.submission.head">Item submission</message>
|
||||
<message key="xmlui.Submission.general.submission.head">Item submission</message>
|
||||
<message key="xmlui.Submission.general.submission.previous">< Previous</message>
|
||||
<message key="xmlui.Submission.general.submission.save">Save & Exit</message>
|
||||
<message key="xmlui.Submission.general.submission.next">Next ></message>
|
||||
@@ -528,14 +528,14 @@
|
||||
<message key="xmlui.Submission.general.showsimple">Show simple item record</message>
|
||||
<message key="xmlui.Submission.general.default.title">Submission</message>
|
||||
<message key="xmlui.Submission.general.default.trail">Submission</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.submission.CollectiovViewer -->
|
||||
<message key="xmlui.Submission.CollectionViewer.link1">Submit a new item to this collection</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.submission.Navigation -->
|
||||
<message key="xmlui.Submission.Navigation.submissions">Submissions</message>
|
||||
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.Submission.submissions -->
|
||||
<message key="xmlui.Submission.Submissions.title">Submissions & Workflow</message>
|
||||
<message key="xmlui.Submission.Submissions.trail">Submissions</message>
|
||||
@@ -598,7 +598,7 @@
|
||||
<message key="xmlui.Submission.submit.progressbar.creative-commons">Creative Commons</message>
|
||||
<message key="xmlui.Submission.submit.progressbar.license">License</message>
|
||||
<message key="xmlui.Submission.submit.progressbar.complete">Complete</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.Submission.submit.ResumeStep -->
|
||||
<message key="xmlui.Submission.submit.ResumeStep.submit_resume">Resume</message>
|
||||
|
||||
@@ -615,7 +615,7 @@
|
||||
<message key="xmlui.Submission.submit.SaveOrRemoveStep.submit_save">Save it, I'll work on it later</message>
|
||||
<message key="xmlui.Submission.submit.SaveOrRemoveStep.submit_remove">Remove the submission</message>
|
||||
|
||||
|
||||
|
||||
<!-- org.dpspace.app.xmlui.Submission.submit.InitialQuestionsStep -->
|
||||
<message key="xmlui.Submission.submit.InitialQuestionsStep.head">Initial Questions</message>
|
||||
<message key="xmlui.Submission.submit.InitialQuestionsStep.important_note">Important Note: </message>
|
||||
@@ -632,7 +632,7 @@
|
||||
<message key="xmlui.Submission.submit.InitialQuestionsStep.date_issued">Date Issued</message>
|
||||
<message key="xmlui.Submission.submit.InitialQuestionsStep.citation">Citation</message>
|
||||
<message key="xmlui.Submission.submit.InitialQuestionsStep.publisher">Publisher</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.Submission.submit.DescribeStep -->
|
||||
<message key="xmlui.Submission.submit.DescribeStep.head">Describe Item</message>
|
||||
<message key="xmlui.Submission.submit.DescribeStep.unknown_field">Error: Unknown field type</message>
|
||||
@@ -669,7 +669,7 @@
|
||||
<message key="xmlui.Submission.submit.UploadStep.submit_edit">Edit</message>
|
||||
<message key="xmlui.Submission.submit.UploadStep.checksum">File checksum:</message>
|
||||
<message key="xmlui.Submission.submit.UploadStep.submit_remove">Remove selected files</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.Submission.submit.EditFileStep -->
|
||||
<message key="xmlui.Submission.submit.EditFileStep.head">Edit File</message>
|
||||
<message key="xmlui.Submission.submit.EditFileStep.file">File</message>
|
||||
@@ -698,7 +698,7 @@
|
||||
<message key="xmlui.Submission.submit.ReviewStep.unknown">unknown</message>
|
||||
<message key="xmlui.Submission.submit.ReviewStep.known">known</message>
|
||||
<message key="xmlui.Submission.submit.ReviewStep.supported">supported</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.Submission.submit.CCLicenseStep -->
|
||||
<message key="xmlui.Submission.submit.CCLicenseStep.head">Creative Commons License</message>
|
||||
<message key="xmlui.Submission.submit.CCLicenseStep.info1">If you wish, you may add a <a href="http://creativecommons.org/">Creative Commons</a> License to your item. <strong>Creative Commons licenses govern what people who read your work may then do with it.</strong> If you wish to select a Creative Commons license click the button below. You will be taken to the Creative Commons website, where you will be presented with several licensing options. After selecting a license, you will be returned to this page.</message>
|
||||
@@ -719,13 +719,13 @@
|
||||
<!-- org.dspace.app.xmlui.Submission.submit.RemovedStep -->
|
||||
<message key="xmlui.Submission.submit.RemovedStep.head">Submission removed</message>
|
||||
<message key="xmlui.Submission.submit.RemovedStep.info1">Your submission has been cancelled, and the incomplete item removed from the system.</message>
|
||||
<message key="xmlui.Submission.submit.RemovedStep.go_submission">Go to the Submissions page</message>
|
||||
<message key="xmlui.Submission.submit.RemovedStep.go_submission">Go to the Submissions page</message>
|
||||
|
||||
<!-- org.dspace.app.xmlui.Submission.submit.CompletedStep -->
|
||||
<message key="xmlui.Submission.submit.CompletedStep.head">Submission complete</message>
|
||||
<message key="xmlui.Submission.submit.CompletedStep.info1">Your submission will now go through the review process for this collection. You will receive e-mail notification as soon as your submission has joined the collection, or if there is a problem with your submission. You may also check on the status of your submission by visiting your submissions page.</message>
|
||||
<message key="xmlui.Submission.submit.CompletedStep.go_submission">Go to the Submissions page</message>
|
||||
<message key="xmlui.Submission.submit.CompletedStep.submit_again">Submit another item</message>
|
||||
<message key="xmlui.Submission.submit.CompletedStep.head">Submission complete</message>
|
||||
<message key="xmlui.Submission.submit.CompletedStep.info1">Your submission will now go through the review process for this collection. You will receive e-mail notification as soon as your submission has joined the collection, or if there is a problem with your submission. You may also check on the status of your submission by visiting your submissions page.</message>
|
||||
<message key="xmlui.Submission.submit.CompletedStep.go_submission">Go to the Submissions page</message>
|
||||
<message key="xmlui.Submission.submit.CompletedStep.submit_again">Submit another item</message>
|
||||
|
||||
<!-- org.dspace.app.xmlui.Submission.workflow.PerformTaskStep -->
|
||||
<message key="xmlui.Submission.workflow.PerformTaskStep.info1">Actions you may perform on this task:</message>
|
||||
@@ -750,17 +750,17 @@
|
||||
<message key="xmlui.Submission.workflow.RejectTaskStep.reason_required">The reason field is required</message>
|
||||
<message key="xmlui.Submission.workflow.RejectTaskStep.submit_reject">Reject item</message>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
|
||||
Administrative Aspect
|
||||
|
||||
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-->
|
||||
|
||||
<!-- action-generated messages. These are referenced from the sitemap rather than a transformer -->
|
||||
|
||||
|
||||
<!-- action-generated messages. These are referenced from the sitemap rather than a transformer -->
|
||||
|
||||
<message key="xmlui.administrative.FlowEPersonUtils.add_eperson_success_notice">The user was added successfully.</message>
|
||||
<message key="xmlui.administrative.FlowEPersonUtils.edit_eperson_success_notice">The user was edited successfully.</message>
|
||||
<message key="xmlui.administrative.FlowEPersonUtils.reset_password_success_notice">An email message has been sent to the user containing a token that may be used to choose a new password.</message>
|
||||
@@ -786,10 +786,10 @@
|
||||
<message key="xmlui.administrative.FlowItemUtils.bitstream_delete">The selected bitstreams have been deleted.</message>
|
||||
<message key="xmlui.administrative.FlowMapperUtils.map_items">The items were successfully mapped.</message>
|
||||
<message key="xmlui.administrative.FlowMapperUtils.unmaped_items">The items have been unmapped.</message>
|
||||
|
||||
|
||||
<!-- general items for all of the eperson classes -->
|
||||
<message key="xmlui.administrative.eperson.general.epeople_trail">Manage E-people</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.administrative.Navigation -->
|
||||
<!-- contextual menu items -->
|
||||
<message key="xmlui.administrative.Navigation.context_head">Context</message>
|
||||
@@ -803,7 +803,7 @@
|
||||
<message key="xmlui.administrative.Navigation.context_export_item">Export Item</message>
|
||||
<message key="xmlui.administrative.Navigation.context_export_collection">Export Collection</message>
|
||||
<message key="xmlui.administrative.Navigation.context_export_community">Export Community</message>
|
||||
|
||||
|
||||
<!-- Site administrator options -->
|
||||
<message key="xmlui.administrative.Navigation.administrative_head">Administrative</message>
|
||||
<message key="xmlui.administrative.Navigation.administrative_access_control">Access Control</message>
|
||||
@@ -820,8 +820,8 @@
|
||||
|
||||
<!-- my account items -->
|
||||
<message key="xmlui.administrative.Navigation.account_export">My Exports</message>
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- export item -->
|
||||
<message key="xmlui.administrative.ItemExport.head">Export Archive</message>
|
||||
<message key="xmlui.administrative.ItemExport.item.id.error">The item id provided is invalid.</message>
|
||||
@@ -834,7 +834,7 @@
|
||||
<message key="xmlui.administrative.ItemExport.collection.success">The collection was exported successfully. You should receive an e-mail when the archive is ready for download. You can also use the 'My Exports' link to view a list of your available archives.</message>
|
||||
<message key="xmlui.administrative.ItemExport.community.success">The community was exported successfully. You should receive an e-mail when the archive is ready for download. You can also use the 'My Exports' link to view a list of your available archives.</message>
|
||||
<message key="xmlui.administrative.ItemExport.available.head">Available export archives for download:</message>
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.administrative.eperson.ManageEPeopleMain -->
|
||||
@@ -855,8 +855,8 @@
|
||||
<message key="xmlui.administrative.eperson.ManageEPeopleMain.search_column4">Email</message>
|
||||
<message key="xmlui.administrative.eperson.ManageEPeopleMain.submit_delete">Delete E-People</message>
|
||||
<message key="xmlui.administrative.eperson.ManageEPeopleMain.no_results">Your search found no results...</message>
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.administrative.eperson.AddEPersonForm -->
|
||||
<message key="xmlui.administrative.eperson.AddEPersonForm.title">Add E-Person</message>
|
||||
<message key="xmlui.administrative.eperson.AddEPersonForm.trail">Add E-Person</message>
|
||||
@@ -870,7 +870,7 @@
|
||||
<message key="xmlui.administrative.eperson.AddEPersonForm.req_certs">Require Certificate</message>
|
||||
<message key="xmlui.administrative.eperson.AddEPersonForm.can_log_in">Can Log In</message>
|
||||
<message key="xmlui.administrative.eperson.AddEPersonForm.submit_create">Create E-Person</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.administrative.eperson.EditEPersonForm -->
|
||||
<message key="xmlui.administrative.eperson.EditEPersonForm.title">Edit E-Person</message>
|
||||
<message key="xmlui.administrative.eperson.EditEPersonForm.trail">Edit E-Person</message>
|
||||
@@ -887,19 +887,19 @@
|
||||
<message key="xmlui.administrative.eperson.EditEPersonForm.special_help">You may also permanently remove this E-Person from the system or reset his/her password. When resetting a password the user will be sent an email containing a special link they can follow to choose a new password.</message>
|
||||
<message key="xmlui.administrative.eperson.EditEPersonForm.submit_delete">Delete E-Person</message>
|
||||
<message key="xmlui.administrative.eperson.EditEPersonForm.submit_login_as">Login as E-Person</message>
|
||||
|
||||
|
||||
<message key="xmlui.administrative.eperson.EditEPersonForm.delete_constraint">This eperson is unable to be deleted because of the following constraint(s):</message>
|
||||
<message key="xmlui.administrative.eperson.EditEPersonForm.delete_constraint.last_conjunction">and</message>
|
||||
<message key="xmlui.administrative.eperson.EditEPersonForm.delete_constraint.item">eperson has submitted one or more items</message>
|
||||
<message key="xmlui.administrative.eperson.EditEPersonForm.delete_constraint.workflowitem">eperson has an active submission workflow</message>
|
||||
<message key="xmlui.administrative.eperson.EditEPersonForm.delete_constraint.tasklistitem">eperson has a workflow task awaiting their attention</message>
|
||||
<message key="xmlui.administrative.eperson.EditEPersonForm.delete_constraint.unknown">eperson has an unidentified constraint within the system</message>
|
||||
|
||||
|
||||
<message key="xmlui.administrative.eperson.EditEPersonForm.member_head">Groups this E-Person is a member of:</message>
|
||||
<message key="xmlui.administrative.eperson.EditEPersonForm.indirect_member">(via group: {0})</message>
|
||||
<message key="xmlui.administrative.eperson.EditEPersonForm.member_none">none</message>
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.administrative.eperson.DeleteEPeopleConfirm -->
|
||||
<message key="xmlui.administrative.eperson.DeleteEPeopleConfirm.title">Confirm E-Person Deletion</message>
|
||||
<message key="xmlui.administrative.eperson.DeleteEPeopleConfirm.trail">Confirm Delete</message>
|
||||
@@ -966,12 +966,12 @@
|
||||
<message key="xmlui.administrative.group.EditGroupForm.members_column2">Name</message>
|
||||
<message key="xmlui.administrative.group.EditGroupForm.members_column3">Email</message>
|
||||
<message key="xmlui.administrative.group.EditGroupForm.members_column4"></message>
|
||||
<message key="xmlui.administrative.group.EditGroupForm.members_group_name">group: {0}</message>
|
||||
<message key="xmlui.administrative.group.EditGroupForm.members_group_name">group: {0}</message>
|
||||
<message key="xmlui.administrative.group.EditGroupForm.members_none">This group has no members.</message>
|
||||
<message key="xmlui.administrative.group.EditGroupForm.members_pending">[pending]</message>
|
||||
<message key="xmlui.administrative.group.EditGroupForm.instructions_para">Remove members</message>
|
||||
<message key="xmlui.administrative.group.EditGroupForm.collection_link_para">Remove members</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.administrative.group.DeleteGroupsConfirm -->
|
||||
<message key="xmlui.administrative.group.DeleteGroupsConfirm.title">Confirm Group Deletion</message>
|
||||
<message key="xmlui.administrative.group.DeleteGroupsConfirm.trail">Confirm Delete</message>
|
||||
@@ -981,11 +981,11 @@
|
||||
<message key="xmlui.administrative.group.DeleteGroupsConfirm.column2">Name</message>
|
||||
<message key="xmlui.administrative.group.DeleteGroupsConfirm.column3">E-People</message>
|
||||
<message key="xmlui.administrative.group.DeleteGroupsConfirm.column4">Groups</message>
|
||||
|
||||
|
||||
<!-- general items for all of the registries classes -->
|
||||
<message key="xmlui.administrative.registries.general.format_registry_trail">Format registry</message>
|
||||
<message key="xmlui.administrative.registries.general.metadata_registry_trail">Metadata registry</message>
|
||||
|
||||
<message key="xmlui.administrative.registries.general.metadata_registry_trail">Metadata registry</message>
|
||||
|
||||
<!-- org.dspace.app.xmlui.administrative.registries.DeleteBitstreamFormatsConfirm.java -->
|
||||
<message key="xmlui.administrative.registries.DeleteBitstreamFormatsConfirm.title">Delete Bitstream Formats</message>
|
||||
<message key="xmlui.administrative.registries.DeleteBitstreamFormatsConfirm.trail">Delete bitstream formats</message>
|
||||
@@ -1112,13 +1112,13 @@
|
||||
<message key="xmlui.administrative.registries.MoveMetadataField.para2">Move to schema: </message>
|
||||
<message key="xmlui.administrative.registries.MoveMetadataField.submit_move">Move fields</message>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- general authorization keywords -->
|
||||
<message key="xmlui.administrative.authorization.general.authorize_trail">Authorization</message>
|
||||
<message key="xmlui.administrative.authorization.general.policyList_trail">Policy List</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.administrative.authorization.AuthorizationMain -->
|
||||
<message key="xmlui.administrative.authorization.AuthorizationMain.title">Administer Authorization Policies</message>
|
||||
<message key="xmlui.administrative.authorization.AuthorizationMain.main_head">Administer Authorization Policies</message>
|
||||
@@ -1131,9 +1131,9 @@
|
||||
<message key="xmlui.administrative.authorization.AuthorizationMain.actions_advanced_link">Click here to go to the item wildcard policy admin tool</message>
|
||||
<message key="xmlui.administrative.authorization.AuthorizationMain.containerList_head">Community/collection authorizations</message>
|
||||
<message key="xmlui.administrative.authorization.AuthorizationMain.containerList_para">Click on a community or collection to edit its policies.</message>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.administrative.authorization.EditContainerPolicies -->
|
||||
<message key="xmlui.administrative.authorization.EditContainerPolicies.title">Edit Policies</message>
|
||||
<message key="xmlui.administrative.authorization.EditContainerPolicies.trail">Policies List</message>
|
||||
@@ -1146,9 +1146,9 @@
|
||||
<message key="xmlui.administrative.authorization.EditContainerPolicies.head_group">Group</message>
|
||||
<message key="xmlui.administrative.authorization.EditContainerPolicies.submit_delete">Delete Selected</message>
|
||||
<message key="xmlui.administrative.authorization.EditContainerPolicies.group_edit">Edit</message>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.administrative.authorization.EditItemPolicies -->
|
||||
<message key="xmlui.administrative.authorization.EditItemPolicies.title">Edit Item's Policies</message>
|
||||
<message key="xmlui.administrative.authorization.EditItemPolicies.trail">Policies List</message>
|
||||
@@ -1161,10 +1161,10 @@
|
||||
<message key="xmlui.administrative.authorization.EditItemPolicies.add_itemPolicy_link">Add a new Item policy</message>
|
||||
<message key="xmlui.administrative.authorization.EditItemPolicies.add_bundlePolicy_link">Add a new Bundle policy</message>
|
||||
<message key="xmlui.administrative.authorization.EditItemPolicies.add_bitstreamPolicy_link">Add a new Bitstream policy</message>
|
||||
|
||||
|
||||
<message key="xmlui.administrative.authorization.EditContainerPolicies.no_policies">No policies found for this object.</message>
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.administrative.authorization.EditPolicyForm -->
|
||||
<message key="xmlui.administrative.authorization.EditPolicyForm.title">Edit Policy</message>
|
||||
<message key="xmlui.administrative.authorization.EditPolicyForm.trail">Edit Policy</message>
|
||||
@@ -1176,7 +1176,7 @@
|
||||
<message key="xmlui.administrative.authorization.EditPolicyForm.groups_column1">ID</message>
|
||||
<message key="xmlui.administrative.authorization.EditPolicyForm.groups_column2">Name</message>
|
||||
<message key="xmlui.administrative.authorization.EditPolicyForm.groups_column3">Actions for this resource</message>
|
||||
|
||||
|
||||
<message key="xmlui.administrative.authorization.EditPolicyForm.set_group">Set</message>
|
||||
<message key="xmlui.administrative.authorization.EditPolicyForm.current_group">current</message>
|
||||
<message key="xmlui.administrative.authorization.EditPolicyForm.groups_head">Search Results</message>
|
||||
@@ -1184,8 +1184,8 @@
|
||||
<message key="xmlui.administrative.authorization.EditPolicyForm.label_search">Search for a group</message>
|
||||
<message key="xmlui.administrative.authorization.EditPolicyForm.submit_search_groups">Search</message>
|
||||
<message key="xmlui.administrative.authorization.EditPolicyForm.label_action">Select the action</message>
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.administrative.authorization.AdvacedAuthorizationsForm -->
|
||||
<message key="xmlui.administrative.authorization.AdvacedAuthorizationsForm.title">Advanced Policy Manager</message>
|
||||
<message key="xmlui.administrative.authorization.AdvacedAuthorizationsForm.trail">Advanced Authorizations</message>
|
||||
@@ -1201,7 +1201,7 @@
|
||||
<message key="xmlui.administrative.authorization.AdvacedAuthorizationsForm.actions_policyCollections">Collection</message>
|
||||
<message key="xmlui.administrative.authorization.AdvacedAuthorizationsForm.submit_add">Add policies</message>
|
||||
<message key="xmlui.administrative.authorization.AdvacedAuthorizationsForm.submit_remove_all">Clear policies</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.administrative.authorization.DeletePoliciesConfirm -->
|
||||
<message key="xmlui.administrative.authorization.DeletePoliciesConfirm.title">Confirm Policy Deletion</message>
|
||||
<message key="xmlui.administrative.authorization.DeletePoliciesConfirm.trail">Confirm Delete</message>
|
||||
@@ -1210,7 +1210,7 @@
|
||||
<message key="xmlui.administrative.authorization.DeletePoliciesConfirm.head_id">ID</message>
|
||||
<message key="xmlui.administrative.authorization.DeletePoliciesConfirm.head_action">Action</message>
|
||||
<message key="xmlui.administrative.authorization.DeletePoliciesConfirm.head_group">Group</message>
|
||||
|
||||
|
||||
<!-- general edit item messages -->
|
||||
<message key="xmlui.administrative.item.general.item_trail">Items</message>
|
||||
<message key="xmlui.administrative.item.general.option_head">Edit Item</message>
|
||||
@@ -1218,7 +1218,7 @@
|
||||
<message key="xmlui.administrative.item.general.option_bitstreams">Item Bitstreams</message>
|
||||
<message key="xmlui.administrative.item.general.option_metadata">Item Metadata</message>
|
||||
<message key="xmlui.administrative.item.general.option_view">View Item</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.administrative.item.AddBitstreamForm -->
|
||||
<message key="xmlui.administrative.item.AddBitstreamForm.title">Upload Bitstream</message>
|
||||
<message key="xmlui.administrative.item.AddBitstreamForm.trail">Upload bitstream</message>
|
||||
@@ -1235,7 +1235,7 @@
|
||||
<message key="xmlui.administrative.item.AddBitstreamForm.description_help">Optionally, provide a brief description of the file, for example "<i>Main article</i>", or "<i>Experiment data readings</i>".</message>
|
||||
<message key="xmlui.administrative.item.AddBitstreamForm.submit_upload">Upload</message>
|
||||
<message key="xmlui.administrative.item.AddBitstreamForm.no_bundles">You need the ADD & WRITE privilege on at least one bundle to be able to upload new bitstreams.</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.administrative.item.DeleteBitstreamConfirm -->
|
||||
<message key="xmlui.administrative.item.DeleteBitstreamConfirm.title">Confirm Deletion</message>
|
||||
<message key="xmlui.administrative.item.DeleteBitstreamConfirm.trail">Confirm deletion</message>
|
||||
@@ -1244,7 +1244,7 @@
|
||||
<message key="xmlui.administrative.item.DeleteBitstreamConfirm.column1">Name</message>
|
||||
<message key="xmlui.administrative.item.DeleteBitstreamConfirm.column2">Description</message>
|
||||
<message key="xmlui.administrative.item.DeleteBitstreamConfirm.column3">Format</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.administrative.item.ConfirmItemForm -->
|
||||
<message key="xmlui.administrative.item.ConfirmItemForm.title">Confirm</message>
|
||||
<message key="xmlui.administrative.item.ConfirmItemForm.trail">Confirm</message>
|
||||
@@ -1274,7 +1274,7 @@
|
||||
<message key="xmlui.administrative.item.EditBitstreamForm.para2">If the format is not in the above list, <strong>select "format not in list" above</strong> and describe it in the field below.</message>
|
||||
<message key="xmlui.administrative.item.EditBitstreamForm.user_label">Other Format</message>
|
||||
<message key="xmlui.administrative.item.EditBitstreamForm.user_help">The application you used to create the file, and the version number (for example, "<i>ACMESoft SuperApp version 1.5</i>").</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.administrative.item.EditItemBitstreamsForm -->
|
||||
<message key="xmlui.administrative.item.EditItemBitstreamsForm.title">Item Bitstreams</message>
|
||||
<message key="xmlui.administrative.item.EditItemBitstreamsForm.trail">Item bitstreams</message>
|
||||
@@ -1291,7 +1291,7 @@
|
||||
<message key="xmlui.administrative.item.EditItemBitstreamsForm.submit_delete">Delete bitstreams</message>
|
||||
<message key="xmlui.administrative.item.EditItemBitstreamsForm.no_upload">You need the ADD & WRITE privilege on the item and bundles to be able to upload new bitstreams.</message>
|
||||
<message key="xmlui.administrative.item.EditItemBitstreamsForm.no_remove">You need the REMOVE privilege on the item and bundles to be able to delete bitstreams.</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.administrative.item.EditItemMetadataForm -->
|
||||
<message key="xmlui.administrative.item.EditItemMetadataForm.title">Item Metadata</message>
|
||||
<message key="xmlui.administrative.item.EditItemMetadataForm.trail">Item metadata</message>
|
||||
@@ -1326,21 +1326,21 @@
|
||||
<message key="xmlui.administrative.item.EditItemStatusForm.submit_delete">Permanently delete</message>
|
||||
<message key="xmlui.administrative.item.EditItemStatusForm.na">n/a</message>
|
||||
<message key="xmlui.administrative.item.EditItemStatusForm.sysadmins_only">(system administrators only)</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.administrative.item.ViewItem -->
|
||||
<message key="xmlui.administrative.item.ViewItem.title">View Item</message>
|
||||
<message key="xmlui.administrative.item.ViewItem.trail">View Item</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.administrative.item.FindItemForm -->
|
||||
<message key="xmlui.administrative.item.FindItemForm.title">Find Item</message>
|
||||
<message key="xmlui.administrative.item.FindItemForm.head1">Find Item</message>
|
||||
<message key="xmlui.administrative.item.FindItemForm.identifier_label">Internal Item ID/Item Handle</message>
|
||||
<message key="xmlui.administrative.item.FindItemForm.identifier_error">Unable to resolve identifier.</message>
|
||||
<message key="xmlui.administrative.item.FindItemForm.find">Find</message>
|
||||
|
||||
|
||||
<!-- general mapper messages -->
|
||||
<message key="xmlui.administrative.mapper.general.mapper_trail">Item mapper</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.administrative.mapper.MapperMain -->
|
||||
<message key="xmlui.administrative.mapper.MapperMain.title">Item Mapper</message>
|
||||
<message key="xmlui.administrative.mapper.MapperMain.head1">Item Mapper - Map Items from Other Collections</message>
|
||||
@@ -1352,7 +1352,7 @@
|
||||
<message key="xmlui.administrative.mapper.MapperMain.submit_search">Search Items</message>
|
||||
<message key="xmlui.administrative.mapper.MapperMain.submit_browse">Browse mapped items</message>
|
||||
<message key="xmlui.administrative.mapper.MapperMain.no_add">(Requires the collection ADD privilege)</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.administrative.mapper.SearchItemForm -->
|
||||
<message key="xmlui.administrative.mapper.SearchItemForm.title">Search Items</message>
|
||||
<message key="xmlui.administrative.mapper.SearchItemForm.trail">Search items</message>
|
||||
@@ -1362,7 +1362,7 @@
|
||||
<message key="xmlui.administrative.mapper.SearchItemForm.column2">Collection</message>
|
||||
<message key="xmlui.administrative.mapper.SearchItemForm.column3">Author</message>
|
||||
<message key="xmlui.administrative.mapper.SearchItemForm.column4">Title</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.administrative.mapper.BrowseItemForm -->
|
||||
<message key="xmlui.administrative.mapper.BrowseItemForm.title">Browse Mapped Items</message>
|
||||
<message key="xmlui.administrative.mapper.BrowseItemForm.trail">Browse mapped items</message>
|
||||
@@ -1373,13 +1373,13 @@
|
||||
<message key="xmlui.administrative.mapper.BrowseItemForm.column3">Author</message>
|
||||
<message key="xmlui.administrative.mapper.BrowseItemForm.column4">Title</message>
|
||||
<message key="xmlui.administrative.mapper.BrowseItemForm.no_remove">You need the REMOVE privilege on this collection to be able to unmap items from this collection.</message>
|
||||
|
||||
|
||||
<!-- General tags for collection management -->
|
||||
<message key="xmlui.administrative.collection.general.collection_trail">Collections</message>
|
||||
<message key="xmlui.administrative.collection.general.options_metadata">Edit Metadata</message>
|
||||
<message key="xmlui.administrative.collection.general.options_roles">Assign Roles</message>
|
||||
|
||||
|
||||
<message key="xmlui.administrative.collection.general.collection_trail">Collections</message>
|
||||
<message key="xmlui.administrative.collection.general.options_metadata">Edit Metadata</message>
|
||||
<message key="xmlui.administrative.collection.general.options_roles">Assign Roles</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.administrative.collection.AssignCollectionRoles.java -->
|
||||
<message key="xmlui.administrative.collection.AssignCollectionRoles.title">Edit Collection Roles</message>
|
||||
<message key="xmlui.administrative.collection.AssignCollectionRoles.trail">Roles</message>
|
||||
@@ -1415,14 +1415,14 @@
|
||||
<message key="xmlui.administrative.collection.DeleteCollectionConfirm.confirm_item1">Any items and incomplete submissions in this collection that aren't contained in other collections</message>
|
||||
<message key="xmlui.administrative.collection.DeleteCollectionConfirm.confirm_item2">The contents of those items</message>
|
||||
<message key="xmlui.administrative.collection.DeleteCollectionConfirm.confirm_item3">All associated authorization policies</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.administrative.collection.DeleteCollectionRoleConfirm.java -->
|
||||
<message key="xmlui.administrative.collection.DeleteCollectionRoleConfirm.title">Confirm role deletion</message>
|
||||
<message key="xmlui.administrative.collection.DeleteCollectionRoleConfirm.trail">Confirm</message>
|
||||
<message key="xmlui.administrative.collection.DeleteCollectionRoleConfirm.main_head">Confirm deletion for role {0}</message>
|
||||
<message key="xmlui.administrative.collection.DeleteCollectionRoleConfirm.main_para_read">Are you sure you want to delete this role? Deleting this group will give READ access to all users for all items submitted to this collection from now on. Please note that this change is not retroactive. Existing items in the system will still be restricted to the members defined by the role you are about to delete.</message>
|
||||
<message key="xmlui.administrative.collection.DeleteCollectionRoleConfirm.main_para">Are you sure you want to delete this role? All changes and customizations made to the {0} group will be lost and wouuld have to be created anew.</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.administrative.collection.EditCollectionMetadataForm.java -->
|
||||
<message key="xmlui.administrative.collection.EditCollectionMetadataForm.title">Edit Collection Metadata</message>
|
||||
<message key="xmlui.administrative.collection.EditCollectionMetadataForm.trail">Metadata</message>
|
||||
@@ -1459,7 +1459,7 @@
|
||||
<message key="xmlui.administrative.community.DeleteCommunityConfirm.confirm_item2">Any items and incomplete submissions in this community that aren't contained in other communities</message>
|
||||
<message key="xmlui.administrative.community.DeleteCommunityConfirm.confirm_item3">The contents of those items</message>
|
||||
<message key="xmlui.administrative.community.DeleteCommunityConfirm.confirm_item4">All associated authorization policies</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.administrative.community.EditCommunityMetadataForm.java -->
|
||||
<message key="xmlui.administrative.community.EditCommunityMetadataForm.title">Edit Community Metadata</message>
|
||||
<message key="xmlui.administrative.community.EditCommunityMetadataForm.trail">Metadata</message>
|
||||
@@ -1474,7 +1474,7 @@
|
||||
<message key="xmlui.administrative.community.EditCommunityMetadataForm.label_existing_logo">Current logo</message>
|
||||
<message key="xmlui.administrative.community.EditCommunityMetadataForm.submit_delete_logo">Remove logo</message>
|
||||
<message key="xmlui.administrative.community.EditCommunityMetadataForm.submit_delete">Delete community</message>
|
||||
|
||||
|
||||
<!-- org.dspace.app.xmlui.administrative.community.CreateCommunityForm.java -->
|
||||
<message key="xmlui.administrative.community.CreateCommunityForm.title">Create Community</message>
|
||||
<message key="xmlui.administrative.community.CreateCommunityForm.trail">Create Community</message>
|
||||
@@ -1539,11 +1539,11 @@
|
||||
<message key="xmlui.administrative.ControlPanel.alerts_countdown_30">30 minutes</message>
|
||||
<message key="xmlui.administrative.ControlPanel.alerts_countdown_60">1 hour</message>
|
||||
<message key="xmlui.administrative.ControlPanel.alerts_countdown_keep">Keep the current count down timer</message>
|
||||
<message key="xmlui.administrative.ControlPanel.alerts_session_label">Manage session</message>
|
||||
<message key="xmlui.administrative.ControlPanel.alerts_session_all_sessions">Continue to allow authenticated sessions</message>
|
||||
<message key="xmlui.administrative.ControlPanel.alerts_session_current_sessions">Restrict authentication but maintain current sessions</message>
|
||||
<message key="xmlui.administrative.ControlPanel.alerts_session_only_administrative_sessions">Restrict authentication and kill current sessions</message>
|
||||
<message key="xmlui.administrative.ControlPanel.alerts_session_note"><strong>Note:</strong> Site administrators are exempt from session management.</message>
|
||||
<message key="xmlui.administrative.ControlPanel.alerts_session_label">Manage session</message>
|
||||
<message key="xmlui.administrative.ControlPanel.alerts_session_all_sessions">Continue to allow authenticated sessions</message>
|
||||
<message key="xmlui.administrative.ControlPanel.alerts_session_current_sessions">Restrict authentication but maintain current sessions</message>
|
||||
<message key="xmlui.administrative.ControlPanel.alerts_session_only_administrative_sessions">Restrict authentication and kill current sessions</message>
|
||||
<message key="xmlui.administrative.ControlPanel.alerts_session_note"><strong>Note:</strong> Site administrators are exempt from session management.</message>
|
||||
<message key="xmlui.administrative.ControlPanel.alerts_submit_activate">Activate</message>
|
||||
<message key="xmlui.administrative.ControlPanel.alerts_submit_deactivate">Deactivate</message>
|
||||
<message key="xmlui.administrative.ControlPanel.activity_head">Current Activity ({0} pages maximum)</message>
|
||||
|
@@ -490,6 +490,10 @@ td {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
td.ds-table-cell.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
*.first-cell {
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
|
Reference in New Issue
Block a user