define([ 'jquery', '/api/config', '/common/common-util.js', '/common/common-hash.js', '/common/common-language.js', '/common/common-interface.js', '/common/common-constants.js', '/common/common-feedback.js', '/common/hyperscript.js', '/common/media-tag.js', '/common/clipboard.js', '/customize/messages.js', '/customize/application_config.js', '/customize/pages.js', '/bower_components/nthen/index.js', 'css!/customize/fonts/cptools/style.css' ], function ($, Config, Util, Hash, Language, UI, Constants, Feedback, h, MediaTag, Clipboard, Messages, AppConfig, Pages, NThen) { var UIElements = {}; // Configure MediaTags to use our local viewer if (MediaTag) { MediaTag.setDefaultConfig('pdf', { viewer: '/common/pdfjs/web/viewer.html' }); } UIElements.updateTags = function (common, href) { var existing, tags; NThen(function(waitFor) { common.getSframeChannel().query("Q_GET_ALL_TAGS", null, waitFor(function(err, res) { if (err || res.error) { return void console.error(err || res.error); } existing = Object.keys(res.tags).sort(); })); }).nThen(function (waitFor) { common.getPadAttribute('tags', waitFor(function (err, res) { if (err) { if (err === 'NO_ENTRY') { UI.alert(Messages.tags_noentry); } waitFor.abort(); return void console.error(err); } tags = res || []; }), href); }).nThen(function () { UI.dialog.tagPrompt(tags, existing, function (newTags) { if (!Array.isArray(newTags)) { return; } common.setPadAttribute('tags', newTags, null, href); }); }); }; var importContent = function (type, f, cfg) { return function () { var $files = $('', {type:"file"}); if (cfg && cfg.accept) { $files.attr('accept', cfg.accept); } $files.click(); $files.on('change', function (e) { var file = e.target.files[0]; var reader = new FileReader(); reader.onload = function (e) { f(e.target.result, file); }; reader.readAsText(file, type); }); }; }; var getPropertiesData = function (common, cb) { var data = {}; NThen(function (waitFor) { common.getPadAttribute('password', waitFor(function (err, val) { data.password = val; })); }).nThen(function (waitFor) { var base = common.getMetadataMgr().getPrivateData().origin; common.getPadAttribute('href', waitFor(function (err, val) { if (!val) { return; } data.href = base + val; })); common.getPadAttribute('roHref', waitFor(function (err, val) { if (!val) { return; } data.roHref = base + val; })); common.getPadAttribute('channel', waitFor(function (err, val) { data.channel = val; })); common.getPadAttribute('rtChannel', waitFor(function (err, val) { data.rtChannel = val; })); common.getPadAttribute('lastVersion', waitFor(function (err, val) { data.lastVersion = val; })); common.getPadAttribute('atime', waitFor(function (err, val) { data.atime = val; })); common.getPadAttribute('ctime', waitFor(function (err, val) { data.ctime = val; })); common.getPadAttribute('tags', waitFor(function (err, val) { data.tags = val; })); common.getPadAttribute('owners', waitFor(function (err, val) { data.owners = val; })); common.getPadAttribute('expire', waitFor(function (err, val) { data.expire = val; })); }).nThen(function () { cb(void 0, data); }); }; var createOwnerModal = function (common, owners) { var friends = common.getFriends(true); // Remove owner column var _owners = {}; owners.forEach(function (edPublic) { var f; Object.keys(friends).some(function (c) { if (friends[c].edPublic === edPublic) { f = friends[c]; return true; } }); _owners[edPublic] = f || { displayName: 'Unknown user: '+ edPublic, // XXX notifications: true, edPublic: edPublic, }; }); var removeCol = UIElements.getFriendsList('Remove an existing owner instantly', { common: common, friends: _owners, noFilter: true }, function () { // XXX onSelect... //onSelect... console.log(arguments); }); var $div1 = $(removeCol.div); var others1 = removeCol.others; $div1.append(h('div.cp-share-grid', others1)); $div1.find('.cp-share-friend').click(function () { var sel = $(this).hasClass('cp-selected'); if (!sel) { $(this).addClass('cp-selected'); } else { var order = $(this).attr('data-order'); order = order ? 'order:'+order : ''; $(this).removeClass('cp-selected').attr('style', order); } // XXX onSelect... }); // Add owners column var addCol = UIElements.getFriendsList('Ask a friend to be an owner', { common: common, friends: friends }, function () { // XXX onSelect... console.log(arguments); }); var $div2 = $(addCol.div); var others2 = addCol.others; $div2.append(h('div.cp-share-grid', others2)); $div2.find('.cp-share-friend').click(function () { var sel = $(this).hasClass('cp-selected'); if (!sel) { $(this).addClass('cp-selected'); } else { var order = $(this).attr('data-order'); order = order ? 'order:'+order : ''; $(this).removeClass('cp-selected').attr('style', order); } // XXX onSelect... }); // Create modal var link = h('div.cp-share-columns', [ removeCol.div, addCol.div ]); var linkButtons = [{ className: 'cancel', name: Messages.ok, onClick: function () {}, keys: [27] }]; return UI.dialog.customModal(link, {buttons: linkButtons}); }; var getRightsProperties = function (common, data, cb) { var $d = $('
'); if (!data) { return void cb(void 0, $d); } $('