view.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /**
  2. * @fileOverview
  3. *
  4. * 查看分享文件
  5. *
  6. * @author: techird
  7. * @copyright: Baidu FEX, 2014
  8. */
  9. KityMinder.registerUI('menu/share/view', function (minder) {
  10. var $menu = minder.getUI('menu/menu');
  11. var $save = minder.getUI('menu/save/save');
  12. var $doc = minder.getUI('doc');
  13. var notice = minder.getUI('widget/notice');
  14. var shareId;
  15. $menu.$tabs.select(0);
  16. $save.$tabs.select(0);
  17. minder.on('uiready', function() {
  18. var $quickvisit = minder.getUI('topbar/quickvisit');
  19. var $edit = $quickvisit.add('editshare', 'right');
  20. $edit.on('click', function() {
  21. if (shareId) window.open('edit.html?shareId=' + shareId);
  22. });
  23. $quickvisit.$new.remove();
  24. $quickvisit.$save.remove();
  25. $quickvisit.$share.remove();
  26. });
  27. function loadShareDoc() {
  28. var pattern = /(?:shareId|share_id)=(\w+)([&#]|$)/;
  29. var match = pattern.exec(window.location) || pattern.exec(document.referrer);
  30. if (!match) return Promise.resolve(null);
  31. shareId = match[1];
  32. function renderShareData(data) {
  33. if (data.error) {
  34. return notice.error('err_share_data', data.error);
  35. }
  36. var content = data.shareMinder.data;
  37. var title = data.path ? data.path.split('/').pop() : data.title;
  38. title = title || JSON.parse(content).data.text;
  39. title = minder.getLang('ui.shared_file_title', title);
  40. return $doc.load({
  41. title: title,
  42. source: 'share',
  43. content: content,
  44. protocol: 'json',
  45. saved: true,
  46. ownerId: data.uid,
  47. ownerName: data.uname
  48. });
  49. }
  50. var $container = $(minder.getRenderTarget()).addClass('loading');
  51. return $.pajax({
  52. url: 'http://naotu.baidu.com/share.php',
  53. data: {
  54. action: 'find',
  55. id: shareId
  56. },
  57. dataType: 'json'
  58. }).then(renderShareData)['catch'](function(e) {
  59. notice.error('err_share_data', e);
  60. }).then(function() {
  61. minder.disable();
  62. minder.execCommand('hand', true);
  63. $container.removeClass('loading');
  64. });
  65. }
  66. return {
  67. ready: loadShareDoc()
  68. };
  69. });