www.gusucode.com > Flarum中文优化论坛PHP源码程序 > FlarumChina-master/vendor/flarum/flarum-ext-likes/js/forum/dist/extension.js

    'use strict';

System.register('flarum/likes/addLikeAction', ['flarum/extend', 'flarum/app', 'flarum/components/Button', 'flarum/components/CommentPost'], function (_export, _context) {
  var extend, app, Button, CommentPost;

  _export('default', function () {
    extend(CommentPost.prototype, 'actionItems', function (items) {
      var post = this.props.post;

      if (post.isHidden() || !post.canLike()) return;

      var isLiked = app.session.user && post.likes().some(function (user) {
        return user === app.session.user;
      });

      items.add('like', Button.component({
        children: app.translator.trans(isLiked ? 'flarum-likes.forum.post.unlike_link' : 'flarum-likes.forum.post.like_link'),
        className: 'Button Button--link',
        onclick: function onclick() {
          isLiked = !isLiked;

          post.save({ isLiked: isLiked });

          // We've saved the fact that we do or don't like the post, but in order
          // to provide instantaneous feedback to the user, we'll need to add or
          // remove the like from the relationship data manually.
          var data = post.data.relationships.likes.data;
          data.some(function (like, i) {
            if (like.id === app.session.user.id()) {
              data.splice(i, 1);
              return true;
            }
          });

          if (isLiked) {
            data.unshift({ type: 'users', id: app.session.user.id() });
          }
        }
      }));
    });
  });

  return {
    setters: [function (_flarumExtend) {
      extend = _flarumExtend.extend;
    }, function (_flarumApp) {
      app = _flarumApp.default;
    }, function (_flarumComponentsButton) {
      Button = _flarumComponentsButton.default;
    }, function (_flarumComponentsCommentPost) {
      CommentPost = _flarumComponentsCommentPost.default;
    }],
    execute: function () {}
  };
});;
'use strict';

System.register('flarum/likes/addLikesList', ['flarum/extend', 'flarum/app', 'flarum/components/CommentPost', 'flarum/helpers/punctuateSeries', 'flarum/helpers/username', 'flarum/helpers/icon', 'flarum/likes/components/PostLikesModal'], function (_export, _context) {
  var extend, app, CommentPost, punctuateSeries, username, icon, PostLikesModal;

  _export('default', function () {
    extend(CommentPost.prototype, 'footerItems', function (items) {
      var post = this.props.post;
      var likes = post.likes();

      if (likes && likes.length) {
        var limit = 4;
        var overLimit = likes.length > limit;

        // Construct a list of names of users who have liked this post. Make sure the
        // current user is first in the list, and cap a maximum of 4 items.
        var names = likes.sort(function (a) {
          return a === app.session.user ? -1 : 1;
        }).slice(0, overLimit ? limit - 1 : limit).map(function (user) {
          return m(
            'a',
            { href: app.route.user(user), config: m.route },
            user === app.session.user ? app.translator.trans('flarum-likes.forum.post.you_text') : username(user)
          );
        });

        // If there are more users that we've run out of room to display, add a "x
        // others" name to the end of the list. Clicking on it will display a modal
        // with a full list of names.
        if (overLimit) {
          var count = likes.length - names.length;

          names.push(m(
            'a',
            { href: '#', onclick: function onclick(e) {
                e.preventDefault();
                app.modal.show(new PostLikesModal({ post: post }));
              } },
            app.translator.transChoice('flarum-likes.forum.post.others_link', count, { count: count })
          ));
        }

        items.add('liked', m(
          'div',
          { className: 'Post-likedBy' },
          icon('thumbs-o-up'),
          app.translator.transChoice('flarum-likes.forum.post.liked_by' + (likes[0] === app.session.user ? '_self' : '') + '_text', names.length, {
            count: names.length,
            users: punctuateSeries(names)
          })
        ));
      }
    });
  });

  return {
    setters: [function (_flarumExtend) {
      extend = _flarumExtend.extend;
    }, function (_flarumApp) {
      app = _flarumApp.default;
    }, function (_flarumComponentsCommentPost) {
      CommentPost = _flarumComponentsCommentPost.default;
    }, function (_flarumHelpersPunctuateSeries) {
      punctuateSeries = _flarumHelpersPunctuateSeries.default;
    }, function (_flarumHelpersUsername) {
      username = _flarumHelpersUsername.default;
    }, function (_flarumHelpersIcon) {
      icon = _flarumHelpersIcon.default;
    }, function (_flarumLikesComponentsPostLikesModal) {
      PostLikesModal = _flarumLikesComponentsPostLikesModal.default;
    }],
    execute: function () {}
  };
});;
'use strict';

