diff --git a/dspace-xmlui/dspace-xmlui-api/pom.xml b/dspace-xmlui/dspace-xmlui-api/pom.xml index 32462fe24b..0d05162e5d 100644 --- a/dspace-xmlui/dspace-xmlui-api/pom.xml +++ b/dspace-xmlui/dspace-xmlui-api/pom.xml @@ -77,6 +77,12 @@ provided + + com.yahoo.platform.yui + yuicompressor + 2.3.6 + + \ No newline at end of file diff --git a/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/cocoon/ConcatenationReader.java b/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/cocoon/ConcatenationReader.java new file mode 100644 index 0000000000..61af62f96d --- /dev/null +++ b/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/cocoon/ConcatenationReader.java @@ -0,0 +1,308 @@ +/* + * ConcatenationReader.java + * + * Version: $Revision: 3705 $ + * + * Date: $Date: 2009-04-11 17:02:24 +0000 (Sat, 11 Apr 2009) $ + * + * Copyright (c) 2002, 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.cocoon; + +import com.yahoo.platform.yui.compressor.CssCompressor; +import com.yahoo.platform.yui.compressor.JavaScriptCompressor; +import org.apache.avalon.framework.parameters.ParameterException; +import org.apache.avalon.framework.parameters.Parameters; +import org.apache.cocoon.ProcessingException; +import org.apache.cocoon.environment.*; +import org.apache.cocoon.reading.ResourceReader; +import org.apache.excalibur.source.Source; +import org.apache.excalibur.source.SourceValidity; +import org.apache.excalibur.source.impl.validity.TimeStampValidity; +import org.apache.log4j.Logger; +import org.dspace.core.ConfigurationManager; +import org.mozilla.javascript.EvaluatorException; +import org.xml.sax.SAXException; + +import java.io.*; +import java.util.*; + +/** + * Concatenates and Minifies CSS, JS and JSON files + * + * The URL of the resource can contain references to multiple + * files: e.g."themes/Mirage/lib/css/reset,base,helper,style,print.css" + * The Reader will concatenate all these files, and output them as + * a single resource. + * + * If "xmlui.theme.enableMinification" is set to true, the + * output will also be minified prior to returning the resource. + * + * Validity is determined based upon last modified date of + * the most recently edited file. + * + * @author Roel Van Reeth (roel at atmire dot com) + * @author Art Lowel (art dot lowel at atmire dot com) + * @author Ben Bosman (ben at atmire dot com) + */ + +public class ConcatenationReader extends ResourceReader { + + private final static int MINIFY_LINEBREAKPOS = 8000; + protected List inputSources; + private String key; + private StreamEnumeration streamEnumeration; + private static Logger log = Logger.getLogger(ConcatenationReader.class); + private boolean doMinify = true; + + /** + * Setup the reader. + * The resource is opened to get an InputStream, + * the length and the last modification date + */ + public void setup(SourceResolver resolver, Map objectModel, String src, Parameters par) + throws ProcessingException, SAXException, IOException { + + // save key + this.key = src; + + // don't support byte ranges (resumed downloads) + this.setByteRanges(false); + + // setup list of sources, get relevant parts of path + this.inputSources = new ArrayList(); + String path = src.substring(0, src.lastIndexOf("/")); + String file = src.substring(src.lastIndexOf("/")+1); + + // now build own list of inputsources + String[] files = file.split(","); + for (String f : files) { + if (file.endsWith(".json") && !f.endsWith(".json")) { + f += ".json"; + } + if (file.endsWith(".js") && !f.endsWith(".js")) { + f += ".js"; + } + if (file.endsWith(".css") && !f.endsWith(".css")) { + f += ".css"; + } + + String fullPath = path + "/" + f; + this.inputSources.add(resolver.resolveURI(fullPath)); + } + + // do super stuff + super.setup(resolver, objectModel, path+"/"+files[files.length-1], par); + + // add stream enumerator + this.streamEnumeration = new StreamEnumeration(); + + // check minify parameter + try { + if("nominify".equals(par.getParameter("requestQueryString"))) { + this.doMinify = false; + } else { + // modify key! + this.key += "?minify"; + } + } catch (ParameterException e) { + log.error("ParameterException in setup when retrieving parameter requestQueryString", e); + } + } + + /** + * Recyclable + */ + public void recycle() { + if (this.inputSources != null) { + for(Source s : this.inputSources) { + super.resolver.release(s); + } + this.inputSources = null; + this.streamEnumeration = null; + this.key = null; + } + super.recycle(); + } + + /** + * Generate the unique key. + * This key must be unique inside the space of this component. + * + * @return The generated key hashes the src + */ + public Serializable getKey() { + return key; + } + + /** + * Generate the validity object. + * + * @return The generated validity object or null if the + * component is currently not cacheable. + */ + public SourceValidity getValidity() { + final long lm = getLastModified(); + if(lm > 0) { + return new TimeStampValidity(lm); + } + return null; + } + + /** + * @return the time the read source was last modified or 0 if it is not + * possible to detect + */ + public long getLastModified() { + // get latest modified value + long modified = 0; + + for(Source s : this.inputSources) { + if(s.getLastModified() > modified) { + modified = s.getLastModified(); + } + } + + return modified; + } + + /** + * Generates the requested resource. + */ + public void generate() throws IOException, ProcessingException { + InputStream inputStream; + + // create one single inputstream from all files + inputStream = new SequenceInputStream(streamEnumeration); + + try { + if (ConfigurationManager.getBooleanProperty("xmlui.theme.enableMinification",false) && this.doMinify) { + compressedOutput(inputStream); + } else { + normalOutput(inputStream); + } + // Bugzilla Bug #25069: Close inputStream in finally block. + } finally { + if (inputStream != null) { + inputStream.close(); + } + } + + out.flush(); + } + + private void compressedOutput(InputStream inputStream) throws IOException { + // prepare streams + ByteArrayOutputStream bytes = new ByteArrayOutputStream(); + Writer outWriter = new OutputStreamWriter(bytes); + + // do compression + Reader in = new BufferedReader(new InputStreamReader(inputStream)); + if (this.key.endsWith(".js?minify") || this.key.endsWith(".json?minify")) { + try { + + JavaScriptCompressor compressor = new JavaScriptCompressor(in, null); + + // boolean options: munge, verbose, preserveAllSemiColons, disableOptimizations + compressor.compress(outWriter, MINIFY_LINEBREAKPOS, true, false, false, false); + + } catch (EvaluatorException e) { + // fail gracefully on malformed javascript: send it without compressing + normalOutput(inputStream); + return; + } + } else if (this.key.endsWith(".css?minify")) { + CssCompressor compressor = new CssCompressor(in); + compressor.compress(outWriter, MINIFY_LINEBREAKPOS); + } else { + // or not if not right type + normalOutput(inputStream); + return; + } + + // first send content-length header + outWriter.flush(); + response.setHeader("Content-Length", Long.toString(bytes.size())); + + // then send output and clean up + bytes.writeTo(out); + in.close(); + } + + private void normalOutput(InputStream inputStream) throws IOException { + boolean validContentLength = true; + byte[] buffer = new byte[bufferSize]; + int length; + long contentLength = 0; + + // calculate content length + for (Source s : this.inputSources) { + if(s.getContentLength() < 0) { + validContentLength = false; + } + contentLength += s.getContentLength(); + } + if(validContentLength) { + response.setHeader("Content-Length", Long.toString(contentLength)); + } + + // send contents + while ((length = inputStream.read(buffer)) > -1) { + out.write(buffer, 0, length); + } + } + + private class StreamEnumeration implements Enumeration { + private int index; + + private StreamEnumeration() { + this.index = 0; + } + + public boolean hasMoreElements() { + return index < inputSources.size(); + } + + public InputStream nextElement() { + try { + InputStream elem = inputSources.get(index).getInputStream(); + index++; + return elem; + } catch (IOException e) { + log.error("IOException in StreamEnumeration.nextElement when retrieving InputStream of a Source; index = " + + index + ", inputSources.size = " + inputSources.size(), e); + return null; + } + } + } +} diff --git a/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/utils/XSLUtils.java b/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/utils/XSLUtils.java new file mode 100644 index 0000000000..d682892637 --- /dev/null +++ b/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/utils/XSLUtils.java @@ -0,0 +1,81 @@ +/* + * ConcatenationReader.java + * + * Version: $Revision: 3705 $ + * + * Date: $Date: 2009-04-11 17:02:24 +0000 (Sat, 11 Apr 2009) $ + * + * Copyright (c) 2002, 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.utils; + +/** + * Cuts off the string at the space nearest to the targetLength if there is one within the + * maxDeviation, or at the targetLength if none is found + * + * @author Art Lowel (art dot lowel at atmire dot com) + */ +public class XSLUtils { + + /* + * Cuts off the string at the space nearest to the targetLength if there is one within the + * maxDeviation, or at the targetLength if none is found + */ + public static String shortenString(String string, int targetLength, int maxDeviation) { + targetLength = Math.abs(targetLength); + maxDeviation = Math.abs(maxDeviation); + if (string == null || string.length() <= targetLength + maxDeviation) + return string; + + + int currentLength = targetLength; + int currentDeviation = 0; + while (currentDeviation <= maxDeviation) { + try { + if (string.charAt(currentLength) == ' ') + return string.substring(0, currentLength) + " ..."; + if (string.charAt(currentLength + currentDeviation) == ' ') + return string.substring(0, currentLength + currentDeviation) + " ..."; + if (string.charAt(currentLength - currentDeviation) == ' ') + return string.substring(0, currentLength - currentDeviation) + " ..."; + } catch (Exception e) { + //just in case + } + + currentDeviation++; + } + + return string.substring(0, targetLength) + "..."; + + } +} diff --git a/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/i18n/messages.xml b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/i18n/messages.xml index a2abd168f3..1efca712dc 100644 --- a/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/i18n/messages.xml +++ b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/i18n/messages.xml @@ -3,28 +3,28 @@ messages.xml Version: $Revision$ - + Date: $Date$ - + 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 @@ -39,20 +39,20 @@ DAMAGE. --> - + - + 2) Some general keys which are specific to a particular aspect + may be found at xmlui. without specifying a + particular java class. + --> + DSpace Home Search @@ -65,20 +65,20 @@ Delete Next Untitled - - - Page not found Page not found We can't find the page you asked for. - - - Only site administrators may assume login as another user. @@ -87,31 +87,31 @@ The DSpace digital repository system captures, stores, indexes, preserves, and distributes digital research material. The Channel Image Untitled - + Notice - - - + + + - - - - - - - + + + + + + + Search Results for Community: {0} Search Results for Collection: {0} @@ -150,7 +150,7 @@ Identifier Language (ISO) Keyword - + Contributor Creator @@ -166,14 +166,14 @@ AND OR NOT - - + + Or enter first few letters: Browse for items that begin with these letters - Jump to a point in the index: - (Choose month) - (Choose year) + Jump to a point in the index: + (Choose month) + (Choose year) Or type in a year: Browse for items that are from the given year. Sorry, there are no results for this browse. @@ -199,17 +199,17 @@ Browsing {0} by Subject {1} Browsing {0} by Subject - + Browsing {0} by Title {1} Browsing {0} by Title - + Browsing {0} by Issue Date {1} Browsing {0} by Issue Date Browsing {0} by Submit Date {1} Browsing {0} by Submit Date - + Search Scope All of DSpace @@ -220,7 +220,7 @@ Dates Advanced Search Recent Submissions - + Community List Community List @@ -239,8 +239,8 @@ Sub-communities within this community Collections in this community Recent Submissions - - + + Contact us Contact us @@ -249,7 +249,7 @@ On-line form Feedback Email - + Give feedback Give feedback @@ -259,23 +259,23 @@ This address will be used to follow up on your feedback. Comments Send Feedback - + Give feedback Give feedback Feedback sent Your comments have been received. - + Search DSpace Enter some text in the box below to search DSpace. - + View Item This item appears in the following Collection(s) Show simple item record Show full item record - + Browse All of DSpace @@ -287,14 +287,14 @@ By Submit Date This Collection This Community - + Search Search Search Search Scope Full Text Search - + This resource is restricted Restricted @@ -314,9 +314,9 @@ item resource unknown - + - The item is restricted + The item is restricted The item you are attempting to access is a restricted item and requires credentials to view. Please login below to access the item. Monthly Reports @@ -326,34 +326,34 @@ There are currently no reports available for this service. Please check back later. - The file is restricted + The file is restricted The file you are attempting to access is a restricted file and requires credentials to view. Please login below to access the file. - + This export archive is restricted. 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. - - - - - - - + + + + + + + New user registration Forgot Password - + Registration unavailable Registration unavailable The configuration of this DSpace repository does not allow registration in this context. Please contact the site administrator with questions or comments. - + Update Profile Create Profile @@ -381,7 +381,7 @@ Authorization groups you belong to Identify Security - + Verify Email Create Profile @@ -394,14 +394,14 @@ Password reset Password reset Your password has been reset. - + Invalid token Invalid token Invalid token The URL you provided is invalid. The URL may have been broken across multiple lines in your email client, like this: 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: - + My Account Profile @@ -422,7 +422,7 @@ Register new user Register an account to subscribe to collections for email updates, and submit new items to DSpace. Click here to register. - + Sign in Sign in @@ -432,7 +432,7 @@ The user name and/or password supplied were not valid. Password Sign in - + Choose a Login Method Choose Login @@ -450,24 +450,24 @@ Authentication Failed Failed Authentication Authentication Failed - + No Authentication Method Found No authentication method was found. Please contact the site administrator. Shibboleth Login Failed Shibboleth authentication not available at this time. Please contact the site administrator. - + Profile updated Update profile Profile updated Your profile information has been updated. - + Registration finished Registration Finished You're now registered to use the DSpace system. You can subscribe to collections to receive email updates about new items. - + Reset password Reset password @@ -478,7 +478,7 @@ Reset password Choose a password at least 6 characters long Please retype your password to confirm - + Forgot Password Forgot Password @@ -487,7 +487,7 @@ Enter the same address used when registering. Email address not found. Send info - + New user registration Email already in use @@ -500,7 +500,7 @@ This address will be verified and used as your login name. Unable to send email to this address. Register - + Verification email sent Verification email sent @@ -512,12 +512,12 @@ - - + + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!--> + + @@ -528,7 +528,7 @@ Go to MyDSpace Home Item submission Item submission - Item submission + Item submission < Previous Save & Exit Next > @@ -540,14 +540,14 @@ Show simple item record Submission Submission - + Submit a new item to this collection - + Submissions - + Submissions & Workflow Submissions @@ -610,7 +610,7 @@ Creative Commons License Complete - + Resume @@ -627,7 +627,7 @@ Save it, I'll work on it later Remove the submission - + Initial Questions Important Note: @@ -644,7 +644,7 @@ Date Issued Citation Publisher - + Describe Item Error: Unknown field type @@ -682,7 +682,7 @@ Edit File checksum: Remove selected files - + Edit File File @@ -711,7 +711,7 @@ unknown known supported - + Creative Commons License If you wish, you may add a Creative Commons License to your item. Creative Commons licenses govern what people who read your work may then do with it. 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. @@ -732,13 +732,13 @@ Submission removed Your submission has been cancelled, and the incomplete item removed from the system. - Go to the Submissions page + Go to the Submissions page - Submission complete - 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. - Go to the Submissions page - Submit another item + Submission complete + 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. + Go to the Submissions page + Submit another item Actions you may perform on this task: @@ -763,17 +763,17 @@ The reason field is required Reject item - - - + + + - - - + + + The user was added successfully. The user was edited successfully. An email message has been sent to the user containing a token that may be used to choose a new password. @@ -801,10 +801,10 @@ The selected bitstreams have been deleted. The items were successfully mapped. The items have been unmapped. - + Manage E-people - + Context @@ -819,7 +819,7 @@ Export Collection Export Community Export Metadata - + Administrative Access Control @@ -837,8 +837,8 @@ My Exports - - + + Export Archive The item id provided is invalid. @@ -851,7 +851,7 @@ 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. 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. Available export archives for download: - + @@ -872,8 +872,8 @@ Email Delete E-People Your search found no results... - - + + Add E-Person Add E-Person @@ -887,7 +887,7 @@ Require Certificate Can Log In Create E-Person - + Edit E-Person Edit E-Person @@ -904,19 +904,19 @@ 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. Delete E-Person Login as E-Person - + This eperson is unable to be deleted because of the following constraint(s): and eperson has submitted one or more items eperson has an active submission workflow eperson has a workflow task awaiting their attention eperson has an unidentified constraint within the system - + Groups this E-Person is a member of: (via group: {0}) none - - + + Confirm E-Person Deletion Confirm Delete @@ -985,12 +985,12 @@ Name Email - group: {0} + group: {0} This group has no members. [pending] Remove members Remove members - + Confirm Group Deletion Confirm Delete @@ -1000,11 +1000,11 @@ Name E-People Groups - + Format registry - Metadata registry - + Metadata registry + Delete Bitstream Formats Delete bitstream formats @@ -1131,13 +1131,13 @@ Move to schema: Move fields - - - + + + Authorization Policy List - + Administer Authorization Policies Administer Authorization Policies @@ -1150,9 +1150,9 @@ Click here to go to the item wildcard policy admin tool Community/collection authorizations Click on a community or collection to edit its policies. - - - + + + Edit Policies Policies List @@ -1165,9 +1165,9 @@ Group Delete Selected Edit - - + + Edit Item's Policies Policies List @@ -1180,10 +1180,10 @@ Add a new Item policy Add a new Bundle policy Add a new Bitstream policy - + No policies found for this object. - - + + Edit Policy Edit Policy @@ -1195,7 +1195,7 @@ ID Name Actions for this resource - + Set current Search Results @@ -1203,8 +1203,8 @@ Search for a group Search Select the action - - + + Advanced Policy Manager Advanced Authorizations @@ -1220,7 +1220,7 @@ Collection Add policies Clear policies - + Confirm Policy Deletion Confirm Delete @@ -1229,7 +1229,7 @@ ID Action Group - + Items Edit Template Item for Collection: {0} @@ -1238,7 +1238,7 @@ Item Bitstreams Item Metadata View Item - + Upload Bitstream Upload bitstream @@ -1255,7 +1255,7 @@ Optionally, provide a brief description of the file, for example "Main article", or "Experiment data readings". Upload You need the ADD & WRITE privilege on at least one bundle to be able to upload new bitstreams. - + Confirm Deletion Confirm deletion @@ -1264,7 +1264,7 @@ Name Description Format - + Confirm Confirm @@ -1303,7 +1303,7 @@ If the format is not in the above list, select "format not in list" above and describe it in the field below. Other Format The application you used to create the file, and the version number (for example, "ACMESoft SuperApp version 1.5"). - + Item Bitstreams Item bitstreams @@ -1320,7 +1320,7 @@ Delete bitstreams You need the ADD & WRITE privilege on the item and bundles to be able to upload new bitstreams. Only System Administrators can delete bitstreams / files. - + Item Metadata Item metadata @@ -1363,7 +1363,7 @@ View Item View Item - + Find Item Find Item @@ -1371,48 +1371,48 @@ Unable to resolve identifier. Find - - Import Metadata - Import Metadata - Import Metadata - changes - No changes were detected - New item - Upload successful - Upload failed + + Import Metadata + Import Metadata + Import Metadata + changes + No changes were detected + New item + Upload successful + Upload failed Unknown metadata schema in heading Unknown metadata element in heading - Import successful - Import failed - Number of changes exceeds maximum allowed. Limit changes or alter bulkedit.gui-item-limit in dspace.cfg + Import successful + Import failed + Number of changes exceeds maximum allowed. Limit changes or alter bulkedit.gui-item-limit in dspace.cfg - - Upload CSV + + Upload CSV - - Successfully processed - Changes applied to item - Added: - Removed: - Added to owning collection - Removed from owning collection - Mapped to collection - Unmapped from collection + + Successfully processed + Changes applied to item + Added: + Removed: + Added to owning collection + Removed from owning collection + Mapped to collection + Unmapped from collection - - Add: - Remove: - Add to owning collection - Remove from owning collection - Map to collection - Un-map from collection - Changes pending for item - Apply changes - Pending changes are listed below for review + + Add: + Remove: + Add to owning collection + Remove from owning collection + Map to collection + Un-map from collection + Changes pending for item + Apply changes + Pending changes are listed below for review Item mapper - + Item Mapper Item Mapper - Map Items from Other Collections @@ -1424,7 +1424,7 @@ Search Items Browse mapped items (Requires the collection ADD privilege) - + Search Items Search items @@ -1434,7 +1434,7 @@ Collection Author Title - + Browse Mapped Items Browse mapped items @@ -1445,13 +1445,13 @@ Author Title You need the REMOVE privilege on this collection to be able to unmap items from this collection. - + - Collections - Edit Metadata - Assign Roles - - + Collections + Edit Metadata + Assign Roles + + Edit Collection Roles Roles @@ -1489,14 +1489,14 @@ Any items and incomplete submissions in this collection that aren't contained in other collections The contents of those items All associated authorization policies - + Confirm role deletion Confirm Confirm deletion for role {0} 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. Are you sure you want to delete this role? All changes and customizations made to the {0} group will be lost and would have to be created anew. - + Edit Collection Metadata Metadata @@ -1523,7 +1523,7 @@ Create Collection Enter Metadata for a New Collection of {0} Create - + Collection Harvesting Settings Harvesting @@ -1532,7 +1532,7 @@ This is a standard DSpace collection This collection harvests its content from an external source Save - + Harvested Collection Location Harvesting Options @@ -1549,7 +1549,7 @@ Harvest metadata and references to bitstreams (requires ORE support). Harvest metadata and bitstreams (requires ORE support). Test Settings - + Harvested Collection Location OAI Provider @@ -1588,7 +1588,7 @@ Generator Settings OAI-PMH URL ORE source - Harvester Settings + Harvester Settings Communities @@ -1641,7 +1641,7 @@ Current logo Remove logo Delete community - + Create Community Create Community @@ -1698,11 +1698,11 @@ 30 minutes 1 hour Keep the current count down timer - Manage session - Continue to allow authenticated sessions - Restrict authentication but maintain current sessions - Restrict authentication and kill current sessions - Note: Site administrators are exempt from session management. + Manage session + Continue to allow authenticated sessions + Restrict authentication but maintain current sessions + Restrict authentication and kill current sessions + Note: Site administrators are exempt from session management. Activate Deactivate Current Activity ({0} pages maximum) @@ -1715,14 +1715,14 @@ IP Address URL Page User-Agent - Anonymous {0} + Anonymous {0} No page views have been recorded. - + Use the tabs above to select the information to display - + In {0} minutes: - + Not Authorized Not authorized @@ -1749,17 +1749,17 @@ View Statistics Statistics - - - - - - - + + + + + + + @@ -1768,20 +1768,20 @@ - +

- This website is using Manakin, a new front end for DSpace created by Texas A&M University - Libraries. The interface can be extensively modified through Manakin Aspects and XSL based Themes. - For more information visit + This website is using Manakin, a new front end for DSpace created by Texas A&M University + Libraries. The interface can be extensively modified through Manakin Aspects and XSL based Themes. + For more information visit http://di.tamu.edu and - http://dspace.org + http://dspace.org

Contact Us Send Feedback - + DSpace/Manakin Repository Profile: @@ -1792,15 +1792,15 @@ Advanced Search This Community This Collection - + Previous Page Now showing items {0}-{1} of {2} Next Page - + Creative Commons Original License - - + + @@ -1809,11 +1809,11 @@ Unknown author This is not a DSpace object conformant to the METS 1.0 profile and as such cannot be - rendered effectively. You can override either the template that handles the general - case in dri2xhtml to perform the needed function, or create your template to match + rendered effectively. You can override either the template that handles the general + case in dri2xhtml to perform the needed function, or create your template to match whatever profile you use. - + Preview Title Author @@ -1823,9 +1823,10 @@ Date Publisher Subject - + Files in this item Files + Name Size Format View @@ -1837,41 +1838,41 @@ Kb Mb Gb - + The following license files are associated with this item: - + - The summaryView of a collection is not currently used or implemented. This can be fixed + The summaryView of a collection is not currently used or implemented. This can be fixed by overriding the dri2xhtml's template named collectionSummaryView. - The summaryView of a community is not currently used or implemented. This can be fixed + The summaryView of a community is not currently used or implemented. This can be fixed by overriding the dri2xhtml's template named communitySummaryView. - + The collection's logo The community's logo - No logo - News - + No logo + News + - Qualified Dublin Core (QDC) is not applicable to DSpace communities and collections at - this time. When using QDC, you should use the QDC crosswalk for DSpace items and either + Qualified Dublin Core (QDC) is not applicable to DSpace communities and collections at + this time. When using QDC, you should use the QDC crosswalk for DSpace items and either DIM or MODS for processing of communities and collections. - + Dublin Core elements Dublin Core terms - - + + Preview Date Title Author - + diff --git a/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/sitemap.xmap b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/sitemap.xmap index 061fb1334f..b5587c95a8 100644 --- a/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/sitemap.xmap +++ b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/sitemap.xmap @@ -3,28 +3,28 @@ sitemap.xmap Version: $Revision$ - + Date: $Date$ - + 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 @@ -207,15 +207,16 @@ - - 3600000 - - - - - - + + 3600000 + + + + + + + @@ -230,10 +231,10 @@ - + - - + + @@ -241,14 +242,14 @@ - + - - + + @@ -259,7 +260,7 @@ Bitstreams for items that have a handle assigned. If the sequence parameter is given then that will be used to resolve the bitstream, other wise the name will attempt to be matched. - + /bitstream/handle/[handlePrefix]/[handlePostfix]/[name]?sequence=[sequence] NOTE: When user-agent was identified as a spider (crawler robot), pass @@ -302,12 +303,12 @@ - + @@ -346,10 +347,10 @@ - + @@ -367,11 +368,11 @@ - - + + @@ -399,9 +400,9 @@ - + - + @@ -421,10 +422,10 @@ --> - - - - + + + + @@ -446,8 +447,8 @@ - - + + @@ -463,7 +464,7 @@ - + @@ -479,7 +480,7 @@ - + @@ -493,7 +494,7 @@ - + @@ -523,7 +524,7 @@ - + @@ -536,11 +537,29 @@ + + + + + + + + + + + + + + + + + + - + @@ -567,10 +586,10 @@ - + - + @@ -579,7 +598,7 @@ - + @@ -588,7 +607,7 @@ - + diff --git a/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/Mirage.xsl b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/Mirage.xsl new file mode 100644 index 0000000000..2ff361e596 --- /dev/null +++ b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/Mirage.xsl @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/images/@mirelogo-small.png b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/images/@mirelogo-small.png new file mode 100644 index 0000000000..f66097ca79 Binary files /dev/null and b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/images/@mirelogo-small.png differ diff --git a/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/images/apple-touch-icon.png b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/images/apple-touch-icon.png new file mode 100644 index 0000000000..57435045a6 Binary files /dev/null and b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/images/apple-touch-icon.png differ diff --git a/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/images/dspace-logo-only.png b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/images/dspace-logo-only.png new file mode 100644 index 0000000000..89f7ed88fe Binary files /dev/null and b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/images/dspace-logo-only.png differ diff --git a/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/images/favicon.ico b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/images/favicon.ico new file mode 100644 index 0000000000..213423e15b Binary files /dev/null and b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/images/favicon.ico differ diff --git a/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/images/mime.png b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/images/mime.png new file mode 100644 index 0000000000..2d5b83c64e Binary files /dev/null and b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/images/mime.png differ diff --git a/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/css/base.css b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/css/base.css new file mode 100644 index 0000000000..bf3b37dec8 --- /dev/null +++ b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/css/base.css @@ -0,0 +1,74 @@ +/* + * base.css + * + * minimal base styles + */ + + +/* #444 looks better than black: twitter.com/H_FJ/statuses/11800719859 */ +body, select, input, textarea { color:#444; } + +/* www.aestheticallyloyal.com/public/optimize-legibility/ */ +h1,h2,h3,h4,h5,h6 { font-weight: bold; text-rendering: optimizeLegibility; } + +/* maxvoltar.com/archive/-webkit-font-smoothing */ +html { -webkit-font-smoothing: antialiased; } + + +/* Accessible focus treatment: people.opera.com/patrickl/experiments/keyboard/test */ +a:hover, a:active { outline: none; } + +a, a:active, a:visited { color:#607890; } +a:hover { color:#036; } + + +ul { margin-left:30px; } +ol { margin-left:30px; list-style-type: decimal; } + +small { font-size:85%; } +.bold, strong, th { font-weight: bold; } + +td, td img { vertical-align:top; } + +sub { vertical-align: sub; font-size: smaller; } +sup { vertical-align: super; font-size: smaller; } + +pre { + padding: 15px; + + /* www.pathf.com/blogs/2008/05/formatting-quoted-code-in-blog-posts-css21-white-space-pre-wrap/ */ + white-space: pre; /* CSS2 */ + white-space: pre-wrap; /* CSS 2.1 */ + white-space: pre-line; /* CSS 3 (and 2.1 as well, actually) */ + word-wrap: break-word; /* IE */ +} + +/* align checkboxes, radios, text inputs with their label + by: Thierry Koblentz tjkdesign.com/ez-css/css/base.css */ +input[type="radio"] { vertical-align: text-bottom; } +input[type="checkbox"] { vertical-align: bottom; *vertical-align: baseline; } +.ie6 input { vertical-align: text-bottom; } + +/* hand cursor on clickable input elements */ +label, input[type=button], input[type=submit], button { cursor: pointer; } + + +/* These selection declarations have to be separate. + No text-shadow: twitter.com/miketaylr/status/12228805301 */ +::-moz-selection{ background: #5e9fff; color:#fff; text-shadow: none; } +::selection { background:#5e9fff; color:#fff; text-shadow: none; } + +/* j.mp/webkit-tap-highlight-color */ +a:link { -webkit-tap-highlight-color: #5e9fff; } + + +/* always force a scrollbar in non-IE */ +html { overflow-y: scroll; } + +/* make buttons play nice in IE: + www.viget.com/inspire/styling-the-button-element-in-internet-explorer/ */ +button { width: auto; overflow: visible; } + +/* bicubic resizing for non-native sized IMG: + code.flickr.com/blog/2008/11/12/on-ui-quality-the-little-things-client-side-image-resizing/ */ +.ie7 img { -ms-interpolation-mode: bicubic; } \ No newline at end of file diff --git a/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/css/handheld.css b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/css/handheld.css new file mode 100644 index 0000000000..3d91cc73bd --- /dev/null +++ b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/css/handheld.css @@ -0,0 +1,7 @@ + +* { + float: none; /* Screens are not big enough to account for floats */ + font-size: 80%; /* Slightly reducing font size to reduce need to scroll */ + background: #fff; /* As much contrast as possible */ + color: #000; +} \ No newline at end of file diff --git a/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/css/helper.css b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/css/helper.css new file mode 100644 index 0000000000..a0276f537c --- /dev/null +++ b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/css/helper.css @@ -0,0 +1,28 @@ +/* + * helper.css + * + * Non-semantic helper classes + */ + +/* for image replacement */ +.ir { display:block; text-indent:-999em; overflow:hidden; background-repeat: no-repeat; } + +/* Hide for both screenreaders and browsers + css-discuss.incutio.com/wiki/Screenreader_Visibility */ +.hidden { display:none; visibility:hidden; } + +/* Hide only visually, but have it available for screenreaders + www.webaim.org/techniques/css/invisiblecontent/ + Solution from: j.mp/visuallyhidden - Thanks Jonathan Neal! */ +.visuallyhidden { position:absolute !important; + clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ + clip: rect(1px, 1px, 1px, 1px); } + +/* Hide visually and from screenreaders, but maintain layout */ +.invisible { visibility: hidden; } + +/* >> The Magnificent CLEARFIX << */ +.clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } +.clearfix { display: inline-block; } +* html .clearfix { height: 1%; } /* Hides from IE-mac \*/ +.clearfix { display: block; } \ No newline at end of file diff --git a/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/css/media.css b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/css/media.css new file mode 100644 index 0000000000..0991cec192 --- /dev/null +++ b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/css/media.css @@ -0,0 +1,22 @@ +/* + * Media queries for responsive design + */ + +@media all and (orientation:portrait) { + /* Style adjustments for portrait mode goes here */ + +} + +@media all and (orientation:landscape) { + /* Style adjustments for landscape mode goes here */ + +} + +/* Grade-A Mobile Browsers (Opera Mobile, iPhone Safari, Android Chrome) + Consider this: www.cloudfour.com/css-media-query-for-mobile-is-fools-gold/ */ +@media screen and (max-device-width: 480px) { + + + /* Prevent iOS, WinMobile from adjusting font size */ + html { -webkit-text-size-adjust:none; -ms-text-size-adjust:none; } +} \ No newline at end of file diff --git a/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/css/print.css b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/css/print.css new file mode 100644 index 0000000000..ec4c2747f0 --- /dev/null +++ b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/css/print.css @@ -0,0 +1,27 @@ +/* + * print.css + * + * print styles + */ +@media print { + * { background: transparent !important; color: #444 !important; text-shadow: none; } + + a, a:visited { color: #444 !important; text-decoration: underline; } + + a:after { content: " (" attr(href) ")"; } + + abbr:after { content: " (" attr(title) ")"; } + + .ir a:after { content: ""; } /* Don't show links for images */ + + pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } + + img { page-break-inside: avoid; } + + @page { margin: 0.5cm; } + + p, h2, h3 { orphans: 3; widows: 3; } + + h2, h3{ page-break-after: avoid; } +} + diff --git a/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/css/reset.css b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/css/reset.css new file mode 100644 index 0000000000..31a60e4d6d --- /dev/null +++ b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/css/reset.css @@ -0,0 +1,80 @@ +/* + reset.css +*/ + + + +/* + html5doctor.com Reset Stylesheet (Eric Meyer's Reset Reloaded + HTML5 baseline) + v1.4 2009-07-27 | Authors: Eric Meyer & Richard Clark + html5doctor.com/html-5-reset-stylesheet/ +*/ +html, body, div, span, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +abbr, address, cite, code, +del, dfn, em, img, ins, kbd, q, samp, +small, strong, sub, sup, var, +b, i, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, figure, footer, header, +hgroup, menu, nav, section, menu, +time, mark, audio, video { + margin:0; + padding:0; + border:0; + outline:0; + font-size:100%; + vertical-align:baseline; + background:transparent; +} + +article, aside, figure, footer, header, +hgroup, nav, section { display:block; } + +nav ul { list-style:none; } + +blockquote, q { quotes:none; } + +blockquote:before, blockquote:after, +q:before, q:after { content:''; content:none; } + +a { margin:0; padding:0; font-size:100%; vertical-align:baseline; background:transparent; } + +ins { background-color:#ff9; color:#000; text-decoration:none; } + +mark { background-color:#ff9; color:#000; font-style:italic; font-weight:bold; } + +del { text-decoration: line-through; } + +abbr[title], dfn[title] { border-bottom:1px dotted #000; cursor:help; } + +/* tables still need cellspacing="0" in the markup */ +table { border-collapse:collapse; border-spacing:0; } + +hr { display:block; height:1px; border:0; border-top:1px solid #ccc; margin:1em 0; padding:0; } + +input, select { vertical-align:middle; } + + +/* +fonts.css from the YUI Library: developer.yahoo.com/yui/ + Please refer to developer.yahoo.com/yui/fonts/ for font sizing percentages + +There are three custom edits: + * remove arial, helvetica from explicit font stack + * make the line-height relative and unit-less + * remove the pre, code styles +*/ +body { font:13px sans-serif; *font-size:small; *font:x-small; line-height:1.22; } + +table { font-size:inherit; font:100%; } + +select, input, textarea { font:99% sans-serif; } + + +/* normalize monospace sizing + * en.wikipedia.org/wiki/MediaWiki_talk:Common.css/Archive_11#Teletype_style_fix_for_Chrome + */ +pre, code, kbd, samp { font-family: monospace, sans-serif; } \ No newline at end of file diff --git a/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/css/style.css b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/css/style.css new file mode 100644 index 0000000000..8f1cd19499 --- /dev/null +++ b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/css/style.css @@ -0,0 +1,883 @@ +/* + * style.css + * + * Primary Styles + */ + +/*Font size percentages based on the tables at developer.yahoo.com/yui/fonts/ */ +h1 { + font-size: 182%; + color: #1F3F5E; + text-align: justify; +} + +h2{ + font-size: 123.1%; +} + +h3 { + font-size: 116%; +} + +h4 { + font-size: 108%; +} + +h5, h6 { + font-size: 100%; +} + +/*fix for firefox in os x, where selects get the incorrect +height if it's not explicitly set this shouldn't be noticeable in +other browsers*/ +select { + height: 20px; +} + +select.multiple { + height: auto; +} + +#ds-header-wrapper { + background-color: #1F3F5E; + color: white; +} + +#ds-header-logo-link { + text-decoration: none; + cursor: pointer; +} + +#ds-header-logo { + float:left; + width: 48px; + height: 50px; + margin-top: 10px; + background: url('../../images/dspace-logo-only.png'); + background-repeat: no-repeat; + background-color: transparent; + margin-right: 15px; +} + +#ds-header-logo-text { + font-size: 400%; + color: white; + line-height: 70px; + font-weight: normal; + vertical-align: middle; + float: left; +} + +#ds-user-box { + right: 0; + top: 10px; + position: absolute; + color: white; +} + +#ds-user-box a{ + color: white; +} + +#ds-trail-wrapper { + background-color: #b6c8d9; + margin: 0; + padding: 0; + border-top: 1px solid #9cacba; + border-bottom: 1px solid #9cacba; +} + +#ds-trail { + list-style: none; + line-height: 25px; + margin: 0; + padding: 0; +} + +#ds-trail li { + display: inline; + color: #1F3F5E; + margin-right: 5px; +} + +#ds-trail a { + color: #1F3F5E; +} + +#ds-trail, +#ds-header, +#ds-footer, +#ds-content { + width: 950px; + margin: auto; + position: relative; +} + +/*ie6 uses quirks mode for strict xhtml pages, and in quirks mode margin: auto; doesn't center things*/ +.ie6 #ds-trail-wrapper, +.ie6 #ds-header-wrapper, +.ie6 #ds-footer-wrapper, +.ie6 #ds-content-wrapper { + text-align: center; +} + +.ie6 #ds-trail, +.ie6 #ds-header, +.ie6 #ds-footer, +.ie6 #ds-content { + margin: 0; + text-align: left; +} + +#ds-footer-wrapper { + margin-top: 40px; +} + +#ds-footer { + border-top: 1px solid #9CACBA; + padding-top: 10px; + font-size: 93%; + line-height: 1.6em; +} + +#ds-footer-left { + float: left; +} + +#ds-footer-right { + float:right; +} + +#ds-footer-right span.theme-by{ + display: inline-block; + vertical-align: top; +} + +#ds-footer-logo-link { + text-decoration:none; + line-height: 40px; + cursor: pointer; +} + +#ds-footer-logo { + display: inline-block; + background: url('../../images/@mirelogo-small.png'); + background-repeat: no-repeat; + width: 79px; + height: 40px; +} + +#ds-footer-links { + clear: left; +} + +.ie6 #ds-footer-links { + display: inline; +} + +/*make transparent PNGs invisible in IE6 until PNG-fix is applied*/ +.ie6 #ds-header-logo, +.ie6 #ds-footer-logo { + visibility: hidden; +} + + +#ds-body { + float: left; + width: 675px; + padding-top: 10px; +} + +#ds-options-wrapper { + float: right; + width: 249px; + padding-top:10px; +} + +#ds-options { + padding: 0; +} + +h1.ds-option-set-head { + margin-top: 20px; + background-color: #f0f2f5; + padding: 3px 10px; + border: 1px solid #d8e8eb; + border-bottom: none; + font-size: 108%; +} + +#ds-search-option-head{ + margin-top: 0; +} + +div.ds-option-set { + border: 1px solid #d8e8eb; + border-top: none; +} + +div.ds-option-set ul { + list-style: none; + margin-left: 10px; + padding-top: 5px; + padding-bottom: 5px; +} + +div.ds-option-set .ds-sublist-head { + font-weight: normal; + font-size: 100%; +} + +div.ds-option-set ul.sublist { + margin-left: 20px; + padding-top: 0; + padding-bottom: 0; +} + +#ds-search-option { + padding: 10px; +} + +#ds-search-form { + margin-bottom: 10px; +} + +#ds-search-form input.ds-text-field{ + width: 169px; +} + +#ds-search-form input.ds-button-field { + margin-left: 6px; +} + +#ds-search-form input.ds-text-field, +#ds-search-form input.ds-button-field{ + margin-bottom: 10px; +} + +p { + margin-bottom: 10px; +} + +.submission fieldset.ds-form-list, +.administrative fieldset.ds-form-list { + margin-bottom: 25px; +} + +.primary { + margin-top: 10px; + margin-bottom: 30px; +} + +ol { + margin: 0; + list-style: none; +} + +th, +td { + padding: 5px; + vertical-align: middle; +} + +ul.ds-progress-list { + margin: 0 0 10px 0; + padding: 2px 0; + text-align: center; +} + +ul.ds-progress-list li { + font-weight: bold; + overflow: hidden; + display: inline; + padding: 4px 3px; + margin-top: 2px; + margin-left: 3px; + max-width: 400px; + line-height: 20px; +} + +ul.ds-progress-list li.button { + background-color: inherit; + border: none; + padding: 1px; + margin-top: 2px; + margin-left: 0; +} + +ul.ds-progress-list li.button input.ds-button-field { + font-size: 77%; +} + +ul.ds-progress-list li.current.button input.ds-button-field { + color: #0AAF0A; +} + +ul.ds-progress-list li.disabled.button input.ds-button-field { + color: #B8B8B8; +} + + +ul.ds-progress-list li.current { + color: #50B728; + background-color: inherit; + border-color: #D8F5D8; +} + +ul.ds-progress-list li.arrow { + border: none; + background: none; + font-size: 116%; + font-weight: normal; + margin-left: 0; + margin-right: 0; +} + +textarea.ds-textarea-field, +input.ds-text-field, +input.ds-file-field, +input.ds-button-field, +input.ds-password-field { + margin-bottom: 5px; + margin-top: 5px; + font-size: 93%; +} + +textarea.ds-textarea-field, +input.ds-text-field, +input.ds-password-field { + padding: 3px; + border: 1px solid #AAAAAA; +} + +.ie6 input.ds-text-field, +.ie6 input.ds-password-field { + font-size: 85%; + height: 22px; +} + +.submission .ds-form-list input.ds-text-field, +.administrative .ds-form-list input.ds-text-field, +textarea.ds-textarea-field { + width: 500px; +} + +table textarea.ds-textarea-field { + width: 400px; +} + +#aspect_administrative_item_EditItemMetadataForm_field_value { + width: 570px; +} + +#aspect_administrative_item_EditItemMetadataForm_field_language, +.ds-composite-component input.ds-text-field { + width: auto; +} + +textarea.ds-textarea-field:focus, +input.ds-text-field:focus, +input.input.ds-password-field:focus { + border-color: #5F9DE4; +} + +/* + * Show a blue glow around a focused text field + * only target browsers that support rgba colors and boxshadows + * see http://www.modernizr.com/docs/ + */ +.rgba.boxshadow textarea.ds-textarea-field:focus, +.rgba.boxshadow input.ds-text-field:focus, +.rgba.boxshadow input.ds-password-field:focus { + -moz-box-shadow:0 0 8px rgba(95, 158, 212, 0.5); + -webkit-box-shadow:0 0 8px rgba(95, 158, 212, 0.5); + box-shadow:0 0 8px rgba(95, 158, 212, 0.5); + border-color:rgba(95, 158, 212, 0.75); + outline:medium none; +} + +span.error { + clear: both; + display: block; + color: #c22121; + font-size: 0.9em; + margin-top: 3px; +} + +textarea.ds-textarea-field.error, +input.ds-text-field.error, +input.ds-password-field.error { + border-color: #c22121; + background-color: #fff2f2; +} + +.rgba.boxshadow textarea.ds-textarea-field.error:focus, +.rgba.boxshadow input.ds-text-field.error:focus, +.rgba.boxshadow input.ds-password-field.error:focus { + -moz-box-shadow:0 0 8px rgba(194, 33, 33, 0.5); + -webkit-box-shadow:0 0 8px rgba(194, 33, 33, 0.5); + box-shadow:0 0 8px rgba(194, 33, 33, 0.5); + border-color:rgba(194, 33, 33, 0.75) !important; + outline:medium none; +} + + +.ds-form-list { + margin-top: 15px; +} + +.submission h2, +.ds-form-list legend{ + font-size: 182%; + margin-bottom: 15px; + color: #1F3F5E; +} + +.ds-form-item legend { + font-size: 100%; + margin:0; + color: inherit; +} + +fieldset ol { + margin: 0; +} + +li.ds-form-item { + list-style: none; + margin-bottom: 35px; + vertical-align: middle !important; + position: relative; + clear: left; +} + +li.ds-form-item.last { + margin-bottom: 0; +} + +li.ds-form-item label.ds-form-label{ + font-weight: bold; + font-size: 123.1%; +} + +li.ds-form-item label.ds-composite-component{ + display: block; + float: left; + font-size: 93%; + padding:0 8px 0 0; +} + +li.ds-form-item label.ds-composite-component input.ds-text-field{ + font-size: 100%; + width: 242px; +} + +li.ds-form-item .ds-select-field { + margin-top: 5px; +} + +.ds-add-button, +label.ds-composite-component .ds-select-field { + margin-top: 6px; +} + +.ds-form-content input.ds-button-field { + font-size: 93%; +} + +#aspect_submission_StepTransformer_field_dc_date_issued_year, +#aspect_submission_StepTransformer_field_dc_date_issued_day { + width: 50px; +} + +#aspect_submission_StepTransformer_field_dc_identifier_value { + width: 130px; + margin-bottom: 0; +} + +span.composite-help, +span.field-help { + display: block; + font-size: 93%; + margin-top: 3px; + width: 506px; + text-align: justify; +} + +.ds-checkbox-field input, +.ds-radio-field input { + margin-left: 0; +} + +.ds-checkbox-field label, +.ds-radio-field label { + margin-right: 3px; +} +/*hide the double label for checkboxes & radio buttons*/ +.ds-checkbox-field legend, +.ds-radio-field legend { + display: none; +} + +.ds-previous-values { + margin-top: 10px; + clear: both; +} + +#aspect_submission_Submissions_div_submissions .ds-static-div, +.submission .ds-form-sublist ol { + background-color: #fafafa; + border: 1px solid #ebebeb; + margin-top: 3px; + margin-bottom: 30px; + padding: 10px; +} + +.submission .ds-form-sublist li.ds-form-item { + margin-bottom: 5px; +} + +.submission .ds-form-sublist .ds-form-label { + font-weight: bold; +} + + +.administrative.tabbed ul.horizontal { + list-style: none; + margin: 15px 0 0; + border-bottom: 1px solid #9cacba; +} + +.administrative.tabbed ul.horizontal li{ + float: left; + border: 1px solid #9cacba; + padding: 5px; + margin-bottom: -1px; + margin-right: 7px; + border-bottom: none; +} + +.administrative.tabbed ul.horizontal li a{ + text-decoration: none; + color: #444444; +} + +.administrative.tabbed ul.horizontal li.active-tab{ + background-color: #fafafa; + z-index: 1; + font-weight: bold; +} + +.pane { + padding: 10px; + clear: both; + background-color: #fafafa; + border: 1px solid #9cacba; + margin-bottom: 25px; + margin-top: 0; +} + +.pane .ds-form-list { + margin-top: 0; +} + +.administrative.tabbed .pane { + border-top: none; +} + +.pagination, +.pagination-masked { + padding: 7px; + background-color: #fafafa; + border: 1px solid #ebebeb; + line-height: 1em; + vertical-align:middle; +} + +.pagination-links { + list-style: none; + float: right; + margin: 0; +} + +.pagination-links li { + display: inline; + padding-left: 2px; + padding-right: 2px; +} + +.current-page-link { + font-weight: bold; + color: #1F3F5E; +} + +.current-page-link a{ + color: #1F3F5E; +} + +.pagination-info { + float: left; + margin:0; +} + +.ds-artifact-list { + list-style: none; + margin: 0; + line-height: 153.9%; +} + +.file-wrapper, +.ds-artifact-item { + padding-top: 15px; + padding-bottom: 15px; +} + +.ds-artifact-item.collection, +.ds-artifact-item.community, +#aspect_artifactbrowser_CommunityBrowser_div_comunity-browser .ds-artifact-item { + padding-top: 1px; + padding-bottom: 1px; +} + +.artifact-title { + font-size: 123.1%; +} + +.result-query, +.artifact-info { + color: gray; +} + +.artifact-abstract { + text-align: justify; +} + +ul.alphabet { + list-style: none; + margin: 0; +} + +ul.alphabet li { + display:inline; +} + +#aspect_eperson_PasswordLogin_list_password-login .ds-form-item { + float: left; + margin: 0; + margin-right: 25px; +} + +#aspect_eperson_PasswordLogin_list_password-login .ds-form-item a { + margin-left: 20px; +} + +#aspect_eperson_PasswordLogin_list_password-login .ds-form-item.last { + clear: left; +} + + +#aspect_eperson_PasswordLogin_list_password-login .ds-form-item.last .ds-form-label{ + display: none; +} + +td select.ds-select-field { + margin-left: 5px; +} + +form.search { + background-color: #fafafa; + border: 1px solid #ebebeb; + padding: 10px; + margin-bottom: 15px; +} + +form.search label { + font-weight: bold; +} + +form.search p.ds-paragraph.button-list { + text-align: center; + margin: 0; +} + +form.search fieldset { + margin: 0; +} + +form.search .ds-form-item { + margin: 0; + padding-bottom: 5px; +} + +form.search .ds-form-item select{ + margin-top: 0; +} + +form.search .ds-form-item label { + font-size: 100%; +} + +form.search .ds-form-content { + display: inline; +} + +form.search table input.ds-text-field { + margin: 0; +} + +form.search .field-help { + margin: 3px 0; +} + +.result-query { + margin-bottom: 30px; +} + +#aspect_administrative_registries_FormatRegistryMain_table_bitstream-format-registry, +#aspect_submission_Submissions_table_unfinished-submissions, +#aspect_submission_Submissions_table_submissions-inprogress, +table.detailtable { + margin-top: 10px; + margin-bottom: 10px; + border-collapse: collapse; +} + +#aspect_administrative_registries_FormatRegistryMain_table_bitstream-format-registry tr, +#aspect_submission_Submissions_table_unfinished-submissions tr, +#aspect_submission_Submissions_table_submissions-inprogress tr, +table.detailtable tr { + line-height: 1.6em; + border: 1px solid #ebebeb; +} + +#aspect_administrative_registries_FormatRegistryMain_table_bitstream-format-registry tr.even, +#aspect_submission_Submissions_table_unfinished-submissions tr.even, +#aspect_submission_Submissions_table_submissions-inprogress tr.even, +table.detailtable tr.even { + background-color: #fafafa; +} + +#aspect_administrative_registries_FormatRegistryMain_table_bitstream-format-registry td, +#aspect_submission_Submissions_table_unfinished-submissions td, +#aspect_submission_Submissions_table_submissions-inprogress td, +table.detailtable td { + padding: 5px 10px; + text-align: justify; + border: 1px solid #ebebeb; + vertical-align: top; +} + +#aspect_administrative_registries_FormatRegistryMain_table_bitstream-format-registry tr.ds-table-header-row, +#aspect_submission_Submissions_table_unfinished-submissions tr.ds-table-header-row, +#aspect_submission_Submissions_table_submissions-inprogress tr.ds-table-header-row { + border: none; +} + + +table.detailtable td.label-cell { + font-weight: bold; + text-align: left; + width: 100px; +} + +div.item-summary-view-metadata { + text-align: justify; + line-height: 161.6%; + margin-bottom: 30px; +} + +div.simple-item-view-authors { + font-size: 123.1%; + font-weight: bold; + border-bottom:1px solid #D8E8EB; + padding-bottom: 2px; + margin-bottom: 20px; + text-align: justify; +} + +div.simple-item-view-authors span{ + text-align: justify; +} + +#aspect_artifactbrowser_ItemViewer_div_item-view h2, +div.item-summary-view-metadata p.item-view-toggle-bottom, +div.simple-item-view-description { + margin-top: 20px; +} + +#aspect_artifactbrowser_ItemViewer_div_item-view h2, +div.simple-item-view-description h3{ + border-bottom:1px solid #D8E8EB; + margin-bottom: 3px; +} + +#aspect_artifactbrowser_ItemViewer_div_item-view h2 { + margin-bottom: 10px; +} + +div.spacer{ + height: 15px; +} + +.thumbnail-wrapper, +.file-metadata, +.file-link { + float: left; + margin-right: 15px; +} + +.file-metadata { + width: 300px; +} + +.file-metadata span { + float: left; +} + +.file-metadata span.bold { + width: 50px; + clear: left; + text-align: right; + margin-right: 7px; +} + +#ds-system-wide-alert, +.notice { + padding: 10px; + margin: 10px 0; + border: 1px solid #bfc221; + background-color: #fffff2; +} + +.notice.success +{ + border-color: #21c221; + background-color: #f2fff2; +} + +#ds-system-wide-alert, +.notice.failure +{ + border-color: #c22121; + background-color: #fff2f2; +} + +#ds-system-wide-alert p { + margin: 0; +} + +#aspect_artifactbrowser_CommunityViewer_div_community-home h2, +#aspect_artifactbrowser_CollectionViewer_div_collection-home h2 { + margin-top: 30px; + border-bottom:1px solid #D8E8EB; + margin-bottom: 3px; +} + +.ds-logo-wrapper { + float: right; + padding:10px; +} + +#aspect_administrative_item_FindItemForm_list_find-item-form .ds-form-item { + margin:0; +} diff --git a/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/js/dd_belatedpng.js b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/js/dd_belatedpng.js new file mode 100644 index 0000000000..7e38cc39b1 --- /dev/null +++ b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/js/dd_belatedpng.js @@ -0,0 +1,328 @@ +/** +* DD_belatedPNG: Adds IE6 support: PNG images for CSS background-image and HTML . +* Author: Drew Diller +* Email: drew.diller@gmail.com +* URL: http://www.dillerdesign.com/experiment/DD_belatedPNG/ +* Version: 0.0.8a +* Licensed under the MIT License: http://dillerdesign.com/experiment/DD_belatedPNG/#license +* +* Example usage: +* DD_belatedPNG.fix('.png_bg'); // argument is a CSS selector +* DD_belatedPNG.fixPng( someNode ); // argument is an HTMLDomElement +**/ + +/* +PLEASE READ: +Absolutely everything in this script is SILLY. I know this. IE's rendering of certain pixels doesn't make sense, so neither does this code! +*/ + +var DD_belatedPNG = { + ns: 'DD_belatedPNG', + imgSize: {}, + delay: 10, + nodesFixed: 0, + createVmlNameSpace: function () { /* enable VML */ + if (document.namespaces && !document.namespaces[this.ns]) { + document.namespaces.add(this.ns, 'urn:schemas-microsoft-com:vml'); + } + }, + createVmlStyleSheet: function () { /* style VML, enable behaviors */ + /* + Just in case lots of other developers have added + lots of other stylesheets using document.createStyleSheet + and hit the 31-limit mark, let's not use that method! + further reading: http://msdn.microsoft.com/en-us/library/ms531194(VS.85).aspx + */ + var screenStyleSheet, printStyleSheet; + screenStyleSheet = document.createElement('style'); + screenStyleSheet.setAttribute('media', 'screen'); + document.documentElement.firstChild.insertBefore(screenStyleSheet, document.documentElement.firstChild.firstChild); + if (screenStyleSheet.styleSheet) { + screenStyleSheet = screenStyleSheet.styleSheet; + screenStyleSheet.addRule(this.ns + '\\:*', '{behavior:url(#default#VML)}'); + screenStyleSheet.addRule(this.ns + '\\:shape', 'position:absolute;'); + screenStyleSheet.addRule('img.' + this.ns + '_sizeFinder', 'behavior:none; border:none; position:absolute; z-index:-1; top:-10000px; visibility:hidden;'); /* large negative top value for avoiding vertical scrollbars for large images, suggested by James O'Brien, http://www.thanatopsic.org/hendrik/ */ + this.screenStyleSheet = screenStyleSheet; + + /* Add a print-media stylesheet, for preventing VML artifacts from showing up in print (including preview). */ + /* Thanks to Rémi Prévost for automating this! */ + printStyleSheet = document.createElement('style'); + printStyleSheet.setAttribute('media', 'print'); + document.documentElement.firstChild.insertBefore(printStyleSheet, document.documentElement.firstChild.firstChild); + printStyleSheet = printStyleSheet.styleSheet; + printStyleSheet.addRule(this.ns + '\\:*', '{display: none !important;}'); + printStyleSheet.addRule('img.' + this.ns + '_sizeFinder', '{display: none !important;}'); + } + }, + readPropertyChange: function () { + var el, display, v; + el = event.srcElement; + if (!el.vmlInitiated) { + return; + } + if (event.propertyName.search('background') != -1 || event.propertyName.search('border') != -1) { + DD_belatedPNG.applyVML(el); + } + if (event.propertyName == 'style.display') { + display = (el.currentStyle.display == 'none') ? 'none' : 'block'; + for (v in el.vml) { + if (el.vml.hasOwnProperty(v)) { + el.vml[v].shape.style.display = display; + } + } + } + if (event.propertyName.search('filter') != -1) { + DD_belatedPNG.vmlOpacity(el); + } + }, + vmlOpacity: function (el) { + if (el.currentStyle.filter.search('lpha') != -1) { + var trans = el.currentStyle.filter; + trans = parseInt(trans.substring(trans.lastIndexOf('=')+1, trans.lastIndexOf(')')), 10)/100; + el.vml.color.shape.style.filter = el.currentStyle.filter; /* complete guesswork */ + el.vml.image.fill.opacity = trans; /* complete guesswork */ + } + }, + handlePseudoHover: function (el) { + setTimeout(function () { /* wouldn't work as intended without setTimeout */ + DD_belatedPNG.applyVML(el); + }, 1); + }, + /** + * This is the method to use in a document. + * @param {String} selector - REQUIRED - a CSS selector, such as '#doc .container' + **/ + fix: function (selector) { + if (this.screenStyleSheet) { + var selectors, i; + selectors = selector.split(','); /* multiple selectors supported, no need for multiple calls to this anymore */ + for (i=0; i size.H) { + c.B = size.H; + } + el.vml.image.shape.style.clip = 'rect('+c.T+'px '+(c.R+fudge)+'px '+c.B+'px '+(c.L+fudge)+'px)'; + } + else { + el.vml.image.shape.style.clip = 'rect('+dC.T+'px '+dC.R+'px '+dC.B+'px '+dC.L+'px)'; + } + }, + figurePercentage: function (bg, size, axis, position) { + var horizontal, fraction; + fraction = true; + horizontal = (axis == 'X'); + switch(position) { + case 'left': + case 'top': + bg[axis] = 0; + break; + case 'center': + bg[axis] = 0.5; + break; + case 'right': + case 'bottom': + bg[axis] = 1; + break; + default: + if (position.search('%') != -1) { + bg[axis] = parseInt(position, 10) / 100; + } + else { + fraction = false; + } + } + bg[axis] = Math.ceil( fraction ? ( (size[horizontal?'W': 'H'] * bg[axis]) - (size[horizontal?'w': 'h'] * bg[axis]) ) : parseInt(position, 10) ); + if (bg[axis] % 2 === 0) { + bg[axis]++; + } + return bg[axis]; + }, + fixPng: function (el) { + el.style.behavior = 'none'; + var lib, els, nodeStr, v, e; + if (el.nodeName == 'BODY' || el.nodeName == 'TD' || el.nodeName == 'TR') { /* elements not supported yet */ + return; + } + el.isImg = false; + if (el.nodeName == 'IMG') { + if(el.src.toLowerCase().search(/\.png$/) != -1) { + el.isImg = true; + el.style.visibility = 'hidden'; + } + else { + return; + } + } + else if (el.currentStyle.backgroundImage.toLowerCase().search('.png') == -1) { + return; + } + lib = DD_belatedPNG; + el.vml = {color: {}, image: {}}; + els = {shape: {}, fill: {}}; + for (v in el.vml) { + if (el.vml.hasOwnProperty(v)) { + for (e in els) { + if (els.hasOwnProperty(e)) { + nodeStr = lib.ns + ':' + e; + el.vml[v][e] = document.createElement(nodeStr); + } + } + el.vml[v].shape.stroked = false; + el.vml[v].shape.appendChild(el.vml[v].fill); + el.parentNode.insertBefore(el.vml[v].shape, el); + } + } + el.vml.image.shape.fillcolor = 'none'; /* Don't show blank white shapeangle when waiting for image to load. */ + el.vml.image.fill.type = 'tile'; /* Makes image show up. */ + el.vml.color.fill.on = false; /* Actually going to apply vml element's style.backgroundColor, so hide the whiteness. */ + lib.attachHandlers(el); + lib.giveLayout(el); + lib.giveLayout(el.offsetParent); + el.vmlInitiated = true; + lib.applyVML(el); /* Render! */ + } +}; +try { + document.execCommand("BackgroundImageCache", false, true); /* TredoSoft Multiple IE doesn't like this, so try{} it */ +} catch(r) {} +DD_belatedPNG.createVmlNameSpace(); +DD_belatedPNG.createVmlStyleSheet(); \ No newline at end of file diff --git a/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/js/jquery-1.4.2.min.js b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/js/jquery-1.4.2.min.js new file mode 100644 index 0000000000..7c24308023 --- /dev/null +++ b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/js/jquery-1.4.2.min.js @@ -0,0 +1,154 @@ +/*! + * jQuery JavaScript Library v1.4.2 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Sat Feb 13 22:33:48 2010 -0500 + */ +(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, +Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& +(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, +a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== +"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, +function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b
a"; +var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, +parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= +false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= +s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, +applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; +else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, +a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== +w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, +cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= +c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); +a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, +function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); +k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), +C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B=0){a.type= +e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& +f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; +if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", +e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, +"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, +d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, +e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); +t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| +g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, +CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, +g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, +text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, +setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return hl[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= +h[3];l=0;for(m=h.length;l=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== +"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, +h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& +q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML=""; +if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="

";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); +(function(){var g=s.createElement("div");g.innerHTML="
";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: +function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var j=d;j0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= +{},i;if(f&&a.length){e=0;for(var o=a.length;e-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== +"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", +d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? +a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== +1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/"},F={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div
","
"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, +""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); +return this}else{e=0;for(var j=d.length;e0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", +""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]===""&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= +c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? +c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= +function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= +Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, +"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= +a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= +a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=//gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== +"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("
").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, +serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), +function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, +global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& +e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? +"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== +false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= +false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", +c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| +d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); +g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== +1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== +"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; +if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== +"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| +c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; +this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= +this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, +e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b
"; +a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); +c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, +d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- +f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": +"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in +e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); diff --git a/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/js/modernizr-1.5.min.js b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/js/modernizr-1.5.min.js new file mode 100644 index 0000000000..a1de3f7ec0 --- /dev/null +++ b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/js/modernizr-1.5.min.js @@ -0,0 +1,28 @@ +/*! + * Modernizr JavaScript library 1.5 + * http://www.modernizr.com/ + * + * Copyright (c) 2009-2010 Faruk Ates - http://farukat.es/ + * Dual-licensed under the BSD and MIT licenses. + * http://www.modernizr.com/license/ + * + * Featuring major contributions by + * Paul Irish - http://paulirish.com + */ + window.Modernizr=function(i,e,I){function C(a,b){for(var c in a)if(m[a[c]]!==I&&(!b||b(a[c],D)))return true}function r(a,b){var c=a.charAt(0).toUpperCase()+a.substr(1);return!!C([a,"Webkit"+c,"Moz"+c,"O"+c,"ms"+c,"Khtml"+c],b)}function P(){j[E]=function(a){for(var b=0,c=a.length;b7)};d.historymanagement=function(){return!!(i.history&&history.pushState)};d.draganddrop=function(){return u("drag")&&u("dragstart")&&u("dragenter")&&u("dragover")&&u("dragleave")&&u("dragend")&&u("drop")};d.websockets=function(){return"WebSocket"in i};d.rgba=function(){m.cssText="background-color:rgba(150,255,150,.5)";return(""+m.backgroundColor).indexOf("rgba")!==-1};d.hsla=function(){m.cssText="background-color:hsla(120,40%,100%,.5)";return(""+ + m.backgroundColor).indexOf("rgba")!==-1};d.multiplebgs=function(){m.cssText="background:url(//:),url(//:),red url(//:)";return/(url\s*\(.*?){3}/.test(m.background)};d.backgroundsize=function(){return r("backgroundSize")};d.borderimage=function(){return r("borderImage")};d.borderradius=function(){return r("borderRadius","",function(a){return(""+a).indexOf("orderRadius")!==-1})};d.boxshadow=function(){return r("boxShadow")};d.opacity=function(){var a=y.join("opacity:.5;")+"";m.cssText=a;return(""+m.opacity).indexOf("0.5")!== + -1};d.cssanimations=function(){return r("animationName")};d.csscolumns=function(){return r("columnCount")};d.cssgradients=function(){var a=("background-image:"+y.join("gradient(linear,left top,right bottom,from(#9f9),to(white));background-image:")+y.join("linear-gradient(left top,#9f9, white);background-image:")).slice(0,-17);m.cssText=a;return(""+m.backgroundImage).indexOf("gradient")!==-1};d.cssreflections=function(){return r("boxReflect")};d.csstransforms=function(){return!!C(["transformProperty", + "WebkitTransform","MozTransform","OTransform","msTransform"])};d.csstransforms3d=function(){var a=!!C(["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"]);if(a){var b=document.createElement("style"),c=e.createElement("div");b.textContent="@media ("+y.join("transform-3d),(")+"modernizr){#modernizr{height:3px}}";e.getElementsByTagName("head")[0].appendChild(b);c.id="modernizr";s.appendChild(c);a=c.offsetHeight===3;b.parentNode.removeChild(b);c.parentNode.removeChild(c)}return a}; + d.csstransitions=function(){return r("transitionProperty")};d.fontface=function(){var a;if(/*@cc_on@if(@_jscript_version>=5)!@end@*/0)a=true;else{var b=e.createElement("style"),c=e.createElement("span"),h,t=false,g=e.body,o,w;b.textContent="@font-face{font-family:testfont;src:url('data:font/ttf;base64,AAEAAAAMAIAAAwBAT1MvMliohmwAAADMAAAAVmNtYXCp5qrBAAABJAAAANhjdnQgACICiAAAAfwAAAAEZ2FzcP//AAMAAAIAAAAACGdseWYv5OZoAAACCAAAANxoZWFk69bnvwAAAuQAAAA2aGhlYQUJAt8AAAMcAAAAJGhtdHgGDgC4AAADQAAAABRsb2NhAIQAwgAAA1QAAAAMbWF4cABVANgAAANgAAAAIG5hbWUgXduAAAADgAAABPVwb3N03NkzmgAACHgAAAA4AAECBAEsAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAACAAMDAAAAAAAAgAACbwAAAAoAAAAAAAAAAFBmRWQAAAAgqS8DM/8zAFwDMwDNAAAABQAAAAAAAAAAAAMAAAADAAAAHAABAAAAAABGAAMAAQAAAK4ABAAqAAAABgAEAAEAAgAuqQD//wAAAC6pAP///9ZXAwAAAAAAAAACAAAABgBoAAAAAAAvAAEAAAAAAAAAAAAAAAAAAAABAAIAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEACoAAAAGAAQAAQACAC6pAP//AAAALqkA////1lcDAAAAAAAAAAIAAAAiAogAAAAB//8AAgACACIAAAEyAqoAAwAHAC6xAQAvPLIHBADtMrEGBdw8sgMCAO0yALEDAC88sgUEAO0ysgcGAfw8sgECAO0yMxEhESczESMiARDuzMwCqv1WIgJmAAACAFUAAAIRAc0ADwAfAAATFRQWOwEyNj0BNCYrASIGARQGKwEiJj0BNDY7ATIWFX8aIvAiGhoi8CIaAZIoN/43KCg3/jcoAWD0JB4eJPQkHh7++EY2NkbVRjY2RgAAAAABAEH/+QCdAEEACQAANjQ2MzIWFAYjIkEeEA8fHw8QDxwWFhwWAAAAAQAAAAIAAIuYbWpfDzz1AAsEAAAAAADFn9IuAAAAAMWf0i797/8zA4gDMwAAAAgAAgAAAAAAAAABAAADM/8zAFwDx/3v/98DiAABAAAAAAAAAAAAAAAAAAAABQF2ACIAAAAAAVUAAAJmAFUA3QBBAAAAKgAqACoAWgBuAAEAAAAFAFAABwBUAAQAAgAAAAEAAQAAAEAALgADAAMAAAAQAMYAAQAAAAAAAACLAAAAAQAAAAAAAQAhAIsAAQAAAAAAAgAFAKwAAQAAAAAAAwBDALEAAQAAAAAABAAnAPQAAQAAAAAABQAKARsAAQAAAAAABgAmASUAAQAAAAAADgAaAUsAAwABBAkAAAEWAWUAAwABBAkAAQBCAnsAAwABBAkAAgAKAr0AAwABBAkAAwCGAscAAwABBAkABABOA00AAwABBAkABQAUA5sAAwABBAkABgBMA68AAwABBAkADgA0A/tDb3B5cmlnaHQgMjAwOSBieSBEYW5pZWwgSm9obnNvbi4gIFJlbGVhc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgT3BlbiBGb250IExpY2Vuc2UuIEtheWFoIExpIGdseXBocyBhcmUgcmVsZWFzZWQgdW5kZXIgdGhlIEdQTCB2ZXJzaW9uIDMuYmFlYzJhOTJiZmZlNTAzMiAtIHN1YnNldCBvZiBKdXJhTGlnaHRiYWVjMmE5MmJmZmU1MDMyIC0gc3Vic2V0IG9mIEZvbnRGb3JnZSAyLjAgOiBKdXJhIExpZ2h0IDogMjMtMS0yMDA5YmFlYzJhOTJiZmZlNTAzMiAtIHN1YnNldCBvZiBKdXJhIExpZ2h0VmVyc2lvbiAyIGJhZWMyYTkyYmZmZTUwMzIgLSBzdWJzZXQgb2YgSnVyYUxpZ2h0aHR0cDovL3NjcmlwdHMuc2lsLm9yZy9PRkwAQwBvAHAAeQByAGkAZwBoAHQAIAAyADAAMAA5ACAAYgB5ACAARABhAG4AaQBlAGwAIABKAG8AaABuAHMAbwBuAC4AIAAgAFIAZQBsAGUAYQBzAGUAZAAgAHUAbgBkAGUAcgAgAHQAaABlACAAdABlAHIAbQBzACAAbwBmACAAdABoAGUAIABPAHAAZQBuACAARgBvAG4AdAAgAEwAaQBjAGUAbgBzAGUALgAgAEsAYQB5AGEAaAAgAEwAaQAgAGcAbAB5AHAAaABzACAAYQByAGUAIAByAGUAbABlAGEAcwBlAGQAIAB1AG4AZABlAHIAIAB0AGgAZQAgAEcAUABMACAAdgBlAHIAcwBpAG8AbgAgADMALgBiAGEAZQBjADIAYQA5ADIAYgBmAGYAZQA1ADAAMwAyACAALQAgAHMAdQBiAHMAZQB0ACAAbwBmACAASgB1AHIAYQBMAGkAZwBoAHQAYgBhAGUAYwAyAGEAOQAyAGIAZgBmAGUANQAwADMAMgAgAC0AIABzAHUAYgBzAGUAdAAgAG8AZgAgAEYAbwBuAHQARgBvAHIAZwBlACAAMgAuADAAIAA6ACAASgB1AHIAYQAgAEwAaQBnAGgAdAAgADoAIAAyADMALQAxAC0AMgAwADAAOQBiAGEAZQBjADIAYQA5ADIAYgBmAGYAZQA1ADAAMwAyACAALQAgAHMAdQBiAHMAZQB0ACAAbwBmACAASgB1AHIAYQAgAEwAaQBnAGgAdABWAGUAcgBzAGkAbwBuACAAMgAgAGIAYQBlAGMAMgBhADkAMgBiAGYAZgBlADUAMAAzADIAIAAtACAAcwB1AGIAcwBlAHQAIABvAGYAIABKAHUAcgBhAEwAaQBnAGgAdABoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwAAAAAAgAAAAAAAP+BADMAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAQACAQIAEQt6ZXJva2F5YWhsaQ==')}"; + e.getElementsByTagName("head")[0].appendChild(b);c.setAttribute("style","font:99px _,arial,helvetica;position:absolute;visibility:hidden");if(!g){g=s.appendChild(e.createElement("fontface"));t=true}c.innerHTML="........";c.id="fonttest";g.appendChild(c);h=c.offsetWidth*c.offsetHeight;c.style.font="99px testfont,_,arial,helvetica";a=h!==c.offsetWidth*c.offsetHeight;var v=function(){if(g.parentNode){a=j.fontface=h!==c.offsetWidth*c.offsetHeight;s.className=s.className.replace(/(no-)?fontface\b/,"")+ + (a?" ":" no-")+"fontface"}};setTimeout(v,75);setTimeout(v,150);addEventListener("load",function(){v();(w=true)&&o&&o(a);setTimeout(function(){t||(g=c);g.parentNode.removeChild(g);b.parentNode.removeChild(b)},50)},false)}j._fontfaceready=function(p){w||a?p(a):(o=p)};return a||h!==c.offsetWidth};d.video=function(){var a=e.createElement("video"),b=!!a.canPlayType;if(b){b=new Boolean(b);b.ogg=a.canPlayType('video/ogg; codecs="theora"');b.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"');b.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"')}return b}; + d.audio=function(){var a=e.createElement("audio"),b=!!a.canPlayType;if(b){b=new Boolean(b);b.ogg=a.canPlayType('audio/ogg; codecs="vorbis"');b.mp3=a.canPlayType("audio/mpeg;");b.wav=a.canPlayType('audio/wav; codecs="1"');b.m4a=a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")}return b};d.localStorage=function(){return"localStorage"in i&&i.localStorage!==null};d.sessionStorage=function(){try{return"sessionStorage"in i&&i.sessionStorage!==null}catch(a){return false}};d.webworkers=function(){return!!i.Worker}; + d.applicationCache=function(){var a=i.applicationCache;return!!(a&&typeof a.status!="undefined"&&typeof a.update=="function"&&typeof a.swapCache=="function")};d.svg=function(){return!!e.createElementNS&&!!e.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect};d.smil=function(){return!!e.createElementNS&&/SVG/.test(M.call(e.createElementNS("http://www.w3.org/2000/svg","animate")))};d.svgclippaths=function(){return!!e.createElementNS&&/SVG/.test(M.call(e.createElementNS("http://www.w3.org/2000/svg", + "clipPath")))};for(var z in d)if(O(d,z))N.push(((j[z.toLowerCase()]=d[z]())?"":"no-")+z.toLowerCase());j[E]||P();j.addTest=function(a,b){a=a.toLowerCase();if(!j[a]){b=!!b();s.className+=" "+(b?"":"no-")+a;j[a]=b;return j}};m.cssText="";D=n=null;(function(){var a=e.createElement("div");a.innerHTML="";return a.childNodes.length!==1})()&&function(a,b){function c(f,k){if(o[f])o[f].styleSheet.cssText+=k;else{var l=t[G],q=b[A]("style");q.media=f;l.insertBefore(q,l[G]);o[f]=q;c(f,k)}}function h(f, + k){for(var l=new RegExp("\\b("+w+")\\b(?!.*[;}])","gi"),q=function(B){return".iepp_"+B},x=-1;++x\\s*$","i");g.innerHTML=f.outerHTML.replace(/\r|\n/g," ").replace(l,f.currentStyle.display=="block"?"":"");l=g.childNodes[0];l.className+=" iepp_"+q;l=p[p.length]=[f,l];f.parentNode.replaceChild(l[1],l[0])}h(b.styleSheets,"all")});a.attachEvent("onafterprint", + function(){for(var f=-1,k;++f + + + + + + + + + + top + +
+ + ds-interactive-div tabbed + + + + + post + multipart/form-data + + javascript:tSubmit(this); + + + javascript:return disableEnterKey(event); + + +
+ +
+ + + + + + + + bottom + +
+ + + + + +
    + + ds-simple-list clearfix + + +
+
+ + + +
  • + +
  • +
    + +
    \ No newline at end of file diff --git a/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/xsl/aspects/artifactbrowser/item-list.xsl b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/xsl/aspects/artifactbrowser/item-list.xsl new file mode 100644 index 0000000000..160f9ceb73 --- /dev/null +++ b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/xsl/aspects/artifactbrowser/item-list.xsl @@ -0,0 +1,164 @@ + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + xmlui.dri2xhtml.METS-1.0.no-title + + + + +
    +
    + + + + + + + ds-dc_contributor_author-authority + + + + + ; + + + + + + + + ; + + + + + + + + ; + + + + + xmlui.dri2xhtml.METS-1.0.no-author + + + + + + + ( + + + + + , + + + + + ) + + +
    + + +
    + +
    +
    +
    +
    + +
    diff --git a/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/xsl/aspects/artifactbrowser/item-view.xsl b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/xsl/aspects/artifactbrowser/item-view.xsl new file mode 100644 index 0000000000..063b62cf2f --- /dev/null +++ b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/xsl/aspects/artifactbrowser/item-view.xsl @@ -0,0 +1,462 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +

    xmlui.dri2xhtml.METS-1.0.item-files-head

    + + + + + + + + + + +
    xmlui.dri2xhtml.METS-1.0.item-files-filexmlui.dri2xhtml.METS-1.0.item-files-sizexmlui.dri2xhtml.METS-1.0.item-files-formatxmlui.dri2xhtml.METS-1.0.item-files-view
    +

    xmlui.dri2xhtml.METS-1.0.item-no-files

    +
    +
    +
    + + + + +
    + + + + + + + + + + + + + odd + + + even + + + + + + + + + +
    + + + + + + ds-dc_contributor_author-authority + + + + + ; + + + + + + + + ; + + + + + + + + ; + + + + + xmlui.dri2xhtml.METS-1.0.no-author + + +
    + + + + +
    + + + +
    + xmlui.dri2xhtml.METS-1.0.item-uri: + + + + + + + + + +
    +
    +
    +
    +
    + + + + +
    + + + +
    + xmlui.dri2xhtml.METS-1.0.item-date: + + + + +
    +
    +
    +
    +
    + + + + +
    + + + +
    +

    xmlui.dri2xhtml.METS-1.0.item-abstract:

    +
    + +
     
    +
    + + + +
     
    +
    +
    + +
     
    +
    +
    +
    + + + + +
    + + + +
    +

    xmlui.dri2xhtml.METS-1.0.item-description:

    +
    + +
     
    +
    + + + +
     
    +
    +
    + +
     
    +
    +
    +
    + + + + +
    + + +

    + + xmlui.ArtifactBrowser.ItemViewer.show_full + +

    +
    + + + + + + + + + + + +
    +
    + + + + + + + + + + +
    +
    + + + + + + ds-table-row + even + odd + + + + . + + + . + + + + + + + + + + + + + + + + + + + + + + + + +

    xmlui.dri2xhtml.METS-1.0.item-files-head

    +
    + + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    + + + +
    + + +
    + +
    diff --git a/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/xsl/core/attribute-handlers.xsl b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/xsl/core/attribute-handlers.xsl new file mode 100644 index 0000000000..fcf751cc7c --- /dev/null +++ b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/xsl/core/attribute-handlers.xsl @@ -0,0 +1,205 @@ + + + + + + + + + + + + + + + +
    +

    + + xmlui.dri2xhtml.structural.pagination-info + + + + +

    + +
    +
    +
    +
    + +
    diff --git a/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/xsl/core/elements.xsl b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/xsl/core/elements.xsl new file mode 100644 index 0000000000..b8c1bac80c --- /dev/null +++ b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/xsl/core/elements.xsl @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + ds-div-head + + + + + + + ds-table-head + + + + + + + ds-list-head + + + + + + ds-sublist-head + + + + + + ds-list-head + + + + + + ds-option-set-head + + + + + + ds-head + + + + diff --git a/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/xsl/core/forms.xsl b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/xsl/core/forms.xsl new file mode 100644 index 0000000000..68a9df374e --- /dev/null +++ b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/xsl/core/forms.xsl @@ -0,0 +1,265 @@ + + + + + + + + + + +
  • + + + ds-form-item + + + + + even + odd + + + + + even + odd + + + + + last + + sublist + + + + + + + + + + + + + +
    + + + + + + + +
    +
    +
    +
  • +
    + + + +
    + + + + + + + ERROR: Input field with "suggest" (autocomplete) choice behavior is not implemented for Composite (e.g. "name") fields. + + + + + + + + + + + + + + + + + + + + + + +
     
    + + +
    +
    + + + + +
    + + + + + + + + + display:none; + + + + + + + + + ERROR: Input field with "suggest" (autocomplete) choice behavior is not implemented for Composite (e.g. "name") fields. + + + + + + + + + + + + + + + + + + + + + + +
     
    + + + +
    + + 1 + + + + + + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + ds- + -field + + error + + + multiple + + + + + disabled + + + + + + + + + javascript:tFocus(this); + + + +
    \ No newline at end of file diff --git a/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/xsl/core/navigation.xsl b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/xsl/core/navigation.xsl new file mode 100644 index 0000000000..f1f0d594de --- /dev/null +++ b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/xsl/core/navigation.xsl @@ -0,0 +1,175 @@ + + + + + + + + + + + +
    +
    +

    + xmlui.dri2xhtml.structural.search +

    +
    + +
    + + + +
    + + + + + + + + + var radio = document.getElementById("ds-search-form-scope-container"); + if (radio != undefined && radio.checked) + { + var form = document.getElementById("ds-search-form"); + form.action= + + " + + /handle/" + radio.value + "/search" ; + + } + + + + + +
    + +
    +
    +
    + + + + + + xmlui.dri2xhtml.structural.search-advanced + +
    + + + +
    +
    +
    + + + +
  • + +
      + +
    +
  • +
    + + + + + + + +
    diff --git a/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/xsl/core/page-structure.xsl b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/xsl/core/page-structure.xsl new file mode 100644 index 0000000000..c1b68d238a --- /dev/null +++ b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/xsl/core/page-structure.xsl @@ -0,0 +1,587 @@ + + + + + + + + + + + + + + + + + + + + + + + + + <!--[if lt IE 7 ]> <body class="ie6"> <![endif]--> + <!--[if IE 7 ]> <body class="ie7"> <![endif]--> + <!--[if IE 8 ]> <body class="ie8"> <![endif]--> + <!--[if IE 9 ]> <body class="ie9"> <![endif]--> + <!--[if (gt IE 9)|!(IE)]><!--><body><!--<![endif]--> + +
    + + + + + + + +
    +
    + + +
    +
    + + + + + +
    + + + + + </body> +
    +
    + +
    + + + + + + + + + + + + + + + + /themes/ + + /images/favicon.ico + + + + + + /themes/ + + /images/apple-touch-icon.png + + + + + + DSpace + + + + + + + + + + + + + + + /themes/ + + / + + + + + + + + + + application/ + + + + + + + + + + + + + + :// + + : + + + / + + description.xml + + + + + + + + + + + + + + + + + + <xsl:choose> + <xsl:when test="not($page_title)"> + <xsl:text> </xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$page_title/node()" /> + </xsl:otherwise> + </xsl:choose> + + + + + + + + + + + + + +
    +
    + + + + / + + + mirage + +

    + + + + + + + + + + +

    +

    + xmlui.dri2xhtml.structural.head-subtitle +

    + + + + + + + + + + + +
    +
    +
    + + + + +
    +
      + + + + + + + + +
    +
    +
    + + + + +
  • + +
  • +
    +
  • + + ds-trail-link + + first-link + + + last-link + + + + + + + + + + + + + + + + +
  • +
    + + + + + + + + + + + + + + + + +
    + +
    +

    + +

    +
    +
    + +
    +
    + + + + + + + + + + + + + + /themes/ + + /lib/js/jquery-1.4.2.min.js + + + + + + + + + + + + + + + + + + <!--[if lt IE 7 ]> + + + <![endif]--> + + + + + + + + +
    diff --git a/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/xsl/core/utils.xsl b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/xsl/core/utils.xsl new file mode 100644 index 0000000000..339c8cc7d4 --- /dev/null +++ b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/lib/xsl/core/utils.xsl @@ -0,0 +1,100 @@ + + + + + + + + + + + + cocoon:/ + + + ?sections=dmdSec,fileSec&fileGrpTypes=THUMBNAIL + + + External Metadata URL: +
  • + + ds-artifact-item + + + community + + + community + + + + even + odd + + + + +
  • +
    + + +
    diff --git a/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/sitemap.xmap b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/sitemap.xmap new file mode 100644 index 0000000000..a5b5aa259f --- /dev/null +++ b/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/sitemap.xmap @@ -0,0 +1,188 @@ + + + + + + + + + + + + + + + + Mirage + Mirage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dspace-xmlui/dspace-xmlui-wing/pom.xml b/dspace-xmlui/dspace-xmlui-wing/pom.xml index 1769803185..de09def322 100644 --- a/dspace-xmlui/dspace-xmlui-wing/pom.xml +++ b/dspace-xmlui/dspace-xmlui-wing/pom.xml @@ -38,6 +38,10 @@ + + org.dspace + dspace-api + jdom diff --git a/dspace-xmlui/dspace-xmlui-wing/src/main/java/org/dspace/app/xmlui/wing/IncludePageMeta.java b/dspace-xmlui/dspace-xmlui-wing/src/main/java/org/dspace/app/xmlui/wing/IncludePageMeta.java index 57976eca79..1658feee3e 100644 --- a/dspace-xmlui/dspace-xmlui-wing/src/main/java/org/dspace/app/xmlui/wing/IncludePageMeta.java +++ b/dspace-xmlui/dspace-xmlui-wing/src/main/java/org/dspace/app/xmlui/wing/IncludePageMeta.java @@ -39,14 +39,6 @@ */ package org.dspace.app.xmlui.wing; -import java.io.IOException; -import java.io.Serializable; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; - import org.apache.avalon.framework.parameters.ParameterException; import org.apache.avalon.framework.parameters.Parameters; import org.apache.cocoon.ProcessingException; @@ -56,33 +48,44 @@ import org.apache.cocoon.util.HashUtil; import org.apache.excalibur.source.SourceValidity; import org.apache.excalibur.source.impl.validity.NOPValidity; import org.dspace.app.xmlui.wing.element.PageMeta; +import org.dspace.core.ConfigurationManager; import org.xml.sax.SAXException; +import java.io.IOException; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; + /** * Include metadata in the resulting DRI document as derived from the sitemap * parameters. - * - * Parameters should consist of a dublin core name and value. The format for + * + * Parameters should consist of a dublin core name and value. The format for * a parameter name must follow the form: "..#order" * The qualifier, language, and order are all optional components. The order - * component is an integer and is needed to insure that parameter names are + * component is an integer and is needed to insure that parameter names are * unique. Since Cocoon's parameters are Hashes duplicate names are not allowed - * the order syntax allows the sitemap programer to specify an order in which + * the order syntax allows the sitemap programer to specify an order in which * these metadata values should be placed inside the document. - * + * * The following are a valid examples: - * + * * - * + * * - * + * * - * + * * - * + * * - * + * * @author Scott Phillips + * @author Roel Van Reeth (roel at atmire dot com) + * @author Art Lowel (art dot lowel at atmire dot com) + * @author Ben Bosman (ben at atmire dot com) */ public class IncludePageMeta extends AbstractWingTransformer implements CacheableProcessingComponent { @@ -99,7 +102,7 @@ public class IncludePageMeta extends AbstractWingTransformer implements Cacheabl public Serializable getKey() { String key = ""; - + for (Metadata metadata : metadataList) { key = "-" + metadata.getName() + "=" + metadata.getValue(); @@ -117,9 +120,9 @@ public class IncludePageMeta extends AbstractWingTransformer implements Cacheabl { return NOPValidity.SHARED_INSTANCE; } - - - + + + /** * Extract the metadata name value pairs from the sitemap parameters. */ @@ -134,7 +137,7 @@ public class IncludePageMeta extends AbstractWingTransformer implements Cacheabl for (String name : names) { String[] nameParts = name.split("#"); - + String dcName = null; int order = -1; if (nameParts.length == 1) @@ -151,7 +154,7 @@ public class IncludePageMeta extends AbstractWingTransformer implements Cacheabl { throw new ProcessingException("Unable to parse page metadata name, '" + name + "', into parts."); } - + String[] dcParts = dcName.split("\\."); String element = null; String qualifier = null; @@ -175,20 +178,20 @@ public class IncludePageMeta extends AbstractWingTransformer implements Cacheabl { throw new ProcessingException("Unable to parse page metadata name, '" + name + "', into parts."); } - + String value = parameters.getParameter(name); - + Metadata metadata = new Metadata(element,qualifier,language,order,value); metadataList.add(metadata); } - + Collections.sort(metadataList); } catch (ParameterException pe) { throw new ProcessingException(pe); } - + // Initialize the Wing framework. try { @@ -198,14 +201,129 @@ public class IncludePageMeta extends AbstractWingTransformer implements Cacheabl { throw new ProcessingException(we); } + + // concatenation + if (ConfigurationManager.getBooleanProperty("xmlui.theme.enableConcatenation",false)) { + metadataList = enableConcatenation(); + } } + /** + * Alters the URL to CSS, JS or JSON files to concatenate them. + * Enable the ConcatenationReader in the theme sitemap for + * concatenation to work correctly + */ + private List enableConcatenation() { + Metadata last = null; + List newMetadataList = new ArrayList(); + + for (Metadata metadata : metadataList) + { + // only try to concatenate css and js + String curfile = metadata.getValue(); + if (curfile.lastIndexOf("?") != -1) { + curfile = curfile.substring(0, curfile.lastIndexOf("?")); + } + if (curfile.endsWith(".css") || curfile.endsWith(".js") || curfile.endsWith(".json")) { + String curval = metadata.getValue(); + // check if this metadata and the last one are compatible + if(last != null && checkConcatenateMerge(last, metadata)) { + // merge + String lastval = last.getValue(); + curval = metadata.getValue(); + String newval = lastval.substring(0,lastval.lastIndexOf(".")) + ","; + newval += curval.substring(curval.lastIndexOf("/")+1,curval.lastIndexOf(".")); + newval += lastval.substring(lastval.lastIndexOf(".")); + last.value = newval; + } else { + // no merge, so add to list + newMetadataList.add(metadata); + // handle query string cases + if(curval.lastIndexOf("?") != -1) { + if(curval.substring(curval.lastIndexOf("?")).equals("?nominify")) { + // concat should still be possible, so set last + last = metadata; + } else if(curval.substring(curval.lastIndexOf("?")).equals("?noconcat")) { + // no concat should be possible so set last to null + last = null; + // query string can be removed + curval = curval.substring(0, curval.lastIndexOf("?")); + metadata.value = curval; + } else { + // no concat should be possible so set last to null + last = null; + // query string should be set to "nominify" + curval = curval.substring(0, curval.lastIndexOf("?")) + "?nominify"; + metadata.value = curval; + } + } else { + // multiple possibilities: + // * last == null, so set it + // * no merge is possible, so change last to this metadata + // no query string, so concat and merge should be possible later on + last = metadata; + } + } + } else { + // wrong extension + newMetadataList.add(metadata); + } + } + return newMetadataList; + } + + private boolean checkConcatenateMerge(Metadata last, Metadata current) { + // check if elements are equal + if(last.getElement() == null) { + if(current.getElement() != null) { + return false; + } + } else if(!last.getElement().equals(current.getElement())) { + return false; + } + // check if qualifiers are equal + if(last.getQualifier() == null) { + if(current.getQualifier() != null) { + return false; + } + } else if(!last.getQualifier().equals(current.getQualifier())) { + return false; + } + // check if languages are equal + if(last.getLanguage() == null) { + if(current.getLanguage() != null) { + return false; + } + } else if(!last.getLanguage().equals(current.getLanguage())) { + return false; + } + + + String curval = current.getValue(); + String lastval = last.getValue(); + // check if extensions and query strings are equal + if(!lastval.substring(lastval.lastIndexOf(".")).equals(curval.substring(curval.lastIndexOf(".")))) { + return false; + } + // check if paths are equal + if(!lastval.substring(0,lastval.lastIndexOf("/")+1).equals(curval.substring(0,curval.lastIndexOf("/")+1))) { + return false; + } + + // only valid nonempty query string is "nominify" + if(curval.lastIndexOf("?") != -1 + && !"?nominify".equals(curval.substring(curval.lastIndexOf("?")))) { + return false; + } + + return true; + + } /** * Include the metadata in the page metadata. */ public void addPageMeta(PageMeta pageMeta) throws WingException { - for (Metadata metadata : metadataList) { String element = metadata.getElement(); @@ -218,19 +336,19 @@ public class IncludePageMeta extends AbstractWingTransformer implements Cacheabl .addContent(value); } } - - + + /** * Private class to keep track of metadata name/value pairs. */ class Metadata implements Comparable { - + private String element; private String qualifier; private String language; private int order; private String value; - + public Metadata(String element,String qualifier, String language, int order, String value) { this.element = element; @@ -239,27 +357,27 @@ public class IncludePageMeta extends AbstractWingTransformer implements Cacheabl this.order = order; this.value = value; } - + public String getElement() { return this.element; } - + public String getQualifier() { return this.qualifier; } - + public String getLanguage() { return this.language; } - + public int getOrder() { return this.order; } - + public String getName() { String name = this.element; @@ -271,22 +389,22 @@ public class IncludePageMeta extends AbstractWingTransformer implements Cacheabl name += "." + this.language; } } - + name += "#" + order; return name; } - + public String getValue() { return this.value; } - - - public int compareTo(Metadata other) + + + public int compareTo(Metadata other) { String myName = this.element + "." +this.qualifier + "." + this.language; String otherName = other.element + "." + other.qualifier + "." + other.language; - + int result = myName.compareTo(otherName); if (result == 0) { @@ -298,14 +416,14 @@ public class IncludePageMeta extends AbstractWingTransformer implements Cacheabl { result = 1; // The other metadata element belongs AFTER this element. } - else + else { result = -1; // The other metadata element belongs BEFORE this element. } } - + return result; } } - + } diff --git a/dspace/CHANGES b/dspace/CHANGES index 62dc5f712d..b0c143c067 100644 --- a/dspace/CHANGES +++ b/dspace/CHANGES @@ -66,6 +66,7 @@ - [DS-603] Including a most used item list on the home page - [DS-615] Optimize solr performance with solr.optimize and autocommit - [DS-706] Alternative to dri2xhtml, with the goal to be more developer-friendly +- [DS-710] New Base Theme For DSpace 1.7.0 1.6.2 ===== diff --git a/dspace/config/dspace.cfg b/dspace/config/dspace.cfg index 2789ebe36b..f2e0338487 100644 --- a/dspace/config/dspace.cfg +++ b/dspace/config/dspace.cfg @@ -1804,6 +1804,19 @@ webui.suggest.enable = false # value unless otherwise specified is "false" #xmlui.theme.allowoverrides = false +# Enabling this property will concatenate CSS, JS and JSON files where possible. +# CSS files can be concatenated if multiple CSS files with the same media attribute +# are used in the same page. Links to the CSS files are automatically referring to the +# concatenated resulting CSS file. +# The theme sitemap should be updated to use the ConcatenationReader for all js, css and json +# files before enabling this property. +#xmlui.theme.enableConcatenation = false + +# Enabling this property will minify CSS, JS and JSON files where possible. +# The theme sitemap should be updated to use the ConcatenationReader for all js, css and json +# files before enabling this property. +#xmlui.theme.enableMinification = false + # Determine which bundles administrators and collection administrators may upload # into an existing item through the administrative interface. If the user does not # have the appropriate privileges (add & write) on the bundle then that bundle will