web/vegpath/.htaccess: translate path head to dir (if the dir exists)
web/vegpath/.htaccess: translate subdomain to prefix: Set nosubreq to avoid infinite recursion (the RewriteRule is not idempotent)
web/vegpath/.htaccess: translate subdomain to prefix: Don't translate all nested subdomains, because some of them may result from the machine's own name (vegbiendev.nceas.ucsb.edu) and should not be removed. Instead, remove only the leftmost level of subdomain, and only if it corresponds to a filesystem directory.
web/vegpath/index.php: Use $alias whenever VegPath was reached via the machine's own name (vegbiendev.nceas.ucsb.edu) rather than via a shortened domain (path.vg), so that the right path root can seamlessly be used when path.vg is down
web/vegpath/.htaccess: Translate subdomain to path prefix
Added inputs/MO/_src/TropicosSpecimens_2013_03_12_*.txt.md5
Added inputs/MO/_archive
Added inputs/MO/_src/
web/vegpath/index.php: Brad-Boyle root: Fixed link
web/vegpath/index.php: CTFS root: Fixed link
web/vegpath/index.php: CTFS-schema: Use $Redmine_svn
web/vegpath/.htaccess: Remove www subdomain
Added web/logs/
web/vegpath/.htaccess: Use the simpler ErrorDocument directive instead of a catch-all RewriteRule to handle non-filesystem paths
web/vegpath/index.php: $alias: Use HTTP_HOST and SCRIPT_NAME so the alias doesn't need to be hardcoded
web/vegpath/util.php: Added ensure_prefix(), ensure_suffix()
web/vegpath/index.php: Switching back to path.vg now that the .vg root DNS is back online
web/vegpath/index.php: Use REQUEST_URI (removing the script's own dir) instead of PATH_INFO, to support being used for the Apache ErrorDocument directive
web/vegpath/.htaccess: mod_rewrite: Don't run any further rewrite rules if path exists, to avoid needing to add RewriteConds to each RewriteRule to check if the path exists
web/vegpath/index.php: Changed page title to contain "persistent URLs" because VegPaths are conceptually a type of PURL <http://en.wikipedia.org/wiki/PURL>
web/vegpath/index.php: $alias: Switching back to j.mp/vegpath# because the .vg root DNS server is down. (The .vg registrar adamsnames.com also displays an under construction page.) If the registrar stays down, we may want to switch a different top-level domain.
web/vegpath/.htaccess: DirectoryIndex: Removed index.htm because HTML files should not be used for redirection (they don't issue the Location: header needed by clients other than web browsers)
web/vegpath/.htaccess: mod_rewrite: Added `RewriteOptions inherit` so this .htaccess file can be copied to subdirs and will inherit the "unknown paths" rule
web/vegpath/index.php: Use $PATH_INFO (i.e. index.php/$PATH_INFO) instead of the query string to pass the path to index.php, so that the query string can be used for other things
web/vegpath/index.php: top-level path parsing: Use parse_dot_path() instead of parse_mixed_path() because XPaths are now (client-side) fragments, and don't need to be supported by the path mechanism
web/vegpath/index.php: SALVIAS: Don't append #Plot_ when there is no subpath
web/vegpath/index.php: SALVIAS: Factored out URL to $SALVIAS
web/vegpath/index.php: SALVIAS: Appended Plot_ to dest URL because both data dictionary sections start with this, so it doesn't need to be included in the VegPath
web/vegpath/index.php: XPath resources: Removed # at end of destination URL because the # is now part of the #/XPath suffix (and is added by the user)
web/vegpath/index.php: XPath resources: Added # before XPath because the XPath is actually a location within the resource, and thus resolvable by the client (or user) themselves, rather than part of the redirected URL (which only needs to forward to the XML schema file)
web/vegpath/index.php: Updated $alias to the newly-registered path.vg domain, which is shorter and more intuitive-looking than the previous value j.mp/vegpath (from bitly.com). Note that using a domain also allows redirects without JavaScript, which can be used by any web client (such as a Python script), not just a web browser.
web/vegpath/index.php: Renamed ref to ns to emphasize that the resources in this field are namespaces for the paths
web/vegpath/index.php: add_ref(): Renamed $suffix to $path_pat to distinguish it from the actual suffix string sent in the URL
web/vegpath/index.php: custom_separator(): Marked optional params as such
web/vegpath/index.php: Terms: IH-db: Factored out phpMyAdmin URL into $IH_db
web/vegpath/index.php: Terms: Added IH-db
web/vegpath/index.php: php*Admin(): Added support for a fixed table that doesn't need to be specified in the path
web/: Removed svn:executable permissions from non-executable files
web/vegpath/index.php: Data: Added Institutions subsection
web/vegpath/index.php: Placed Terms and Data sections side-by-side in two columns so that data resources would not need to come after a long list of terms resources
web/vegpath/main.css: Added .indent
web/vegpath/index.php: People: Added Brad's VegCore ID terms spreadsheets
web/vegpath/index.php: Factored Redmine svn URLs out into $Redmine_svn
Added schemas/VegCore/Brad_Boyle/ with Brad's VegCore IDs terms spreadsheets
web/vegpath/index.php: URL fragment redirect: Removed loading indicator (blinking of resource being loaded) because for file downloads, the download will not redirect to a new page and the resource name will instead remain blinking
web/vegpath/index.php: URL fragment redirect: Fixed bug where need to use parse_mixed_path() instead of parse_dot_path() to support XPaths
web/vegpath/index.php: Terms: Added CTFS
web/vegpath/index.php: URL patterns header: Reworded comment to clarify that the elements that can be left out are in italics
web/vegpath/index.php: URL fragment redirect: Only perform fragment redirect if URL shortener requires it (as indicated by the $alias ending in #)
web/vegpath/index.php: nimoy nodes: Factored nimoy phpMyAdmin() calls out into nimoy_db() function
web/vegpath/index.php: nimoy nodes: Factored nimoy URL prefix out into $nimoy
web/vegpath/index.php: SALVIAS: Added subnodes for each SALVIAS database on nimoy
web/vegpath/index.php: VegCore: Changed suffix from .table.column to .term because VegCore terms are globally unique and don't need a table prefix
web/vegpath/index.php: BIEN2: Added subnodes for each BIEN2 database on nimoy
web/vegpath/index.php: Inlined VegBank() because it's only used once
web/vegpath/index.php: VegBank(): Use custom_separator()'s new $main_url param
web/vegpath/index.php: custom_separator(): Added $main_url param like in by_prefix(), for use when there is no path
web/vegpath/index.php: VegBank(): Use new custom_separator()
web/vegpath/index.php: Added custom_separator()
web/vegpath/index.php: Add # suffix to $alias instead of adding it in add_ref(), because not all aliases will use a # suffix
web/vegpath/util.php: Added array_non_empty(), join_non_empty()
web/vegpath/index.php: add_ref(): redirect: Don't display "Loading" as the page itself is not shown to the user when using a Location: header
web/vegpath/index.php: URL fragment redirect: Fixed bug where can't prefix the fragment with / because this won't work if VegPath is not at the top-level of the domain (and in any case is unnecessary to form a relative path)
web/vegpath/index.php: URL fragment redirect: Blink the namespace being loaded, rather than displaying "Loading" at the bottom of the page, to make it clearer what's being loaded
web/vegpath/index.php: add_ref(): Don't display the URL pattern in monospace, because fixed-width font is not needed and variable-width font is easier to read. This requires decreasing the header level because variable-width font is bigger than fixed-width font.
web/vegpath/main.css: Added entries for h6
web/vegpath/index.php: parse_dot_path() calls: Fixed bug where need to test result components using \`!== ""\` instead of just using the value as a boolean because PHP incorrectly interprets the string "0" as false
web/vegpath/util.php: Path: Made $tail default to ""
web/vegpath/index.php: URL fragment redirect: Prepend / instead of ? because filesystem paths are now redirected using .htaccess, removing the need to set the query string
web/vegpath/index.php: phpMyAdmin(): Fixed bug where can't use tbl_alter as the column target page because it requires a token param, which is only obtained after the user logs in
web/vegpath/util.php: partition(): Fixed bug where strpos() actually does take the search-for param second rather than first (but returns false on no match)
web/vegpath/util.php: partition(): Fixed bug where strpos() returns false rather than -1 on no match
web/vegpath/util.php: partition(): Fixed bug where strpos() takes the search-for param first rather than second
web/vegpath/index.php: php*Admin(): Append $target to $url in separate step from returning $url, to make it easier to debug-print the value of $url before returning it
web/vegpath/index.php: BIEN2: Fixed to use phpMyAdmin with correct URL instead of vegbiendev phpPgAdmin placeholder
web/vegpath/index.php: Added phpMyAdmin()
web/vegpath/.htaccess: mod_rewrite: RewriteBase: Changed to / now that VegPath is hosted at vegbiendev.nceas.ucsb.edu
web/vegpath/.htaccess: unknown paths: Don't redirect to index.php if the path already starts with index.php, to help avoid infinite redirect recursion
web/vegpath/.htaccess: unknown paths: Removed no longer accurate VegRef from comment header
vegpath/.htaccess: DirectorySlash: Lowercased On for consistency with other boolean directives
Added web/vegpath.conf with Apache VirtualHost config
vegpath/index.php: VegBank(): Fixed bug where name had incorrectly been replaced with $name
vegpath/index.php: phpPgAdmin(): Factored out appending of "&subject="
vegpath/: Archived no longer used vegpath/index.htm
vegpath/index.*: IH: URL-encode ' in search URL to avoid needing to backslash-escape it
vegpath/index.php: IH: Fixed search URL to undo incorrect search-and-replace of + with .
vegpath/index.*: Changed "Supported URLs" to "Supported URL patterns" because the provided short URLs take parameters that are filled into the destination URL
vegpath/index.*: Removed tagline from window title because the window title (which becomes the bookmark name) only needs to be long enough to identify what the page is, and should not be cluttered with descriptions
vegpath/index.*: Changed tagline to emphasize that the shortened URLs are especially intended to be human-readable, e.g. for use as column names
VegRef/: Renamed to VegPath to make it clearer that the purpose of the web service is to provide short, globally unique paths to resources (e.g. for use as global IDs <https://projects.nceas.ucsb.edu/nceas/projects/bien/wiki/Global_IDs>)
VegRef/.htaccess: URL resolution: mod_rewrite: Fixed bug where also need to consider if %{REQUEST_FILENAME} is a dir or symlink, which occurs e.g. when redirecting to the VegRef/ dir itself
web/VegRef/.htaccess: Turned off RewriteEngine temporarily because it was preventing the internal VegRef redirection from working
Added web/VegRef/, which provides a URL-shortening service for vegetation references. VegRef URLs are short and human-readable enough to be used as database column names. This also causes Google spreadsheets to display a clickable link for each column name, which takes the user to the data dictionary definition for the term. String row IDs (such as global IDs <https://projects.nceas.ucsb.edu/nceas/projects/bien/wiki/Global_IDs>) can also be clickable VegRef URLs.
inputs/NCU/Specimen/map.csv: cultivated: Map false (0) to NULL because cultivated can only be true or NULL, not false
inputs/CTFS/_src/_README.TXT: Added e-mails from Brad Boyle about issues with species aggregation methods
inputs/UNCC/Specimen/map.csv: Populated specimenHolderInstitutions
Added planning/goals/BIEN3_derived_data_products.docx.url
Added planning/goals/BIEN3_derived_data_products.docx