mirror of
https://github.com/vale981/Vulcan
synced 2025-03-06 10:01:40 -05:00
telescope:i18n
This commit is contained in:
parent
6d980f9325
commit
7a29c64509
52 changed files with 32 additions and 1945 deletions
|
@ -62,8 +62,7 @@ manuelschoebel:ms-seo
|
||||||
|
|
||||||
# Telescope Packages (Required)
|
# Telescope Packages (Required)
|
||||||
|
|
||||||
telescope-i18n
|
telescope:i18n
|
||||||
|
|
||||||
telescope:posts
|
telescope:posts
|
||||||
telescope:lib
|
telescope:lib
|
||||||
telescope:users
|
telescope:users
|
||||||
|
|
|
@ -121,7 +121,6 @@ telescope-datetimepicker@1.0.3
|
||||||
telescope-email@0.2.9
|
telescope-email@0.2.9
|
||||||
telescope-embedly@0.2.9
|
telescope-embedly@0.2.9
|
||||||
telescope-getting-started@0.1.0
|
telescope-getting-started@0.1.0
|
||||||
telescope-i18n@0.0.0
|
|
||||||
telescope-invites@0.1.0
|
telescope-invites@0.1.0
|
||||||
telescope-kadira@0.1.0
|
telescope-kadira@0.1.0
|
||||||
telescope-messages@0.0.0
|
telescope-messages@0.0.0
|
||||||
|
@ -141,6 +140,7 @@ telescope-tags@0.0.0
|
||||||
telescope-theme-base@0.0.0
|
telescope-theme-base@0.0.0
|
||||||
telescope-theme-hubble@0.0.0
|
telescope-theme-hubble@0.0.0
|
||||||
telescope-update-prompt@0.1.0
|
telescope-update-prompt@0.1.0
|
||||||
|
telescope:i18n@0.1.0
|
||||||
telescope:lib@0.3.1
|
telescope:lib@0.3.1
|
||||||
telescope:posts@0.1.0
|
telescope:posts@0.1.0
|
||||||
telescope:settings@0.1.0
|
telescope:settings@0.1.0
|
||||||
|
|
|
@ -153,7 +153,7 @@
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"telescope-i18n",
|
"telescope:i18n",
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
|
|
@ -4,7 +4,7 @@ Package.onUse(function (api) {
|
||||||
|
|
||||||
// doesn't do anything anymore
|
// doesn't do anything anymore
|
||||||
|
|
||||||
// api.use(['telescope-i18n', 'telescope:telescope-lib', 'telescope:telescope-posts', 'aldeed:simple-schema', 'check']);
|
// api.use(['telescope:i18n', 'telescope:telescope-lib', 'telescope:telescope-posts', 'aldeed:simple-schema', 'check']);
|
||||||
// api.imply(['aldeed:simple-schema']);
|
// api.imply(['aldeed:simple-schema']);
|
||||||
|
|
||||||
// api.add_files(['lib/base.js'], ['client', 'server']);
|
// api.add_files(['lib/base.js'], ['client', 'server']);
|
||||||
|
|
|
@ -149,7 +149,7 @@
|
||||||
"1.2.1"
|
"1.2.1"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"telescope-i18n",
|
"telescope:i18n",
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
|
|
@ -20,7 +20,7 @@ Package.onUse(function (api) {
|
||||||
'telescope-base', // basic Telescope hooks and objects
|
'telescope-base', // basic Telescope hooks and objects
|
||||||
'telescope:lib', // useful functions
|
'telescope:lib', // useful functions
|
||||||
'telescope:settings',
|
'telescope:settings',
|
||||||
'telescope-i18n', // internationalization wrapper
|
'telescope:i18n', // internationalization wrapper
|
||||||
'fourseven:scss' // SCSS compilation package
|
'fourseven:scss' // SCSS compilation package
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
|
@ -189,7 +189,7 @@
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"telescope-i18n",
|
"telescope:i18n",
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
|
|
@ -213,7 +213,7 @@
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"telescope-i18n",
|
"telescope:i18n",
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
|
|
@ -16,7 +16,7 @@ Package.onUse(function (api) {
|
||||||
'telescope:settings',
|
'telescope:settings',
|
||||||
'telescope:lib',
|
'telescope:lib',
|
||||||
'telescope:users',
|
'telescope:users',
|
||||||
'telescope-i18n',
|
'telescope:i18n',
|
||||||
'tap:i18n'
|
'tap:i18n'
|
||||||
], ['client', 'server']);
|
], ['client', 'server']);
|
||||||
|
|
||||||
|
|
|
@ -193,7 +193,7 @@
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"telescope-i18n",
|
"telescope:i18n",
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
|
|
@ -173,7 +173,7 @@
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"telescope-i18n",
|
"telescope:i18n",
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
|
|
@ -19,7 +19,7 @@ Package.onUse(function (api) {
|
||||||
'iron:router', // routing package
|
'iron:router', // routing package
|
||||||
'telescope-base', // basic Telescope hooks and objects
|
'telescope-base', // basic Telescope hooks and objects
|
||||||
'telescope:lib', // useful functions
|
'telescope:lib', // useful functions
|
||||||
'telescope-i18n', // internationalization wrapper
|
'telescope:i18n', // internationalization wrapper
|
||||||
'telescope:posts',
|
'telescope:posts',
|
||||||
'momentjs:moment'
|
'momentjs:moment'
|
||||||
]);
|
]);
|
||||||
|
|
|
@ -189,7 +189,7 @@
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"telescope-i18n",
|
"telescope:i18n",
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
|
1
packages/telescope-i18n/.gitignore
vendored
1
packages/telescope-i18n/.gitignore
vendored
|
@ -1 +0,0 @@
|
||||||
.build*
|
|
|
@ -1,62 +0,0 @@
|
||||||
// do this better:
|
|
||||||
setLanguage = function (language) {
|
|
||||||
// Session.set('i18nReady', false);
|
|
||||||
// console.log('i18n loading… '+language)
|
|
||||||
|
|
||||||
// moment
|
|
||||||
Session.set('momentReady', false);
|
|
||||||
// console.log('moment loading…')
|
|
||||||
if (language.toLowerCase() === "en") {
|
|
||||||
Session.set('momentReady', true);
|
|
||||||
} else {
|
|
||||||
$.getScript("//cdnjs.cloudflare.com/ajax/libs/moment.js/2.5.1/lang/" + language.toLowerCase() + ".js", function (result) {
|
|
||||||
moment.locale(language);
|
|
||||||
Session.set('momentReady', true);
|
|
||||||
Session.set('momentLocale', language);
|
|
||||||
// console.log('moment loaded!')
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// TAPi18n
|
|
||||||
Session.set("TAPi18nReady", false);
|
|
||||||
// console.log('TAPi18n loading…')
|
|
||||||
TAPi18n.setLanguage(language)
|
|
||||||
.done(function () {
|
|
||||||
Session.set("TAPi18nReady", true);
|
|
||||||
// console.log('TAPi18n loaded!')
|
|
||||||
});
|
|
||||||
|
|
||||||
// T9n
|
|
||||||
T9n.setLanguage(language);
|
|
||||||
}
|
|
||||||
|
|
||||||
i18n = {
|
|
||||||
t: function (str, options) {
|
|
||||||
if (Meteor.isServer) {
|
|
||||||
return TAPi18n.__(str, options, Settings.get('language', 'en'));
|
|
||||||
} else {
|
|
||||||
return TAPi18n.__(str, options);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
Meteor.startup(function () {
|
|
||||||
|
|
||||||
if (Meteor.isClient) {
|
|
||||||
|
|
||||||
// doesn't quite work yet
|
|
||||||
// Tracker.autorun(function (c) {
|
|
||||||
// console.log('momentReady',Session.get('momentReady'))
|
|
||||||
// console.log('i18nReady',Session.get('i18nReady'))
|
|
||||||
// var ready = Session.get('momentReady') && Session.get('i18nReady');
|
|
||||||
// if (ready) {
|
|
||||||
// Session.set('i18nReady', true);
|
|
||||||
// Session.set('locale', language);
|
|
||||||
// console.log('i18n ready! '+language)
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
|
|
||||||
setLanguage(Settings.get('language', 'en'));
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
|
@ -1,11 +0,0 @@
|
||||||
Package.describe({summary: "Telescope i18n package"});
|
|
||||||
|
|
||||||
Package.onUse(function (api) {
|
|
||||||
api.use(["tap:i18n"], ["client", "server"]);
|
|
||||||
api.use(["session"], "client");
|
|
||||||
api.add_files(['i18n.js'], ['client', 'server']);
|
|
||||||
api.export([
|
|
||||||
'i18n',
|
|
||||||
'setLanguage'
|
|
||||||
]);
|
|
||||||
});
|
|
|
@ -1,175 +0,0 @@
|
||||||
{
|
|
||||||
"dependencies": [
|
|
||||||
[
|
|
||||||
"application-configuration",
|
|
||||||
"1.0.3"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"base64",
|
|
||||||
"1.0.1"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"binary-heap",
|
|
||||||
"1.0.1"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"blaze",
|
|
||||||
"2.0.3"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"blaze-tools",
|
|
||||||
"1.0.1"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"boilerplate-generator",
|
|
||||||
"1.0.1"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"callback-hook",
|
|
||||||
"1.0.1"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"check",
|
|
||||||
"1.0.2"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"coffeescript",
|
|
||||||
"1.0.4"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ddp",
|
|
||||||
"1.0.12"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"deps",
|
|
||||||
"1.0.5"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ejson",
|
|
||||||
"1.0.4"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"follower-livedata",
|
|
||||||
"1.0.2"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"geojson-utils",
|
|
||||||
"1.0.1"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"html-tools",
|
|
||||||
"1.0.2"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"htmljs",
|
|
||||||
"1.0.2"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"id-map",
|
|
||||||
"1.0.1"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"jquery",
|
|
||||||
"1.0.1"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"json",
|
|
||||||
"1.0.1"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"logging",
|
|
||||||
"1.0.5"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"meteor",
|
|
||||||
"1.1.3"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"minifiers",
|
|
||||||
"1.1.2"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"minimongo",
|
|
||||||
"1.0.5"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"mongo",
|
|
||||||
"1.0.9"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"observe-sequence",
|
|
||||||
"1.0.3"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ordered-dict",
|
|
||||||
"1.0.1"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"random",
|
|
||||||
"1.0.1"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"reactive-dict",
|
|
||||||
"1.0.4"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"reactive-var",
|
|
||||||
"1.0.3"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"retry",
|
|
||||||
"1.0.1"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"routepolicy",
|
|
||||||
"1.0.2"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"session",
|
|
||||||
"1.0.4"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"spacebars",
|
|
||||||
"1.0.3"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"spacebars-compiler",
|
|
||||||
"1.0.3"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"tap:http-methods",
|
|
||||||
"0.0.23"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"tap:i18n",
|
|
||||||
"1.2.1"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"templating",
|
|
||||||
"1.0.9"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"tracker",
|
|
||||||
"1.0.3"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ui",
|
|
||||||
"1.0.4"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"underscore",
|
|
||||||
"1.0.1"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"webapp",
|
|
||||||
"1.1.4"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"webapp-hashing",
|
|
||||||
"1.0.1"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"pluginDependencies": [],
|
|
||||||
"toolVersion": "meteor-tool@1.0.36",
|
|
||||||
"format": "1.0"
|
|
||||||
}
|
|
|
@ -21,7 +21,7 @@ Package.onUse(function (api) {
|
||||||
'telescope:settings',
|
'telescope:settings',
|
||||||
'telescope:lib',
|
'telescope:lib',
|
||||||
'telescope:users',
|
'telescope:users',
|
||||||
'telescope-i18n',
|
'telescope:i18n',
|
||||||
'aldeed:simple-schema',
|
'aldeed:simple-schema',
|
||||||
'aldeed:autoform'
|
'aldeed:autoform'
|
||||||
]);
|
]);
|
||||||
|
|
|
@ -197,7 +197,7 @@
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"telescope-i18n",
|
"telescope:i18n",
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
|
|
@ -185,7 +185,7 @@
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"telescope-i18n",
|
"telescope:i18n",
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
|
|
@ -1,54 +0,0 @@
|
||||||
{
|
|
||||||
"builtBy": "meteor/14",
|
|
||||||
"buildDependencies": {
|
|
||||||
"os.json": {
|
|
||||||
"files": {
|
|
||||||
"/Users/sacha/Dev/Telescope/packages/telescope-lib/package.js": "143fbd4a4d1b55c3f63beabc83ea30c4fb0bf3c4",
|
|
||||||
"/Users/sacha/Dev/Telescope/packages/telescope-lib/lib/lib.js": "397ebb693e338ae7527025a6f375dfa414896927",
|
|
||||||
"/Users/sacha/Dev/Telescope/packages/telescope-lib/lib/deep.js": "c4a6d6726f731d7b45291943435c6f292bac4c68",
|
|
||||||
"/Users/sacha/Dev/Telescope/packages/telescope-lib/lib/deep_extend.js": "d466c0548d8b384f72ca1af44faf5d491a981f8c",
|
|
||||||
"/Users/sacha/Dev/Telescope/packages/telescope-lib/lib/autolink.js": "1bf0f6eee592ae61155fa05d09f313240b6f7653",
|
|
||||||
"/Users/sacha/Dev/Telescope/packages/telescope-lib/lib/permissions.js": "a1b81d1e7604489d090d59c91778dddea3220096"
|
|
||||||
},
|
|
||||||
"directories": []
|
|
||||||
},
|
|
||||||
"web.browser.json": {
|
|
||||||
"files": {
|
|
||||||
"/Users/sacha/Dev/Telescope/packages/telescope-lib/package.js": "143fbd4a4d1b55c3f63beabc83ea30c4fb0bf3c4",
|
|
||||||
"/Users/sacha/Dev/Telescope/packages/telescope-lib/lib/lib.js": "397ebb693e338ae7527025a6f375dfa414896927",
|
|
||||||
"/Users/sacha/Dev/Telescope/packages/telescope-lib/lib/deep.js": "c4a6d6726f731d7b45291943435c6f292bac4c68",
|
|
||||||
"/Users/sacha/Dev/Telescope/packages/telescope-lib/lib/deep_extend.js": "d466c0548d8b384f72ca1af44faf5d491a981f8c",
|
|
||||||
"/Users/sacha/Dev/Telescope/packages/telescope-lib/lib/autolink.js": "1bf0f6eee592ae61155fa05d09f313240b6f7653",
|
|
||||||
"/Users/sacha/Dev/Telescope/packages/telescope-lib/lib/permissions.js": "a1b81d1e7604489d090d59c91778dddea3220096",
|
|
||||||
"/Users/sacha/Dev/Telescope/packages/telescope-lib/lib/client/jquery.exists.js": "0de9e72491e22b12e26a21c03eef18b2bd83f147"
|
|
||||||
},
|
|
||||||
"directories": []
|
|
||||||
},
|
|
||||||
"web.cordova.json": {
|
|
||||||
"files": {
|
|
||||||
"/Users/sacha/Dev/Telescope/packages/telescope-lib/package.js": "143fbd4a4d1b55c3f63beabc83ea30c4fb0bf3c4",
|
|
||||||
"/Users/sacha/Dev/Telescope/packages/telescope-lib/lib/lib.js": "397ebb693e338ae7527025a6f375dfa414896927",
|
|
||||||
"/Users/sacha/Dev/Telescope/packages/telescope-lib/lib/deep.js": "c4a6d6726f731d7b45291943435c6f292bac4c68",
|
|
||||||
"/Users/sacha/Dev/Telescope/packages/telescope-lib/lib/deep_extend.js": "d466c0548d8b384f72ca1af44faf5d491a981f8c",
|
|
||||||
"/Users/sacha/Dev/Telescope/packages/telescope-lib/lib/autolink.js": "1bf0f6eee592ae61155fa05d09f313240b6f7653",
|
|
||||||
"/Users/sacha/Dev/Telescope/packages/telescope-lib/lib/permissions.js": "a1b81d1e7604489d090d59c91778dddea3220096",
|
|
||||||
"/Users/sacha/Dev/Telescope/packages/telescope-lib/lib/client/jquery.exists.js": "0de9e72491e22b12e26a21c03eef18b2bd83f147"
|
|
||||||
},
|
|
||||||
"directories": []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"pluginDependencies": {
|
|
||||||
"files": {
|
|
||||||
"/Users/sacha/Dev/Telescope/packages/telescope-lib/package.js": "143fbd4a4d1b55c3f63beabc83ea30c4fb0bf3c4"
|
|
||||||
},
|
|
||||||
"directories": []
|
|
||||||
},
|
|
||||||
"source": "/Users/sacha/Dev/Telescope/packages/telescope-lib",
|
|
||||||
"buildTimeDirectDependencies": {
|
|
||||||
"underscore": "1.0.1",
|
|
||||||
"jquery": "1.0.1",
|
|
||||||
"meteor": "1.1.3"
|
|
||||||
},
|
|
||||||
"buildTimePluginDependencies": {},
|
|
||||||
"cordovaDependencies": null
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
{
|
|
||||||
"isopack-1": {
|
|
||||||
"name": "telescope-lib",
|
|
||||||
"summary": "Telescope library package",
|
|
||||||
"version": "0.2.9+3c5fc781baa945505183378ea284deac3068520b",
|
|
||||||
"earliestCompatibleVersion": "0.0.0",
|
|
||||||
"isTest": false,
|
|
||||||
"builds": [
|
|
||||||
{
|
|
||||||
"arch": "os",
|
|
||||||
"path": "os.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"arch": "web.browser",
|
|
||||||
"path": "web.browser.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"arch": "web.cordova",
|
|
||||||
"path": "web.cordova.json"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"plugins": []
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,70 +0,0 @@
|
||||||
{
|
|
||||||
"format": "unipackage-unibuild-pre1",
|
|
||||||
"packageVariables": [
|
|
||||||
{
|
|
||||||
"name": "deepExtend",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "camelToDash",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "dashToCamel",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "camelCaseify",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "getSetting",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "getThemeSetting",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "getSiteUrl",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "trimWords",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "can",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "_",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "capitalise",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "expString"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"uses": [
|
|
||||||
{
|
|
||||||
"package": "meteor"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"package": "underscore"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"resources": [
|
|
||||||
{
|
|
||||||
"type": "prelink",
|
|
||||||
"file": "os/packages/telescope-lib.js",
|
|
||||||
"length": 45846,
|
|
||||||
"offset": 0,
|
|
||||||
"servePath": "/packages/telescope-lib.js",
|
|
||||||
"sourceMap": "os/packages/telescope-lib.js.map"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -1,407 +0,0 @@
|
||||||
(function () {
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// //
|
|
||||||
// packages/telescope-lib/lib/lib.js //
|
|
||||||
// //
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
getSiteUrl = function () { // 1
|
|
||||||
return getSetting('siteUrl', Meteor.absoluteUrl()); // 2
|
|
||||||
} // 3
|
|
||||||
// 4
|
|
||||||
getSetting = function(setting, defaultValue){ // 5
|
|
||||||
var settings = Settings.find().fetch()[0]; // 6
|
|
||||||
// 7
|
|
||||||
if (Meteor.isServer && Meteor.settings && !!Meteor.settings[setting]) { // if on the server, look in Meteor.settings // 8
|
|
||||||
return Meteor.settings[setting]; // 9
|
|
||||||
// 10
|
|
||||||
} else if (Meteor.settings && Meteor.settings.public && !!Meteor.settings.public[setting]) { // look in Meteor.settings.public
|
|
||||||
return Meteor.settings.public[setting]; // 12
|
|
||||||
// 13
|
|
||||||
} else if(settings && (typeof settings[setting] !== 'undefined')) { // look in Settings collection // 14
|
|
||||||
return settings[setting]; // 15
|
|
||||||
// 16
|
|
||||||
} else if (typeof defaultValue !== 'undefined') { // fallback to default // 17
|
|
||||||
return defaultValue; // 18
|
|
||||||
// 19
|
|
||||||
} else { // or return undefined // 20
|
|
||||||
return undefined; // 21
|
|
||||||
} // 22
|
|
||||||
// 23
|
|
||||||
}; // 24
|
|
||||||
// 25
|
|
||||||
getThemeSetting = function(setting, defaultValue){ // 26
|
|
||||||
if(typeof themeSettings[setting] !== 'undefined'){ // 27
|
|
||||||
return themeSettings[setting]; // 28
|
|
||||||
}else{ // 29
|
|
||||||
return typeof defaultValue === 'undefined' ? '' : defaultValue; // 30
|
|
||||||
} // 31
|
|
||||||
}; // 32
|
|
||||||
// 33
|
|
||||||
camelToDash = function (str) { // 34
|
|
||||||
return str.replace(/\W+/g, '-').replace(/([a-z\d])([A-Z])/g, '$1-$2').toLowerCase(); // 35
|
|
||||||
} // 36
|
|
||||||
// 37
|
|
||||||
camelCaseify = function(str) { // 38
|
|
||||||
return dashToCamel(str.replace(' ', '-')); // 39
|
|
||||||
} // 40
|
|
||||||
// 41
|
|
||||||
dashToCamel = function (str) { // 42
|
|
||||||
return str.replace(/(\-[a-z])/g, function($1){return $1.toUpperCase().replace('-','');}); // 43
|
|
||||||
} // 44
|
|
||||||
// 45
|
|
||||||
trimWords = function(s, numWords) { // 46
|
|
||||||
expString = s.split(/\s+/,numWords); // 47
|
|
||||||
if(expString.length >= numWords) // 48
|
|
||||||
return expString.join(" ")+"…"; // 49
|
|
||||||
return s; // 50
|
|
||||||
}; // 51
|
|
||||||
// 52
|
|
||||||
capitalise = function (string) { // 53
|
|
||||||
return string.charAt(0).toUpperCase() + string.slice(1); // 54
|
|
||||||
} // 55
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
}).call(this);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(function () {
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// //
|
|
||||||
// packages/telescope-lib/lib/deep.js //
|
|
||||||
// //
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// see https://gist.github.com/furf/3208381 // 1
|
|
||||||
// 2
|
|
||||||
_.mixin({ // 3
|
|
||||||
// 4
|
|
||||||
// Get/set the value of a nested property // 5
|
|
||||||
deep: function (obj, key, value) { // 6
|
|
||||||
// 7
|
|
||||||
var keys = key.replace(/\[(["']?)([^\1]+?)\1?\]/g, '.$2').replace(/^\./, '').split('.'), // 8
|
|
||||||
root, // 9
|
|
||||||
i = 0, // 10
|
|
||||||
n = keys.length; // 11
|
|
||||||
// 12
|
|
||||||
// Set deep value // 13
|
|
||||||
if (arguments.length > 2) { // 14
|
|
||||||
// 15
|
|
||||||
root = obj; // 16
|
|
||||||
n--; // 17
|
|
||||||
// 18
|
|
||||||
while (i < n) { // 19
|
|
||||||
key = keys[i++]; // 20
|
|
||||||
obj = obj[key] = _.isObject(obj[key]) ? obj[key] : {}; // 21
|
|
||||||
} // 22
|
|
||||||
// 23
|
|
||||||
obj[keys[i]] = value; // 24
|
|
||||||
// 25
|
|
||||||
value = root; // 26
|
|
||||||
// 27
|
|
||||||
// Get deep value // 28
|
|
||||||
} else { // 29
|
|
||||||
while ((obj = obj[keys[i++]]) != null && i < n) {}; // 30
|
|
||||||
value = i < n ? void 0 : obj; // 31
|
|
||||||
} // 32
|
|
||||||
// 33
|
|
||||||
return value; // 34
|
|
||||||
} // 35
|
|
||||||
// 36
|
|
||||||
}); // 37
|
|
||||||
// 38
|
|
||||||
// Usage: // 39
|
|
||||||
// // 40
|
|
||||||
// var obj = { // 41
|
|
||||||
// a: { // 42
|
|
||||||
// b: { // 43
|
|
||||||
// c: { // 44
|
|
||||||
// d: ['e', 'f', 'g'] // 45
|
|
||||||
// } // 46
|
|
||||||
// } // 47
|
|
||||||
// } // 48
|
|
||||||
// }; // 49
|
|
||||||
// // 50
|
|
||||||
// Get deep value // 51
|
|
||||||
// _.deep(obj, 'a.b.c.d[2]'); // 'g' // 52
|
|
||||||
// // 53
|
|
||||||
// Set deep value // 54
|
|
||||||
// _.deep(obj, 'a.b.c.d[2]', 'george'); // 55
|
|
||||||
// // 56
|
|
||||||
// _.deep(obj, 'a.b.c.d[2]'); // 'george' // 57
|
|
||||||
// 58
|
|
||||||
// 59
|
|
||||||
_.mixin({ // 60
|
|
||||||
pluckDeep: function (obj, key) { // 61
|
|
||||||
return _.map(obj, function (value) { return _.deep(value, key); }); // 62
|
|
||||||
} // 63
|
|
||||||
}); // 64
|
|
||||||
// 65
|
|
||||||
// 66
|
|
||||||
_.mixin({ // 67
|
|
||||||
// 68
|
|
||||||
// Return a copy of an object containing all but the blacklisted properties. // 69
|
|
||||||
unpick: function (obj) { // 70
|
|
||||||
obj || (obj = {}); // 71
|
|
||||||
return _.pick(obj, _.difference(_.keys(obj), _.flatten(Array.prototype.slice.call(arguments, 1)))); // 72
|
|
||||||
} // 73
|
|
||||||
// 74
|
|
||||||
}); // 75
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
}).call(this);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(function () {
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// //
|
|
||||||
// packages/telescope-lib/lib/deep_extend.js //
|
|
||||||
// //
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// see: http://stackoverflow.com/questions/9399365/deep-extend-like-jquerys-for-nodejs // 1
|
|
||||||
deepExtend = function () { // 2
|
|
||||||
var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, // 3
|
|
||||||
i = 1, // 4
|
|
||||||
length = arguments.length, // 5
|
|
||||||
deep = false, // 6
|
|
||||||
toString = Object.prototype.toString, // 7
|
|
||||||
hasOwn = Object.prototype.hasOwnProperty, // 8
|
|
||||||
push = Array.prototype.push, // 9
|
|
||||||
slice = Array.prototype.slice, // 10
|
|
||||||
trim = String.prototype.trim, // 11
|
|
||||||
indexOf = Array.prototype.indexOf, // 12
|
|
||||||
class2type = { // 13
|
|
||||||
"[object Boolean]": "boolean", // 14
|
|
||||||
"[object Number]": "number", // 15
|
|
||||||
"[object String]": "string", // 16
|
|
||||||
"[object Function]": "function", // 17
|
|
||||||
"[object Array]": "array", // 18
|
|
||||||
"[object Date]": "date", // 19
|
|
||||||
"[object RegExp]": "regexp", // 20
|
|
||||||
"[object Object]": "object" // 21
|
|
||||||
}, // 22
|
|
||||||
jQuery = { // 23
|
|
||||||
isFunction: function (obj) { // 24
|
|
||||||
return jQuery.type(obj) === "function"; // 25
|
|
||||||
}, // 26
|
|
||||||
isArray: Array.isArray || // 27
|
|
||||||
function (obj) { // 28
|
|
||||||
return jQuery.type(obj) === "array"; // 29
|
|
||||||
}, // 30
|
|
||||||
isWindow: function (obj) { // 31
|
|
||||||
return obj != null && obj == obj.window; // 32
|
|
||||||
}, // 33
|
|
||||||
isNumeric: function (obj) { // 34
|
|
||||||
return !isNaN(parseFloat(obj)) && isFinite(obj); // 35
|
|
||||||
}, // 36
|
|
||||||
type: function (obj) { // 37
|
|
||||||
return obj == null ? String(obj) : class2type[toString.call(obj)] || "object"; // 38
|
|
||||||
}, // 39
|
|
||||||
isPlainObject: function (obj) { // 40
|
|
||||||
if (!obj || jQuery.type(obj) !== "object" || obj.nodeType) { // 41
|
|
||||||
return false; // 42
|
|
||||||
} // 43
|
|
||||||
try { // 44
|
|
||||||
if (obj.constructor && !hasOwn.call(obj, "constructor") && !hasOwn.call(obj.constructor.prototype, "isPrototypeOf")) {
|
|
||||||
return false; // 46
|
|
||||||
} // 47
|
|
||||||
} catch (e) { // 48
|
|
||||||
return false; // 49
|
|
||||||
} // 50
|
|
||||||
var key; // 51
|
|
||||||
for (key in obj) {} // 52
|
|
||||||
return key === undefined || hasOwn.call(obj, key); // 53
|
|
||||||
} // 54
|
|
||||||
}; // 55
|
|
||||||
if (typeof target === "boolean") { // 56
|
|
||||||
deep = target; // 57
|
|
||||||
target = arguments[1] || {}; // 58
|
|
||||||
i = 2; // 59
|
|
||||||
} // 60
|
|
||||||
if (typeof target !== "object" && !jQuery.isFunction(target)) { // 61
|
|
||||||
target = {}; // 62
|
|
||||||
} // 63
|
|
||||||
if (length === i) { // 64
|
|
||||||
target = this; // 65
|
|
||||||
--i; // 66
|
|
||||||
} // 67
|
|
||||||
for (i; i < length; i++) { // 68
|
|
||||||
if ((options = arguments[i]) != null) { // 69
|
|
||||||
for (name in options) { // 70
|
|
||||||
src = target[name]; // 71
|
|
||||||
copy = options[name]; // 72
|
|
||||||
if (target === copy) { // 73
|
|
||||||
continue; // 74
|
|
||||||
} // 75
|
|
||||||
if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)))) { // 76
|
|
||||||
if (copyIsArray) { // 77
|
|
||||||
copyIsArray = false; // 78
|
|
||||||
clone = src && jQuery.isArray(src) ? src : []; // 79
|
|
||||||
} else { // 80
|
|
||||||
clone = src && jQuery.isPlainObject(src) ? src : {}; // 81
|
|
||||||
} // 82
|
|
||||||
// WARNING: RECURSION // 83
|
|
||||||
target[name] = deepExtend(deep, clone, copy); // 84
|
|
||||||
} else if (copy !== undefined) { // 85
|
|
||||||
target[name] = copy; // 86
|
|
||||||
} // 87
|
|
||||||
} // 88
|
|
||||||
} // 89
|
|
||||||
} // 90
|
|
||||||
return target; // 91
|
|
||||||
}; // 92
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
}).call(this);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(function () {
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// //
|
|
||||||
// packages/telescope-lib/lib/autolink.js //
|
|
||||||
// //
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
//https://github.com/bryanwoods/autolink-js // 1
|
|
||||||
(function(){var a,b=[].slice;a=function(){var j,i,d,f,e,c,g,h;c=1<=arguments.length?b.call(arguments,0):[];g=/(^|\s)(\b(https?):\/\/[\-A-Z0-9+&@#\/%?=~_|!:,.;]*[\-A-Z0-9+&@#\/%=~_|]\b)/ig;if(c.length>0){e=c[0];i=e.callback;if((i!=null)&&typeof i==="function"){j=i;delete e.callback;}f="";for(d in e){h=e[d];f+=" "+d+"='"+h+"'";}return this.replace(g,function(l,o,k){var n,m;m=j&&j(k);n=m||("<a href='"+k+"'"+f+">"+k+"</a>");return""+o+n;});}else{return this.replace(g,"$1<a href='$2'>$2</a>");}};String.prototype.autoLink=a;}).call(this);
|
|
||||||
// 3
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
}).call(this);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(function () {
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// //
|
|
||||||
// packages/telescope-lib/lib/permissions.js //
|
|
||||||
// //
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
can = {}; // 1
|
|
||||||
// 2
|
|
||||||
// Permissions // 3
|
|
||||||
// 4
|
|
||||||
// user: Defaults to Meteor.user() // 5
|
|
||||||
// returnError: If there's an error, should we return what the problem is? // 6
|
|
||||||
// // 7
|
|
||||||
// return true if all is well, false || an error string if not // 8
|
|
||||||
can.view = function(user){ // 9
|
|
||||||
// console.log('canView', 'user:', user, 'returnError:', returnError, getSetting('requireViewInvite')); // 10
|
|
||||||
// 11
|
|
||||||
if(getSetting('requireViewInvite', false)){ // 12
|
|
||||||
// 13
|
|
||||||
if(Meteor.isClient){ // 14
|
|
||||||
// on client only, default to the current user // 15
|
|
||||||
var user=(typeof user === 'undefined') ? Meteor.user() : user; // 16
|
|
||||||
} // 17
|
|
||||||
// 18
|
|
||||||
if(user && (isAdmin(user) || isInvited(user))){ // 19
|
|
||||||
// if logged in AND either admin or invited // 20
|
|
||||||
return true; // 21
|
|
||||||
}else{ // 22
|
|
||||||
return false; // 23
|
|
||||||
} // 24
|
|
||||||
// 25
|
|
||||||
} // 26
|
|
||||||
return true; // 27
|
|
||||||
}; // 28
|
|
||||||
can.viewById = function(userId, returnError){ // 29
|
|
||||||
// if an invite is required to view, run permission check, else return true // 30
|
|
||||||
if(getSetting('requireViewInvite', false)){ // 31
|
|
||||||
// if user is logged in, then run canView, else return false // 32
|
|
||||||
return userId ? canView(Meteor.users.findOne(userId), returnError) : false; // 33
|
|
||||||
} // 34
|
|
||||||
return true; // 35
|
|
||||||
}; // 36
|
|
||||||
can.post = function(user, returnError){ // 37
|
|
||||||
var user=(typeof user === 'undefined') ? Meteor.user() : user; // 38
|
|
||||||
// 39
|
|
||||||
// console.log('canPost', user, action, getSetting('requirePostInvite')); // 40
|
|
||||||
// 41
|
|
||||||
if(!user){ // 42
|
|
||||||
return returnError ? "no_account" : false; // 43
|
|
||||||
} else if (isAdmin(user)) { // 44
|
|
||||||
return true; // 45
|
|
||||||
} else if (getSetting('requirePostInvite')) { // 46
|
|
||||||
if (user.isInvited) { // 47
|
|
||||||
return true; // 48
|
|
||||||
} else { // 49
|
|
||||||
return returnError ? "no_invite" : false; // 50
|
|
||||||
} // 51
|
|
||||||
} else { // 52
|
|
||||||
return true; // 53
|
|
||||||
} // 54
|
|
||||||
}; // 55
|
|
||||||
can.postById = function(userId, returnError){ // 56
|
|
||||||
var user = Meteor.users.findOne(userId); // 57
|
|
||||||
return canPost(user, returnError); // 58
|
|
||||||
}; // 59
|
|
||||||
can.comment = function(user, returnError){ // 60
|
|
||||||
return canPost(user, returnError); // 61
|
|
||||||
}; // 62
|
|
||||||
can.commentById = function(userId, returnError){ // 63
|
|
||||||
var user = Meteor.users.findOne(userId); // 64
|
|
||||||
return canComment(user, returnError); // 65
|
|
||||||
}; // 66
|
|
||||||
can.upvote = function(user, collection, returnError){ // 67
|
|
||||||
return canPost(user, returnError); // 68
|
|
||||||
}; // 69
|
|
||||||
can.upvoteById = function(userId, returnError){ // 70
|
|
||||||
var user = Meteor.users.findOne(userId); // 71
|
|
||||||
return canUpvote(user, returnError); // 72
|
|
||||||
}; // 73
|
|
||||||
can.downvote = function(user, collection, returnError){ // 74
|
|
||||||
return canPost(user, returnError); // 75
|
|
||||||
}; // 76
|
|
||||||
can.downvoteById = function(userId, returnError){ // 77
|
|
||||||
var user = Meteor.users.findOne(userId); // 78
|
|
||||||
return canDownvote(user, returnError); // 79
|
|
||||||
}; // 80
|
|
||||||
can.edit = function(user, item, returnError){ // 81
|
|
||||||
var user=(typeof user === 'undefined') ? Meteor.user() : user; // 82
|
|
||||||
// 83
|
|
||||||
if (!user || !item){ // 84
|
|
||||||
return returnError ? "no_rights" : false; // 85
|
|
||||||
} else if (isAdmin(user)) { // 86
|
|
||||||
return true; // 87
|
|
||||||
} else if (user._id!==item.userId) { // 88
|
|
||||||
return returnError ? "no_rights" : false; // 89
|
|
||||||
}else { // 90
|
|
||||||
return true; // 91
|
|
||||||
} // 92
|
|
||||||
}; // 93
|
|
||||||
can.editById = function(userId, item){ // 94
|
|
||||||
var user = Meteor.users.findOne(userId); // 95
|
|
||||||
return canEdit(user, item); // 96
|
|
||||||
}; // 97
|
|
||||||
can.currentUserEdit = function(item) { // 98
|
|
||||||
return canEdit(Meteor.user(), item); // 99
|
|
||||||
}; // 100
|
|
||||||
can.invite = function(user){ // 101
|
|
||||||
return isInvited(user) || isAdmin(user); // 102
|
|
||||||
}; // 103
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
}).call(this);
|
|
File diff suppressed because one or more lines are too long
|
@ -1 +0,0 @@
|
||||||
// This file is included for compatibility with the Meteor 0.6.4 package downloader.
|
|
|
@ -1,23 +0,0 @@
|
||||||
{
|
|
||||||
"name": "telescope-lib",
|
|
||||||
"summary": "Telescope library package",
|
|
||||||
"version": "0.2.9+3c5fc781baa945505183378ea284deac3068520b",
|
|
||||||
"earliestCompatibleVersion": "0.0.0",
|
|
||||||
"isTest": false,
|
|
||||||
"plugins": [],
|
|
||||||
"unibuilds": [
|
|
||||||
{
|
|
||||||
"arch": "os",
|
|
||||||
"path": "os.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"arch": "web.browser",
|
|
||||||
"path": "web.browser.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"arch": "web.cordova",
|
|
||||||
"path": "web.cordova.json"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"format": "unipackage-pre2"
|
|
||||||
}
|
|
|
@ -1,73 +0,0 @@
|
||||||
{
|
|
||||||
"format": "unipackage-unibuild-pre1",
|
|
||||||
"packageVariables": [
|
|
||||||
{
|
|
||||||
"name": "deepExtend",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "camelToDash",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "dashToCamel",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "camelCaseify",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "getSetting",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "getThemeSetting",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "getSiteUrl",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "trimWords",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "can",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "_",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "capitalise",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "expString"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"uses": [
|
|
||||||
{
|
|
||||||
"package": "meteor"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"package": "underscore"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"package": "jquery"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"resources": [
|
|
||||||
{
|
|
||||||
"type": "prelink",
|
|
||||||
"file": "web.browser/packages/telescope-lib.js",
|
|
||||||
"length": 47110,
|
|
||||||
"offset": 0,
|
|
||||||
"servePath": "/packages/telescope-lib.js",
|
|
||||||
"sourceMap": "web.browser/packages/telescope-lib.js.map"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -1,427 +0,0 @@
|
||||||
(function () {
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// //
|
|
||||||
// packages/telescope-lib/lib/lib.js //
|
|
||||||
// //
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
getSiteUrl = function () { // 1
|
|
||||||
return getSetting('siteUrl', Meteor.absoluteUrl()); // 2
|
|
||||||
} // 3
|
|
||||||
// 4
|
|
||||||
getSetting = function(setting, defaultValue){ // 5
|
|
||||||
var settings = Settings.find().fetch()[0]; // 6
|
|
||||||
// 7
|
|
||||||
if (Meteor.isServer && Meteor.settings && !!Meteor.settings[setting]) { // if on the server, look in Meteor.settings // 8
|
|
||||||
return Meteor.settings[setting]; // 9
|
|
||||||
// 10
|
|
||||||
} else if (Meteor.settings && Meteor.settings.public && !!Meteor.settings.public[setting]) { // look in Meteor.settings.public
|
|
||||||
return Meteor.settings.public[setting]; // 12
|
|
||||||
// 13
|
|
||||||
} else if(settings && (typeof settings[setting] !== 'undefined')) { // look in Settings collection // 14
|
|
||||||
return settings[setting]; // 15
|
|
||||||
// 16
|
|
||||||
} else if (typeof defaultValue !== 'undefined') { // fallback to default // 17
|
|
||||||
return defaultValue; // 18
|
|
||||||
// 19
|
|
||||||
} else { // or return undefined // 20
|
|
||||||
return undefined; // 21
|
|
||||||
} // 22
|
|
||||||
// 23
|
|
||||||
}; // 24
|
|
||||||
// 25
|
|
||||||
getThemeSetting = function(setting, defaultValue){ // 26
|
|
||||||
if(typeof themeSettings[setting] !== 'undefined'){ // 27
|
|
||||||
return themeSettings[setting]; // 28
|
|
||||||
}else{ // 29
|
|
||||||
return typeof defaultValue === 'undefined' ? '' : defaultValue; // 30
|
|
||||||
} // 31
|
|
||||||
}; // 32
|
|
||||||
// 33
|
|
||||||
camelToDash = function (str) { // 34
|
|
||||||
return str.replace(/\W+/g, '-').replace(/([a-z\d])([A-Z])/g, '$1-$2').toLowerCase(); // 35
|
|
||||||
} // 36
|
|
||||||
// 37
|
|
||||||
camelCaseify = function(str) { // 38
|
|
||||||
return dashToCamel(str.replace(' ', '-')); // 39
|
|
||||||
} // 40
|
|
||||||
// 41
|
|
||||||
dashToCamel = function (str) { // 42
|
|
||||||
return str.replace(/(\-[a-z])/g, function($1){return $1.toUpperCase().replace('-','');}); // 43
|
|
||||||
} // 44
|
|
||||||
// 45
|
|
||||||
trimWords = function(s, numWords) { // 46
|
|
||||||
expString = s.split(/\s+/,numWords); // 47
|
|
||||||
if(expString.length >= numWords) // 48
|
|
||||||
return expString.join(" ")+"…"; // 49
|
|
||||||
return s; // 50
|
|
||||||
}; // 51
|
|
||||||
// 52
|
|
||||||
capitalise = function (string) { // 53
|
|
||||||
return string.charAt(0).toUpperCase() + string.slice(1); // 54
|
|
||||||
} // 55
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
}).call(this);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(function () {
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// //
|
|
||||||
// packages/telescope-lib/lib/deep.js //
|
|
||||||
// //
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// see https://gist.github.com/furf/3208381 // 1
|
|
||||||
// 2
|
|
||||||
_.mixin({ // 3
|
|
||||||
// 4
|
|
||||||
// Get/set the value of a nested property // 5
|
|
||||||
deep: function (obj, key, value) { // 6
|
|
||||||
// 7
|
|
||||||
var keys = key.replace(/\[(["']?)([^\1]+?)\1?\]/g, '.$2').replace(/^\./, '').split('.'), // 8
|
|
||||||
root, // 9
|
|
||||||
i = 0, // 10
|
|
||||||
n = keys.length; // 11
|
|
||||||
// 12
|
|
||||||
// Set deep value // 13
|
|
||||||
if (arguments.length > 2) { // 14
|
|
||||||
// 15
|
|
||||||
root = obj; // 16
|
|
||||||
n--; // 17
|
|
||||||
// 18
|
|
||||||
while (i < n) { // 19
|
|
||||||
key = keys[i++]; // 20
|
|
||||||
obj = obj[key] = _.isObject(obj[key]) ? obj[key] : {}; // 21
|
|
||||||
} // 22
|
|
||||||
// 23
|
|
||||||
obj[keys[i]] = value; // 24
|
|
||||||
// 25
|
|
||||||
value = root; // 26
|
|
||||||
// 27
|
|
||||||
// Get deep value // 28
|
|
||||||
} else { // 29
|
|
||||||
while ((obj = obj[keys[i++]]) != null && i < n) {}; // 30
|
|
||||||
value = i < n ? void 0 : obj; // 31
|
|
||||||
} // 32
|
|
||||||
// 33
|
|
||||||
return value; // 34
|
|
||||||
} // 35
|
|
||||||
// 36
|
|
||||||
}); // 37
|
|
||||||
// 38
|
|
||||||
// Usage: // 39
|
|
||||||
// // 40
|
|
||||||
// var obj = { // 41
|
|
||||||
// a: { // 42
|
|
||||||
// b: { // 43
|
|
||||||
// c: { // 44
|
|
||||||
// d: ['e', 'f', 'g'] // 45
|
|
||||||
// } // 46
|
|
||||||
// } // 47
|
|
||||||
// } // 48
|
|
||||||
// }; // 49
|
|
||||||
// // 50
|
|
||||||
// Get deep value // 51
|
|
||||||
// _.deep(obj, 'a.b.c.d[2]'); // 'g' // 52
|
|
||||||
// // 53
|
|
||||||
// Set deep value // 54
|
|
||||||
// _.deep(obj, 'a.b.c.d[2]', 'george'); // 55
|
|
||||||
// // 56
|
|
||||||
// _.deep(obj, 'a.b.c.d[2]'); // 'george' // 57
|
|
||||||
// 58
|
|
||||||
// 59
|
|
||||||
_.mixin({ // 60
|
|
||||||
pluckDeep: function (obj, key) { // 61
|
|
||||||
return _.map(obj, function (value) { return _.deep(value, key); }); // 62
|
|
||||||
} // 63
|
|
||||||
}); // 64
|
|
||||||
// 65
|
|
||||||
// 66
|
|
||||||
_.mixin({ // 67
|
|
||||||
// 68
|
|
||||||
// Return a copy of an object containing all but the blacklisted properties. // 69
|
|
||||||
unpick: function (obj) { // 70
|
|
||||||
obj || (obj = {}); // 71
|
|
||||||
return _.pick(obj, _.difference(_.keys(obj), _.flatten(Array.prototype.slice.call(arguments, 1)))); // 72
|
|
||||||
} // 73
|
|
||||||
// 74
|
|
||||||
}); // 75
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
}).call(this);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(function () {
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// //
|
|
||||||
// packages/telescope-lib/lib/deep_extend.js //
|
|
||||||
// //
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// see: http://stackoverflow.com/questions/9399365/deep-extend-like-jquerys-for-nodejs // 1
|
|
||||||
deepExtend = function () { // 2
|
|
||||||
var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, // 3
|
|
||||||
i = 1, // 4
|
|
||||||
length = arguments.length, // 5
|
|
||||||
deep = false, // 6
|
|
||||||
toString = Object.prototype.toString, // 7
|
|
||||||
hasOwn = Object.prototype.hasOwnProperty, // 8
|
|
||||||
push = Array.prototype.push, // 9
|
|
||||||
slice = Array.prototype.slice, // 10
|
|
||||||
trim = String.prototype.trim, // 11
|
|
||||||
indexOf = Array.prototype.indexOf, // 12
|
|
||||||
class2type = { // 13
|
|
||||||
"[object Boolean]": "boolean", // 14
|
|
||||||
"[object Number]": "number", // 15
|
|
||||||
"[object String]": "string", // 16
|
|
||||||
"[object Function]": "function", // 17
|
|
||||||
"[object Array]": "array", // 18
|
|
||||||
"[object Date]": "date", // 19
|
|
||||||
"[object RegExp]": "regexp", // 20
|
|
||||||
"[object Object]": "object" // 21
|
|
||||||
}, // 22
|
|
||||||
jQuery = { // 23
|
|
||||||
isFunction: function (obj) { // 24
|
|
||||||
return jQuery.type(obj) === "function"; // 25
|
|
||||||
}, // 26
|
|
||||||
isArray: Array.isArray || // 27
|
|
||||||
function (obj) { // 28
|
|
||||||
return jQuery.type(obj) === "array"; // 29
|
|
||||||
}, // 30
|
|
||||||
isWindow: function (obj) { // 31
|
|
||||||
return obj != null && obj == obj.window; // 32
|
|
||||||
}, // 33
|
|
||||||
isNumeric: function (obj) { // 34
|
|
||||||
return !isNaN(parseFloat(obj)) && isFinite(obj); // 35
|
|
||||||
}, // 36
|
|
||||||
type: function (obj) { // 37
|
|
||||||
return obj == null ? String(obj) : class2type[toString.call(obj)] || "object"; // 38
|
|
||||||
}, // 39
|
|
||||||
isPlainObject: function (obj) { // 40
|
|
||||||
if (!obj || jQuery.type(obj) !== "object" || obj.nodeType) { // 41
|
|
||||||
return false; // 42
|
|
||||||
} // 43
|
|
||||||
try { // 44
|
|
||||||
if (obj.constructor && !hasOwn.call(obj, "constructor") && !hasOwn.call(obj.constructor.prototype, "isPrototypeOf")) {
|
|
||||||
return false; // 46
|
|
||||||
} // 47
|
|
||||||
} catch (e) { // 48
|
|
||||||
return false; // 49
|
|
||||||
} // 50
|
|
||||||
var key; // 51
|
|
||||||
for (key in obj) {} // 52
|
|
||||||
return key === undefined || hasOwn.call(obj, key); // 53
|
|
||||||
} // 54
|
|
||||||
}; // 55
|
|
||||||
if (typeof target === "boolean") { // 56
|
|
||||||
deep = target; // 57
|
|
||||||
target = arguments[1] || {}; // 58
|
|
||||||
i = 2; // 59
|
|
||||||
} // 60
|
|
||||||
if (typeof target !== "object" && !jQuery.isFunction(target)) { // 61
|
|
||||||
target = {}; // 62
|
|
||||||
} // 63
|
|
||||||
if (length === i) { // 64
|
|
||||||
target = this; // 65
|
|
||||||
--i; // 66
|
|
||||||
} // 67
|
|
||||||
for (i; i < length; i++) { // 68
|
|
||||||
if ((options = arguments[i]) != null) { // 69
|
|
||||||
for (name in options) { // 70
|
|
||||||
src = target[name]; // 71
|
|
||||||
copy = options[name]; // 72
|
|
||||||
if (target === copy) { // 73
|
|
||||||
continue; // 74
|
|
||||||
} // 75
|
|
||||||
if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)))) { // 76
|
|
||||||
if (copyIsArray) { // 77
|
|
||||||
copyIsArray = false; // 78
|
|
||||||
clone = src && jQuery.isArray(src) ? src : []; // 79
|
|
||||||
} else { // 80
|
|
||||||
clone = src && jQuery.isPlainObject(src) ? src : {}; // 81
|
|
||||||
} // 82
|
|
||||||
// WARNING: RECURSION // 83
|
|
||||||
target[name] = deepExtend(deep, clone, copy); // 84
|
|
||||||
} else if (copy !== undefined) { // 85
|
|
||||||
target[name] = copy; // 86
|
|
||||||
} // 87
|
|
||||||
} // 88
|
|
||||||
} // 89
|
|
||||||
} // 90
|
|
||||||
return target; // 91
|
|
||||||
}; // 92
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
}).call(this);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(function () {
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// //
|
|
||||||
// packages/telescope-lib/lib/autolink.js //
|
|
||||||
// //
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
//https://github.com/bryanwoods/autolink-js // 1
|
|
||||||
(function(){var a,b=[].slice;a=function(){var j,i,d,f,e,c,g,h;c=1<=arguments.length?b.call(arguments,0):[];g=/(^|\s)(\b(https?):\/\/[\-A-Z0-9+&@#\/%?=~_|!:,.;]*[\-A-Z0-9+&@#\/%=~_|]\b)/ig;if(c.length>0){e=c[0];i=e.callback;if((i!=null)&&typeof i==="function"){j=i;delete e.callback;}f="";for(d in e){h=e[d];f+=" "+d+"='"+h+"'";}return this.replace(g,function(l,o,k){var n,m;m=j&&j(k);n=m||("<a href='"+k+"'"+f+">"+k+"</a>");return""+o+n;});}else{return this.replace(g,"$1<a href='$2'>$2</a>");}};String.prototype.autoLink=a;}).call(this);
|
|
||||||
// 3
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
}).call(this);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(function () {
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// //
|
|
||||||
// packages/telescope-lib/lib/permissions.js //
|
|
||||||
// //
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
can = {}; // 1
|
|
||||||
// 2
|
|
||||||
// Permissions // 3
|
|
||||||
// 4
|
|
||||||
// user: Defaults to Meteor.user() // 5
|
|
||||||
// returnError: If there's an error, should we return what the problem is? // 6
|
|
||||||
// // 7
|
|
||||||
// return true if all is well, false || an error string if not // 8
|
|
||||||
can.view = function(user){ // 9
|
|
||||||
// console.log('canView', 'user:', user, 'returnError:', returnError, getSetting('requireViewInvite')); // 10
|
|
||||||
// 11
|
|
||||||
if(getSetting('requireViewInvite', false)){ // 12
|
|
||||||
// 13
|
|
||||||
if(Meteor.isClient){ // 14
|
|
||||||
// on client only, default to the current user // 15
|
|
||||||
var user=(typeof user === 'undefined') ? Meteor.user() : user; // 16
|
|
||||||
} // 17
|
|
||||||
// 18
|
|
||||||
if(user && (isAdmin(user) || isInvited(user))){ // 19
|
|
||||||
// if logged in AND either admin or invited // 20
|
|
||||||
return true; // 21
|
|
||||||
}else{ // 22
|
|
||||||
return false; // 23
|
|
||||||
} // 24
|
|
||||||
// 25
|
|
||||||
} // 26
|
|
||||||
return true; // 27
|
|
||||||
}; // 28
|
|
||||||
can.viewById = function(userId, returnError){ // 29
|
|
||||||
// if an invite is required to view, run permission check, else return true // 30
|
|
||||||
if(getSetting('requireViewInvite', false)){ // 31
|
|
||||||
// if user is logged in, then run canView, else return false // 32
|
|
||||||
return userId ? canView(Meteor.users.findOne(userId), returnError) : false; // 33
|
|
||||||
} // 34
|
|
||||||
return true; // 35
|
|
||||||
}; // 36
|
|
||||||
can.post = function(user, returnError){ // 37
|
|
||||||
var user=(typeof user === 'undefined') ? Meteor.user() : user; // 38
|
|
||||||
// 39
|
|
||||||
// console.log('canPost', user, action, getSetting('requirePostInvite')); // 40
|
|
||||||
// 41
|
|
||||||
if(!user){ // 42
|
|
||||||
return returnError ? "no_account" : false; // 43
|
|
||||||
} else if (isAdmin(user)) { // 44
|
|
||||||
return true; // 45
|
|
||||||
} else if (getSetting('requirePostInvite')) { // 46
|
|
||||||
if (user.isInvited) { // 47
|
|
||||||
return true; // 48
|
|
||||||
} else { // 49
|
|
||||||
return returnError ? "no_invite" : false; // 50
|
|
||||||
} // 51
|
|
||||||
} else { // 52
|
|
||||||
return true; // 53
|
|
||||||
} // 54
|
|
||||||
}; // 55
|
|
||||||
can.postById = function(userId, returnError){ // 56
|
|
||||||
var user = Meteor.users.findOne(userId); // 57
|
|
||||||
return canPost(user, returnError); // 58
|
|
||||||
}; // 59
|
|
||||||
can.comment = function(user, returnError){ // 60
|
|
||||||
return canPost(user, returnError); // 61
|
|
||||||
}; // 62
|
|
||||||
can.commentById = function(userId, returnError){ // 63
|
|
||||||
var user = Meteor.users.findOne(userId); // 64
|
|
||||||
return canComment(user, returnError); // 65
|
|
||||||
}; // 66
|
|
||||||
can.upvote = function(user, collection, returnError){ // 67
|
|
||||||
return canPost(user, returnError); // 68
|
|
||||||
}; // 69
|
|
||||||
can.upvoteById = function(userId, returnError){ // 70
|
|
||||||
var user = Meteor.users.findOne(userId); // 71
|
|
||||||
return canUpvote(user, returnError); // 72
|
|
||||||
}; // 73
|
|
||||||
can.downvote = function(user, collection, returnError){ // 74
|
|
||||||
return canPost(user, returnError); // 75
|
|
||||||
}; // 76
|
|
||||||
can.downvoteById = function(userId, returnError){ // 77
|
|
||||||
var user = Meteor.users.findOne(userId); // 78
|
|
||||||
return canDownvote(user, returnError); // 79
|
|
||||||
}; // 80
|
|
||||||
can.edit = function(user, item, returnError){ // 81
|
|
||||||
var user=(typeof user === 'undefined') ? Meteor.user() : user; // 82
|
|
||||||
// 83
|
|
||||||
if (!user || !item){ // 84
|
|
||||||
return returnError ? "no_rights" : false; // 85
|
|
||||||
} else if (isAdmin(user)) { // 86
|
|
||||||
return true; // 87
|
|
||||||
} else if (user._id!==item.userId) { // 88
|
|
||||||
return returnError ? "no_rights" : false; // 89
|
|
||||||
}else { // 90
|
|
||||||
return true; // 91
|
|
||||||
} // 92
|
|
||||||
}; // 93
|
|
||||||
can.editById = function(userId, item){ // 94
|
|
||||||
var user = Meteor.users.findOne(userId); // 95
|
|
||||||
return canEdit(user, item); // 96
|
|
||||||
}; // 97
|
|
||||||
can.currentUserEdit = function(item) { // 98
|
|
||||||
return canEdit(Meteor.user(), item); // 99
|
|
||||||
}; // 100
|
|
||||||
can.invite = function(user){ // 101
|
|
||||||
return isInvited(user) || isAdmin(user); // 102
|
|
||||||
}; // 103
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
}).call(this);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(function () {
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// //
|
|
||||||
// packages/telescope-lib/lib/client/jquery.exists.js //
|
|
||||||
// //
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
$.fn.exists = function () { // 1
|
|
||||||
return this.length !== 0; // 2
|
|
||||||
} // 3
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
}).call(this);
|
|
File diff suppressed because one or more lines are too long
|
@ -1,73 +0,0 @@
|
||||||
{
|
|
||||||
"format": "unipackage-unibuild-pre1",
|
|
||||||
"packageVariables": [
|
|
||||||
{
|
|
||||||
"name": "deepExtend",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "camelToDash",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "dashToCamel",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "camelCaseify",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "getSetting",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "getThemeSetting",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "getSiteUrl",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "trimWords",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "can",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "_",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "capitalise",
|
|
||||||
"export": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "expString"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"uses": [
|
|
||||||
{
|
|
||||||
"package": "meteor"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"package": "underscore"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"package": "jquery"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"resources": [
|
|
||||||
{
|
|
||||||
"type": "prelink",
|
|
||||||
"file": "web.cordova/packages/telescope-lib.js",
|
|
||||||
"length": 47110,
|
|
||||||
"offset": 0,
|
|
||||||
"servePath": "/packages/telescope-lib.js",
|
|
||||||
"sourceMap": "web.cordova/packages/telescope-lib.js.map"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -1,427 +0,0 @@
|
||||||
(function () {
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// //
|
|
||||||
// packages/telescope-lib/lib/lib.js //
|
|
||||||
// //
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
getSiteUrl = function () { // 1
|
|
||||||
return getSetting('siteUrl', Meteor.absoluteUrl()); // 2
|
|
||||||
} // 3
|
|
||||||
// 4
|
|
||||||
getSetting = function(setting, defaultValue){ // 5
|
|
||||||
var settings = Settings.find().fetch()[0]; // 6
|
|
||||||
// 7
|
|
||||||
if (Meteor.isServer && Meteor.settings && !!Meteor.settings[setting]) { // if on the server, look in Meteor.settings // 8
|
|
||||||
return Meteor.settings[setting]; // 9
|
|
||||||
// 10
|
|
||||||
} else if (Meteor.settings && Meteor.settings.public && !!Meteor.settings.public[setting]) { // look in Meteor.settings.public
|
|
||||||
return Meteor.settings.public[setting]; // 12
|
|
||||||
// 13
|
|
||||||
} else if(settings && (typeof settings[setting] !== 'undefined')) { // look in Settings collection // 14
|
|
||||||
return settings[setting]; // 15
|
|
||||||
// 16
|
|
||||||
} else if (typeof defaultValue !== 'undefined') { // fallback to default // 17
|
|
||||||
return defaultValue; // 18
|
|
||||||
// 19
|
|
||||||
} else { // or return undefined // 20
|
|
||||||
return undefined; // 21
|
|
||||||
} // 22
|
|
||||||
// 23
|
|
||||||
}; // 24
|
|
||||||
// 25
|
|
||||||
getThemeSetting = function(setting, defaultValue){ // 26
|
|
||||||
if(typeof themeSettings[setting] !== 'undefined'){ // 27
|
|
||||||
return themeSettings[setting]; // 28
|
|
||||||
}else{ // 29
|
|
||||||
return typeof defaultValue === 'undefined' ? '' : defaultValue; // 30
|
|
||||||
} // 31
|
|
||||||
}; // 32
|
|
||||||
// 33
|
|
||||||
camelToDash = function (str) { // 34
|
|
||||||
return str.replace(/\W+/g, '-').replace(/([a-z\d])([A-Z])/g, '$1-$2').toLowerCase(); // 35
|
|
||||||
} // 36
|
|
||||||
// 37
|
|
||||||
camelCaseify = function(str) { // 38
|
|
||||||
return dashToCamel(str.replace(' ', '-')); // 39
|
|
||||||
} // 40
|
|
||||||
// 41
|
|
||||||
dashToCamel = function (str) { // 42
|
|
||||||
return str.replace(/(\-[a-z])/g, function($1){return $1.toUpperCase().replace('-','');}); // 43
|
|
||||||
} // 44
|
|
||||||
// 45
|
|
||||||
trimWords = function(s, numWords) { // 46
|
|
||||||
expString = s.split(/\s+/,numWords); // 47
|
|
||||||
if(expString.length >= numWords) // 48
|
|
||||||
return expString.join(" ")+"…"; // 49
|
|
||||||
return s; // 50
|
|
||||||
}; // 51
|
|
||||||
// 52
|
|
||||||
capitalise = function (string) { // 53
|
|
||||||
return string.charAt(0).toUpperCase() + string.slice(1); // 54
|
|
||||||
} // 55
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
}).call(this);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(function () {
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// //
|
|
||||||
// packages/telescope-lib/lib/deep.js //
|
|
||||||
// //
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// see https://gist.github.com/furf/3208381 // 1
|
|
||||||
// 2
|
|
||||||
_.mixin({ // 3
|
|
||||||
// 4
|
|
||||||
// Get/set the value of a nested property // 5
|
|
||||||
deep: function (obj, key, value) { // 6
|
|
||||||
// 7
|
|
||||||
var keys = key.replace(/\[(["']?)([^\1]+?)\1?\]/g, '.$2').replace(/^\./, '').split('.'), // 8
|
|
||||||
root, // 9
|
|
||||||
i = 0, // 10
|
|
||||||
n = keys.length; // 11
|
|
||||||
// 12
|
|
||||||
// Set deep value // 13
|
|
||||||
if (arguments.length > 2) { // 14
|
|
||||||
// 15
|
|
||||||
root = obj; // 16
|
|
||||||
n--; // 17
|
|
||||||
// 18
|
|
||||||
while (i < n) { // 19
|
|
||||||
key = keys[i++]; // 20
|
|
||||||
obj = obj[key] = _.isObject(obj[key]) ? obj[key] : {}; // 21
|
|
||||||
} // 22
|
|
||||||
// 23
|
|
||||||
obj[keys[i]] = value; // 24
|
|
||||||
// 25
|
|
||||||
value = root; // 26
|
|
||||||
// 27
|
|
||||||
// Get deep value // 28
|
|
||||||
} else { // 29
|
|
||||||
while ((obj = obj[keys[i++]]) != null && i < n) {}; // 30
|
|
||||||
value = i < n ? void 0 : obj; // 31
|
|
||||||
} // 32
|
|
||||||
// 33
|
|
||||||
return value; // 34
|
|
||||||
} // 35
|
|
||||||
// 36
|
|
||||||
}); // 37
|
|
||||||
// 38
|
|
||||||
// Usage: // 39
|
|
||||||
// // 40
|
|
||||||
// var obj = { // 41
|
|
||||||
// a: { // 42
|
|
||||||
// b: { // 43
|
|
||||||
// c: { // 44
|
|
||||||
// d: ['e', 'f', 'g'] // 45
|
|
||||||
// } // 46
|
|
||||||
// } // 47
|
|
||||||
// } // 48
|
|
||||||
// }; // 49
|
|
||||||
// // 50
|
|
||||||
// Get deep value // 51
|
|
||||||
// _.deep(obj, 'a.b.c.d[2]'); // 'g' // 52
|
|
||||||
// // 53
|
|
||||||
// Set deep value // 54
|
|
||||||
// _.deep(obj, 'a.b.c.d[2]', 'george'); // 55
|
|
||||||
// // 56
|
|
||||||
// _.deep(obj, 'a.b.c.d[2]'); // 'george' // 57
|
|
||||||
// 58
|
|
||||||
// 59
|
|
||||||
_.mixin({ // 60
|
|
||||||
pluckDeep: function (obj, key) { // 61
|
|
||||||
return _.map(obj, function (value) { return _.deep(value, key); }); // 62
|
|
||||||
} // 63
|
|
||||||
}); // 64
|
|
||||||
// 65
|
|
||||||
// 66
|
|
||||||
_.mixin({ // 67
|
|
||||||
// 68
|
|
||||||
// Return a copy of an object containing all but the blacklisted properties. // 69
|
|
||||||
unpick: function (obj) { // 70
|
|
||||||
obj || (obj = {}); // 71
|
|
||||||
return _.pick(obj, _.difference(_.keys(obj), _.flatten(Array.prototype.slice.call(arguments, 1)))); // 72
|
|
||||||
} // 73
|
|
||||||
// 74
|
|
||||||
}); // 75
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
}).call(this);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(function () {
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// //
|
|
||||||
// packages/telescope-lib/lib/deep_extend.js //
|
|
||||||
// //
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// see: http://stackoverflow.com/questions/9399365/deep-extend-like-jquerys-for-nodejs // 1
|
|
||||||
deepExtend = function () { // 2
|
|
||||||
var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, // 3
|
|
||||||
i = 1, // 4
|
|
||||||
length = arguments.length, // 5
|
|
||||||
deep = false, // 6
|
|
||||||
toString = Object.prototype.toString, // 7
|
|
||||||
hasOwn = Object.prototype.hasOwnProperty, // 8
|
|
||||||
push = Array.prototype.push, // 9
|
|
||||||
slice = Array.prototype.slice, // 10
|
|
||||||
trim = String.prototype.trim, // 11
|
|
||||||
indexOf = Array.prototype.indexOf, // 12
|
|
||||||
class2type = { // 13
|
|
||||||
"[object Boolean]": "boolean", // 14
|
|
||||||
"[object Number]": "number", // 15
|
|
||||||
"[object String]": "string", // 16
|
|
||||||
"[object Function]": "function", // 17
|
|
||||||
"[object Array]": "array", // 18
|
|
||||||
"[object Date]": "date", // 19
|
|
||||||
"[object RegExp]": "regexp", // 20
|
|
||||||
"[object Object]": "object" // 21
|
|
||||||
}, // 22
|
|
||||||
jQuery = { // 23
|
|
||||||
isFunction: function (obj) { // 24
|
|
||||||
return jQuery.type(obj) === "function"; // 25
|
|
||||||
}, // 26
|
|
||||||
isArray: Array.isArray || // 27
|
|
||||||
function (obj) { // 28
|
|
||||||
return jQuery.type(obj) === "array"; // 29
|
|
||||||
}, // 30
|
|
||||||
isWindow: function (obj) { // 31
|
|
||||||
return obj != null && obj == obj.window; // 32
|
|
||||||
}, // 33
|
|
||||||
isNumeric: function (obj) { // 34
|
|
||||||
return !isNaN(parseFloat(obj)) && isFinite(obj); // 35
|
|
||||||
}, // 36
|
|
||||||
type: function (obj) { // 37
|
|
||||||
return obj == null ? String(obj) : class2type[toString.call(obj)] || "object"; // 38
|
|
||||||
}, // 39
|
|
||||||
isPlainObject: function (obj) { // 40
|
|
||||||
if (!obj || jQuery.type(obj) !== "object" || obj.nodeType) { // 41
|
|
||||||
return false; // 42
|
|
||||||
} // 43
|
|
||||||
try { // 44
|
|
||||||
if (obj.constructor && !hasOwn.call(obj, "constructor") && !hasOwn.call(obj.constructor.prototype, "isPrototypeOf")) {
|
|
||||||
return false; // 46
|
|
||||||
} // 47
|
|
||||||
} catch (e) { // 48
|
|
||||||
return false; // 49
|
|
||||||
} // 50
|
|
||||||
var key; // 51
|
|
||||||
for (key in obj) {} // 52
|
|
||||||
return key === undefined || hasOwn.call(obj, key); // 53
|
|
||||||
} // 54
|
|
||||||
}; // 55
|
|
||||||
if (typeof target === "boolean") { // 56
|
|
||||||
deep = target; // 57
|
|
||||||
target = arguments[1] || {}; // 58
|
|
||||||
i = 2; // 59
|
|
||||||
} // 60
|
|
||||||
if (typeof target !== "object" && !jQuery.isFunction(target)) { // 61
|
|
||||||
target = {}; // 62
|
|
||||||
} // 63
|
|
||||||
if (length === i) { // 64
|
|
||||||
target = this; // 65
|
|
||||||
--i; // 66
|
|
||||||
} // 67
|
|
||||||
for (i; i < length; i++) { // 68
|
|
||||||
if ((options = arguments[i]) != null) { // 69
|
|
||||||
for (name in options) { // 70
|
|
||||||
src = target[name]; // 71
|
|
||||||
copy = options[name]; // 72
|
|
||||||
if (target === copy) { // 73
|
|
||||||
continue; // 74
|
|
||||||
} // 75
|
|
||||||
if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)))) { // 76
|
|
||||||
if (copyIsArray) { // 77
|
|
||||||
copyIsArray = false; // 78
|
|
||||||
clone = src && jQuery.isArray(src) ? src : []; // 79
|
|
||||||
} else { // 80
|
|
||||||
clone = src && jQuery.isPlainObject(src) ? src : {}; // 81
|
|
||||||
} // 82
|
|
||||||
// WARNING: RECURSION // 83
|
|
||||||
target[name] = deepExtend(deep, clone, copy); // 84
|
|
||||||
} else if (copy !== undefined) { // 85
|
|
||||||
target[name] = copy; // 86
|
|
||||||
} // 87
|
|
||||||
} // 88
|
|
||||||
} // 89
|
|
||||||
} // 90
|
|
||||||
return target; // 91
|
|
||||||
}; // 92
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
}).call(this);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(function () {
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// //
|
|
||||||
// packages/telescope-lib/lib/autolink.js //
|
|
||||||
// //
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
//https://github.com/bryanwoods/autolink-js // 1
|
|
||||||
(function(){var a,b=[].slice;a=function(){var j,i,d,f,e,c,g,h;c=1<=arguments.length?b.call(arguments,0):[];g=/(^|\s)(\b(https?):\/\/[\-A-Z0-9+&@#\/%?=~_|!:,.;]*[\-A-Z0-9+&@#\/%=~_|]\b)/ig;if(c.length>0){e=c[0];i=e.callback;if((i!=null)&&typeof i==="function"){j=i;delete e.callback;}f="";for(d in e){h=e[d];f+=" "+d+"='"+h+"'";}return this.replace(g,function(l,o,k){var n,m;m=j&&j(k);n=m||("<a href='"+k+"'"+f+">"+k+"</a>");return""+o+n;});}else{return this.replace(g,"$1<a href='$2'>$2</a>");}};String.prototype.autoLink=a;}).call(this);
|
|
||||||
// 3
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
}).call(this);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(function () {
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// //
|
|
||||||
// packages/telescope-lib/lib/permissions.js //
|
|
||||||
// //
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
can = {}; // 1
|
|
||||||
// 2
|
|
||||||
// Permissions // 3
|
|
||||||
// 4
|
|
||||||
// user: Defaults to Meteor.user() // 5
|
|
||||||
// returnError: If there's an error, should we return what the problem is? // 6
|
|
||||||
// // 7
|
|
||||||
// return true if all is well, false || an error string if not // 8
|
|
||||||
can.view = function(user){ // 9
|
|
||||||
// console.log('canView', 'user:', user, 'returnError:', returnError, getSetting('requireViewInvite')); // 10
|
|
||||||
// 11
|
|
||||||
if(getSetting('requireViewInvite', false)){ // 12
|
|
||||||
// 13
|
|
||||||
if(Meteor.isClient){ // 14
|
|
||||||
// on client only, default to the current user // 15
|
|
||||||
var user=(typeof user === 'undefined') ? Meteor.user() : user; // 16
|
|
||||||
} // 17
|
|
||||||
// 18
|
|
||||||
if(user && (isAdmin(user) || isInvited(user))){ // 19
|
|
||||||
// if logged in AND either admin or invited // 20
|
|
||||||
return true; // 21
|
|
||||||
}else{ // 22
|
|
||||||
return false; // 23
|
|
||||||
} // 24
|
|
||||||
// 25
|
|
||||||
} // 26
|
|
||||||
return true; // 27
|
|
||||||
}; // 28
|
|
||||||
can.viewById = function(userId, returnError){ // 29
|
|
||||||
// if an invite is required to view, run permission check, else return true // 30
|
|
||||||
if(getSetting('requireViewInvite', false)){ // 31
|
|
||||||
// if user is logged in, then run canView, else return false // 32
|
|
||||||
return userId ? canView(Meteor.users.findOne(userId), returnError) : false; // 33
|
|
||||||
} // 34
|
|
||||||
return true; // 35
|
|
||||||
}; // 36
|
|
||||||
can.post = function(user, returnError){ // 37
|
|
||||||
var user=(typeof user === 'undefined') ? Meteor.user() : user; // 38
|
|
||||||
// 39
|
|
||||||
// console.log('canPost', user, action, getSetting('requirePostInvite')); // 40
|
|
||||||
// 41
|
|
||||||
if(!user){ // 42
|
|
||||||
return returnError ? "no_account" : false; // 43
|
|
||||||
} else if (isAdmin(user)) { // 44
|
|
||||||
return true; // 45
|
|
||||||
} else if (getSetting('requirePostInvite')) { // 46
|
|
||||||
if (user.isInvited) { // 47
|
|
||||||
return true; // 48
|
|
||||||
} else { // 49
|
|
||||||
return returnError ? "no_invite" : false; // 50
|
|
||||||
} // 51
|
|
||||||
} else { // 52
|
|
||||||
return true; // 53
|
|
||||||
} // 54
|
|
||||||
}; // 55
|
|
||||||
can.postById = function(userId, returnError){ // 56
|
|
||||||
var user = Meteor.users.findOne(userId); // 57
|
|
||||||
return canPost(user, returnError); // 58
|
|
||||||
}; // 59
|
|
||||||
can.comment = function(user, returnError){ // 60
|
|
||||||
return canPost(user, returnError); // 61
|
|
||||||
}; // 62
|
|
||||||
can.commentById = function(userId, returnError){ // 63
|
|
||||||
var user = Meteor.users.findOne(userId); // 64
|
|
||||||
return canComment(user, returnError); // 65
|
|
||||||
}; // 66
|
|
||||||
can.upvote = function(user, collection, returnError){ // 67
|
|
||||||
return canPost(user, returnError); // 68
|
|
||||||
}; // 69
|
|
||||||
can.upvoteById = function(userId, returnError){ // 70
|
|
||||||
var user = Meteor.users.findOne(userId); // 71
|
|
||||||
return canUpvote(user, returnError); // 72
|
|
||||||
}; // 73
|
|
||||||
can.downvote = function(user, collection, returnError){ // 74
|
|
||||||
return canPost(user, returnError); // 75
|
|
||||||
}; // 76
|
|
||||||
can.downvoteById = function(userId, returnError){ // 77
|
|
||||||
var user = Meteor.users.findOne(userId); // 78
|
|
||||||
return canDownvote(user, returnError); // 79
|
|
||||||
}; // 80
|
|
||||||
can.edit = function(user, item, returnError){ // 81
|
|
||||||
var user=(typeof user === 'undefined') ? Meteor.user() : user; // 82
|
|
||||||
// 83
|
|
||||||
if (!user || !item){ // 84
|
|
||||||
return returnError ? "no_rights" : false; // 85
|
|
||||||
} else if (isAdmin(user)) { // 86
|
|
||||||
return true; // 87
|
|
||||||
} else if (user._id!==item.userId) { // 88
|
|
||||||
return returnError ? "no_rights" : false; // 89
|
|
||||||
}else { // 90
|
|
||||||
return true; // 91
|
|
||||||
} // 92
|
|
||||||
}; // 93
|
|
||||||
can.editById = function(userId, item){ // 94
|
|
||||||
var user = Meteor.users.findOne(userId); // 95
|
|
||||||
return canEdit(user, item); // 96
|
|
||||||
}; // 97
|
|
||||||
can.currentUserEdit = function(item) { // 98
|
|
||||||
return canEdit(Meteor.user(), item); // 99
|
|
||||||
}; // 100
|
|
||||||
can.invite = function(user){ // 101
|
|
||||||
return isInvited(user) || isAdmin(user); // 102
|
|
||||||
}; // 103
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
}).call(this);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(function () {
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// //
|
|
||||||
// packages/telescope-lib/lib/client/jquery.exists.js //
|
|
||||||
// //
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
$.fn.exists = function () { // 1
|
|
||||||
return this.length !== 0; // 2
|
|
||||||
} // 3
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
}).call(this);
|
|
File diff suppressed because one or more lines are too long
|
@ -153,7 +153,7 @@
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"telescope-i18n",
|
"telescope:i18n",
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
|
|
@ -229,7 +229,7 @@
|
||||||
"0.2.9"
|
"0.2.9"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"telescope-i18n",
|
"telescope:i18n",
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
|
|
@ -209,7 +209,7 @@
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"telescope-i18n",
|
"telescope:i18n",
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
|
|
@ -19,7 +19,7 @@ Package.onUse(function (api) {
|
||||||
'iron:router', // routing package
|
'iron:router', // routing package
|
||||||
'telescope-base', // basic Telescope hooks and objects
|
'telescope-base', // basic Telescope hooks and objects
|
||||||
'telescope:lib', // useful functions
|
'telescope:lib', // useful functions
|
||||||
'telescope-i18n', // internationalization wrapper
|
'telescope:i18n', // internationalization wrapper
|
||||||
'fourseven:scss' // SCSS compilation package
|
'fourseven:scss' // SCSS compilation package
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
|
@ -189,7 +189,7 @@
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"telescope-i18n",
|
"telescope:i18n",
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
|
|
@ -153,7 +153,7 @@
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"telescope-i18n",
|
"telescope:i18n",
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
|
|
@ -185,7 +185,7 @@
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"telescope-i18n",
|
"telescope:i18n",
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
Meteor.startup(function() {
|
|
||||||
// Inject SEO tags.
|
|
||||||
Router.onAfterAction(function() {
|
|
||||||
var props = {meta: {}, og: {}};
|
|
||||||
var title = this.getTitle && this.getTitle();
|
|
||||||
var description = this.getDescription && this.getDescription();
|
|
||||||
var image = Settings.get("siteImage");
|
|
||||||
if (title) {
|
|
||||||
props.og.title = title;
|
|
||||||
}
|
|
||||||
if (description) {
|
|
||||||
props.meta.description = description;
|
|
||||||
props.og.description = description;
|
|
||||||
}
|
|
||||||
if (image) {
|
|
||||||
props.og.image = image;
|
|
||||||
}
|
|
||||||
SEO.set(props);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Add canonical URL to post pages
|
|
||||||
Router.onAfterAction(function() {
|
|
||||||
var post = Posts.findOne(this.params._id);
|
|
||||||
if (post) {
|
|
||||||
SEO.set({link: {canonical: getPostPageUrl(post)}});
|
|
||||||
}
|
|
||||||
}, {only: ["post_page", "post_page_with_slug"]});
|
|
||||||
|
|
||||||
});
|
|
|
@ -1,13 +0,0 @@
|
||||||
// Add SEO settings.
|
|
||||||
Settings.addToSchema({
|
|
||||||
propertyName: "siteImage",
|
|
||||||
propertySchema: {
|
|
||||||
type: String,
|
|
||||||
optional: true,
|
|
||||||
regEx: SimpleSchema.RegEx.Url,
|
|
||||||
autoform: {
|
|
||||||
group: "general",
|
|
||||||
instructions: "URL to an image for the open graph image tag for all pages"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
|
@ -1,39 +0,0 @@
|
||||||
Package.describe({
|
|
||||||
name: "telescope-seo",
|
|
||||||
summary: "SEO extensions for Telescope",
|
|
||||||
version: "0.0.5"
|
|
||||||
});
|
|
||||||
|
|
||||||
Package.onUse(function(api) {
|
|
||||||
api.use([
|
|
||||||
"templating",
|
|
||||||
"underscore",
|
|
||||||
"aldeed:simple-schema",
|
|
||||||
"tap:i18n",
|
|
||||||
"iron:router",
|
|
||||||
"telescope-lib",
|
|
||||||
"telescope-base",
|
|
||||||
"telescope:settings",
|
|
||||||
"telescope-i18n",
|
|
||||||
"manuelschoebel:ms-seo@0.4.1",
|
|
||||||
"gadicohen:sitemaps@0.0.20"
|
|
||||||
]);
|
|
||||||
|
|
||||||
// both
|
|
||||||
api.addFiles([
|
|
||||||
"lib/routes.js",
|
|
||||||
"lib/seo.js",
|
|
||||||
"package-tap.i18n"
|
|
||||||
], ['client', 'server']);
|
|
||||||
|
|
||||||
// server
|
|
||||||
api.addFiles([
|
|
||||||
"lib/server/sitemaps.js"
|
|
||||||
], ["server"]);
|
|
||||||
|
|
||||||
// i18n
|
|
||||||
api.add_files([
|
|
||||||
"i18n/en.i18n.json"
|
|
||||||
], ["client", "server"]);
|
|
||||||
|
|
||||||
});
|
|
|
@ -17,7 +17,7 @@ Package.onUse(function (api) {
|
||||||
api.use([
|
api.use([
|
||||||
'telescope-base',
|
'telescope-base',
|
||||||
'telescope:lib',
|
'telescope:lib',
|
||||||
'telescope-i18n',
|
'telescope:i18n',
|
||||||
'telescope:posts',
|
'telescope:posts',
|
||||||
'tap:i18n',
|
'tap:i18n',
|
||||||
'iron:router'
|
'iron:router'
|
||||||
|
|
|
@ -185,7 +185,7 @@
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"telescope-i18n",
|
"telescope:i18n",
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
|
|
@ -197,7 +197,7 @@
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"telescope-i18n",
|
"telescope:i18n",
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
|
|
@ -16,7 +16,7 @@ Package.onUse(function (api) {
|
||||||
'iron:router',
|
'iron:router',
|
||||||
'telescope-base',
|
'telescope-base',
|
||||||
'telescope:lib',
|
'telescope:lib',
|
||||||
'telescope-i18n',
|
'telescope:i18n',
|
||||||
'fourseven:scss',
|
'fourseven:scss',
|
||||||
'telescope-notifications',
|
'telescope-notifications',
|
||||||
'telescope:posts'
|
'telescope:posts'
|
||||||
|
|
|
@ -189,7 +189,7 @@
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"telescope-i18n",
|
"telescope:i18n",
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
|
|
@ -205,7 +205,7 @@
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"telescope-i18n",
|
"telescope:i18n",
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
|
|
@ -157,7 +157,7 @@
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"telescope-i18n",
|
"telescope:i18n",
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
|
|
@ -157,7 +157,7 @@
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"telescope-i18n",
|
"telescope:i18n",
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
|
|
@ -189,7 +189,7 @@
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"telescope-i18n",
|
"telescope:i18n",
|
||||||
"0.0.0"
|
"0.0.0"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
|
Loading…
Add table
Reference in a new issue