Source: themes/ess-dive/config.js

MetacatUI.theme = 'ess-dive';
MetacatUI.themeTitle = 'ESS-DIVE Data Archive';

MetacatUI.officialGroups = {
	adminGroups: "adminGroups",
	allowedToSubmitDataGroups: "allowedToSubmitDataGroups"
};

MetacatUI.themeMap =
{
	'*': {
		'optional': MetacatUI.root + '/js/themes/' + MetacatUI.theme + '/loaders/optional.js',
		'json': MetacatUI.root + '/js/themes/' + MetacatUI.theme + '/loaders/json.js',

        'FileSaver' : MetacatUI.root + '/js/themes/' + MetacatUI.theme + '/components/FileSaver.js',

		// Templates include extension
		'templates/altHeader.html' : MetacatUI.root + 'themes/arctic/templates/altHeader.html',
		'templates/defaultHeader.html' : MetacatUI.root + 'themes/arctic/templates/defaultHeader.html',
		'templates/dataItem.html' : MetacatUI.root + 'themes/' + MetacatUI.theme + '/templates/dataItem.html',
		'templates/dataPackageStar.html' : MetacatUI.root + 'themes/' + MetacatUI.theme + '/templates/dataItem.html',
		'templates/editor.html' : MetacatUI.root + 'themes/' + MetacatUI.theme + '/templates/editor.html',
		'templates/editorSubmitMessage.html' : MetacatUI.root + 'themes/' + MetacatUI.theme + '/templates/editorSubmitMessage.html',
		'templates/featuredData.html' : MetacatUI.root + 'themes/arctic/templates/featuredData.html',
		'templates/footer.html' : MetacatUI.root + 'themes/' + MetacatUI.theme + '/templates/footer.html',
		'templates/insertProgress.html' : MetacatUI.root + 'themes/arctic/templates/insertProgress.html',
		'templates/loginButtons.html' : MetacatUI.root + 'themes/arctic/templates/loginButtons.html',
		'templates/mainContent.html' : MetacatUI.root + 'themes/arctic/templates/mainContent.html',
		'templates/metadata.html' : MetacatUI.root + 'themes/arctic/templates/metadata.html',
		'templates/metadataControls.html': MetacatUI.root + 'themes/'+MetacatUI.theme + '/templates/metadataControls.html',
		'templates/navbar.html' : MetacatUI.root + 'themes/' + MetacatUI.theme + '/templates/navbar.html',
		'templates/noResults.html' : MetacatUI.root + 'themes/' + MetacatUI.theme + '/templates/noResults.html',
		'templates/resultsItem.html' : MetacatUI.root + 'themes/' + MetacatUI.theme + '/templates/resultsItem.html',
		'templates/userProfileMenu.html' : MetacatUI.root + 'themes/arctic/templates/userProfileMenu.html',
		'templates/userSettings.html' : MetacatUI.root + 'themes/' + MetacatUI.theme + '/templates/userSettings.html',
		'templates/search.html' : MetacatUI.root + 'themes/' + MetacatUI.theme + '/templates/search.html',
		'templates/publishDOI.html' : MetacatUI.root + 'themes/' + MetacatUI.theme + '/templates/publishDOI.html',
        'templates/app.html' : MetacatUI.root + 'themes/' + MetacatUI.theme + '/templates/app.html',

		// Metadata templates
		'templates/metadata/eml.html': MetacatUI.root + 'themes/'+MetacatUI.theme + '/templates/metadata/eml.html',
		'templates/metadata/dates.html': MetacatUI.root + 'themes/'+MetacatUI.theme + '/templates/metadata/dates.html',
		'templates/metadata/EMLMethods.html' : MetacatUI.root + 'themes/' + MetacatUI.theme + '/templates/metadata/EMLMethods.html',
		'templates/metadata/EMLParty.html' : MetacatUI.root + 'themes/' + MetacatUI.theme + '/templates/metadata/EMLParty.html',
		'templates/metadata/EMLPartyCopyMenu.html': MetacatUI.root + 'themes/'+MetacatUI.theme + '/templates/metadata/EMLPartyCopyMenu.html',
		'templates/metadata/locationsSection.html': MetacatUI.root + 'themes/'+MetacatUI.theme + '/templates/metadata/locationsSection.html',
		'templates/metadata/metadataOverview.html': MetacatUI.root + 'themes/'+MetacatUI.theme + '/templates/metadata/metadataOverview.html',

		// Collections
		'collections/BaseDataPackage' : MetacatUI.root + '/js/collections/DataPackage.js',
		'collections/DataPackage' : MetacatUI.root + '/js/themes/' + MetacatUI.theme + '/collections/DataPackage.js',

		// Models
		'models/BaseAppModel' : MetacatUI.root + '/js/themes/arctic/models/AppModel.js',
		'models/AppModel' : MetacatUI.root + '/js/themes/' + MetacatUI.theme + '/models/AppModel.js',
		'models/BaseDataONEObject' : MetacatUI.root + '/js/models/DataONEObject.js',
		'models/DataONEObject' : MetacatUI.root + '/js/themes/' + MetacatUI.theme + '/models/DataONEObject.js',
		'models/BaseSolrResult' : MetacatUI.root + '/js/models/SolrResult.js',
		'models/SolrResult' : MetacatUI.root + '/js/themes/' + MetacatUI.theme + '/models/SolrResult.js',
		'models/metadata/eml211/BaseEML211' : MetacatUI.root + '/js/models/metadata/eml211/EML211.js',
		'models/metadata/eml211/EML211' : MetacatUI.root + '/js/themes/' + MetacatUI.theme + '/models/metadata/eml211/EML211.js',
		'models/metadata/eml211/BaseEMLParty' : MetacatUI.root + '/js/models/metadata/eml211/EMLParty.js',
		'models/metadata/eml211/EMLParty' : MetacatUI.root + '/js/themes/' + MetacatUI.theme + '/models/metadata/eml211/EMLParty.js',
		'models/metadata/eml211/BaseEMLProject' : MetacatUI.root + '/js/models/metadata/eml211/EMLProject.js',
		'models/metadata/eml211/EMLProject' : MetacatUI.root + '/js/themes/' + MetacatUI.theme + '/models/metadata/eml211/EMLProject.js',
		'models/metadata/eml211/BaseEMLText' : MetacatUI.root + '/js/themes/' + MetacatUI.theme + '/models/metadata/eml211/BaseEMLText.js',
		'models/metadata/eml211/EMLText' : MetacatUI.root + '/js/themes/' + MetacatUI.theme + '/models/metadata/eml211/EMLText.js',
		'models/Map' : MetacatUI.root + '/js/themes/arctic/models/Map.js',
		'routers/router' : MetacatUI.root + '/js/themes/arctic/routers/router.js',
		'models/BasePackageModel' : MetacatUI.root + '/js/models/PackageModel.js',
		'models/PackageModel' : MetacatUI.root + '/js/themes/' + MetacatUI.theme + '/models/PackageModel.js',

		// Views to extend
		'views/BaseCitationView' : MetacatUI.root + '/js/views/CitationView.js',
		'views/CitationView' : MetacatUI.root + '/js/themes/' + MetacatUI.theme + '/views/CitationView.js',
		'views/BaseDataCatalogView' : MetacatUI.root + '/js/views/DataCatalogView.js',
		'views/DataCatalogView' : MetacatUI.root + '/js/themes/' + MetacatUI.theme + '/views/DataCatalogView.js',
		'views/BaseDataItemView' : MetacatUI.root + '/js/views/DataItemView.js',
		'views/DataItemView' : MetacatUI.root + '/js/themes/' + MetacatUI.theme + '/views/DataItemView.js',
		'views/BaseDownloadButtonView' : MetacatUI.root + '/js/views/DownloadButtonView.js',
		'views/DownloadButtonView' : MetacatUI.root + '/js/themes/' + MetacatUI.theme + '/views/DownloadButtonView.js',
		'views/BaseEditorView' : MetacatUI.root + '/js/views/EditorView.js',
		'views/EditorView' : MetacatUI.root + '/js/themes/' + MetacatUI.theme + '/views/EditorView.js',
		'views/BaseMetadataView' : MetacatUI.root + '/js/views/MetadataView.js',
		'views/MetadataView' : MetacatUI.root + '/js/themes/' + MetacatUI.theme + '/views/MetadataView.js',
		'views/BaseMetricView' : MetacatUI.root + '/js/views/MetricView.js',
		'views/MetricView' : MetacatUI.root + '/js/themes/' + MetacatUI.theme + '/views/MetricView.js',
		'views/BaseUserView' : MetacatUI.root + '/js/views/UserView.js',
		'views/UserView' : MetacatUI.root + '/js/themes/' + MetacatUI.theme + '/views/UserView.js',
		'views/BaseNavbarView' : MetacatUI.root + '/js/views/NavbarView.js',
		'views/NavbarView' : MetacatUI.root + '/js/themes/' + MetacatUI.theme + '/views/NavbarView.js',
		'views/metadata/BaseEML211View' : MetacatUI.root + '/js/views/metadata/EML211View.js',
		'views/metadata/EML211View' : MetacatUI.root + '/js/themes/' + MetacatUI.theme + '/views/metadata/EML211View.js',
		'views/metadata/BaseEMLPartyView' : MetacatUI.root + '/js/views/metadata/EMLPartyView.js',
		'views/metadata/EMLPartyView' : MetacatUI.root + '/js/themes/' + MetacatUI.theme + '/views/metadata/EMLPartyView.js'
		}
};

