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