/* global define */
define(['underscore',
'jquery',
'views/BaseEditorView',
'themes/ess-dive/views/SubmitDataButtonView'],
function(_, $, BaseEditorView, SubmitDataButtonView) {
var EditorView = BaseEditorView.extend({
/**
* Extend the function to check for files that are being uploaded
*
* If no files are being uploaded call the Base class save
* @param e
*/
save: function(e){
// Search for unsaved data files
var dataModels = _.filter(MetacatUI.rootDataPackage.models, function(item){
return item.get("type") == "Data" && item.isNew();
});
// Are there any unsaved data models?
if (dataModels.length > 0)
{
MetacatUI.appView.showAlert("Wait for the data files to finish uploading before saving.",
"alert-error",
this.$el,
null,
{
remove: true
});
}
else {
// All datafiles have been uploaded. It is OK
// to call the base class save function
BaseEditorView.prototype.save.apply(this,[e]);
}
},
/**
* Extend Base prototype to check for user's permissions to submit data
*/
fetchModel: function() {
if (MetacatUI.appModel.get("readOnlyMode") != 'undefined' && MetacatUI.appModel.get("readOnlyMode")){
var container = $(document.createElement("div")).addClass("container center");
this.$el.html(container);
$(container).append("<h1>ESS-DIVE is in READ-ONLY mode</h1>" +
"For assistance contact " +
"<a href=\"mailto:ess-dive-support@lbl.gov\">ess-dive-support@lbl.gov</a>.")
}
else if (!MetacatUI.appUserModel.get("loggedIn")){
// Prompt the user to login
this.showSignIn();
}
else if (!MetacatUI.isAllowedtoSubmitData(MetacatUI.appUserModel) ||
!MetacatUI.appUserModel.get("email") )
{
var container = $(document.createElement("div")).addClass("container center");
this.$el.html(container);
if (!MetacatUI.isAllowedtoSubmitData(MetacatUI.appUserModel)) {
// User is not in a submitters group
$(container).append("<h1>You don't have permission to submit data.</h1>").append(
new SubmitDataButtonView().render().el)
} else if (!MetacatUI.appUserModel.get("email") ) {
// User must provide an email address in order to submit data
$(container).append("<h1>Please provide an email address to submit data</h1>" +
"<a class='btn btn-primary' href='/profile/"+MetacatUI.appUserModel.get("username")
+"/s=settings' >Update Email Address</a>");
}
}
else {
// User is allowed to submit data
BaseEditorView.prototype.fetchModel.apply(this);
}
},
/**
* Overrides the Base prototype
*
* Close the view and its sub views if the user is
* allowed to submit data. Otherwise skip
* the close event
* */
onClose: function () {
if (MetacatUI.isAllowedtoSubmitData(MetacatUI.appUserModel) &&
MetacatUI.appUserModel.get("email"))
{
BaseEditorView.prototype.onClose.apply(this);
}
},
});
return EditorView;
}
);