From 5998ce11ffd675a66d8d64ae5d94a5e56b47ddb3 Mon Sep 17 00:00:00 2001 From: Paul Molluzzo Date: Fri, 4 Mar 2016 12:15:44 -0500 Subject: [PATCH] make share package use React; abstract Social sharing to take a title and url; update dependencies across packages; rename package; fix styles a little --- .meteor/packages | 1 + .meteor/versions | 3 ++ .../lib/client/post_share.html | 13 ------ .../_telescope-share/lib/client/post_share.js | 25 ----------- packages/_telescope-share/lib/share.js | 4 -- packages/base-components/lib/posts/Post.jsx | 3 +- packages/base-components/package.js | 3 +- packages/nova-lib/package.js | 2 +- .../.gitignore | 0 .../.versions | 0 .../README.md | 0 .../lib/client/social_share.scss} | 24 +++++------ .../nova-share/lib/common/social_share.jsx | 43 +++++++++++++++++++ packages/nova-share/lib/social_share.js | 1 + .../package.js | 15 +++---- .../versions.json | 0 16 files changed, 71 insertions(+), 66 deletions(-) delete mode 100644 packages/_telescope-share/lib/client/post_share.html delete mode 100644 packages/_telescope-share/lib/client/post_share.js delete mode 100644 packages/_telescope-share/lib/share.js rename packages/{_telescope-share => nova-share}/.gitignore (100%) rename packages/{_telescope-share => nova-share}/.versions (100%) rename packages/{_telescope-share => nova-share}/README.md (100%) rename packages/{_telescope-share/lib/client/post_share.scss => nova-share/lib/client/social_share.scss} (87%) create mode 100644 packages/nova-share/lib/common/social_share.jsx create mode 100644 packages/nova-share/lib/social_share.js rename packages/{_telescope-share => nova-share}/package.js (61%) rename packages/{_telescope-share => nova-share}/versions.json (100%) diff --git a/.meteor/packages b/.meteor/packages index c48f62fe3..b28e2f1e8 100644 --- a/.meteor/packages +++ b/.meteor/packages @@ -20,6 +20,7 @@ nova:search nova:notifications nova:getting-started nova:categories +nova:share # nova:voting # nova:migrations diff --git a/.meteor/versions b/.meteor/versions index 361589cd8..08a589c48 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -49,6 +49,8 @@ ecmascript-runtime@0.2.7-beta.11 ejson@1.0.8-beta.11 email@1.0.9-beta.11 facebook@1.2.3-beta.11 +fortawesome:fontawesome@4.5.0 +fourseven:scss@0.9.6 geojson-utils@1.0.5-beta.11 hot-code-push@1.0.1-beta.11 html-tools@1.0.6-beta.11 @@ -103,6 +105,7 @@ nova:notifications@0.25.7 nova:posts@0.25.7 nova:search@0.25.7 nova:settings@0.25.7 +nova:share@0.25.7 nova:users@0.25.7 npm-bcrypt@0.7.8_2 npm-mongo@1.4.40-beta.11 diff --git a/packages/_telescope-share/lib/client/post_share.html b/packages/_telescope-share/lib/client/post_share.html deleted file mode 100644 index f44f65b53..000000000 --- a/packages/_telescope-share/lib/client/post_share.html +++ /dev/null @@ -1,13 +0,0 @@ - \ No newline at end of file diff --git a/packages/_telescope-share/lib/client/post_share.js b/packages/_telescope-share/lib/client/post_share.js deleted file mode 100644 index eab0b1d00..000000000 --- a/packages/_telescope-share/lib/client/post_share.js +++ /dev/null @@ -1,25 +0,0 @@ -Meteor.startup(function () { - Template.post_share.helpers({ - encodedTitle: function () { - return encodeURIComponent(this.title); - }, - sourceLink: function () { - return !!this.url ? this.url : Posts.getPageUrl(this); - }, - viaTwitter: function () { - return !!Settings.get('twitterAccount') ? 'via='+Settings.get('twitterAccount') : ''; - } - }); - - Template.post_share.events({ - 'click .share-link': function(e){ - var $this = $(e.target).parents('.post-share').find('.share-link'); - var $share = $this.parents('.post-share').find('.share-options'); - e.preventDefault(); - $('.share-link').not($this).removeClass("active"); - $(".share-options").not($share).addClass("hidden"); - $this.toggleClass("active"); - $share.toggleClass("hidden"); - } - }); -}); diff --git a/packages/_telescope-share/lib/share.js b/packages/_telescope-share/lib/share.js deleted file mode 100644 index 464a28b42..000000000 --- a/packages/_telescope-share/lib/share.js +++ /dev/null @@ -1,4 +0,0 @@ -Telescope.modules.add("postComponents", { - template: 'post_share', - order: 25 -}); \ No newline at end of file diff --git a/packages/base-components/lib/posts/Post.jsx b/packages/base-components/lib/posts/Post.jsx index 4c6729ba4..78f30f643 100644 --- a/packages/base-components/lib/posts/Post.jsx +++ b/packages/base-components/lib/posts/Post.jsx @@ -1,6 +1,6 @@ const Post = (props) => { - ({ListContainer, CommentList, CommentNew, PostCategories} = Telescope.components); + ({ListContainer, CommentList, CommentNew, PostCategories, SocialShare} = Telescope.components); const post = props.document; const htmlBody = {__html: post.htmlBody}; @@ -9,6 +9,7 @@ const Post = (props) => {

{post.title}

+

{post.commentCount} comments

{moment(post.postedAt).fromNow()}

