Skip to content

Commit 4f181b2

Browse files
authored
Merge pull request #15 from optimizely/social-share-popup
Social Share Popup
2 parents 6af0453 + 67f7567 commit 4f181b2

File tree

4 files changed

+98
-0
lines changed

4 files changed

+98
-0
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Social Share Popup
2+
3+
![Screenshot](https://github.com/optimizely/extension-library/blob/master/Extensions/Editor%20Extensions/Social%20Share%20Popup/social_share_extension_screenshot.png)
4+
5+
## Description
6+
7+
This extension adds a popup to the page when the user selects text. The popup includes links to share the selected text and current on Twitter or LinkedIn. Editable fields include background colour, placement (at click or at window bottom), and location offsets.
8+
9+
## Fields
10+
11+
* Headline
12+
* Minimum Highlighted Characters
13+
* Background Colour
14+
* Text Colour
15+
* X Offset
16+
* Y Offset
17+
* Location
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
{
2+
"plugin_type": "widget",
3+
"name": "Social Share Popup",
4+
"edit_page_url": "https://help.optimizely.com/Build_Campaigns_and_Experiments/Extensions%3A_Template_custom_features_in_Optimizely_X",
5+
"form_schema": [
6+
{
7+
"default_value": "Share this!",
8+
"field_type": "text",
9+
"name": "headline",
10+
"label": "Headline",
11+
"options": null
12+
},
13+
{
14+
"default_value": 10,
15+
"field_type": "number",
16+
"name": "minimumlength",
17+
"label": "Minimum Highlighted Characters",
18+
"options": null
19+
},
20+
{
21+
"default_value": "rgba(226, 226, 226, 1)",
22+
"field_type": "color",
23+
"name": "colour",
24+
"label": "Background Colour",
25+
"options": {
26+
"mode": "rgba"
27+
}
28+
},
29+
{
30+
"default_value": "rgba(255, 255, 255, 1)",
31+
"field_type": "color",
32+
"name": "textColour",
33+
"label": "Text Colour",
34+
"options": {
35+
"mode": "rgba"
36+
}
37+
},
38+
{
39+
"default_value": 0,
40+
"field_type": "number",
41+
"name": "xoffset",
42+
"label": "X Offset",
43+
"options": null
44+
},
45+
{
46+
"default_value": 0,
47+
"field_type": "number",
48+
"name": "yoffset",
49+
"label": "Y Offset",
50+
"options": null
51+
},
52+
{
53+
"default_value": "dynamic",
54+
"field_type": "dropdown",
55+
"name": "type",
56+
"label": "Location",
57+
"options": {
58+
"choices": [
59+
{
60+
"value": "fixed",
61+
"label": "Page Bottom"
62+
},
63+
{
64+
"value": "dynamic",
65+
"label": "At Selection"
66+
}
67+
]
68+
}
69+
}
70+
],
71+
"description": "This extension adds a popup to the page when the user selects text. The popup includes links to share the selected text and current on Twitter or LinkedIn. Editable fields include background colour, placement (at click or at window bottom), and location offsets. ",
72+
"options": {
73+
"apply_js": "var onMouseUp = function highlightHandler(event){\n removePopup();\n \tif(Math.abs(window.getSelection().anchorOffset - window.getSelection().focusOffset) > extension.minimumlength) {\n renderPopup(event.clientX, event.clientY);\n }\n};\n\ndocument.addEventListener(\"mouseup\", onMouseUp);\n\ndocument.addEventListener(\"scroll\", function clearExtension(){\n \tremovePopup();\n});\n\nfunction renderPopup(x, y) {\n \tvar html = widget.$html;\n \tdocument.removeEventListener(\"mouseup\", onMouseUp);\n document.querySelector('body').insertAdjacentHTML('afterbegin', html);\n \tdocument.getElementById('optimizely-extension').style.background = extension.colour;\n \t\n \tif (extension.type == 'dynamic'){\n \t\tdocument.getElementById('optimizely-extension').style.left = x + extension.xoffset + \"px\";\n \tdocument.getElementById('optimizely-extension').style.top = y + extension.yoffset + \"px\";\n }else{\n document.getElementById('optimizely-extension').style.left = window.innerWidth / 2 + \"px\";\n \tdocument.getElementById('optimizely-extension').style.top = (window.innerHeight - document.querySelector('#optimizely-extension').clientHeight)+ \"px\";\n }\n \tdocument.getElementById('twitter').addEventListener(\"click\", twitterClick);\n\t document.getElementById('linkedin').addEventListener(\"click\", linkedinClick);\n}\n\nfunction removePopup(){\n \t\tvar extensionHtml = document.getElementById('optimizely-extension');\n\t\tif (extensionHtml) extensionHtml.remove(); \n \tdocument.addEventListener(\"mouseup\", onMouseUp);\n}\n\n\nfunction getSelectedText(){\n allText = window.getSelection().focusNode.textContent;\n if (window.getSelection().anchorOffset > window.getSelection().focusOffset){\n start = window.getSelection().focusOffset;\n \tend = window.getSelection().anchorOffset;\n }\n else{\n \t\tend = window.getSelection().focusOffset;\n \tstart = window.getSelection().anchorOffset;\n } \n return allText.substring(start, end);\n}\n\n\nfunction getLinkedInShareURL(){\n \t\tshareURL = \"https://www.linkedin.com/shareArticle?mini=true&url=\" + window.location.href + \"&summary=\" + getSelectedText().replace(/ /gi, \"%20\");\n \t\treturn shareURL;\n}\n\n\nfunction getTwitterShareURL(){\n \t\tshareURL = \"https://twitter.com/share?text=\" + getSelectedText().replace(/ /gi, \"%20\") + \"&url=\" + window.location.href;\n \treturn shareURL;\n}\n\n\ntwitterClick = function shareToTwitter(){\n \t\tremovePopup();\n window.open(getTwitterShareURL(), '_blank', 'location=yes,top=150,left=300,height=570,width=520,scrollbars=yes,status=yes'); \n};\n\nlinkedinClick = function shareToLinkedIn(){\n \t\tremovePopup();\n window.open(getLinkedInShareURL(), '_blank', 'location=yes,top=150,left=300,height=570,width=520,scrollbars=yes,status=yes'); \n};",
74+
"html": "<div id=\"optimizely-extension\" class=\"socialPopup\" style=\"background:extension.colour\">\n\t<p class=\"optimizelyShareHeadline\" style=\"color: {{ extension.textColour }};\">{{extension.headline}}</p>\n <div class=\"links\" >\n \n <a class=\"link\" id=\"twitter\">\n \t\t<img src=\"https://image.flaticon.com/icons/png/128/174/174876.png\" width= 32px>\n </a>\n \n \t<a class=\"link\" id=\"linkedin\" >\n \t\t<img src=\"https://image.flaticon.com/icons/png/128/174/174857.png\" width= 32px>\n </a>\n \n </div>\n \n</div>",
75+
"css": ".socialPopup{\n position: fixed;\n\t\tborder-radius: 5px;\n width: 150px;\n \tpadding-top: 2px;\n text-align: center;\n z-index:999;\n \t/*box-shadow: 5px 5px 4px grey;*/\n}\n.optimizelyShareHeadline {\n\tword-wrap: break-word;\n padding: 0 3px;\n}\n\n.links{\n\tpadding-bottom: 5px;\n}\n",
76+
"undo_js": "var extensionHtml = document.getElementById('optimizely-extension');\nif (extensionHtml) extensionHtml.remove();\n"
77+
}
78+
}
Loading

Extensions/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ Please email us at [email protected] or open a GitHub Issue with any pro
1212

1313
### General
1414
* [Unsplash Photo Finder](https://github.com/optimizely/extension-library/blob/master/Extensions/Editor%20Extensions/Unsplash%20Photo%20Finder)
15+
* [Background Image Swapper](https://github.com/optimizely/addons-library/tree/master/Extensions/Editor%20Extensions/Background%20Image%20Swapper)
1516
* [Banner](https://github.com/optimizely/extension-library/tree/master/Extensions/Editor%20Extensions/Banner)
1617
* [Banner 2](https://github.com/optimizely/extension-library/tree/master/Extensions/Editor%20Extensions/Banner%202)
1718
* [Bottom Banner](https://github.com/optimizely/extension-library/tree/master/Extensions/Editor%20Extensions/Bottom%20Banner)
@@ -21,6 +22,8 @@ Please email us at [email protected] or open a GitHub Issue with any pro
2122
* [Exit Intent Pop-up 2](https://github.com/optimizely/extension-library/tree/master/Extensions/Editor%20Extensions/Exit%20Intent%20Pop-up%202)
2223
* [Sidebar Sliding Card](https://github.com/optimizely/extension-library/tree/master/Extensions/Editor%20Extensions/Sidebar%20Sliding%20Card)
2324
* [Sidebar Sliding Advanced](https://github.com/optimizely/extension-library/tree/master/Extensions/Editor%20Extensions/Sliding%20Card%20Advanced)
25+
* [Social Share Popup](https://github.com/optimizely/addons-library/tree/master/Extensions/Editor%20Extensions/Social%20Share%20Popup)
26+
* [Text Swapper](https://github.com/optimizely/addons-library/tree/master/Extensions/Editor%20Extensions/Text%20Swapper)
2427
* [Timed Modal](https://github.com/optimizely/extension-library/tree/master/Extensions/Editor%20Extensions/Timed%20Modal)
2528
* [Typed Messages](https://github.com/optimizely/extension-library/tree/master/Extensions/Editor%20Extensions/Typed%20Messages)
2629
* [Dynamic Banner](https://github.com/optimizely/extension-library/tree/master/Extensions/Editor%20Extensions/Dynamic%20Banner)

0 commit comments

Comments
 (0)