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