{post.categoriesArray ? : ""} diff --git a/packages/base-components/package.js b/packages/base-components/package.js index 83b200e12..d99737aed 100644 --- a/packages/base-components/package.js +++ b/packages/base-components/package.js @@ -12,11 +12,12 @@ Package.onUse(function (api) { api.use([ // Nova packages - + 'nova:core@0.25.7', 'nova:posts@0.25.7', 'nova:users@0.25.7', 'nova:comments@0.25.7', + 'nova:share@0.25.7', // third-party packages diff --git a/packages/nova-lib/package.js b/packages/nova-lib/package.js index cb774372b..cc58bfd9d 100644 --- a/packages/nova-lib/package.js +++ b/packages/nova-lib/package.js @@ -53,7 +53,7 @@ Package.onUse(function (api) { // 'sacha:spin@2.3.1', // 'aslagle:reactive-table@0.8.24', // 'utilities:avatar@0.9.2', - // 'fortawesome:fontawesome@4.5.0', + 'fortawesome:fontawesome@4.5.0', // 'ccan:cssreset@1.0.0', 'djedi:sanitize-html@1.11.2', 'jparker:gravatar@0.4.1', diff --git a/packages/_telescope-share/.gitignore b/packages/nova-share/.gitignore similarity index 100% rename from packages/_telescope-share/.gitignore rename to packages/nova-share/.gitignore diff --git a/packages/_telescope-share/.versions b/packages/nova-share/.versions similarity index 100% rename from packages/_telescope-share/.versions rename to packages/nova-share/.versions diff --git a/packages/_telescope-share/README.md b/packages/nova-share/README.md similarity index 100% rename from packages/_telescope-share/README.md rename to packages/nova-share/README.md diff --git a/packages/_telescope-share/lib/client/post_share.scss b/packages/nova-share/lib/client/social_share.scss similarity index 87% rename from packages/_telescope-share/lib/client/post_share.scss rename to packages/nova-share/lib/client/social_share.scss index d5a09e75e..d0e4f9462 100644 --- a/packages/_telescope-share/lib/client/post_share.scss +++ b/packages/nova-share/lib/client/social_share.scss @@ -11,15 +11,11 @@ $small-break: 600px; } } -.post-share{ +.social-share{ position: relative; color: #b3c1c6; order: 8; - // temporary - display: none; - @include small{ - display: none; - } + width: 40px; .icon-share{ &:before{ font-size: 24px; @@ -35,20 +31,21 @@ $small-break: 600px; z-index: 10000; background: rgba(0,0,0,0.4); border-radius: 3px; - width: 185px; + width: auto; padding: 10px; line-height: 1; @include small { - left: 50% !important; + left: -50% !important; top: 40px !important; - margin-left: -92px; + } @include medium-large { - left: -200px; - top: -8px; + left: 40px; + top: 0; } .icon { color: white; + width: 100%; } a { display: inline-block; @@ -88,8 +85,9 @@ $small-break: 600px; margin-left: -11px; } @include medium-large { - border-left-color: rgba(0,0,0,0.4); - top: 20px; + border-right-color: rgba(0,0,0,0.4); + top: 5px; + left: -20px; margin-top: -3px; } } diff --git a/packages/nova-share/lib/common/social_share.jsx b/packages/nova-share/lib/common/social_share.jsx new file mode 100644 index 000000000..43fdfd3eb --- /dev/null +++ b/packages/nova-share/lib/common/social_share.jsx @@ -0,0 +1,43 @@ +const SocialShare = React.createClass({ + + propTypes: { + url: React.PropTypes.string.isRequired, + title: React.PropTypes.string.isRequired, + }, + + getInitialState: function() { + return {showShare: false}; + }, + + viaTwitter() { + return !!Settings.get('twitterAccount') ? 'via='+Settings.get('twitterAccount') : ''; + }, + + toggleView() { + this.setState({ + showShare: !this.state.showShare + }); + return; + }, + + insertIcon(name) { + return {__html: Telescope.utils.getIcon(name)}; + }, + + render() { + let shareDisplay = this.state.showShare ? 'active' : 'hidden'; + return ( +
+ + +
+ ) + } +}); + +module.exports = SocialShare; diff --git a/packages/nova-share/lib/social_share.js b/packages/nova-share/lib/social_share.js new file mode 100644 index 000000000..01ec3e341 --- /dev/null +++ b/packages/nova-share/lib/social_share.js @@ -0,0 +1 @@ +Telescope.registerComponent("SocialShare", require('./common/social_share.jsx')); diff --git a/packages/_telescope-share/package.js b/packages/nova-share/package.js similarity index 61% rename from packages/_telescope-share/package.js rename to packages/nova-share/package.js index 3859d612e..97c9b3f8d 100644 --- a/packages/_telescope-share/package.js +++ b/packages/nova-share/package.js @@ -9,17 +9,16 @@ Package.onUse(function (api) { api.versionsFrom("METEOR@1.0"); - api.use(['nova:core@0.25.7']); + api.use([ + 'nova:core@0.25.7', + 'fourseven:scss' + ]); api.addFiles([ - 'lib/share.js' + 'lib/social_share.js' ], ['client', 'server']); api.addFiles([ - 'lib/client/post_share.html', - 'lib/client/post_share.js', - 'lib/client/post_share.scss' - ], ['client']); - - // api.export(); + 'lib/client/social_share.scss' + ], ['client'], {isImport:true}); }); diff --git a/packages/_telescope-share/versions.json b/packages/nova-share/versions.json similarity index 100% rename from packages/_telescope-share/versions.json rename to packages/nova-share/versions.json