solid-panes 3.5.27 → 3.5.28-59efa615
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.babelrc +0 -0
- package/.eslintignore +0 -0
- package/.eslintrc +0 -0
- package/.github/workflows/ci.yml +0 -0
- package/.nvmrc +0 -0
- package/Documentation/VisualLanguage.html +0 -0
- package/Documentation/conventions.md +0 -0
- package/LICENSE.md +0 -0
- package/README.md +0 -2
- package/dev/index.html +0 -0
- package/dev/loader.ts +0 -0
- package/dev/pane/index.ts +0 -0
- package/doc/images/panes-for-classes.epgz +0 -0
- package/doc/images/panes-for-classes.svg +0 -0
- package/jest.config.js +0 -0
- package/jest.setup.ts +0 -0
- package/lib/RDFXMLPane.js +15 -9
- package/lib/RDFXMLPane.js.map +1 -1
- package/lib/argument/argumentPane.js +12 -11
- package/lib/argument/argumentPane.js.map +1 -1
- package/lib/attach/attachPane.js +58 -90
- package/lib/attach/attachPane.js.map +1 -1
- package/lib/audio/audioPane.js +19 -37
- package/lib/audio/audioPane.js.map +1 -1
- package/lib/classInstancePane.js +21 -22
- package/lib/classInstancePane.js.map +1 -1
- package/lib/dashboard/basicPreferences.d.ts +0 -0
- package/lib/dashboard/basicPreferences.d.ts.map +0 -0
- package/lib/dashboard/basicPreferences.js +96 -154
- package/lib/dashboard/basicPreferences.js.map +1 -1
- package/lib/dashboard/dashboardPane.d.ts +0 -0
- package/lib/dashboard/dashboardPane.d.ts.map +0 -0
- package/lib/dashboard/dashboardPane.js +2 -18
- package/lib/dashboard/dashboardPane.js.map +1 -1
- package/lib/dashboard/homepage.d.ts +0 -0
- package/lib/dashboard/homepage.d.ts.map +0 -0
- package/lib/dashboard/homepage.js +27 -49
- package/lib/dashboard/homepage.js.map +1 -1
- package/lib/dataContentPane.js +26 -61
- package/lib/dataContentPane.js.map +1 -1
- package/lib/defaultPane.js +23 -23
- package/lib/defaultPane.js.map +1 -1
- package/lib/dokieli/dokieliPane.js +29 -34
- package/lib/dokieli/dokieliPane.js.map +1 -1
- package/lib/dokieli/new.js +6 -1
- package/lib/dokieli/new.js.map +1 -1
- package/lib/form/pane.js +34 -45
- package/lib/form/pane.js.map +1 -1
- package/lib/global.d.js +0 -0
- package/lib/global.d.js.map +0 -0
- package/lib/home/homePane.d.ts +0 -0
- package/lib/home/homePane.d.ts.map +0 -0
- package/lib/home/homePane.js +49 -67
- package/lib/home/homePane.js.map +1 -1
- package/lib/humanReadablePane.js +14 -28
- package/lib/humanReadablePane.js.map +1 -1
- package/lib/imagePane.js +19 -14
- package/lib/imagePane.js.map +1 -1
- package/lib/index.d.ts +0 -0
- package/lib/index.d.ts.map +0 -0
- package/lib/index.js +6 -20
- package/lib/index.js.map +1 -1
- package/lib/internal/internalPane.d.ts +0 -0
- package/lib/internal/internalPane.d.ts.map +0 -0
- package/lib/internal/internalPane.js +10 -41
- package/lib/internal/internalPane.js.map +1 -1
- package/lib/mainPage/footer.d.ts +0 -0
- package/lib/mainPage/footer.d.ts.map +0 -0
- package/lib/mainPage/footer.js +0 -4
- package/lib/mainPage/footer.js.map +1 -1
- package/lib/mainPage/header.d.ts +0 -0
- package/lib/mainPage/header.d.ts.map +0 -0
- package/lib/mainPage/header.js +66 -100
- package/lib/mainPage/header.js.map +1 -1
- package/lib/mainPage/index.d.ts +0 -0
- package/lib/mainPage/index.d.ts.map +0 -0
- package/lib/mainPage/index.js +17 -30
- package/lib/mainPage/index.js.map +1 -1
- package/lib/microblogPane/microblogPane.js +182 -321
- package/lib/microblogPane/microblogPane.js.map +1 -1
- package/lib/n3Pane.js +12 -8
- package/lib/n3Pane.js.map +1 -1
- package/lib/outline/context.d.ts +0 -0
- package/lib/outline/context.d.ts.map +0 -0
- package/lib/outline/context.js +0 -2
- package/lib/outline/context.js.map +1 -1
- package/lib/outline/licenseOptions.js +21 -35
- package/lib/outline/licenseOptions.js.map +1 -1
- package/lib/outline/manager.js +740 -1176
- package/lib/outline/manager.js.map +1 -1
- package/lib/outline/manager.test.js +16 -25
- package/lib/outline/manager.test.js.map +1 -1
- package/lib/outline/outlineIcons.js +39 -26
- package/lib/outline/outlineIcons.js.map +1 -1
- package/lib/outline/propertyViews.d.ts +3 -2
- package/lib/outline/propertyViews.d.ts.map +1 -1
- package/lib/outline/propertyViews.js +7 -15
- package/lib/outline/propertyViews.js.map +1 -1
- package/lib/outline/propertyViews.test.js +7 -7
- package/lib/outline/propertyViews.test.js.map +1 -1
- package/lib/outline/queryByExample.js +28 -80
- package/lib/outline/queryByExample.js.map +1 -1
- package/lib/outline/userInput.js +221 -459
- package/lib/outline/userInput.js.map +1 -1
- package/lib/outline/viewAsImage.d.ts +0 -0
- package/lib/outline/viewAsImage.d.ts.map +0 -0
- package/lib/outline/viewAsImage.js +0 -6
- package/lib/outline/viewAsImage.js.map +1 -1
- package/lib/outline/viewAsMbox.d.ts +0 -0
- package/lib/outline/viewAsMbox.d.ts.map +0 -0
- package/lib/outline/viewAsMbox.js +3 -4
- package/lib/outline/viewAsMbox.js.map +1 -1
- package/lib/pad/padPane.d.ts +0 -0
- package/lib/pad/padPane.d.ts.map +0 -0
- package/lib/pad/padPane.js +45 -93
- package/lib/pad/padPane.js.map +1 -1
- package/lib/playlist/playlistPane.js +11 -21
- package/lib/playlist/playlistPane.js.map +1 -1
- package/lib/profile/editProfile.view.d.ts +0 -0
- package/lib/profile/editProfile.view.d.ts.map +1 -1
- package/lib/profile/editProfile.view.js +22 -23
- package/lib/profile/editProfile.view.js.map +1 -1
- package/lib/profile/profile.dom.d.ts +0 -0
- package/lib/profile/profile.dom.d.ts.map +0 -0
- package/lib/profile/profile.dom.js +0 -3
- package/lib/profile/profile.dom.js.map +1 -1
- package/lib/registerPanes.js +99 -54
- package/lib/registerPanes.js.map +1 -1
- package/lib/schedule/formsForSchedule.js +6 -1
- package/lib/schedule/formsForSchedule.js.map +1 -1
- package/lib/schedule/schedulePane.js +71 -126
- package/lib/schedule/schedulePane.js.map +1 -1
- package/lib/sharing/sharingPane.d.ts +0 -0
- package/lib/sharing/sharingPane.d.ts.map +0 -0
- package/lib/sharing/sharingPane.js +2 -10
- package/lib/sharing/sharingPane.js.map +1 -1
- package/lib/slideshow/slideshowPane.js +21 -21
- package/lib/slideshow/slideshowPane.js.map +1 -1
- package/lib/socialPane.js +58 -135
- package/lib/socialPane.js.map +1 -1
- package/lib/tabbed/tabbedPane.d.ts +0 -0
- package/lib/tabbed/tabbedPane.d.ts.map +0 -0
- package/lib/tabbed/tabbedPane.js +32 -48
- package/lib/tabbed/tabbedPane.js.map +1 -1
- package/lib/tableViewPane.js +15 -9
- package/lib/tableViewPane.js.map +1 -1
- package/lib/test-import-export/common.js +8 -3
- package/lib/test-import-export/common.js.map +1 -1
- package/lib/test-import-export/edit-importer.js +10 -14
- package/lib/test-import-export/edit-importer.js.map +1 -1
- package/lib/test-import-export/testImportExport.js +0 -0
- package/lib/test-import-export/testImportExport.js.map +0 -0
- package/lib/transaction/pane.js +38 -91
- package/lib/transaction/pane.js.map +1 -1
- package/lib/transaction/period.js +27 -71
- package/lib/transaction/period.js.map +1 -1
- package/lib/trip/tripPane.js +38 -35
- package/lib/trip/tripPane.js.map +1 -1
- package/lib/trustedApplications/trustedApplications.dom.d.ts +0 -0
- package/lib/trustedApplications/trustedApplications.dom.d.ts.map +0 -0
- package/lib/trustedApplications/trustedApplications.dom.js +12 -35
- package/lib/trustedApplications/trustedApplications.dom.js.map +1 -1
- package/lib/trustedApplications/trustedApplications.test.js +6 -8
- package/lib/trustedApplications/trustedApplications.test.js.map +1 -1
- package/lib/trustedApplications/trustedApplications.utils.d.ts +0 -0
- package/lib/trustedApplications/trustedApplications.utils.d.ts.map +0 -0
- package/lib/trustedApplications/trustedApplications.utils.js +1 -11
- package/lib/trustedApplications/trustedApplications.utils.js.map +1 -1
- package/lib/trustedApplications/trustedApplications.view.d.ts +0 -0
- package/lib/trustedApplications/trustedApplications.view.d.ts.map +0 -0
- package/lib/trustedApplications/trustedApplications.view.js +38 -61
- package/lib/trustedApplications/trustedApplications.view.js.map +1 -1
- package/lib/types.d.ts +0 -0
- package/lib/types.d.ts.map +0 -0
- package/lib/types.js +0 -0
- package/lib/types.js.map +0 -0
- package/lib/ui/pane.js +30 -29
- package/lib/ui/pane.js.map +1 -1
- package/lib/versionInfo.d.ts +0 -0
- package/lib/versionInfo.d.ts.map +0 -0
- package/lib/versionInfo.js +14 -14
- package/lib/versionInfo.js.map +1 -1
- package/lib/video/videoPane.js +11 -7
- package/lib/video/videoPane.js.map +1 -1
- package/package.json +26 -26
- package/src/RDFXMLPane.js +2 -2
- package/src/argument/argumentPane.js +1 -1
- package/src/argument/argument_icon_v04.jpg +0 -0
- package/src/argument/icon_argument.png +0 -0
- package/src/argument/transparentyingyang.png +0 -0
- package/src/attach/attachPane.js +3 -3
- package/src/attach/tbl-paperclip-128.png +0 -0
- package/src/attach/tbl-paperclip-22.png +0 -0
- package/src/attach/tbl-paperclip-22a.png +0 -0
- package/src/audio/audioPane.js +3 -3
- package/src/chatPreferencesForm.ttl +0 -0
- package/src/classInstancePane.js +3 -3
- package/src/dashboard/basicPreferences.ts +0 -0
- package/src/dashboard/dashboardPane.ts +0 -0
- package/src/dashboard/homepage.ts +0 -0
- package/src/dashboard/languages/codes.html +0 -0
- package/src/dashboard/languages/codes.xml +0 -0
- package/src/dashboard/languages/codes2.txt +0 -0
- package/src/dashboard/languages/foo +0 -0
- package/src/dashboard/languages/foo.ttl +0 -0
- package/src/dashboard/languages/get-language-names.sh +0 -0
- package/src/dashboard/ontologyData.ttl +0 -0
- package/src/dashboard/preferencesFormText.ttl +0 -0
- package/src/dataContentPane.js +3 -4
- package/src/defaultPane.js +3 -3
- package/src/dokieli/Makefile +0 -0
- package/src/dokieli/dokieliPane.js +5 -5
- package/src/dokieli/new.html +0 -0
- package/src/dokieli/new.js +1 -1
- package/src/form/form-22.png +0 -0
- package/src/form/form-b-22.png +0 -0
- package/src/form/form.graffle +0 -0
- package/src/form/form.png +0 -0
- package/src/form/pane.js +2 -2
- package/src/form/psuedocode-notes.txt +0 -0
- package/src/global.d.ts +0 -0
- package/src/home/homePane.ts +0 -0
- package/src/humanReadablePane.js +0 -0
- package/src/imagePane.js +2 -2
- package/src/index.ts +1 -1
- package/src/internal/internalPane.ts +0 -0
- package/src/mainPage/footer.ts +0 -0
- package/src/mainPage/header.ts +0 -0
- package/src/mainPage/index.ts +0 -0
- package/src/meeting/Makefile +0 -0
- package/src/meeting/test/meeting1/Actions/actions.ttl +0 -0
- package/src/meeting/test/meeting1/Actions/config.ttl +0 -0
- package/src/meeting/test/meeting1/Actions/state.ttl +0 -0
- package/src/meeting/test/meeting1/Schedule/details.ttl +0 -0
- package/src/meeting/test/meeting1/Schedule/details.ttl.acl +0 -0
- package/src/meeting/test/meeting1/Schedule/forms.ttl +0 -0
- package/src/meeting/test/meeting1/Schedule/forms.ttl.acl +0 -0
- package/src/meeting/test/meeting1/Schedule/index.html +0 -0
- package/src/meeting/test/meeting1/Schedule/index.html.acl +0 -0
- package/src/meeting/test/meeting1/Schedule/results.ttl +0 -0
- package/src/meeting/test/meeting1/Schedule/results.ttl.acl +0 -0
- package/src/meeting/test/meeting1/SharedNotes/pad.ttl +0 -0
- package/src/meeting/test/meeting1/chat/chat.ttl +0 -0
- package/src/meeting/test/meeting1/details.ttl +0 -0
- package/src/meeting/test/meeting1/pad/pad.ttl +0 -0
- package/src/microblogPane/mbStyle.css +0 -0
- package/src/microblogPane/microblogPane.js +1 -1
- package/src/n3Pane.js +2 -2
- package/src/outline/context.ts +0 -0
- package/src/outline/licenseOptions.js +9 -8
- package/src/outline/manager.js +18 -20
- package/src/outline/manager.test.ts +6 -0
- package/src/outline/outlineIcons.js +4 -2
- package/src/outline/propertyViews.test.ts +7 -1
- package/src/outline/propertyViews.ts +3 -3
- package/src/outline/queryByExample.js +3 -9
- package/src/outline/userInput.js +1 -1
- package/src/outline/viewAsImage.ts +0 -0
- package/src/outline/viewAsMbox.ts +0 -0
- package/src/pad/images/ColourOff.ai +0 -0
- package/src/pad/images/ColourOff.png +0 -0
- package/src/pad/images/ColourOn.ai +0 -0
- package/src/pad/images/ColourOn.png +0 -0
- package/src/pad/padPane.ts +0 -0
- package/src/playlist/playlistPane.js +3 -3
- package/src/profile/editProfile.view.ts +20 -0
- package/src/profile/profile.dom.ts +0 -0
- package/src/profile/profileFormText.ttl +0 -0
- package/src/registerPanes.js +92 -52
- package/src/schedule/Makefile +0 -0
- package/src/schedule/formsForSchedule.js +1 -1
- package/src/schedule/formsForSchedule.ttl +0 -0
- package/src/schedule/schedulePane.js +6 -2
- package/src/sharing/sharingPane.ts +0 -0
- package/src/slideshow/slideshowPane.js +3 -6
- package/src/socialPane.js +4 -5
- package/src/style/tabbedtab.css +0 -0
- package/src/tabbed/tabbedPane.ts +0 -0
- package/src/tableViewPane.js +3 -3
- package/src/test-import-export/common.js +1 -1
- package/src/test-import-export/edit-importer.js +5 -10
- package/src/test-import-export/testImportExport.js +0 -0
- package/src/transaction/068010-3d-transparent-glass-icon-alphanumeric-dollar-sign.png +0 -0
- package/src/transaction/075988-3d-transparent-glass-icon-business-currency-british-pound-sc35.png +0 -0
- package/src/transaction/22-pixel-068010-3d-transparent-glass-icon-alphanumeric-dollar-sign.png +0 -0
- package/src/transaction/pane.js +3 -3
- package/src/transaction/period.js +2 -2
- package/src/transaction/thumbs_075987-3d-transparent-glass-icon-business-creditcard2.png +0 -0
- package/src/transaction/thumbs_075989-3d-transparent-glass-icon-business-currency-cent-sc35.png +0 -0
- package/src/trip/tripPane.js +3 -3
- package/src/trustedApplications/__snapshots__/trustedApplications.test.ts.snap +0 -0
- package/src/trustedApplications/trustedApplications.dom.ts +0 -0
- package/src/trustedApplications/trustedApplications.test.ts +4 -0
- package/src/trustedApplications/trustedApplications.utils.ts +0 -0
- package/src/trustedApplications/trustedApplications.view.ts +0 -0
- package/src/types.ts +0 -0
- package/src/ui/22-builder.png +0 -0
- package/src/ui/builder.graffle +0 -0
- package/src/ui/builder.png +0 -0
- package/src/ui/builder2.png +0 -0
- package/src/ui/pane.js +3 -3
- package/src/versionInfo.ts +14 -14
- package/src/video/videoPane.js +3 -3
- package/timestamp.sh +0 -0
- package/travis/bumpversion.js +0 -0
- package/tsconfig.json +0 -0
- package/typings/raw-loader.d.ts +0 -0
- package/typings/solid-namespace/index.d.ts +0 -0
- package/webpack.config.js +0 -0
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
3
7
|
var _solidLogic = require("solid-logic");
|
|
4
|
-
|
|
5
8
|
var UI = _interopRequireWildcard(require("solid-ui"));
|
|
6
|
-
|
|
7
9
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
8
|
-
|
|
9
10
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
10
|
-
|
|
11
11
|
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
12
|
-
|
|
13
|
-
module.exports = {
|
|
12
|
+
var _default = {
|
|
14
13
|
icon: UI.icons.originalIconBase + 'microblog/microblog.png',
|
|
15
14
|
name: 'microblogPane',
|
|
16
15
|
label: function label(subject) {
|
|
@@ -31,26 +30,24 @@ module.exports = {
|
|
|
31
30
|
var RDF = UI.ns.rdf;
|
|
32
31
|
var kb = _solidLogic.store;
|
|
33
32
|
var charCount = 140;
|
|
34
|
-
var sf = _solidLogic.store.fetcher;
|
|
33
|
+
var sf = _solidLogic.store.fetcher;
|
|
34
|
+
//* **********************************************
|
|
35
35
|
// BACK END
|
|
36
36
|
//* **********************************************
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
var sparqlUpdater = kb.updater;
|
|
38
|
+
// ----------------------------------------------
|
|
39
39
|
// FOLLOW LIST
|
|
40
40
|
// store the URIs of followed users for
|
|
41
41
|
// dereferencing the @replies
|
|
42
42
|
// ----------------------------------------------
|
|
43
|
-
|
|
44
43
|
var FollowList = function FollowList(user) {
|
|
45
44
|
this.userlist = {};
|
|
46
45
|
this.uris = {};
|
|
47
46
|
var myFollows = kb.each(kb.sym(user), SIOC('follows'));
|
|
48
|
-
|
|
49
47
|
for (var mf in myFollows) {
|
|
50
48
|
this.add(kb.any(myFollows[mf], SIOC('id')), myFollows[mf].uri);
|
|
51
49
|
}
|
|
52
50
|
};
|
|
53
|
-
|
|
54
51
|
FollowList.prototype.add = function (user, uri) {
|
|
55
52
|
// add a user to the follows store
|
|
56
53
|
if (this.userlist[user]) {
|
|
@@ -62,7 +59,6 @@ module.exports = {
|
|
|
62
59
|
this.userlist[user] = [uri];
|
|
63
60
|
}
|
|
64
61
|
};
|
|
65
|
-
|
|
66
62
|
FollowList.prototype.selectUser = function (user) {
|
|
67
63
|
// check if a user is in the follows list.
|
|
68
64
|
if (this.userlist[user]) {
|
|
@@ -71,92 +67,77 @@ module.exports = {
|
|
|
71
67
|
// user does not follow any users with this nick
|
|
72
68
|
return [false, []];
|
|
73
69
|
}
|
|
74
|
-
};
|
|
70
|
+
};
|
|
71
|
+
// ----------------------------------------------
|
|
75
72
|
// FAVORITES
|
|
76
73
|
// controls the list of favorites.
|
|
77
74
|
// constructor expects a user as uri.
|
|
78
75
|
// ----------------------------------------------
|
|
79
|
-
|
|
80
|
-
|
|
81
76
|
var Favorites = function Favorites(user) {
|
|
82
77
|
this.favorites = {};
|
|
83
78
|
this.favoritesURI = '';
|
|
84
|
-
|
|
85
79
|
if (!user) {
|
|
86
80
|
// TODO is this even useful?
|
|
87
81
|
return;
|
|
88
82
|
}
|
|
89
|
-
|
|
90
83
|
this.user = user.split('#')[0];
|
|
91
84
|
var created = kb.each(kb.sym(user), SIOC('creator_of'));
|
|
92
|
-
|
|
93
85
|
for (var c in created) {
|
|
94
86
|
if (kb.whether(created[c], RDF('type'), SIOCt('FavouriteThings'))) {
|
|
95
87
|
this.favoritesURI = created[c];
|
|
96
88
|
var favs = kb.each(created[c], SIOC('container_of'));
|
|
97
|
-
|
|
98
89
|
for (var f in favs) {
|
|
99
90
|
this.favorites[favs[f]] = '';
|
|
100
91
|
}
|
|
101
|
-
|
|
102
92
|
break;
|
|
103
93
|
}
|
|
104
94
|
}
|
|
105
95
|
};
|
|
106
|
-
|
|
107
96
|
Favorites.prototype.favorited = function (post) {
|
|
108
97
|
/* Favorited- returns true if the post is a favorite
|
|
109
98
|
false otherwise */
|
|
110
99
|
return kb.sym(post) in this.favorites;
|
|
111
100
|
};
|
|
112
|
-
|
|
113
101
|
Favorites.prototype.add = function (post, callback) {
|
|
114
102
|
var batch = new UI.rdf.Statement(this.favoritesURI, SIOC('container_of'), kb.sym(post), kb.sym(this.user));
|
|
115
103
|
sparqlUpdater.insert_statement(batch, function (a, success, c) {
|
|
116
104
|
if (success) {
|
|
117
105
|
kb.add(batch.subject, batch.predicate, batch.object, batch.why);
|
|
118
106
|
}
|
|
119
|
-
|
|
120
107
|
callback(a, success, c);
|
|
121
108
|
});
|
|
122
109
|
};
|
|
123
|
-
|
|
124
110
|
Favorites.prototype.remove = function (post, callback) {
|
|
125
111
|
var batch = new UI.rdf.Statement(this.favoritesURI, SIOC('container_of'), kb.sym(post), kb.sym(this.user));
|
|
126
112
|
sparqlUpdater.delete_statement(batch, function (a, success, c) {
|
|
127
113
|
if (success) {
|
|
128
114
|
kb.add(batch.subject, batch.predicate, batch.object, batch.why);
|
|
129
115
|
}
|
|
130
|
-
|
|
131
116
|
callback(a, success, c);
|
|
132
117
|
});
|
|
133
|
-
};
|
|
118
|
+
};
|
|
119
|
+
// ----------------------------------------------
|
|
134
120
|
// MICROBLOG
|
|
135
121
|
// store the uri's of followed users for
|
|
136
122
|
// dereferencing the @replies.
|
|
137
123
|
// ----------------------------------------------
|
|
138
|
-
|
|
139
|
-
|
|
140
124
|
var Microblog = function Microblog(kb) {
|
|
141
|
-
this.kb = kb;
|
|
125
|
+
this.kb = kb;
|
|
126
|
+
|
|
127
|
+
// attempt to fetch user account from local preferences if just
|
|
142
128
|
// in case the user's foaf was not writable. add it to the store
|
|
143
129
|
// this will probably need to change.
|
|
144
|
-
|
|
145
130
|
var theUser = _solidLogic.authn.currentUser();
|
|
146
|
-
|
|
147
131
|
if (theUser) {
|
|
148
132
|
var theAccount = UI.preferences.get('acct');
|
|
149
|
-
|
|
150
133
|
if (theAccount) {
|
|
151
134
|
theAccount = kb.sym(theAccount);
|
|
152
135
|
}
|
|
153
|
-
|
|
154
136
|
if (theUser && theAccount) {
|
|
155
137
|
kb.add(theUser, FOAF('holdsAccount'), theAccount, theUser.uri.split('#')[0]);
|
|
156
138
|
}
|
|
157
139
|
}
|
|
158
140
|
};
|
|
159
|
-
|
|
160
141
|
Microblog.prototype.getUser = function (uri) {
|
|
161
142
|
var User = {};
|
|
162
143
|
User.name = kb.any(uri, SIOC('name')) ? kb.any(uri, SIOC('name')) : '';
|
|
@@ -165,10 +146,9 @@ module.exports = {
|
|
|
165
146
|
User.sym = uri;
|
|
166
147
|
return User;
|
|
167
148
|
};
|
|
168
|
-
|
|
169
149
|
Microblog.prototype.getPost = function (uri) {
|
|
170
|
-
var Post = {};
|
|
171
|
-
|
|
150
|
+
var Post = {};
|
|
151
|
+
// date ----------
|
|
172
152
|
var postLink = new Date(kb.anyValue(uri, terms('created')));
|
|
173
153
|
var h = postLink.getHours();
|
|
174
154
|
var a = h > 12 ? ' PM' : ' AM';
|
|
@@ -179,48 +159,45 @@ module.exports = {
|
|
|
179
159
|
var da = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
|
|
180
160
|
var ds = da[postLink.getDay()] + ' ' + postLink.getDate() + ' ' + mo[postLink.getMonth()] + ' ' + postLink.getFullYear();
|
|
181
161
|
postLink = h + ':' + m + a + ' on ' + ds;
|
|
182
|
-
Post.date = postLink;
|
|
183
|
-
|
|
162
|
+
Post.date = postLink;
|
|
163
|
+
// ---------
|
|
184
164
|
Post.mentions = '';
|
|
185
165
|
Post.message = String(kb.any(uri, SIOC('content')));
|
|
186
166
|
Post.creator = kb.any(uri, SIOC('has_creator'));
|
|
187
167
|
Post.uri = '';
|
|
188
168
|
return Post;
|
|
189
169
|
};
|
|
190
|
-
|
|
191
170
|
Microblog.prototype.gen_random_uri = function (base) {
|
|
192
171
|
// generate random uri
|
|
193
172
|
var uriNonce = base + '#n' + Math.floor(Math.random() * 10e9);
|
|
194
173
|
return kb.sym(uriNonce);
|
|
195
174
|
};
|
|
196
|
-
|
|
197
175
|
Microblog.prototype.statusUpdate = function (statusMsg, callback, replyTo, meta) {
|
|
198
176
|
var myUserURI = this.getMyURI();
|
|
199
177
|
var myUser = kb.sym(myUserURI.split('#')[0]);
|
|
200
178
|
var newPost = this.gen_random_uri(myUser.uri);
|
|
201
179
|
var microlist = kb.each(kb.sym(myUserURI), SIOC('creator_of'));
|
|
202
180
|
var micro;
|
|
203
|
-
|
|
204
181
|
for (var microlistelement in microlist) {
|
|
205
182
|
if (kb.whether(microlist[microlistelement], RDF('type'), SIOCt('Microblog')) && !kb.whether(microlist[microlistelement], SIOC('topic'), kb.sym(this.getMyURI()))) {
|
|
206
183
|
micro = microlist[microlistelement];
|
|
207
184
|
break;
|
|
208
185
|
}
|
|
209
|
-
}
|
|
210
|
-
|
|
186
|
+
}
|
|
211
187
|
|
|
212
|
-
|
|
188
|
+
// generate new post
|
|
189
|
+
var batch = [new UI.rdf.Statement(newPost, RDF('type'), SIOCt('MicroblogPost'), myUser), new UI.rdf.Statement(newPost, SIOC('has_creator'), kb.sym(myUserURI), myUser), new UI.rdf.Statement(newPost, SIOC('content'), statusMsg, myUser), new UI.rdf.Statement(newPost, terms('created'), new Date(), myUser), new UI.rdf.Statement(micro, SIOC('container_of'), newPost, myUser)];
|
|
213
190
|
|
|
191
|
+
// message replies
|
|
214
192
|
if (replyTo) {
|
|
215
193
|
batch.push(new UI.rdf.Statement(newPost, SIOC('reply_of'), kb.sym(replyTo), myUser));
|
|
216
|
-
}
|
|
217
|
-
|
|
194
|
+
}
|
|
218
195
|
|
|
196
|
+
// @replies, #hashtags, !groupReplies
|
|
219
197
|
for (var r in meta.recipients) {
|
|
220
198
|
batch.push(new UI.rdf.Statement(newPost, SIOC('topic'), kb.sym(meta.recipients[r]), myUser));
|
|
221
199
|
batch.push(new UI.rdf.Statement(kb.any(), SIOC('container_of'), newPost, myUser));
|
|
222
200
|
var mblogs = kb.each(kb.sym(meta.recipients[r]), SIOC('creator_of'));
|
|
223
|
-
|
|
224
201
|
for (var mbl in mblogs) {
|
|
225
202
|
if (kb.whether(mblogs[mbl], SIOC('topic'), kb.sym(meta.recipients[r]))) {
|
|
226
203
|
var replyBatch = new UI.rdf.Statement(mblogs[mbl], SIOC('container_of'), newPost, kb.sym(meta.recipients[r].split('#')[0]));
|
|
@@ -228,67 +205,61 @@ module.exports = {
|
|
|
228
205
|
}
|
|
229
206
|
}
|
|
230
207
|
}
|
|
231
|
-
|
|
232
208
|
sparqlUpdater.insert_statement(batch, function (a, b, c) {
|
|
233
209
|
callback(a, b, c, batch);
|
|
234
210
|
});
|
|
235
211
|
};
|
|
236
|
-
|
|
237
212
|
Microblog.prototype.getMyURI = function () {
|
|
238
213
|
var me = _solidLogic.authn.currentUser();
|
|
239
|
-
|
|
240
214
|
console.log(me);
|
|
241
215
|
var myMicroblog = kb.any(kb.sym(me), FOAF('holdsAccount'));
|
|
242
216
|
console.log('\n\n' + myMicroblog);
|
|
243
217
|
return myMicroblog ? myMicroblog.uri : false;
|
|
244
218
|
};
|
|
245
|
-
|
|
246
219
|
Microblog.prototype.generateNewMB = function (id, name, avatar, loc) {
|
|
247
220
|
var host = loc + '/' + id;
|
|
248
|
-
|
|
249
221
|
var rememberMicroblog = function rememberMicroblog() {
|
|
250
222
|
UI.preferences.set('acct', host + '#' + id);
|
|
251
223
|
};
|
|
252
|
-
|
|
253
224
|
var cbgenUserMB = function cbgenUserMB(a, success, c, d) {
|
|
254
225
|
if (success) {
|
|
255
|
-
alert('Microblog generated at ' + host + '#' + id + 'please add <b>' + host + '</b> to your foaf.');
|
|
226
|
+
alert('Microblog generated at ' + host + '#' + id + 'please add <b>' + host + '</b> to your foaf.');
|
|
227
|
+
// mbCancelNewMB() @@TBD
|
|
256
228
|
// assume the foaf is not writable and store the microblog to the
|
|
257
229
|
// preferences for later retrieval.
|
|
258
230
|
// this will probably need to change.
|
|
259
|
-
|
|
260
231
|
rememberMicroblog();
|
|
261
|
-
|
|
262
232
|
for (var triple in d) {
|
|
263
233
|
kb.add(d[triple].subject, d[triple].predicate, d[triple].object, d[triple].why);
|
|
264
234
|
}
|
|
265
235
|
}
|
|
266
236
|
};
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
new UI.rdf.Statement(kb.sym(host + '#' + id), RDF('type'), SIOC('User'), kb.sym(host)), new UI.rdf.Statement(kb.sym(host + '#' + id), SIOC('creator_of'), kb.sym(host + '#mb'), kb.sym(host)), new UI.rdf.Statement(kb.sym(host + '#' + id), SIOC('creator_of'), kb.sym(host + '#mbn'), kb.sym(host)), new UI.rdf.Statement(kb.sym(host + '#' + id), SIOC('creator_of'), kb.sym(host + '#fav'), kb.sym(host)), new UI.rdf.Statement(kb.sym(host + '#' + id), SIOC('name'), name, kb.sym(host)), new UI.rdf.Statement(kb.sym(host + '#' + id), SIOC('id'), id, kb.sym(host)), new UI.rdf.Statement(kb.sym(host + '#' + id), RDF('label'), id, kb.sym(host)), new UI.rdf.Statement(s, FOAF('holdsAccount'), kb.sym(host + '#' + id), kb.sym(host)),
|
|
270
|
-
|
|
271
|
-
new UI.rdf.Statement(kb.sym(host + '#
|
|
237
|
+
var genUserMB = [
|
|
238
|
+
// user
|
|
239
|
+
new UI.rdf.Statement(kb.sym(host + '#' + id), RDF('type'), SIOC('User'), kb.sym(host)), new UI.rdf.Statement(kb.sym(host + '#' + id), SIOC('creator_of'), kb.sym(host + '#mb'), kb.sym(host)), new UI.rdf.Statement(kb.sym(host + '#' + id), SIOC('creator_of'), kb.sym(host + '#mbn'), kb.sym(host)), new UI.rdf.Statement(kb.sym(host + '#' + id), SIOC('creator_of'), kb.sym(host + '#fav'), kb.sym(host)), new UI.rdf.Statement(kb.sym(host + '#' + id), SIOC('name'), name, kb.sym(host)), new UI.rdf.Statement(kb.sym(host + '#' + id), SIOC('id'), id, kb.sym(host)), new UI.rdf.Statement(kb.sym(host + '#' + id), RDF('label'), id, kb.sym(host)), new UI.rdf.Statement(s, FOAF('holdsAccount'), kb.sym(host + '#' + id), kb.sym(host)),
|
|
240
|
+
// microblog
|
|
241
|
+
new UI.rdf.Statement(kb.sym(host + '#mb'), RDF('type'), SIOCt('Microblog'), kb.sym(host)), new UI.rdf.Statement(kb.sym(host + '#mb'), SIOC('has_creator'), kb.sym(host + '#' + id), kb.sym(host)),
|
|
242
|
+
// notification microblog
|
|
243
|
+
new UI.rdf.Statement(kb.sym(host + '#mbn'), RDF('type'), SIOCt('Microblog'), kb.sym(host)), new UI.rdf.Statement(kb.sym(host + '#mbn'), SIOC('topic'), kb.sym(host + '#' + id), kb.sym(host)), new UI.rdf.Statement(kb.sym(host + '#mbn'), SIOC('has_creator'), kb.sym(host + '#' + id), kb.sym(host)),
|
|
244
|
+
// favorites container
|
|
272
245
|
new UI.rdf.Statement(kb.sym(host + '#fav'), RDF('type'), SIOCt('FavouriteThings'), kb.sym(host)), new UI.rdf.Statement(kb.sym(host + '#fav'), SIOC('has_creator'), kb.sym(host + '#' + id), kb.sym(host))];
|
|
273
|
-
|
|
274
246
|
if (avatar) {
|
|
275
247
|
// avatar optional
|
|
276
248
|
genUserMB.push(new UI.rdf.Statement(kb.sym(host + '#' + id), SIOC('avatar'), kb.sym(avatar), kb.sym(host)));
|
|
277
249
|
}
|
|
278
|
-
|
|
279
250
|
sparqlUpdater.insert_statement(genUserMB, cbgenUserMB);
|
|
280
251
|
};
|
|
281
|
-
|
|
282
252
|
var mb = new Microblog(kb);
|
|
283
253
|
var myFavorites = new Favorites(mb.getMyURI());
|
|
284
|
-
var myFollowList = new FollowList(mb.getMyURI());
|
|
254
|
+
var myFollowList = new FollowList(mb.getMyURI());
|
|
255
|
+
|
|
256
|
+
//* **********************************************
|
|
285
257
|
// FRONT END FUNCTIONALITY
|
|
286
258
|
//* **********************************************
|
|
287
259
|
// ----------------------------------------------
|
|
288
260
|
// PANE
|
|
289
261
|
// User Interface for the Microblog Pane
|
|
290
262
|
// ----------------------------------------------
|
|
291
|
-
|
|
292
263
|
var Pane = function Pane(s, doc, microblogPane) {
|
|
293
264
|
var TabManager = function TabManager(doc) {
|
|
294
265
|
this.tablist = {};
|
|
@@ -296,15 +267,12 @@ module.exports = {
|
|
|
296
267
|
this.tabView = doc.createElement('ul');
|
|
297
268
|
this.tabView.className = 'tabslist';
|
|
298
269
|
};
|
|
299
|
-
|
|
300
270
|
TabManager.prototype.create = function (id, caption, view, isDefault) {
|
|
301
271
|
var tab = this.doc.createElement('li');
|
|
302
272
|
tab.innerHTML = caption;
|
|
303
|
-
|
|
304
273
|
if (isDefault) {
|
|
305
274
|
tab.className = 'active';
|
|
306
275
|
}
|
|
307
|
-
|
|
308
276
|
tab.id = id;
|
|
309
277
|
var change = this.change;
|
|
310
278
|
var tablist = this.tablist;
|
|
@@ -317,11 +285,9 @@ module.exports = {
|
|
|
317
285
|
};
|
|
318
286
|
this.tabView.appendChild(tab);
|
|
319
287
|
};
|
|
320
|
-
|
|
321
288
|
TabManager.prototype.getTabView = function () {
|
|
322
289
|
return this.tabView;
|
|
323
290
|
};
|
|
324
|
-
|
|
325
291
|
TabManager.prototype.change = function (id, tablist, doc) {
|
|
326
292
|
for (var tab in tablist) {
|
|
327
293
|
if (tab === id) {
|
|
@@ -334,55 +300,46 @@ module.exports = {
|
|
|
334
300
|
}
|
|
335
301
|
}
|
|
336
302
|
};
|
|
337
|
-
|
|
338
303
|
this.microblogPane = microblogPane;
|
|
339
304
|
var accounts = kb.each(s, FOAF('holdsAccount'));
|
|
340
305
|
var account;
|
|
341
|
-
|
|
342
306
|
for (var a in accounts) {
|
|
343
307
|
if (kb.whether(accounts[a], RDF('type'), SIOC('User')) && kb.whether(kb.any(accounts[a], SIOC('creator_of')), RDF('type'), SIOCt('Microblog'))) {
|
|
344
308
|
account = accounts[a];
|
|
345
309
|
break;
|
|
346
310
|
}
|
|
347
311
|
}
|
|
348
|
-
|
|
349
312
|
this.Ifollow = kb.whether(kb.sym(mb.getMyURI()), SIOC('follows'), account);
|
|
350
313
|
var resourceType = kb.any(s, RDF('type'));
|
|
351
|
-
|
|
352
314
|
if (resourceType.uri === SIOCt('Microblog').uri || resourceType.uri === SIOCt('MicroblogPost').uri) {
|
|
353
315
|
this.thisIsMe = kb.any(s, SIOC('has_creator')).uri === mb.getMyURI();
|
|
354
316
|
} else if (resourceType.uri === SIOC('User').uri) {
|
|
355
317
|
this.thisIsMe = s.uri === mb.getMyURI();
|
|
356
318
|
} else if (resourceType.uri === FOAF('Person').uri) {
|
|
357
319
|
var me = _solidLogic.authn.currentUser();
|
|
358
|
-
|
|
359
320
|
var meUri = me && me.uri;
|
|
360
321
|
this.thisIsMe = s.uri === meUri;
|
|
361
322
|
} else {
|
|
362
323
|
this.thisIsMe = false;
|
|
363
324
|
}
|
|
364
|
-
|
|
365
325
|
this.Tab = new TabManager(doc);
|
|
366
326
|
};
|
|
367
|
-
|
|
368
327
|
Pane.prototype.notify = function (messageString) {
|
|
369
328
|
var xmsg = doc.createElement('li');
|
|
370
329
|
xmsg.className = 'notify';
|
|
371
330
|
xmsg.innerHTML = messageString;
|
|
372
331
|
doc.getElementById('notify-container').appendChild(xmsg);
|
|
373
332
|
setTimeout(function () {
|
|
374
|
-
doc.getElementById('notify-container').removeChild(xmsg);
|
|
333
|
+
doc.getElementById('notify-container').removeChild(xmsg);
|
|
334
|
+
// delete xmsg;
|
|
375
335
|
}, 4000);
|
|
376
336
|
};
|
|
377
|
-
|
|
378
337
|
Pane.prototype.header = function (s, doc) {
|
|
379
338
|
var that = this;
|
|
380
|
-
|
|
381
339
|
function lsFollowUser() {
|
|
382
|
-
var myUser = kb.sym(mb.getMyURI());
|
|
383
|
-
|
|
340
|
+
var myUser = kb.sym(mb.getMyURI());
|
|
341
|
+
// var Ifollow = that.Ifollow
|
|
384
342
|
var username = that.creator.name;
|
|
385
|
-
|
|
386
343
|
var mbconfirmFollow = function mbconfirmFollow(uri, success, _msg) {
|
|
387
344
|
if (success === true) {
|
|
388
345
|
if (!that.Ifollow) {
|
|
@@ -393,7 +350,6 @@ module.exports = {
|
|
|
393
350
|
} else {
|
|
394
351
|
kb.removeMany(followMe.subject, followMe.predicate, followMe.object, followMe.why);
|
|
395
352
|
}
|
|
396
|
-
|
|
397
353
|
console.log(that.Ifollow);
|
|
398
354
|
that.Ifollow = !that.Ifollow;
|
|
399
355
|
xfollowButton.disabled = false;
|
|
@@ -404,40 +360,35 @@ module.exports = {
|
|
|
404
360
|
that.notify('You ' + doFollow + username + '.');
|
|
405
361
|
}
|
|
406
362
|
};
|
|
407
|
-
|
|
408
363
|
var followMe = new UI.rdf.Statement(myUser, SIOC('follows'), that.creator.sym, myUser);
|
|
409
364
|
xfollowButton.disabled = true;
|
|
410
365
|
xfollowButton.value = 'Updating...';
|
|
411
|
-
|
|
412
366
|
if (!that.Ifollow) {
|
|
413
367
|
sparqlUpdater.insert_statement(followMe, mbconfirmFollow);
|
|
414
368
|
} else {
|
|
415
369
|
sparqlUpdater.delete_statement(followMe, mbconfirmFollow);
|
|
416
370
|
}
|
|
417
371
|
}
|
|
418
|
-
|
|
419
372
|
var notify = function notify(messageString) {
|
|
420
373
|
var xmsg = doc.createElement('li');
|
|
421
374
|
xmsg.className = 'notify';
|
|
422
375
|
xmsg.innerHTML = messageString;
|
|
423
376
|
doc.getElementById('notify-container').appendChild(xmsg);
|
|
424
377
|
setTimeout(function () {
|
|
425
|
-
doc.getElementById('notify-container').removeChild(xmsg);
|
|
378
|
+
doc.getElementById('notify-container').removeChild(xmsg);
|
|
379
|
+
// delete xmsg;
|
|
426
380
|
}, 4000);
|
|
427
381
|
};
|
|
428
|
-
|
|
429
382
|
var mbCancelNewMB = function mbCancelNewMB(_evt) {
|
|
430
383
|
xupdateContainer.removeChild(xupdateContainer.childNodes[xupdateContainer.childNodes.length - 1]);
|
|
431
384
|
xcreateNewMB.disabled = false;
|
|
432
385
|
};
|
|
433
|
-
|
|
434
386
|
var lsCreateNewMB = function lsCreateNewMB(_evt) {
|
|
435
387
|
// disable the create new microblog button.
|
|
436
388
|
// then prefills the information.
|
|
437
389
|
xcreateNewMB.disabled = true;
|
|
438
390
|
var xcmb = doc.createElement('div');
|
|
439
391
|
var xcmbName = doc.createElement('input');
|
|
440
|
-
|
|
441
392
|
if (kb.whether(s, FOAF('name'))) {
|
|
442
393
|
// handle use of FOAF:NAME
|
|
443
394
|
xcmbName.value = kb.any(s, FOAF('name'));
|
|
@@ -447,11 +398,9 @@ module.exports = {
|
|
|
447
398
|
xcmbName.value += kb.any(s, FOAF('family_name')) ? kb.any(s, FOAF('givenname')) : '';
|
|
448
399
|
xcmbName.value = kb.any(s, FOAF('givenname')) + ' ' + kb.any(s, FOAF('family_name'));
|
|
449
400
|
}
|
|
450
|
-
|
|
451
401
|
var xcmbId = doc.createElement('input');
|
|
452
402
|
xcmbId.value = kb.any(s, FOAF('nick')) ? kb.any(s, FOAF('nick')) : '';
|
|
453
403
|
var xcmbAvatar = doc.createElement('input');
|
|
454
|
-
|
|
455
404
|
if (kb.whether(s, FOAF('img'))) {
|
|
456
405
|
// handle use of img
|
|
457
406
|
xcmbAvatar.value = kb.any(s, FOAF('img')).uri;
|
|
@@ -459,12 +408,10 @@ module.exports = {
|
|
|
459
408
|
// otherwise try depiction
|
|
460
409
|
xcmbAvatar.value = kb.any(s, FOAF('depiction')) ? kb.any(s, FOAF('depiction')).uri : '';
|
|
461
410
|
}
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
411
|
+
var workspace;
|
|
412
|
+
// = kb.any(s,WORKSPACE) //TODO - ADD URI FOR WORKSPACE DEFINITION
|
|
465
413
|
var xcmbWritable = doc.createElement('input');
|
|
466
414
|
xcmbWritable.value = workspace || 'http://dig.csail.mit.edu/2007/wiki/sandbox'; // @@@
|
|
467
|
-
|
|
468
415
|
xcmb.innerHTML = "\n <form class =\"createNewMB\" id=\"createNewMB\">\n <p id=\"xcmbname\"><span class=\"\">Name: </span></p>\n <p id=\"xcmbid\">Id: </p>\n <p id=\"xcmbavatar\">Avatar: </p>\n <p id=\"xcmbwritable\">Host my microblog at: </p>\n <input type=\"button\" id=\"mbCancel\" value=\"Cancel\" />\n <input type=\"submit\" id=\"mbCreate\" value=\"Create!\" />\n </form>\n ";
|
|
469
416
|
xupdateContainer.appendChild(xcmb);
|
|
470
417
|
doc.getElementById('xcmbname').appendChild(xcmbName);
|
|
@@ -477,128 +424,105 @@ module.exports = {
|
|
|
477
424
|
}, false);
|
|
478
425
|
xcmbName.focus();
|
|
479
426
|
};
|
|
480
|
-
|
|
481
427
|
var mbSubmitPost = function mbSubmitPost() {
|
|
482
428
|
var meta = {
|
|
483
429
|
recipients: []
|
|
484
|
-
};
|
|
485
|
-
|
|
430
|
+
};
|
|
431
|
+
// user has selected a microblog to post to
|
|
486
432
|
if (mb.getMyURI()) {
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
433
|
+
// let myUser = kb.sym(mb.getMyURI())
|
|
434
|
+
// submission callback
|
|
435
|
+
var cbconfirmSubmit = function cbconfirmSubmit(uri, success, responseText, d) {
|
|
436
|
+
if (success === true) {
|
|
437
|
+
for (var triple in d) {
|
|
438
|
+
kb.add(d[triple].subject, d[triple].predicate, d[triple].object, d[triple].why);
|
|
439
|
+
}
|
|
440
|
+
xupdateSubmit.disabled = false;
|
|
441
|
+
xupdateStatus.value = '';
|
|
442
|
+
mbLetterCount();
|
|
443
|
+
notify('Microblog Updated.');
|
|
444
|
+
if (that.thisIsMe) {
|
|
445
|
+
doc.getElementById('postNotificationList').insertBefore(that.generatePost(d[0].subject), doc.getElementById('postNotificationList').childNodes[0]);
|
|
446
|
+
}
|
|
447
|
+
} else {
|
|
448
|
+
notify('There was a problem submitting your post.');
|
|
449
|
+
}
|
|
450
|
+
};
|
|
451
|
+
var words = xupdateStatus.value.split(' ');
|
|
452
|
+
var mbUpdateWithReplies = function mbUpdateWithReplies() {
|
|
453
|
+
xupdateSubmit.disabled = true;
|
|
454
|
+
xupdateSubmit.value = 'Updating...';
|
|
455
|
+
mb.statusUpdate(xupdateStatus.value, cbconfirmSubmit, xinReplyToContainer.value, meta);
|
|
456
|
+
};
|
|
457
|
+
var _loop = function _loop() {
|
|
458
|
+
if (words[word].match(/@\w+/)) {
|
|
459
|
+
var atUser = words[word].replace(/\W/g, '');
|
|
460
|
+
var recipient = myFollowList.selectUser(atUser);
|
|
461
|
+
if (recipient[0] === true) {
|
|
462
|
+
meta.recipients.push(recipient[1][0]);
|
|
463
|
+
} else if (recipient[1].length > 1) {
|
|
464
|
+
// if multiple users allow the user to choose
|
|
465
|
+
var xrecipients = doc.createElement('select');
|
|
466
|
+
var xrecipientsSubmit = doc.createElement('input');
|
|
467
|
+
xrecipientsSubmit.type = 'button';
|
|
468
|
+
xrecipientsSubmit.value = 'Continue';
|
|
469
|
+
xrecipientsSubmit.addEventListener('click', function () {
|
|
470
|
+
meta.recipients.push(recipient[1][xrecipients.value]);
|
|
471
|
+
mbUpdateWithReplies();
|
|
472
|
+
xrecipients.parentNode.removeChild(xrecipientsSubmit);
|
|
473
|
+
xrecipients.parentNode.removeChild(xrecipients);
|
|
474
|
+
}, false);
|
|
475
|
+
var recipChoice = function recipChoice(recip, c) {
|
|
476
|
+
var name = kb.any(kb.sym(recip), SIOC('name'));
|
|
477
|
+
var choice = doc.createElement('option');
|
|
478
|
+
choice.value = c;
|
|
479
|
+
choice.innerHTML = name;
|
|
480
|
+
return choice;
|
|
481
|
+
};
|
|
482
|
+
for (var r in recipient[1]) {
|
|
483
|
+
xrecipients.appendChild(recipChoice(recipient[1][r], r));
|
|
503
484
|
}
|
|
485
|
+
xupdateContainer.appendChild(xrecipients);
|
|
486
|
+
xupdateContainer.appendChild(xrecipientsSubmit);
|
|
487
|
+
return {
|
|
488
|
+
v: void 0
|
|
489
|
+
};
|
|
504
490
|
} else {
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
mb.statusUpdate(xupdateStatus.value, cbconfirmSubmit, xinReplyToContainer.value, meta);
|
|
515
|
-
};
|
|
516
|
-
|
|
517
|
-
for (var word in words) {
|
|
518
|
-
if (words[word].match(/@\w+/)) {
|
|
519
|
-
var _ret2 = function () {
|
|
520
|
-
var atUser = words[word].replace(/\W/g, '');
|
|
521
|
-
var recipient = myFollowList.selectUser(atUser);
|
|
522
|
-
|
|
523
|
-
if (recipient[0] === true) {
|
|
524
|
-
meta.recipients.push(recipient[1][0]);
|
|
525
|
-
} else if (recipient[1].length > 1) {
|
|
526
|
-
// if multiple users allow the user to choose
|
|
527
|
-
var xrecipients = doc.createElement('select');
|
|
528
|
-
var xrecipientsSubmit = doc.createElement('input');
|
|
529
|
-
xrecipientsSubmit.type = 'button';
|
|
530
|
-
xrecipientsSubmit.value = 'Continue';
|
|
531
|
-
xrecipientsSubmit.addEventListener('click', function () {
|
|
532
|
-
meta.recipients.push(recipient[1][xrecipients.value]);
|
|
533
|
-
mbUpdateWithReplies();
|
|
534
|
-
xrecipients.parentNode.removeChild(xrecipientsSubmit);
|
|
535
|
-
xrecipients.parentNode.removeChild(xrecipients);
|
|
536
|
-
}, false);
|
|
537
|
-
|
|
538
|
-
var recipChoice = function recipChoice(recip, c) {
|
|
539
|
-
var name = kb.any(kb.sym(recip), SIOC('name'));
|
|
540
|
-
var choice = doc.createElement('option');
|
|
541
|
-
choice.value = c;
|
|
542
|
-
choice.innerHTML = name;
|
|
543
|
-
return choice;
|
|
544
|
-
};
|
|
545
|
-
|
|
546
|
-
for (var r in recipient[1]) {
|
|
547
|
-
xrecipients.appendChild(recipChoice(recipient[1][r], r));
|
|
548
|
-
}
|
|
549
|
-
|
|
550
|
-
xupdateContainer.appendChild(xrecipients);
|
|
551
|
-
xupdateContainer.appendChild(xrecipientsSubmit);
|
|
552
|
-
return {
|
|
553
|
-
v: {
|
|
554
|
-
v: void 0
|
|
555
|
-
}
|
|
556
|
-
};
|
|
557
|
-
} else {
|
|
558
|
-
// no users known or self reference.
|
|
559
|
-
if (String(kb.any(kb.sym(mb.getMyURI()), SIOC('id'))).toLowerCase() === atUser.toLowerCase()) {
|
|
560
|
-
meta.recipients.push(mb.getMyURI());
|
|
561
|
-
} else {
|
|
562
|
-
notify('You do not follow ' + atUser + '. Try following ' + atUser + ' before mentioning them.');
|
|
563
|
-
return {
|
|
564
|
-
v: {
|
|
565
|
-
v: void 0
|
|
566
|
-
}
|
|
567
|
-
};
|
|
568
|
-
}
|
|
569
|
-
}
|
|
570
|
-
}();
|
|
571
|
-
|
|
572
|
-
if (_typeof(_ret2) === "object") return _ret2.v;
|
|
491
|
+
// no users known or self reference.
|
|
492
|
+
if (String(kb.any(kb.sym(mb.getMyURI()), SIOC('id'))).toLowerCase() === atUser.toLowerCase()) {
|
|
493
|
+
meta.recipients.push(mb.getMyURI());
|
|
494
|
+
} else {
|
|
495
|
+
notify('You do not follow ' + atUser + '. Try following ' + atUser + ' before mentioning them.');
|
|
496
|
+
return {
|
|
497
|
+
v: void 0
|
|
498
|
+
};
|
|
499
|
+
}
|
|
573
500
|
}
|
|
574
|
-
/* else if(words[word].match(/\#\w+/)){
|
|
575
|
-
//hashtag
|
|
576
|
-
} else if(words[word].match(/\!\w+/)){
|
|
577
|
-
//usergroup
|
|
578
|
-
} */
|
|
579
|
-
|
|
580
501
|
}
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
502
|
+
/* else if(words[word].match(/\#\w+/)){
|
|
503
|
+
//hashtag
|
|
504
|
+
} else if(words[word].match(/\!\w+/)){
|
|
505
|
+
//usergroup
|
|
506
|
+
} */
|
|
507
|
+
};
|
|
508
|
+
for (var word in words) {
|
|
509
|
+
var _ret = _loop();
|
|
510
|
+
if (_typeof(_ret) === "object") return _ret.v;
|
|
511
|
+
}
|
|
512
|
+
mbUpdateWithReplies();
|
|
586
513
|
} else {
|
|
587
514
|
notify('Please set your microblog first.');
|
|
588
515
|
}
|
|
589
516
|
};
|
|
590
|
-
|
|
591
517
|
var mbLetterCount = function mbLetterCount() {
|
|
592
518
|
xupdateStatusCounter.innerHTML = charCount - xupdateStatus.value.length;
|
|
593
519
|
xupdateStatusCounter.style.color = charCount - xupdateStatus.value.length < 0 ? '#c33' : '';
|
|
594
|
-
|
|
595
520
|
if (xupdateStatus.value.length === 0) {
|
|
596
521
|
xinReplyToContainer.value = '';
|
|
597
522
|
xupdateSubmit.value = 'Send';
|
|
598
523
|
}
|
|
599
|
-
};
|
|
600
|
-
|
|
601
|
-
|
|
524
|
+
};
|
|
525
|
+
// reply viewer
|
|
602
526
|
var xviewReply = doc.createElement('ul');
|
|
603
527
|
xviewReply.className = 'replyView';
|
|
604
528
|
xviewReply.addEventListener('click', function () {
|
|
@@ -606,8 +530,9 @@ module.exports = {
|
|
|
606
530
|
}, false);
|
|
607
531
|
this.xviewReply = xviewReply;
|
|
608
532
|
var headerContainer = doc.createElement('div');
|
|
609
|
-
headerContainer.className = 'header-container';
|
|
533
|
+
headerContainer.className = 'header-container';
|
|
610
534
|
|
|
535
|
+
// ---create status update box---
|
|
611
536
|
var xnotify = doc.createElement('ul');
|
|
612
537
|
xnotify.id = 'notify-container';
|
|
613
538
|
xnotify.className = 'notify-container';
|
|
@@ -620,7 +545,6 @@ module.exports = {
|
|
|
620
545
|
var xupdateStatusCounter;
|
|
621
546
|
var xupdateSubmit;
|
|
622
547
|
var xcreateNewMB;
|
|
623
|
-
|
|
624
548
|
if (mb.getMyURI()) {
|
|
625
549
|
xinReplyToContainer = doc.createElement('input');
|
|
626
550
|
xinReplyToContainer.id = 'xinReplyToContainer';
|
|
@@ -650,41 +574,39 @@ module.exports = {
|
|
|
650
574
|
xupdateContainer.appendChild(xnewUser);
|
|
651
575
|
xupdateContainer.appendChild(xcreateNewMB);
|
|
652
576
|
}
|
|
653
|
-
|
|
654
577
|
headerContainer.appendChild(xupdateContainer);
|
|
655
578
|
var subheaderContainer = doc.createElement('div');
|
|
656
|
-
subheaderContainer.className = 'subheader-container';
|
|
657
|
-
// this.creator
|
|
579
|
+
subheaderContainer.className = 'subheader-container';
|
|
658
580
|
|
|
581
|
+
// user header
|
|
582
|
+
// this.creator
|
|
659
583
|
var creators = kb.each(s, FOAF('holdsAccount'));
|
|
660
584
|
var creator;
|
|
661
|
-
|
|
662
585
|
for (var c in creators) {
|
|
663
586
|
if (kb.whether(creators[c], RDF('type'), SIOC('User')) && kb.whether(kb.any(creators[c], SIOC('creator_of')), RDF('type'), SIOCt('Microblog'))) {
|
|
664
|
-
creator = creators[c];
|
|
587
|
+
creator = creators[c];
|
|
588
|
+
// var mb = kb.sym(creator.uri.split("#")[0]);
|
|
665
589
|
// store.fetcher.refresh(mb);
|
|
666
|
-
|
|
667
|
-
|
|
590
|
+
break;
|
|
591
|
+
// TODO add support for more than one microblog in same foaf
|
|
668
592
|
}
|
|
669
593
|
}
|
|
670
594
|
|
|
671
595
|
var xfollowButton;
|
|
672
|
-
|
|
673
596
|
if (creator) {
|
|
674
|
-
this.creator = mb.getUser(creator);
|
|
675
|
-
|
|
597
|
+
this.creator = mb.getUser(creator);
|
|
598
|
+
// ---display avatar, if available ---
|
|
676
599
|
if (this.creator.avatar !== '') {
|
|
677
600
|
var avatar = doc.createElement('img');
|
|
678
601
|
avatar.src = this.creator.avatar.uri;
|
|
679
602
|
subheaderContainer.appendChild(avatar);
|
|
680
|
-
}
|
|
681
|
-
|
|
682
|
-
|
|
603
|
+
}
|
|
604
|
+
// ---generate name ---
|
|
683
605
|
var userName = doc.createElement('h1');
|
|
684
606
|
userName.className = 'fn';
|
|
685
607
|
userName.appendChild(doc.createTextNode(this.creator.name + ' (' + this.creator.id + ')'));
|
|
686
|
-
subheaderContainer.appendChild(userName);
|
|
687
|
-
|
|
608
|
+
subheaderContainer.appendChild(userName);
|
|
609
|
+
// ---display follow button---
|
|
688
610
|
if (!this.thisIsMe && mb.getMyURI()) {
|
|
689
611
|
xfollowButton = doc.createElement('input');
|
|
690
612
|
xfollowButton.setAttribute('type', 'button');
|
|
@@ -692,32 +614,26 @@ module.exports = {
|
|
|
692
614
|
xfollowButton.value = followButtonLabel + this.creator.name;
|
|
693
615
|
xfollowButton.addEventListener('click', lsFollowUser, false);
|
|
694
616
|
subheaderContainer.appendChild(xfollowButton);
|
|
695
|
-
}
|
|
617
|
+
}
|
|
618
|
+
// user header end
|
|
696
619
|
// header tabs
|
|
697
|
-
|
|
698
|
-
|
|
699
620
|
var xtabsList = this.Tab.getTabView();
|
|
700
621
|
headerContainer.appendChild(subheaderContainer);
|
|
701
622
|
headerContainer.appendChild(xtabsList);
|
|
702
623
|
}
|
|
703
|
-
|
|
704
624
|
return headerContainer;
|
|
705
625
|
};
|
|
706
|
-
|
|
707
626
|
Pane.prototype.generatePost = function (post, _me) {
|
|
708
627
|
/*
|
|
709
628
|
generatePost - Creates and formats microblog posts
|
|
710
629
|
post - symbol of the uri the post in question
|
|
711
630
|
*/
|
|
712
631
|
var that = this;
|
|
713
|
-
|
|
714
632
|
var viewPost = function viewPost(uris) {
|
|
715
633
|
var xviewReply = that.xviewReply;
|
|
716
|
-
|
|
717
634
|
for (var i = 0; i < xviewReply.childNodes.length; i++) {
|
|
718
635
|
xviewReply.removeChild(xviewReply.childNodes[0]);
|
|
719
636
|
}
|
|
720
|
-
|
|
721
637
|
var xcloseContainer = doc.createElement('li');
|
|
722
638
|
xcloseContainer.className = 'closeContainer';
|
|
723
639
|
var xcloseButton = doc.createElement('span');
|
|
@@ -725,36 +641,33 @@ module.exports = {
|
|
|
725
641
|
xcloseButton.className = 'closeButton';
|
|
726
642
|
xcloseContainer.appendChild(xcloseButton);
|
|
727
643
|
xviewReply.appendChild(xcloseContainer);
|
|
728
|
-
|
|
729
644
|
for (var uri in uris) {
|
|
730
645
|
xviewReply.appendChild(that.generatePost(kb.sym(uris[uri]), this.thisIsMe, 'view'));
|
|
731
646
|
}
|
|
732
|
-
|
|
733
647
|
xviewReply.className = 'replyView-active';
|
|
734
648
|
that.microblogPane.appendChild(xviewReply);
|
|
735
|
-
};
|
|
736
|
-
|
|
737
|
-
|
|
649
|
+
};
|
|
650
|
+
// container for post
|
|
738
651
|
var xpost = doc.createElement('li');
|
|
739
652
|
xpost.className = 'post';
|
|
740
653
|
xpost.setAttribute('id', String(post.uri).split('#')[1]);
|
|
741
|
-
var Post = mb.getPost(post);
|
|
654
|
+
var Post = mb.getPost(post);
|
|
655
|
+
// username text
|
|
742
656
|
// var uname = kb.any(kb.any(post, SIOC('has_creator')), SIOC('id'))
|
|
743
|
-
|
|
744
657
|
var uholdsaccount = kb.any(undefined, FOAF('holdsAccount'), kb.any(post, SIOC('has_creator')));
|
|
745
658
|
var xuname = doc.createElement('a');
|
|
746
659
|
xuname.href = uholdsaccount.uri;
|
|
747
660
|
xuname.className = 'userLink';
|
|
748
661
|
var xunameText = doc.createTextNode(mb.getUser(Post.creator).id);
|
|
749
|
-
xuname.appendChild(xunameText);
|
|
750
|
-
|
|
662
|
+
xuname.appendChild(xunameText);
|
|
663
|
+
// user image
|
|
751
664
|
var xuavatar = doc.createElement('img');
|
|
752
665
|
xuavatar.src = mb.getUser(Post.creator).avatar.uri;
|
|
753
|
-
xuavatar.className = 'postAvatar';
|
|
754
|
-
|
|
666
|
+
xuavatar.className = 'postAvatar';
|
|
667
|
+
// post content
|
|
755
668
|
var xpostContent = doc.createElement('blockquote');
|
|
756
|
-
var postText = Post.message;
|
|
757
|
-
|
|
669
|
+
var postText = Post.message;
|
|
670
|
+
// post date
|
|
758
671
|
var xpostLink = doc.createElement('a');
|
|
759
672
|
xpostLink.className = 'postLink';
|
|
760
673
|
xpostLink.addEventListener('click', function () {
|
|
@@ -764,40 +677,35 @@ module.exports = {
|
|
|
764
677
|
xpostLink.setAttribute('content', post.uri);
|
|
765
678
|
xpostLink.setAttribute('property', 'permalink');
|
|
766
679
|
var postLink = doc.createTextNode(Post.date ? Post.date : 'post date unknown');
|
|
767
|
-
xpostLink.appendChild(postLink);
|
|
680
|
+
xpostLink.appendChild(postLink);
|
|
768
681
|
|
|
682
|
+
// LINK META DATA (MENTIONS, HASHTAGS, GROUPS)
|
|
769
683
|
var mentions = kb.each(post, SIOC('topic'));
|
|
770
684
|
var tags = {};
|
|
771
|
-
|
|
772
685
|
for (var mention in mentions) {
|
|
773
686
|
sf.lookUpThing(mentions[mention]);
|
|
774
687
|
var id = kb.any(mentions[mention], SIOC('id'));
|
|
775
688
|
tags['@' + id] = mentions[mention];
|
|
776
689
|
}
|
|
777
|
-
|
|
778
690
|
var postTags = postText.match(/(@|#|!)\w+/g);
|
|
779
|
-
|
|
780
691
|
var postFunction = function postFunction() {
|
|
781
692
|
var p = postTags.pop();
|
|
782
693
|
return tags[p] ? kb.any(undefined, FOAF('holdsAccount'), tags[p]).uri : p;
|
|
783
694
|
};
|
|
784
|
-
|
|
785
695
|
for (var t in tags) {
|
|
786
696
|
var person = t.replace(/@/, '');
|
|
787
697
|
var replacePerson = RegExp('(@|!|#)(' + person + ')');
|
|
788
698
|
postText = postText.replace(replacePerson, '$1<a href="' + postFunction() + '">$2</a>');
|
|
789
699
|
}
|
|
700
|
+
xpostContent.innerHTML = postText;
|
|
790
701
|
|
|
791
|
-
|
|
702
|
+
// in reply to logic
|
|
792
703
|
// This has the potential to support a post that replies to many messages.
|
|
793
|
-
|
|
794
704
|
var inReplyTo = kb.each(post, SIOC('reply_of'));
|
|
795
705
|
var xreplyTo = doc.createElement('span');
|
|
796
706
|
var theReply;
|
|
797
|
-
|
|
798
707
|
for (var reply in inReplyTo) {
|
|
799
708
|
theReply = String(inReplyTo[reply]).replace(/<|>/g, '');
|
|
800
|
-
|
|
801
709
|
var genReplyTo = function genReplyTo() {
|
|
802
710
|
var reply = doc.createElement('a');
|
|
803
711
|
reply.innerHTML = ', <b>in reply to</b>';
|
|
@@ -807,12 +715,11 @@ module.exports = {
|
|
|
807
715
|
}, false);
|
|
808
716
|
return reply;
|
|
809
717
|
};
|
|
810
|
-
|
|
811
718
|
xreplyTo.appendChild(genReplyTo());
|
|
812
|
-
}
|
|
813
|
-
// add the reply to and delete buttons to the interface
|
|
814
|
-
|
|
719
|
+
}
|
|
815
720
|
|
|
721
|
+
// END LINK META DATA
|
|
722
|
+
// add the reply to and delete buttons to the interface
|
|
816
723
|
var mbReplyTo = function mbReplyTo() {
|
|
817
724
|
var id = mb.getUser(Post.creator).id;
|
|
818
725
|
var xupdateStatus = doc.getElementById('xupdateStatus');
|
|
@@ -823,20 +730,16 @@ module.exports = {
|
|
|
823
730
|
xinReplyToContainer.value = post.uri;
|
|
824
731
|
xupdateSubmit.value = 'Reply';
|
|
825
732
|
};
|
|
826
|
-
|
|
827
733
|
var xconfirmDeletionDialog;
|
|
828
|
-
|
|
829
734
|
var mbDeletePost = function mbDeletePost(evt) {
|
|
830
735
|
var lsconfirmNo = function lsconfirmNo() {
|
|
831
736
|
doc.getElementById('notify-container').removeChild(xconfirmDeletionDialog);
|
|
832
737
|
evt.target.disabled = false;
|
|
833
738
|
};
|
|
834
|
-
|
|
835
739
|
var lsconfirmYes = function lsconfirmYes() {
|
|
836
740
|
reallyDelete();
|
|
837
741
|
doc.getElementById('notify-container').removeChild(xconfirmDeletionDialog);
|
|
838
742
|
};
|
|
839
|
-
|
|
840
743
|
evt.target.disabled = true;
|
|
841
744
|
xconfirmDeletionDialog = doc.createElement('li');
|
|
842
745
|
xconfirmDeletionDialog.className = 'notify conf';
|
|
@@ -860,13 +763,12 @@ module.exports = {
|
|
|
860
763
|
xconfirmDeletionDialog.appendChild(confirmyes);
|
|
861
764
|
doc.getElementById('notify-container').appendChild(xconfirmDeletionDialog);
|
|
862
765
|
confirmno.focus();
|
|
863
|
-
|
|
864
766
|
var reallyDelete = function reallyDelete() {
|
|
865
767
|
// callback after deletion
|
|
866
768
|
var mbconfirmDeletePost = function mbconfirmDeletePost(a, success) {
|
|
867
769
|
if (success) {
|
|
868
|
-
that.notify('Post deleted.');
|
|
869
|
-
|
|
770
|
+
that.notify('Post deleted.');
|
|
771
|
+
// update the ui to reflect model changes.
|
|
870
772
|
var deleteThisNode = evt.target.parentNode;
|
|
871
773
|
deleteThisNode.parentNode.removeChild(deleteThisNode);
|
|
872
774
|
kb.removeMany(deleteMe);
|
|
@@ -874,9 +776,8 @@ module.exports = {
|
|
|
874
776
|
that.notify('Oops, there was a problem, please try again');
|
|
875
777
|
evt.target.disabled = true;
|
|
876
778
|
}
|
|
877
|
-
};
|
|
878
|
-
|
|
879
|
-
|
|
779
|
+
};
|
|
780
|
+
// delete references to post
|
|
880
781
|
var deleteContainerOf = function deleteContainerOf(a, success) {
|
|
881
782
|
if (success) {
|
|
882
783
|
var deleteContainer = kb.statementsMatching(undefined, SIOC('container_of'), kb.sym(doc.getElementById('post_' + evt.target.parentNode.id).getAttribute('content')));
|
|
@@ -885,24 +786,20 @@ module.exports = {
|
|
|
885
786
|
that.notify('Oops, there was a problem, please try again');
|
|
886
787
|
evt.target.disabled = false;
|
|
887
788
|
}
|
|
888
|
-
};
|
|
889
|
-
|
|
890
|
-
|
|
789
|
+
};
|
|
790
|
+
// delete attributes of post
|
|
891
791
|
evt.target.disabled = true;
|
|
892
792
|
var deleteMe = kb.statementsMatching(kb.sym(doc.getElementById('post_' + evt.target.parentNode.id).getAttribute('content')));
|
|
893
793
|
sparqlUpdater.batch_delete_statement(deleteMe, deleteContainerOf);
|
|
894
794
|
};
|
|
895
795
|
};
|
|
896
|
-
|
|
897
796
|
var themaker;
|
|
898
797
|
var xreplyButton;
|
|
899
798
|
var xdeleteButton;
|
|
900
|
-
|
|
901
799
|
if (mb.getMyURI()) {
|
|
902
800
|
// If the microblog in question does not belong to the user,
|
|
903
801
|
// display the delete post and reply to post buttons.
|
|
904
802
|
themaker = kb.any(post, SIOC('has_creator'));
|
|
905
|
-
|
|
906
803
|
if (mb.getMyURI() !== themaker.uri) {
|
|
907
804
|
xreplyButton = doc.createElement('input');
|
|
908
805
|
xreplyButton.type = 'button';
|
|
@@ -917,59 +814,47 @@ module.exports = {
|
|
|
917
814
|
xdeleteButton.addEventListener('click', mbDeletePost, false);
|
|
918
815
|
}
|
|
919
816
|
}
|
|
920
|
-
|
|
921
817
|
var mbFavorite = function mbFavorite(evt) {
|
|
922
818
|
var nid = evt.target.parentNode.id;
|
|
923
819
|
var favpost = doc.getElementById('post_' + nid).getAttribute('content');
|
|
924
820
|
xfavorite.className += ' ing';
|
|
925
|
-
|
|
926
821
|
var cbFavorite = function cbFavorite(a, success, _c, _d) {
|
|
927
822
|
if (success) {
|
|
928
823
|
xfavorite.className = xfavorite.className.split(' ')[1] === 'ed' ? 'favorit' : 'favorit ed';
|
|
929
824
|
}
|
|
930
825
|
};
|
|
931
|
-
|
|
932
826
|
if (!myFavorites.favorited(favpost)) {
|
|
933
827
|
myFavorites.add(favpost, cbFavorite);
|
|
934
828
|
} else {
|
|
935
829
|
myFavorites.remove(favpost, cbFavorite);
|
|
936
830
|
}
|
|
937
831
|
};
|
|
938
|
-
|
|
939
832
|
var xfavorite = doc.createElement('a');
|
|
940
833
|
xfavorite.innerHTML = '★';
|
|
941
834
|
xfavorite.addEventListener('click', mbFavorite, false);
|
|
942
|
-
|
|
943
835
|
if (myFavorites.favorited(post.uri)) {
|
|
944
836
|
xfavorite.className = 'favorit ed';
|
|
945
837
|
} else {
|
|
946
838
|
xfavorite.className = 'favorit';
|
|
947
|
-
}
|
|
948
|
-
|
|
949
|
-
|
|
839
|
+
}
|
|
840
|
+
// build
|
|
950
841
|
xpost.appendChild(xuavatar);
|
|
951
842
|
xpost.appendChild(xpostContent);
|
|
952
|
-
|
|
953
843
|
if (mb.getMyURI()) {
|
|
954
844
|
xpost.appendChild(xfavorite);
|
|
955
|
-
|
|
956
845
|
if (mb.getMyURI() !== themaker.uri) {
|
|
957
846
|
xpost.appendChild(xreplyButton);
|
|
958
847
|
} else {
|
|
959
848
|
xpost.appendChild(xdeleteButton);
|
|
960
849
|
}
|
|
961
850
|
}
|
|
962
|
-
|
|
963
851
|
xpost.appendChild(xuname);
|
|
964
852
|
xpost.appendChild(xpostLink);
|
|
965
|
-
|
|
966
853
|
if (inReplyTo !== '') {
|
|
967
854
|
xpost.appendChild(xreplyTo);
|
|
968
855
|
}
|
|
969
|
-
|
|
970
856
|
return xpost;
|
|
971
857
|
};
|
|
972
|
-
|
|
973
858
|
Pane.prototype.generatePostList = function (gmbPosts) {
|
|
974
859
|
/*
|
|
975
860
|
generatePostList - Generate the posts and
|
|
@@ -978,25 +863,19 @@ module.exports = {
|
|
|
978
863
|
var postList = doc.createElement('ul');
|
|
979
864
|
var postlist = {};
|
|
980
865
|
var datelist = [];
|
|
981
|
-
|
|
982
866
|
for (var post in gmbPosts) {
|
|
983
867
|
var postDate = kb.any(gmbPosts[post], terms('created'));
|
|
984
|
-
|
|
985
868
|
if (postDate) {
|
|
986
869
|
datelist.push(postDate);
|
|
987
870
|
postlist[postDate] = this.generatePost(gmbPosts[post], this.thisIsMe);
|
|
988
871
|
}
|
|
989
872
|
}
|
|
990
|
-
|
|
991
873
|
datelist.sort().reverse();
|
|
992
|
-
|
|
993
874
|
for (var d in datelist) {
|
|
994
875
|
postList.appendChild(postlist[datelist[d]]);
|
|
995
876
|
}
|
|
996
|
-
|
|
997
877
|
return postList;
|
|
998
878
|
};
|
|
999
|
-
|
|
1000
879
|
Pane.prototype.followsView = function () {
|
|
1001
880
|
var getFollowed = function getFollowed(user) {
|
|
1002
881
|
var userid = kb.any(user, SIOC('id'));
|
|
@@ -1008,44 +887,35 @@ module.exports = {
|
|
|
1008
887
|
follow.innerHTML = '<a href="' + fol + '">' + userid + '</a>';
|
|
1009
888
|
return follow;
|
|
1010
889
|
};
|
|
1011
|
-
|
|
1012
890
|
var xfollows = doc.createElement('div');
|
|
1013
891
|
xfollows.id = 'xfollows';
|
|
1014
892
|
xfollows.className = 'followlist-container view-container';
|
|
1015
|
-
|
|
1016
893
|
if (this.creator && kb.whether(this.creator.sym, SIOC('follows'))) {
|
|
1017
894
|
var creatorFollows = kb.each(this.creator.sym, SIOC('follows'));
|
|
1018
895
|
var xfollowsList = doc.createElement('ul');
|
|
1019
|
-
|
|
1020
896
|
for (var thisPerson in creatorFollows) {
|
|
1021
897
|
xfollowsList.appendChild(getFollowed(creatorFollows[thisPerson]));
|
|
1022
898
|
}
|
|
1023
|
-
|
|
1024
899
|
xfollows.appendChild(xfollowsList);
|
|
1025
900
|
}
|
|
1026
|
-
|
|
1027
901
|
this.Tab.create('tab-follows', 'Follows', xfollows, false);
|
|
1028
902
|
return xfollows;
|
|
1029
903
|
};
|
|
1030
|
-
|
|
1031
904
|
Pane.prototype.streamView = function (s, doc) {
|
|
1032
905
|
var postContainer = doc.createElement('div');
|
|
1033
906
|
postContainer.id = 'postContainer';
|
|
1034
907
|
postContainer.className = 'post-container view-container active';
|
|
1035
908
|
var mbPosts = [];
|
|
1036
|
-
|
|
1037
909
|
if (kb.whether(s, FOAF('name')) && kb.whether(s, FOAF('holdsAccount'))) {
|
|
1038
910
|
sf.lookUpThing(kb.any(s, FOAF('holdsAccount')));
|
|
1039
911
|
var follows = kb.each(kb.any(s, FOAF('holdsAccount')), SIOC('follows'));
|
|
1040
|
-
|
|
1041
912
|
for (var f in follows) {
|
|
1042
|
-
sf.lookUpThing(follows[f]);
|
|
1043
|
-
|
|
1044
|
-
var smicroblogs = kb.each(follows[f], SIOC('creator_of'));
|
|
1045
|
-
|
|
913
|
+
sf.lookUpThing(follows[f]);
|
|
914
|
+
// look up people user follows
|
|
915
|
+
var smicroblogs = kb.each(follows[f], SIOC('creator_of'));
|
|
916
|
+
// get the follows microblogs
|
|
1046
917
|
for (var smb in smicroblogs) {
|
|
1047
918
|
sf.lookUpThing(smicroblogs[smb]);
|
|
1048
|
-
|
|
1049
919
|
if (kb.whether(smicroblogs[smb], SIOC('topic'), follows[f])) {
|
|
1050
920
|
continue;
|
|
1051
921
|
} else {
|
|
@@ -1054,19 +924,16 @@ module.exports = {
|
|
|
1054
924
|
}
|
|
1055
925
|
}
|
|
1056
926
|
}
|
|
1057
|
-
|
|
1058
927
|
if (mbPosts.length > 0) {
|
|
1059
|
-
var postList = this.generatePostList(mbPosts);
|
|
1060
|
-
|
|
928
|
+
var postList = this.generatePostList(mbPosts);
|
|
929
|
+
// generate stream
|
|
1061
930
|
postList.id = 'postList';
|
|
1062
931
|
postList.className = 'postList';
|
|
1063
932
|
postContainer.appendChild(postList);
|
|
1064
933
|
}
|
|
1065
|
-
|
|
1066
934
|
this.Tab.create('tab-stream', 'By Follows', postContainer, true);
|
|
1067
935
|
return postContainer;
|
|
1068
936
|
};
|
|
1069
|
-
|
|
1070
937
|
Pane.prototype.notificationsView = function (s, doc) {
|
|
1071
938
|
var postNotificationContainer = doc.createElement('div');
|
|
1072
939
|
postNotificationContainer.id = 'postNotificationContainer';
|
|
@@ -1075,15 +942,13 @@ module.exports = {
|
|
|
1075
942
|
postMentionContainer.id = 'postMentionContainer';
|
|
1076
943
|
postMentionContainer.className = 'mention-container view-container';
|
|
1077
944
|
var mbnPosts = [];
|
|
1078
|
-
var mbmPosts = [];
|
|
1079
|
-
|
|
945
|
+
var mbmPosts = [];
|
|
946
|
+
// get mbs that I am the creator of.
|
|
1080
947
|
var theUser = kb.any(s, FOAF('holdsAccount'));
|
|
1081
948
|
var user = kb.any(theUser, SIOC('id'));
|
|
1082
949
|
var microblogs = kb.each(theUser, SIOC('creator_of'));
|
|
1083
|
-
|
|
1084
950
|
for (var mbm in microblogs) {
|
|
1085
951
|
sf.lookUpThing(microblogs[mbm]);
|
|
1086
|
-
|
|
1087
952
|
if (kb.whether(microblogs[mbm], SIOC('topic'), theUser)) {
|
|
1088
953
|
mbmPosts = mbmPosts.concat(kb.each(microblogs[mbm], SIOC('container_of')));
|
|
1089
954
|
} else {
|
|
@@ -1092,7 +957,6 @@ module.exports = {
|
|
|
1092
957
|
}
|
|
1093
958
|
}
|
|
1094
959
|
}
|
|
1095
|
-
|
|
1096
960
|
var postNotificationList = this.generatePostList(mbnPosts);
|
|
1097
961
|
postNotificationList.id = 'postNotificationList';
|
|
1098
962
|
postNotificationList.className = 'postList';
|
|
@@ -1106,7 +970,6 @@ module.exports = {
|
|
|
1106
970
|
this.Tab.create('tab-by-user', 'By ' + user, postNotificationContainer, false);
|
|
1107
971
|
this.Tab.create('tab-at-user', '@' + user, postMentionContainer, false);
|
|
1108
972
|
};
|
|
1109
|
-
|
|
1110
973
|
Pane.prototype.build = function () {
|
|
1111
974
|
var microblogPane = this.microblogPane;
|
|
1112
975
|
this.headerContainer = this.header(s, doc);
|
|
@@ -1117,17 +980,15 @@ module.exports = {
|
|
|
1117
980
|
microblogPane.appendChild(this.xviewReply);
|
|
1118
981
|
microblogPane.appendChild(this.xnotify);
|
|
1119
982
|
microblogPane.appendChild(this.headerContainer);
|
|
1120
|
-
|
|
1121
983
|
if (this.xfollows !== undefined) {
|
|
1122
984
|
microblogPane.appendChild(this.xfollows);
|
|
1123
985
|
}
|
|
1124
|
-
|
|
1125
986
|
microblogPane.appendChild(this.postContainer);
|
|
1126
987
|
microblogPane.appendChild(this.postNotificationContainer);
|
|
1127
988
|
microblogPane.appendChild(this.postMentionContainer);
|
|
1128
989
|
};
|
|
1129
|
-
|
|
1130
|
-
|
|
990
|
+
var microblogpane = doc.createElement('div');
|
|
991
|
+
// var getusersfollows = function(uri){
|
|
1131
992
|
// var follows = new Object();
|
|
1132
993
|
// var followsa = {follows:0, matches:0};
|
|
1133
994
|
// var accounts = kb.each(s, FOAF("holdsAccount"));
|
|
@@ -1146,9 +1007,9 @@ module.exports = {
|
|
|
1146
1007
|
// followsa.matches = (follows[uri]) ? followsa.matches+1: followsa.matches;
|
|
1147
1008
|
// console.log(follows.toSource());
|
|
1148
1009
|
// if(followsa.follows == followsa.matches ){
|
|
1149
|
-
|
|
1150
1010
|
var ppane = new Pane(s, doc, microblogpane);
|
|
1151
|
-
ppane.build();
|
|
1011
|
+
ppane.build();
|
|
1012
|
+
// return false;
|
|
1152
1013
|
// }
|
|
1153
1014
|
// else{
|
|
1154
1015
|
// return true;
|
|
@@ -1161,8 +1022,8 @@ module.exports = {
|
|
|
1161
1022
|
// sf.refresh(kb.sym(f));
|
|
1162
1023
|
// }
|
|
1163
1024
|
// }(s);
|
|
1164
|
-
|
|
1165
1025
|
return microblogpane;
|
|
1166
1026
|
}
|
|
1167
1027
|
};
|
|
1028
|
+
exports["default"] = _default;
|
|
1168
1029
|
//# sourceMappingURL=microblogPane.js.map
|