MetacatUI.customMapModelOptions = {
	tileHue: "231"
}

MetacatUI.regexPatterns = {
	emails: /^([a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+(\.[a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+)*|"((([ \t]*\r\n)?[ \t]+)?([\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*(([ \t]*\r\n)?[ \t]+)?")@(([a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.)+([a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.?$/i
}

/**
 * Determine if the user is the member of a configured admin group
 *
 * @param {Array} isMemberOf - an array of groups (subject strings)
 * @returns {boolean}
 */
MetacatUI.checkIfMemberOf = function(isMemberOf, chosenGroups){
	// Get the chosen groups subjects
	var retrievedChosenGroups = MetacatUI.appModel.get(chosenGroups);

	// create a list of subject strings from the group objects
	//    "groupId" is the subject
	var userGroups = isMemberOf.map(function(x){return x.groupId;});

	// is the user's groups in the chosen groups?
	var userMemberOfChosenGroups = $(retrievedChosenGroups).not($(retrievedChosenGroups).not(userGroups));
	return (userMemberOfChosenGroups.length > 0);
};

/**
 * Determine if the user is allowed to submit data to this archive
 *
 * If no allowedToSubmitDataGroups are specified then the user is allowed to submit. If
 * allowedToSubmitDataGroups are specified the user may only be allowed to submit data if they
 * belong to one of the listed groups.
 *
 * @param user - a UserModel
 * @returns {boolean}
 */
MetacatUI.isAllowedtoSubmitData = function (user) {

	return (!MetacatUI.appModel.get(MetacatUI.officialGroups.allowedToSubmitDataGroups) ||
		MetacatUI.appModel.get(MetacatUI.officialGroups.allowedToSubmitDataGroups).length == 0) ||
		MetacatUI.checkIfMemberOf(
			user.get("isMemberOf"),
			MetacatUI.officialGroups.allowedToSubmitDataGroups);
};

MetacatUI.customAppConfig = function(){
	/** Load configuration file if it exists */


	if(MetacatUI.appModel.get("baseUrl").indexOf("ess-dive.lbl.gov") > -1 && MetacatUI.appModel.get("baseUrl").indexOf("test") == -1){
		MetacatUI.appModel.set("googleAnalyticsKey", null);
	}
};