zotero-web-library
Version:
Web library from zotero.org
105 lines (97 loc) • 2.72 kB
JavaScript
;
var log = require('libzotero/lib/Log').Logger('zotero-web-library:exportItems');
var React = require('react');
var BootstrapModalWrapper = require('./BootstrapModalWrapper.js');
var ExportItemsDialog = React.createClass({
displayName: 'ExportItemsDialog',
componentWillMount: function componentWillMount() {
var reactInstance = this;
var library = this.props.library;
library.listen('exportItemsDialog', function () {
log.debug('opening export dialog', 3);
reactInstance.openDialog();
}, {});
library.listen('displayedItemsChanged', function () {
reactInstance.forceUpdate();
}, {});
},
getInitialState: function getInitialState() {
return {};
},
openDialog: function openDialog() {
this.refs.modal.open();
},
closeDialog: function closeDialog(evt) {
this.refs.modal.close();
},
render: function render() {
var library = this.props.library;
var urlconfig = Zotero.ui.getItemsConfig(library);
var exportUrls = Zotero.url.exportUrls(urlconfig);
var exportNodes = Object.keys(exportUrls).map(function (key) {
var exportUrl = exportUrls[key];
return React.createElement(
'li',
{ key: key },
React.createElement(
'a',
{ href: exportUrl, target: '_blank', className: 'export-link', title: key, 'data-exportformat': key },
Zotero.config.exportFormatsMap[key]
)
);
});
return React.createElement(
BootstrapModalWrapper,
{ ref: 'modal' },
React.createElement(
'div',
{ id: 'export-items-dialog', className: 'export-items-dialog', role: 'dialog', title: 'Export', 'data-keyboard': 'true' },
React.createElement(
'div',
{ className: 'modal-dialog' },
React.createElement(
'div',
{ className: 'modal-content' },
React.createElement(
'div',
{ className: 'modal-header' },
React.createElement(
'button',
{ type: 'button', className: 'close', 'data-dismiss': 'modal', 'aria-hidden': 'true' },
'×'
),
React.createElement(
'h3',
null,
'Export'
)
),
React.createElement(
'div',
{ className: 'modal-body', 'data-role': 'content' },
React.createElement(
'div',
{ className: 'export-list' },
React.createElement(
'ul',
{ id: 'export-formats-ul' },
exportNodes
)
)
),
React.createElement(
'div',
{ className: 'modal-footer' },
React.createElement(
'button',
{ className: 'btn btn-default', 'data-dismiss': 'modal', 'aria-hidden': 'true' },
'Close'
)
)
)
)
)
);
}
});
module.exports = ExportItemsDialog;