System.register('flarum/likes/components/PostLikedNotification', ['flarum/components/Notification', 'flarum/helpers/username', 'flarum/helpers/punctuateSeries'], function (_export, _context) {
  var Notification, username, punctuateSeries, PostLikedNotification;
  return {
    setters: [function (_flarumComponentsNotification) {
      Notification = _flarumComponentsNotification.default;
    }, function (_flarumHelpersUsername) {
      username = _flarumHelpersUsername.default;
    }, function (_flarumHelpersPunctuateSeries) {
      punctuateSeries = _flarumHelpersPunctuateSeries.default;
    }],
    execute: function () {
      PostLikedNotification = function (_Notification) {
        babelHelpers.inherits(PostLikedNotification, _Notification);

        function PostLikedNotification() {
          babelHelpers.classCallCheck(this, PostLikedNotification);
          return babelHelpers.possibleConstructorReturn(this, Object.getPrototypeOf(PostLikedNotification).apply(this, arguments));
        }

        babelHelpers.createClass(PostLikedNotification, [{
          key: 'icon',
          value: function icon() {
            return 'thumbs-o-up';
          }
        }, {
          key: 'href',
          value: function href() {
            return app.route.post(this.props.notification.subject());
          }
        }, {
          key: 'content',
          value: function content() {
            var notification = this.props.notification;
            var user = notification.sender();
            var auc = notification.additionalUnreadCount();

            return app.translator.transChoice('flarum-likes.forum.notifications.post_liked_text', auc + 1, {
              user: user,
              username: auc ? punctuateSeries([username(user), app.translator.transChoice('flarum-likes.forum.notifications.others_text', auc, { count: auc })]) : undefined
            });
          }
        }, {
          key: 'excerpt',
          value: function excerpt() {
            return this.props.notification.subject().contentPlain();
          }
        }]);
        return PostLikedNotification;
      }(Notification);

      _export('default', PostLikedNotification);
    }
  };
});;
'use strict';

System.register('flarum/likes/components/PostLikesModal', ['flarum/components/Modal', 'flarum/helpers/avatar', 'flarum/helpers/username'], function (_export, _context) {
  var Modal, avatar, username, PostLikesModal;
  return {
    setters: [function (_flarumComponentsModal) {
      Modal = _flarumComponentsModal.default;
    }, function (_flarumHelpersAvatar) {
      avatar = _flarumHelpersAvatar.default;
    }, function (_flarumHelpersUsername) {
      username = _flarumHelpersUsername.default;
    }],
    execute: function () {
      PostLikesModal = function (_Modal) {
        babelHelpers.inherits(PostLikesModal, _Modal);

        function PostLikesModal() {
          babelHelpers.classCallCheck(this, PostLikesModal);
          return babelHelpers.possibleConstructorReturn(this, Object.getPrototypeOf(PostLikesModal).apply(this, arguments));
        }

        babelHelpers.createClass(PostLikesModal, [{
          key: 'className',
          value: function className() {
            return 'PostLikesModal Modal--small';
          }
        }, {
          key: 'title',
          value: function title() {
            return app.translator.trans('flarum-likes.forum.post_likes.title');
          }
        }, {
          key: 'content',
          value: function content() {
            return m(
              'div',
              { className: 'Modal-body' },
              m(
                'ul',
                { className: 'PostLikesModal-list' },
                this.props.post.likes().map(function (user) {
                  return m(
                    'li',
                    null,
                    m(
                      'a',
                      { href: app.route.user(user), config: m.route },
                      avatar(user),
                      ' ',
                      ' ',
                      username(user)
                    )
                  );
                })
              )
            );
          }
        }]);
        return PostLikesModal;
      }(Modal);

      _export('default', PostLikesModal);
    }
  };
});;
'use strict';

System.register('flarum/likes/main', ['flarum/extend', 'flarum/app', 'flarum/models/Post', 'flarum/Model', 'flarum/components/NotificationGrid', 'flarum/likes/addLikeAction', 'flarum/likes/addLikesList', 'flarum/likes/components/PostLikedNotification'], function (_export, _context) {
  var extend, app, Post, Model, NotificationGrid, addLikeAction, addLikesList, PostLikedNotification;
  return {
    setters: [function (_flarumExtend) {
      extend = _flarumExtend.extend;
    }, function (_flarumApp) {
      app = _flarumApp.default;
    }, function (_flarumModelsPost) {
      Post = _flarumModelsPost.default;
    }, function (_flarumModel) {
      Model = _flarumModel.default;
    }, function (_flarumComponentsNotificationGrid) {
      NotificationGrid = _flarumComponentsNotificationGrid.default;
    }, function (_flarumLikesAddLikeAction) {
      addLikeAction = _flarumLikesAddLikeAction.default;
    }, function (_flarumLikesAddLikesList) {
      addLikesList = _flarumLikesAddLikesList.default;
    }, function (_flarumLikesComponentsPostLikedNotification) {
      PostLikedNotification = _flarumLikesComponentsPostLikedNotification.default;
    }],
    execute: function () {

      app.initializers.add('flarum-likes', function () {
        app.notificationComponents.postLiked = PostLikedNotification;

        Post.prototype.canLike = Model.attribute('canLike');
        Post.prototype.likes = Model.hasMany('likes');

        addLikeAction();
        addLikesList();

        extend(NotificationGrid.prototype, 'notificationTypes', function (items) {
          items.add('postLiked', {
            name: 'postLiked',
            icon: 'thumbs-o-up',
            label: app.translator.trans('flarum-likes.forum.settings.notify_post_liked_label')
          });
        });
      });
    }
  };
});