You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@unomi.apache.org by me...@apache.org on 2015/12/18 19:22:04 UTC
incubator-unomi git commit: UNOMI-6: Moved samples to Unomi
repository. Replaced existing index.html by the Twitter sample.
Repository: incubator-unomi
Updated Branches:
refs/heads/master 664894dc6 -> 758d59496
UNOMI-6: Moved samples to Unomi repository. Replaced existing index.html by the Twitter sample.
Project: http://git-wip-us.apache.org/repos/asf/incubator-unomi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-unomi/commit/758d5949
Tree: http://git-wip-us.apache.org/repos/asf/incubator-unomi/tree/758d5949
Diff: http://git-wip-us.apache.org/repos/asf/incubator-unomi/diff/758d5949
Branch: refs/heads/master
Commit: 758d594966092be4d4459d787f99bac3bcda2d59
Parents: 664894d
Author: Chris Laprun <me...@gmail.com>
Authored: Fri Dec 18 19:20:49 2015 +0100
Committer: Chris Laprun <me...@gmail.com>
Committed: Fri Dec 18 19:20:49 2015 +0100
----------------------------------------------------------------------
pom.xml | 1 +
samples/pom.xml | 19 ++
samples/tweet-button-plugin/README.md | 2 +
samples/tweet-button-plugin/pom.xml | 67 +++++
.../actions/IncrementTweetNumberAction.java | 89 +++++++
.../cxs/actions/incrementTweetNumberAction.json | 8 +
.../cxs/rules/incrementTweetNumber.json | 20 ++
.../resources/OSGI-INF/blueprint/blueprint.xml | 39 +++
.../src/main/resources/messages_en.properties | 2 +
wab/src/main/webapp/index.html | 243 +++++++++----------
10 files changed, 365 insertions(+), 125 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/758d5949/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 4690e06..09bf0c8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -481,6 +481,7 @@
<module>plugins</module>
<module>extensions</module>
<module>kar</module>
+ <module>samples</module>
</modules>
<dependencies>
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/758d5949/samples/pom.xml
----------------------------------------------------------------------
diff --git a/samples/pom.xml b/samples/pom.xml
new file mode 100644
index 0000000..b9ab307
--- /dev/null
+++ b/samples/pom.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>unomi-root</artifactId>
+ <groupId>org.apache.unomi</groupId>
+ <version>1.0.0-incubating-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>samples</artifactId>
+ <packaging>pom</packaging>
+ <modules>
+ <module>tweet-button-plugin</module>
+ </modules>
+
+
+</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/758d5949/samples/tweet-button-plugin/README.md
----------------------------------------------------------------------
diff --git a/samples/tweet-button-plugin/README.md b/samples/tweet-button-plugin/README.md
new file mode 100644
index 0000000..64ffc16
--- /dev/null
+++ b/samples/tweet-button-plugin/README.md
@@ -0,0 +1,2 @@
+# unomi-tweet-button-plugin
+A simple plugin to send unomi events when a tweet button is clicked
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/758d5949/samples/tweet-button-plugin/pom.xml
----------------------------------------------------------------------
diff --git a/samples/tweet-button-plugin/pom.xml b/samples/tweet-button-plugin/pom.xml
new file mode 100644
index 0000000..302a370
--- /dev/null
+++ b/samples/tweet-button-plugin/pom.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+ http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>samples</artifactId>
+ <groupId>org.apache.unomi</groupId>
+ <version>1.0.0-incubating-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>tweet-button-plugin</artifactId>
+ <packaging>bundle</packaging>
+ <description>This is a simple Apache Unomi plugin.</description>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.unomi</groupId>
+ <artifactId>unomi-api</artifactId>
+ <version>1.0.0-incubating-SNAPSHOT</version>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.3</version>
+ <configuration>
+ <source>8</source>
+ <target>8</target>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <version>3.0.1</version>
+ <extensions>true</extensions>
+ <configuration>
+ <instructions>
+
+ </instructions>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/758d5949/samples/tweet-button-plugin/src/main/java/org/apache/unomi/samples/tweet_button_plugin/actions/IncrementTweetNumberAction.java
----------------------------------------------------------------------
diff --git a/samples/tweet-button-plugin/src/main/java/org/apache/unomi/samples/tweet_button_plugin/actions/IncrementTweetNumberAction.java b/samples/tweet-button-plugin/src/main/java/org/apache/unomi/samples/tweet_button_plugin/actions/IncrementTweetNumberAction.java
new file mode 100644
index 0000000..5a2cd7e
--- /dev/null
+++ b/samples/tweet-button-plugin/src/main/java/org/apache/unomi/samples/tweet_button_plugin/actions/IncrementTweetNumberAction.java
@@ -0,0 +1,89 @@
+package org.apache.unomi.samples.tweet_button_plugin.actions;
+
+/*
+ * #%L
+ * Context Server Plugin - Provides request reading actions
+ * $Id:$
+ * $HeadURL:$
+ * %%
+ * Copyright (C) 2014 - 2015 Jahia Solutions
+ * %%
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
+
+import org.apache.unomi.api.*;
+import org.apache.unomi.api.actions.Action;
+import org.apache.unomi.api.actions.ActionExecutor;
+import org.apache.unomi.api.services.EventService;
+import org.apache.unomi.api.services.ProfileService;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Increments the number of times the user associated with the profile tweeted.
+ */
+public class IncrementTweetNumberAction implements ActionExecutor {
+ private static final String TWEET_NB_PROPERTY = "tweetNb";
+ private static final String TWEETED_FROM_PROPERTY = "tweetedFrom";
+ private ProfileService service;
+
+ public int execute(Action action, Event event) {
+ final Profile profile = event.getProfile();
+ Integer tweetNb = (Integer) profile.getProperty(TWEET_NB_PROPERTY);
+ List<String> tweetedFrom = (List<String>) profile.getProperty(TWEETED_FROM_PROPERTY);
+
+ if (tweetNb == null || tweetedFrom == null) {
+ // create tweet number property type
+ PropertyType propertyType = new PropertyType(new Metadata(event.getScope(), TWEET_NB_PROPERTY, TWEET_NB_PROPERTY, "Number of times a user tweeted"));
+ propertyType.setValueTypeId("integer");
+ service.createPropertyType(propertyType);
+
+ // create tweeted from property type
+ propertyType = new PropertyType(new Metadata(event.getScope(), TWEETED_FROM_PROPERTY, TWEETED_FROM_PROPERTY, "The list of pages a user tweeted from"));
+ propertyType.setValueTypeId("string");
+ propertyType.setMultivalued(true);
+ service.createPropertyType(propertyType);
+
+ tweetNb = 0;
+ tweetedFrom = new ArrayList<>();
+ }
+
+ profile.setProperty(TWEET_NB_PROPERTY, tweetNb + 1);
+ final String sourceURL = extractSourceURL(event);
+ if (sourceURL != null) {
+ tweetedFrom.add(sourceURL);
+ }
+ profile.setProperty(TWEETED_FROM_PROPERTY, tweetedFrom);
+
+ return EventService.PROFILE_UPDATED;
+ }
+
+ public void setProfileService(ProfileService service) {
+ this.service = service;
+ }
+
+ private String extractSourceURL(Event event) {
+ final Item sourceAsItem = event.getSource();
+ if (sourceAsItem instanceof CustomItem) {
+ CustomItem source = (CustomItem) sourceAsItem;
+ final String url = (String) source.getProperties().get("url");
+ if (url != null) {
+ return url;
+ }
+ }
+
+ return null;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/758d5949/samples/tweet-button-plugin/src/main/resources/META-INF/cxs/actions/incrementTweetNumberAction.json
----------------------------------------------------------------------
diff --git a/samples/tweet-button-plugin/src/main/resources/META-INF/cxs/actions/incrementTweetNumberAction.json b/samples/tweet-button-plugin/src/main/resources/META-INF/cxs/actions/incrementTweetNumberAction.json
new file mode 100644
index 0000000..e65b644
--- /dev/null
+++ b/samples/tweet-button-plugin/src/main/resources/META-INF/cxs/actions/incrementTweetNumberAction.json
@@ -0,0 +1,8 @@
+{
+ "id": "incrementTweetNumberAction",
+ "actionExecutor": "incrementTweetNumber",
+ "tags": [
+ "event"
+ ],
+ "parameters": []
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/758d5949/samples/tweet-button-plugin/src/main/resources/META-INF/cxs/rules/incrementTweetNumber.json
----------------------------------------------------------------------
diff --git a/samples/tweet-button-plugin/src/main/resources/META-INF/cxs/rules/incrementTweetNumber.json b/samples/tweet-button-plugin/src/main/resources/META-INF/cxs/rules/incrementTweetNumber.json
new file mode 100644
index 0000000..924b1f7
--- /dev/null
+++ b/samples/tweet-button-plugin/src/main/resources/META-INF/cxs/rules/incrementTweetNumber.json
@@ -0,0 +1,20 @@
+{
+ "metadata": {
+ "id": "smp:incrementTweetNumber",
+ "name": "Increment tweet number",
+ "description": "Increments the number of times a user has tweeted after they click on a tweet button"
+ },
+ "raiseEventOnlyOnceForSession": false,
+ "condition": {
+ "type": "eventTypeCondition",
+ "parameterValues": {
+ "eventTypeId": "tweetEvent"
+ }
+ },
+ "actions": [
+ {
+ "type": "incrementTweetNumberAction",
+ "parameterValues": {}
+ }
+ ]
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/758d5949/samples/tweet-button-plugin/src/main/resources/OSGI-INF/blueprint/blueprint.xml
----------------------------------------------------------------------
diff --git a/samples/tweet-button-plugin/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/samples/tweet-button-plugin/src/main/resources/OSGI-INF/blueprint/blueprint.xml
new file mode 100644
index 0000000..f2c64f5
--- /dev/null
+++ b/samples/tweet-button-plugin/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ #%L
+ Context Server Plugin - Provides request reading actions
+ $Id:$
+ $HeadURL:$
+ %%
+ Copyright (C) 2014 - 2015 Jahia Solutions
+ %%
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ #L%
+ -->
+
+<blueprint xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+ xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
+
+ <reference id="profileService" interface="org.apache.unomi.api.services.ProfileService"/>
+
+ <!-- Action executor -->
+ <service id="incrementTweetNumberAction" auto-export="interfaces">
+ <service-properties>
+ <entry key="actionExecutorId" value="incrementTweetNumber"/>
+ </service-properties>
+ <bean class="org.apache.unomi.samples.tweet_button_plugin.actions.IncrementTweetNumberAction">
+ <property name="profileService" ref="profileService"/>
+ </bean>
+ </service>
+</blueprint>
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/758d5949/samples/tweet-button-plugin/src/main/resources/messages_en.properties
----------------------------------------------------------------------
diff --git a/samples/tweet-button-plugin/src/main/resources/messages_en.properties b/samples/tweet-button-plugin/src/main/resources/messages_en.properties
new file mode 100644
index 0000000..d3b6f27
--- /dev/null
+++ b/samples/tweet-button-plugin/src/main/resources/messages_en.properties
@@ -0,0 +1,2 @@
+action.incrementTweetNumberAction.description=Increments the number of times a user has tweeted after they click on a tweet button
+action.incrementTweetNumberAction.name=Increment tweet number
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/758d5949/wab/src/main/webapp/index.html
----------------------------------------------------------------------
diff --git a/wab/src/main/webapp/index.html b/wab/src/main/webapp/index.html
index 9d705e5..856f25a 100644
--- a/wab/src/main/webapp/index.html
+++ b/wab/src/main/webapp/index.html
@@ -1,142 +1,135 @@
-<!--
- ~ Licensed to the Apache Software Foundation (ASF) under one or more
- ~ contributor license agreements. See the NOTICE file distributed with
- ~ this work for additional information regarding copyright ownership.
- ~ The ASF licenses this file to You under the Apache License, Version 2.0
- ~ (the "License"); you may not use this file except in compliance with
- ~ the License. You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
<!DOCTYPE html>
-<html>
+<html lang="en">
<head>
- <title>Facebook Login JavaScript Example</title>
<meta charset="UTF-8">
-</head>
-<body>
-<script type="text/javascript">
- // This is called with the results from from FB.getLoginStatus().
- function statusChangeCallback(response) {
- console.log('statusChangeCallback');
- console.log(response);
- // The response object is returned with a status field that lets the
- // app know the current login status of the person.
- // Full docs on the response object can be found in the documentation
- // for FB.getLoginStatus().
- if (response.status === 'connected') {
- // Logged into your app and Facebook.
- testAPI();
- } else if (response.status === 'not_authorized') {
- // The person is logged into Facebook, but not your app.
- document.getElementById('status').innerHTML = 'Please log ' +
- 'into this app.';
- } else {
- // The person is not logged into Facebook, so we're not sure if
- // they are logged into this app or not.
- document.getElementById('status').innerHTML = 'Please log ' +
- 'into Facebook.';
- }
- }
-
- // This function is called when someone finishes with the Login
- // Button. See the onlogin handler attached to it in the sample
- // code below.
- function checkLoginState() {
- FB.getLoginStatus(function (response) {
- statusChangeCallback(response);
- });
- }
+ <title>Unomi Tweet button integration example</title>
+ <script type="application/javascript">
+ window.twttr = (function (d, s, id) {
+ var js, fjs = d.getElementsByTagName(s)[0],
+ t = window.twttr || {};
+ if (d.getElementById(id)) return;
+ js = d.createElement(s);
+ js.id = id;
+ js.src = "https://platform.twitter.com/widgets.js";
+ fjs.parentNode.insertBefore(js, fjs);
- window.fbAsyncInit = function () {
- FB.init({
- appId: '499507903483280',
- cookie: true, // enable cookies to allow the server to access
- // the session
- xfbml: true, // parse social plugins on this page
- version: 'v2.0' // use version 2.0
- });
+ t._e = [];
+ t.ready = function (f) {
+ t._e.push(f);
+ };
- // Now that we've initialized the JavaScript SDK, we call
- // FB.getLoginStatus(). This function gets the state of the
- // person visiting this page and can return one of three states to
- // the callback you provide. They can be:
- //
- // 1. Logged into your app ('connected')
- // 2. Logged into Facebook, but not your app ('not_authorized')
- // 3. Not logged into Facebook and can't tell if they are logged into
- // your app or not.
- //
- // These three cases are handled in the callback function.
+ return t;
+ }(document, "script", "twitter-wjs"));
- FB.getLoginStatus(function (response) {
- statusChangeCallback(response);
- });
+ // Load context from Unomi asynchronously
+ (function (document, elementToCreate, id) {
+ var js, fjs = document.getElementsByTagName(elementToCreate)[0];
+ if (document.getElementById(id)) return;
+ js = document.createElement(elementToCreate);
+ js.id = id;
+ js.src = "http://localhost:8181/context.js";
+ fjs.parentNode.insertBefore(js, fjs);
+ }(document, 'script', 'context'));
- };
+ // Wait for the asynchronous resources to load
+ twttr.ready(function (twttr) {
+ // Now bind our custom intent events
+ twttr.events.bind('tweet', function (event) {
- // Load the context server script asynchronously
- (function (document, elementToCreate, id) {
- var js, fjs = document.getElementsByTagName(elementToCreate)[0];
- if (document.getElementById(id)) return;
- js = document.createElement(elementToCreate);
- js.id = id;
- js.src = "/context.js";
- js.type = "text/javascript";
- fjs.parentNode.insertBefore(js, fjs);
- }(document, 'script', 'context'));
+ var defaultErrorCallback = function () {
+ alert('There was an error making the request.');
+ };
- // Load the SDK asynchronously
- (function (document, elementToCreate, id) {
- var js, fjs = document.getElementsByTagName(elementToCreate)[0];
- if (document.getElementById(id)) return;
- js = document.createElement(elementToCreate);
- js.id = id;
- js.src = "//connect.facebook.net/en_US/sdk.js";
- js.type = "text/javascript";
- fjs.parentNode.insertBefore(js, fjs);
- }(document, 'script', 'facebook-jssdk'));
+ function generateUUID() {
+ var d = new Date().getTime();
+ if (window.performance && typeof window.performance.now === "function") {
+ d += performance.now(); //use high-precision timer if available
+ }
+ var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
+ var r = (d + Math.random() * 16) % 16 | 0;
+ d = Math.floor(d / 16);
+ return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
+ });
+ return uuid;
+ }
- // Here we run a very simple test of the Graph API after login is
- // successful. See statusChangeCallback() for when this call is made.
- function testAPI() {
- console.log('Welcome! Fetching your information.... ');
- FB.api('/me', function (response) {
- console.log('Good to see you, ' + response.name + '.');
- document.getElementById('status').innerHTML = 'Good to see you, ' +
- response.name;
+ function contextRequest(successCallback, errorCallback, payload) {
+ var data = JSON.stringify(payload);
+ // if we don't already have a session id, generate one
+ var sessionId = cxs.sessionId || generateUUID();
+ var url = 'http://localhost:8181/context.json?sessionId=' + sessionId;
+ var xhr = new XMLHttpRequest();
+ var isGet = data.length < 100;
+ if (isGet) {
+ xhr.withCredentials = true;
+ xhr.open("GET", url + "&payload=" + encodeURIComponent(data), true);
+ } else if ("withCredentials" in xhr) {
+ xhr.open("POST", url, true);
+ xhr.withCredentials = true;
+ } else if (typeof XDomainRequest != "undefined") {
+ xhr = new XDomainRequest();
+ xhr.open("POST", url);
+ }
+ xhr.onreadystatechange = function () {
+ if (xhr.readyState != 4) {
+ return;
+ }
+ if (xhr.status == 200) {
+ var response = xhr.responseText ? JSON.parse(xhr.responseText) : undefined;
+ if (response) {
+ cxs.sessionId = response.sessionId;
+ successCallback(response);
+ }
+ } else {
+ console.log("contextserver: " + xhr.status + " ERROR: " + xhr.statusText);
+ if (errorCallback) {
+ errorCallback(xhr);
+ }
+ }
+ };
+ xhr.setRequestHeader("Content-Type", "text/plain;charset=UTF-8"); // Use text/plain to avoid CORS preflight
+ if (isGet) {
+ xhr.send();
+ } else {
+ xhr.send(data);
+ }
+ }
- // update digitalData W3 Customer Experience Digital Data structure
- digitalData.profile[0].profiles[0].profileInfo.profileName = response.name;
- digitalData.profile[0].profiles[0].profileInfo.email = response.email;
- digitalData.profile[0].profiles[0].profileInfo.gender = response.gender;
- digitalData.profile[0].profiles[0].profileInfo.firstName = response.first_name;
- digitalData.profile[0].profiles[0].profileInfo.lastName = response.last_name;
+ var scope = 'unomi-tweet-button-sample';
+ var itemId = btoa(window.location.href);
+ var source = {
+ itemType: 'page',
+ scope: scope,
+ itemId: itemId,
+ properties: {
+ url: window.location.href
+ }
+ };
+ var contextPayload = {
+ source: source,
+ events: [
+ {
+ eventType: 'tweetEvent',
+ scope: scope,
+ source: source
+ }
+ ],
+ requiredProfileProperties: [
+ 'tweetNb',
+ 'tweetedFrom'
+ ]
+ };
- cxs.saveContext("/context.js", digitalData, function (xhr) {
- console.log("Profile context updated successfully.")
+ contextRequest(function (response) {
+ console.log("Profile sucessfully updated with tweetNB = " + response.profileProperties.tweetNb + " and tweetedFrom = " + response.profileProperties.tweetedFrom);
+ console.log(response);
+ }, defaultErrorCallback, contextPayload);
});
});
- }
-</script>
-
-<!--
- Below we include the Login Button social plugin. This button uses
- the JavaScript SDK to present a graphical Login button that triggers
- the FB.login() function when clicked.
--->
-
-<fb:login-button scope="public_profile,email" onlogin="checkLoginState();">
-</fb:login-button>
-
-<div id="status">
-</div>
+ </script>
+</head>
+<body>
+<a href="https://twitter.com/share" class="twitter-share-button" data-via="jahia" data-related="jahia" data-hashtags="jahia">Tweet</a>
</body>
</html>
\ No newline at end of file