Merge branch 'release/0.6.0.0'
36
.codeclimate.yml
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
---
|
||||
engines:
|
||||
brakeman:
|
||||
enabled: true
|
||||
bundler-audit:
|
||||
enabled: true
|
||||
csslint:
|
||||
enabled: true
|
||||
duplication:
|
||||
enabled: true
|
||||
config:
|
||||
languages:
|
||||
- ruby
|
||||
- javascript
|
||||
eslint:
|
||||
enabled: true
|
||||
channel: "eslint-2"
|
||||
fixme:
|
||||
enabled: true
|
||||
rubocop:
|
||||
enabled: true
|
||||
ratings:
|
||||
paths:
|
||||
- Gemfile.lock
|
||||
- "**.erb"
|
||||
- "**.haml"
|
||||
- "**.rb"
|
||||
- "**.css"
|
||||
- "**.js"
|
||||
exclude_paths:
|
||||
- config/
|
||||
- db/
|
||||
- features/
|
||||
- script/
|
||||
- spec/
|
||||
- vendor/
|
||||
258
.eslintrc
Normal file
|
|
@ -0,0 +1,258 @@
|
|||
{
|
||||
"env": {
|
||||
"browser": true,
|
||||
"jasmine": true,
|
||||
"jquery": true
|
||||
},
|
||||
|
||||
"globals": {
|
||||
"_": false,
|
||||
"autosize": false,
|
||||
"Backbone": false,
|
||||
"Bloodhound": false,
|
||||
"gon": false,
|
||||
"Handlebars": false,
|
||||
"HandlebarsTemplates": false,
|
||||
"ImagePaths": false,
|
||||
"jsxc": false,
|
||||
"L": false,
|
||||
"Routes": false,
|
||||
"OSM": false,
|
||||
"qq": false,
|
||||
"blueimp": false,
|
||||
|
||||
"loginAs": true,
|
||||
"logout": true,
|
||||
"spec": true,
|
||||
"context": true,
|
||||
"factory": true,
|
||||
"stubView": true,
|
||||
|
||||
"app": true,
|
||||
"Diaspora": true,
|
||||
"Keycodes": true,
|
||||
"PosixBracketExpressions": true
|
||||
},
|
||||
|
||||
"rules": {
|
||||
"accessor-pairs": 0,
|
||||
"array-bracket-spacing": [2, "never"],
|
||||
"array-callback-return": 0,
|
||||
"arrow-body-style": 0,
|
||||
"arrow-parens": 0,
|
||||
"arrow-spacing": 0,
|
||||
"block-scoped-var": 0,
|
||||
"block-spacing": [2, "always"],
|
||||
"brace-style": [2, "1tbs", {"allowSingleLine": true}],
|
||||
"callback-return": 0,
|
||||
"camelcase": 2,
|
||||
"comma-dangle": [2, "never"],
|
||||
"comma-spacing": [2, {"before": false, "after": true}],
|
||||
"comma-style": [2, "last"],
|
||||
"complexity": [1, {"max": 20}],
|
||||
"computed-property-spacing": [2, "never"],
|
||||
"consistent-return": 2,
|
||||
"consistent-this": 0,
|
||||
"constructor-super": 0,
|
||||
"curly": [2, "all"],
|
||||
"default-case": 0,
|
||||
"dot-location": [2, "property"],
|
||||
"dot-notation": 2,
|
||||
"eol-last": 2,
|
||||
"eqeqeq": [2, "allow-null"],
|
||||
"func-names": 0,
|
||||
"func-style": 0,
|
||||
"generator-star-spacing": 0,
|
||||
"global-require": 0,
|
||||
"guard-for-in": 1,
|
||||
"handle-callback-err": 0,
|
||||
"id-blacklist": 0,
|
||||
"id-length": 0,
|
||||
"id-match": 0,
|
||||
"indent": [2, 2, {"SwitchCase": 1, "VariableDeclarator": {"var": 2, "let": 2, "const": 3}}],
|
||||
"init-declarations": 0,
|
||||
"jsx-quotes": 0,
|
||||
"key-spacing": [2, {"beforeColon": false, "afterColon": true}],
|
||||
"keyword-spacing": 2,
|
||||
"linebreak-style": 0,
|
||||
"lines-around-comment": 0,
|
||||
"max-depth": 0,
|
||||
"max-len": [1, {"code": 120, "ignoreUrls": true}],
|
||||
"max-lines": 0,
|
||||
"max-nested-callbacks": 0,
|
||||
"max-params": 0,
|
||||
"max-statements": 0,
|
||||
"max-statements-per-line": 0,
|
||||
"new-cap": [2, {"capIsNew": false}],
|
||||
"new-parens": 2,
|
||||
"newline-after-var": 0,
|
||||
"newline-before-return": 0,
|
||||
"newline-per-chained-call": 0,
|
||||
"no-alert": 0,
|
||||
"no-array-constructor": 2,
|
||||
"no-bitwise": 0,
|
||||
"no-caller": 2,
|
||||
"no-case-declarations": 2,
|
||||
"no-catch-shadow": 0,
|
||||
"no-class-assign": 2,
|
||||
"no-cond-assign": 2,
|
||||
"no-confusing-arrow": 2,
|
||||
"no-console": 2,
|
||||
"no-const-assign": 2,
|
||||
"no-constant-condition": 2,
|
||||
"no-continue": 0,
|
||||
"no-control-regex": 2,
|
||||
"no-debugger": 2,
|
||||
"no-delete-var": 2,
|
||||
"no-div-regex": 0,
|
||||
"no-dupe-args": 2,
|
||||
"no-dupe-class-members": 2,
|
||||
"no-dupe-keys": 2,
|
||||
"no-duplicate-case": 2,
|
||||
"no-duplicate-imports": 0,
|
||||
"no-else-return": 2,
|
||||
"no-empty": 2,
|
||||
"no-empty-character-class": 2,
|
||||
"no-empty-function": 1,
|
||||
"no-empty-pattern": 2,
|
||||
"no-eq-null": 0,
|
||||
"no-eval": 2,
|
||||
"no-ex-assign": 2,
|
||||
"no-extend-native": 2,
|
||||
"no-extra-bind": 2,
|
||||
"no-extra-boolean-cast": 2,
|
||||
"no-extra-label": 0,
|
||||
"no-extra-parens": 0,
|
||||
"no-extra-semi": 2,
|
||||
"no-fallthrough": 2,
|
||||
"no-floating-decimal": 0,
|
||||
"no-func-assign": 2,
|
||||
"no-implicit-coercion": 0,
|
||||
"no-implicit-globals": 0,
|
||||
"no-implied-eval": 0,
|
||||
"no-inline-comments": 0,
|
||||
"no-inner-declarations": 2,
|
||||
"no-invalid-regexp": 2,
|
||||
"no-invalid-this": 0,
|
||||
"no-irregular-whitespace": 2,
|
||||
"no-iterator": 0,
|
||||
"no-label-var": 0,
|
||||
"no-labels": 0,
|
||||
"no-lone-blocks": 0,
|
||||
"no-lonely-if": 2,
|
||||
"no-loop-func": 2,
|
||||
"no-magic-numbers": 0,
|
||||
"no-mixed-operators": 0,
|
||||
"no-mixed-requires": 0,
|
||||
"no-mixed-spaces-and-tabs": 2,
|
||||
"no-multi-spaces": 1,
|
||||
"no-multi-str": 0,
|
||||
"no-multiple-empty-lines": [1, {"max": 1}],
|
||||
"no-native-reassign": 2,
|
||||
"no-negated-condition": 0,
|
||||
"no-negated-in-lhs": 2,
|
||||
"no-nested-ternary": 0,
|
||||
"no-new": 0,
|
||||
"no-new-func": 0,
|
||||
"no-new-object": 0,
|
||||
"no-new-require": 0,
|
||||
"no-new-symbol": 0,
|
||||
"no-new-wrappers": 0,
|
||||
"no-obj-calls": 2,
|
||||
"no-octal": 2,
|
||||
"no-octal-escape": 0,
|
||||
"no-param-reassign": 0,
|
||||
"no-path-concat": 0,
|
||||
"no-plusplus": 0,
|
||||
"no-process-env": 0,
|
||||
"no-process-exit": 0,
|
||||
"no-proto": 2,
|
||||
"no-prototype-builtins": 0,
|
||||
"no-redeclare": 2,
|
||||
"no-regex-spaces": 2,
|
||||
"no-restricted-globals": 0,
|
||||
"no-restricted-imports": 0,
|
||||
"no-restricted-modules": 0,
|
||||
"no-restricted-syntax": 0,
|
||||
"no-return-assign": 2,
|
||||
"no-script-url": 0,
|
||||
"no-self-assign": 2,
|
||||
"no-self-compare": 2,
|
||||
"no-sequences": 2,
|
||||
"no-shadow": 1,
|
||||
"no-shadow-restricted-names": 2,
|
||||
"no-spaced-func": 1,
|
||||
"no-sparse-arrays": 2,
|
||||
"no-sync": 0,
|
||||
"no-ternary": 0,
|
||||
"no-this-before-super": 2,
|
||||
"no-throw-literal": 2,
|
||||
"no-trailing-spaces": 2,
|
||||
"no-undef": 2,
|
||||
"no-undef-init": 0,
|
||||
"no-undefined": 0,
|
||||
"no-underscore-dangle": 0,
|
||||
"no-unexpected-multiline": 2,
|
||||
"no-unmodified-loop-condition": 1,
|
||||
"no-unneeded-ternary": 1,
|
||||
"no-unreachable": 2,
|
||||
"no-unsafe-finally": 1,
|
||||
"no-unused-expressions": 0,
|
||||
"no-unused-labels": 2,
|
||||
"no-unused-vars": 2,
|
||||
"no-use-before-define": [2, {"functions": false, "classes": true}],
|
||||
"no-useless-call": 1,
|
||||
"no-useless-computed-key": 0,
|
||||
"no-useless-concat": 0,
|
||||
"no-useless-constructor": 0,
|
||||
"no-useless-escape": 0,
|
||||
"no-useless-rename": 0,
|
||||
"no-var": 0,
|
||||
"no-void": 0,
|
||||
"no-warning-comments": 0,
|
||||
"no-whitespace-before-property": 2,
|
||||
"no-with": 2,
|
||||
"object-curly-newline": 0,
|
||||
"object-curly-spacing": [2, "never"],
|
||||
"object-property-newline": 0,
|
||||
"object-shorthand": 0,
|
||||
"one-var": 0,
|
||||
"one-var-declaration-per-line": 0,
|
||||
"operator-assignment": 0,
|
||||
"operator-linebreak": 0,
|
||||
"padded-blocks": [2, "never"],
|
||||
"prefer-arrow-callback": 0,
|
||||
"prefer-const": 0,
|
||||
"prefer-reflect": 0,
|
||||
"prefer-rest-params": 0,
|
||||
"prefer-spread": 0,
|
||||
"prefer-template": 0,
|
||||
"quote-props": 0,
|
||||
"quotes": [2, "double", "avoid-escape"],
|
||||
"radix": [2, "always"],
|
||||
"require-jsdoc": 0,
|
||||
"require-yield": 0,
|
||||
"rest-spread-spacing": 0,
|
||||
"semi": [2, "always"],
|
||||
"semi-spacing": [2, {"before": false, "after": true}],
|
||||
"sort-imports": 0,
|
||||
"sort-vars": 0,
|
||||
"space-before-blocks": [2, "always"],
|
||||
"space-before-function-paren": [2, "never"],
|
||||
"space-in-parens": [2, "never"],
|
||||
"space-infix-ops": [2, {"int32Hint": true}],
|
||||
"space-unary-ops": [2, {"words": true, "nonwords": false}],
|
||||
"spaced-comment": [2, "always", {"markers": ["="]}],
|
||||
"strict": 0,
|
||||
"template-curly-spacing": 0,
|
||||
"unicode-bom": 0,
|
||||
"use-isnan": 2,
|
||||
"valid-jsdoc": 0,
|
||||
"valid-typeof": 2,
|
||||
"vars-on-top": 0,
|
||||
"wrap-iife": 0,
|
||||
"wrap-regex": 0,
|
||||
"yield-star-spacing": 0,
|
||||
"yoda": [2, "never"]
|
||||
}
|
||||
}
|
||||
24
.gitignore
vendored
|
|
@ -1,13 +1,13 @@
|
|||
# xmpp certificates, keys and user data
|
||||
config/vines/*.crt
|
||||
config/vines/*.key
|
||||
# XMPP certificates, keys and user data
|
||||
config/certs/*.crt
|
||||
config/certs/*.key
|
||||
config/prosody.cfg.lua
|
||||
|
||||
#trademark sillyness
|
||||
# Trademark sillyness
|
||||
app/views/home/_show.*
|
||||
app/views/terms/terms.*
|
||||
app/assets/images/custom/
|
||||
|
||||
|
||||
# Configuration files
|
||||
config/diaspora.yml
|
||||
config/heroku.yml
|
||||
|
|
@ -21,8 +21,9 @@ vendor/cache/
|
|||
config/database.yml
|
||||
.rvmrc_custom
|
||||
.rvmrc.local
|
||||
config/oidc_key.pem
|
||||
|
||||
#Mailing list stuff
|
||||
# Mailing list stuff
|
||||
config/email_offset
|
||||
config/mailing_list.csv
|
||||
|
||||
|
|
@ -42,9 +43,9 @@ public/500.html
|
|||
app/assets/images/branding-*.png
|
||||
app/assets/images/branding/logos-*.png
|
||||
app/assets/images/icons-*.png
|
||||
app/assets/images/social_media_logos-*.png
|
||||
app/assets/images/social-media-logos-*.png
|
||||
|
||||
#Documentation
|
||||
# Documentation
|
||||
.yardoc/
|
||||
doc/
|
||||
|
||||
|
|
@ -69,15 +70,18 @@ tmp/
|
|||
*.swp
|
||||
*~
|
||||
*#
|
||||
*.bak
|
||||
*.save
|
||||
*.autosave
|
||||
nbproject
|
||||
patches-*
|
||||
capybara-*.html
|
||||
dump.rdb
|
||||
|
||||
#Rubinius's JIT
|
||||
# Rubinius's JIT
|
||||
*.rbc
|
||||
|
||||
#IDE
|
||||
# IDE
|
||||
diaspora.iml
|
||||
|
||||
# Dolphin's directory's preferences files
|
||||
|
|
|
|||
5
.haml-lint.yml
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
linters:
|
||||
LineLength:
|
||||
max: 120
|
||||
SpaceInsideHashAttributes:
|
||||
style: no_space
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
java_script:
|
||||
enabled: true
|
||||
config_file: config/.jshint.json
|
||||
ignore_file: config/.jshint_ignore
|
||||
ruby:
|
||||
enabled: true
|
||||
config_file: .rubocop.yml
|
||||
scss:
|
||||
enabled: false
|
||||
|
|
@ -1 +0,0 @@
|
|||
config/.jshint_ignore
|
||||
|
|
@ -1 +0,0 @@
|
|||
config/.jshint.json
|
||||
4
.pronto.yml
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
all:
|
||||
exclude:
|
||||
- "vendor/**/*"
|
||||
consolidate_comments: true
|
||||
|
|
@ -1 +1 @@
|
|||
2.1
|
||||
2.3
|
||||
|
|
|
|||
231
.scss-lint.yml
Normal file
|
|
@ -0,0 +1,231 @@
|
|||
scss_files: 'app/assets/stylesheets/**/*.scss'
|
||||
plugin_directories: ['.scss-linters']
|
||||
|
||||
# List of gem names to load custom linters from (make sure they are already
|
||||
# installed)
|
||||
plugin_gems: []
|
||||
|
||||
linters:
|
||||
BangFormat:
|
||||
enabled: true
|
||||
space_before_bang: true
|
||||
space_after_bang: false
|
||||
|
||||
BemDepth:
|
||||
enabled: false
|
||||
max_elements: 1
|
||||
|
||||
BorderZero:
|
||||
enabled: true
|
||||
convention: zero # or `none`
|
||||
|
||||
ColorKeyword:
|
||||
enabled: true
|
||||
|
||||
ColorVariable:
|
||||
enabled: true
|
||||
|
||||
Comment:
|
||||
enabled: true
|
||||
|
||||
DebugStatement:
|
||||
enabled: true
|
||||
|
||||
DeclarationOrder:
|
||||
enabled: true
|
||||
|
||||
DisableLinterReason:
|
||||
enabled: true
|
||||
|
||||
DuplicateProperty:
|
||||
enabled: true
|
||||
|
||||
ElsePlacement:
|
||||
enabled: true
|
||||
style: same_line # or 'new_line'
|
||||
|
||||
EmptyLineBetweenBlocks:
|
||||
enabled: true
|
||||
ignore_single_line_blocks: true
|
||||
|
||||
EmptyRule:
|
||||
enabled: true
|
||||
|
||||
ExtendDirective:
|
||||
enabled: false
|
||||
|
||||
FinalNewline:
|
||||
enabled: true
|
||||
present: true
|
||||
|
||||
HexLength:
|
||||
enabled: true
|
||||
style: short # or 'long'
|
||||
|
||||
HexNotation:
|
||||
enabled: true
|
||||
style: lowercase # or 'uppercase'
|
||||
|
||||
HexValidation:
|
||||
enabled: true
|
||||
|
||||
IdSelector:
|
||||
enabled: true
|
||||
|
||||
ImportantRule:
|
||||
enabled: true
|
||||
|
||||
ImportPath:
|
||||
enabled: true
|
||||
leading_underscore: false
|
||||
filename_extension: false
|
||||
|
||||
Indentation:
|
||||
enabled: true
|
||||
allow_non_nested_indentation: false
|
||||
character: space # or 'tab'
|
||||
width: 2
|
||||
|
||||
LeadingZero:
|
||||
enabled: true
|
||||
style: exclude_zero # or 'include_zero'
|
||||
|
||||
MergeableSelector:
|
||||
enabled: true
|
||||
force_nesting: true
|
||||
|
||||
NameFormat:
|
||||
enabled: true
|
||||
allow_leading_underscore: true
|
||||
convention: hyphenated_lowercase # or 'camel_case', or 'snake_case', or a regex pattern
|
||||
|
||||
NestingDepth:
|
||||
enabled: true
|
||||
max_depth: 3
|
||||
ignore_parent_selectors: false
|
||||
|
||||
PlaceholderInExtend:
|
||||
enabled: true
|
||||
|
||||
PropertyCount:
|
||||
enabled: false
|
||||
include_nested: false
|
||||
max_properties: 10
|
||||
|
||||
PropertySortOrder:
|
||||
enabled: true
|
||||
ignore_unspecified: false
|
||||
min_properties: 2
|
||||
separate_groups: false
|
||||
|
||||
PropertySpelling:
|
||||
enabled: true
|
||||
extra_properties: []
|
||||
|
||||
PropertyUnits:
|
||||
enabled: true
|
||||
global: [
|
||||
'ch', 'em', 'ex', 'rem', # Font-relative lengths
|
||||
'cm', 'in', 'mm', 'pc', 'pt', 'px', 'q', # Absolute lengths
|
||||
'vh', 'vw', 'vmin', 'vmax', # Viewport-percentage lengths
|
||||
'deg', 'grad', 'rad', 'turn', # Angle
|
||||
'ms', 's', # Duration
|
||||
'Hz', 'kHz', # Frequency
|
||||
'dpi', 'dpcm', 'dppx', # Resolution
|
||||
'%'] # Other
|
||||
properties: {}
|
||||
|
||||
QualifyingElement:
|
||||
enabled: true
|
||||
allow_element_with_attribute: false
|
||||
allow_element_with_class: false
|
||||
allow_element_with_id: false
|
||||
|
||||
SelectorDepth:
|
||||
enabled: true
|
||||
max_depth: 3
|
||||
|
||||
SelectorFormat:
|
||||
enabled: true
|
||||
convention: hyphenated_lowercase # or 'strict_BEM', or 'hyphenated_BEM', or 'snake_case', or 'camel_case', or a regex pattern
|
||||
|
||||
Shorthand:
|
||||
enabled: true
|
||||
allowed_shorthands: [1, 2, 3]
|
||||
|
||||
SingleLinePerProperty:
|
||||
enabled: true
|
||||
allow_single_line_rule_sets: true
|
||||
|
||||
SingleLinePerSelector:
|
||||
enabled: true
|
||||
|
||||
SpaceAfterComma:
|
||||
enabled: true
|
||||
|
||||
SpaceAfterPropertyColon:
|
||||
enabled: true
|
||||
style: one_space # or 'no_space', or 'at_least_one_space', or 'aligned'
|
||||
|
||||
SpaceAfterPropertyName:
|
||||
enabled: true
|
||||
|
||||
SpaceAfterVariableName:
|
||||
enabled: true
|
||||
|
||||
SpaceAroundOperator:
|
||||
enabled: true
|
||||
style: one_space # or 'no_space'
|
||||
|
||||
SpaceBeforeBrace:
|
||||
enabled: true
|
||||
style: space # or 'new_line'
|
||||
allow_single_line_padding: false
|
||||
|
||||
SpaceBetweenParens:
|
||||
enabled: true
|
||||
spaces: 0
|
||||
|
||||
StringQuotes:
|
||||
enabled: true
|
||||
style: single_quotes # or double_quotes
|
||||
|
||||
TrailingSemicolon:
|
||||
enabled: true
|
||||
|
||||
TrailingWhitespace:
|
||||
enabled: true
|
||||
|
||||
TrailingZero:
|
||||
enabled: false
|
||||
|
||||
TransitionAll:
|
||||
enabled: false
|
||||
|
||||
UnnecessaryMantissa:
|
||||
enabled: true
|
||||
|
||||
UnnecessaryParentReference:
|
||||
enabled: true
|
||||
|
||||
UrlFormat:
|
||||
enabled: true
|
||||
|
||||
UrlQuotes:
|
||||
enabled: true
|
||||
|
||||
VariableForProperty:
|
||||
enabled: false
|
||||
properties: []
|
||||
|
||||
VendorPrefix:
|
||||
enabled: true
|
||||
identifier_list: base
|
||||
additional_identifiers: []
|
||||
excluded_identifiers: []
|
||||
|
||||
ZeroUnit:
|
||||
enabled: true
|
||||
|
||||
Compass::*:
|
||||
enabled: false
|
||||
20
.travis.yml
|
|
@ -1,14 +1,14 @@
|
|||
language: ruby
|
||||
|
||||
rvm:
|
||||
- 2.3.1
|
||||
- 2.1
|
||||
- 2.0
|
||||
|
||||
env:
|
||||
- DB=postgres BUILD_TYPE=other
|
||||
- DB=mysql BUILD_TYPE=other
|
||||
- DB=postgres BUILD_TYPE=cucumber
|
||||
- DB=postgresql BUILD_TYPE=cucumber
|
||||
- DB=mysql BUILD_TYPE=cucumber
|
||||
- DB=postgresql BUILD_TYPE=other
|
||||
- DB=mysql BUILD_TYPE=other
|
||||
|
||||
sudo: false
|
||||
cache:
|
||||
|
|
@ -19,11 +19,17 @@ cache:
|
|||
branches:
|
||||
only:
|
||||
- 'master'
|
||||
- 'stable'
|
||||
- 'next-minor'
|
||||
- 'develop'
|
||||
|
||||
before_install: gem install bundler
|
||||
bundler_args: "--without development production heroku --jobs 3 --retry 3"
|
||||
before_install:
|
||||
- gem install bundler
|
||||
- mkdir travis-phantomjs
|
||||
- wget http://cifiles.diasporafoundation.org/phantomjs-2.1.1-linux-x86_64.tar.bz2 -O $PWD/travis-phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2
|
||||
- tar -xvf $PWD/travis-phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2 -C $PWD/travis-phantomjs
|
||||
- export PATH=$PWD/travis-phantomjs/phantomjs-2.1.1-linux-x86_64/bin:$PATH
|
||||
|
||||
bundler_args: "--deployment --without development production --with mysql postgresql --jobs 3 --retry 3"
|
||||
|
||||
script: "./script/ci/build.sh"
|
||||
|
||||
|
|
|
|||
206
Changelog.md
|
|
@ -1,3 +1,208 @@
|
|||
# 0.6.0.0
|
||||
|
||||
## Warning: This release contains long migrations
|
||||
|
||||
This diaspora\* releases comes with a few database cleanup migrations and they could possible take a while. While you should always do that, it is especially important this time to make sure you run the migrations inside a detachable environment like `screen` or `tmux`. A interrupted SSH session could possibly harm your database. Also, please make a backup.
|
||||
|
||||
## The DB environment variable is gone
|
||||
|
||||
With Bundler 1.10 supporting optional groups, we removed the DB environment variable. When updating to this release, please update
|
||||
bundler and select the database support you want:
|
||||
|
||||
```sh
|
||||
gem install bundler
|
||||
bundle install --with mysql # For MySQL and MariaDB
|
||||
bundle install --with postgresql # For PostgreSQL
|
||||
```
|
||||
|
||||
For production setups we now additionally recommend adding the `--deployment` flag.
|
||||
If you set the DB environment variable anywhere, that's no longer necessary.
|
||||
|
||||
## Supported Ruby versions
|
||||
|
||||
This release recommends using Ruby 2.3, while retaining Ruby 2.1 as an officially supported version.
|
||||
Ruby 2.0 is no longer officially supported.
|
||||
|
||||
## Configuration changes
|
||||
|
||||
Please note that the default listen parameter for production setups got
|
||||
changed. diaspora\* will no longer listen on `0.0.0.0:3000` as it will now
|
||||
bind to an UNIX socket at `unix:tmp/diaspora.sock`. Please change your local
|
||||
`diaspora.yml` if necessary.
|
||||
|
||||
## Redis namespace support dropped
|
||||
|
||||
We dropped support for Redis namespaces in this release. If you previously set
|
||||
a custom namespace, please note that diaspora\* will no longer use the
|
||||
configured value. By default, Redis supports up to 8 databases which can be
|
||||
selected via the Redis URL in `diaspora.yml`. Please check the examples
|
||||
provided in our configuration example file.
|
||||
|
||||
## Terms of Use design changes
|
||||
|
||||
With the port to Bootstrap 3, app/views/terms/default.haml has a new structure. If you have created a customised app/views/terms/terms.haml or app/views/terms/terms.erb file, you will need to edit those files to base your customisations on the new default.haml file.
|
||||
|
||||
## API authentication
|
||||
|
||||
This release makes diaspora\* a OpenID Connect provider. This means you can authenticate to third parties with your diaspora\* account and let
|
||||
them act as your diaspora\* account on your behalf. This feature is still considered in early development, we still expect edge cases and advanced
|
||||
features of the specificiation to not be handled correctly or be missing. But we expect a basic OpenID Connect compliant client to work. Please submit issues!
|
||||
We will also most likely still change the authorization scopes we offer and started with a very minimal set.
|
||||
Most work still required is on documentation as well as designing and implementing the data API for all of Diaspora's functionality.
|
||||
Contributions are very welcome, the hard work is done!
|
||||
|
||||
## Vines got replaced by Prosody
|
||||
|
||||
Due to many issues with Vines, we decided to remove Vines and offer a Prosody
|
||||
example configuration instead. [Check the
|
||||
wiki](https://wiki.diasporafoundation.org/Integration/Chat#Vines_to_Prosody)
|
||||
for more information on how to migrate to Prosody if you've been using Vines
|
||||
before.
|
||||
|
||||
## Sidekiq queue changes
|
||||
|
||||
We've decreased the amount of sidekiq queues from 13 to 5 in PR [#6950](https://github.com/diaspora/diaspora/pull/6950).
|
||||
The new queues are organized according to priority for the jobs they will process. When upgrading please make sure to
|
||||
empty the sidekiq queues before shutting down the server for an update.
|
||||
|
||||
If you run your sidekiq with a custom queue configuration, please make sure to update that for the new queues.
|
||||
|
||||
The new queues are: `urgent, high, medium, low, default`.
|
||||
|
||||
When you upgrade to the new version, some jobs may persist in the old queues. To move them to the default queue,
|
||||
so they're processed, run:
|
||||
|
||||
```
|
||||
bin/rake migrations:legacy_queues
|
||||
```
|
||||
|
||||
Note that this will retry all dead jobs, if you want to prevent that empty the dead queue first.
|
||||
|
||||
The command will report queues that still have jobs and launch sidekiq process for that queues.
|
||||
|
||||
## Refactor
|
||||
* Improve bookmarklet [#5904](https://github.com/diaspora/diaspora/pull/5904)
|
||||
* Update listen configuration to listen on unix sockets by default [#5974](https://github.com/diaspora/diaspora/pull/5974)
|
||||
* Port to Bootstrap 3 [#6015](https://github.com/diaspora/diaspora/pull/6015)
|
||||
* Use a fixed width for the mobile drawer [#6057](https://github.com/diaspora/diaspora/pull/6057)
|
||||
* Replace jquery.autoresize with autosize [#6104](https://github.com/diaspora/diaspora/pull/6104)
|
||||
* Improve mobile conversation design [#6087](https://github.com/diaspora/diaspora/pull/6087)
|
||||
* Replace remaining faceboxes with Bootstrap modals [#6106](https://github.com/diaspora/diaspora/pull/6106) [#6161](https://github.com/diaspora/diaspora/pull/6161)
|
||||
* Rewrite header using Bootstrap 3 [#6109](https://github.com/diaspora/diaspora/pull/6109) [#6130](https://github.com/diaspora/diaspora/pull/6130) [#6132](https://github.com/diaspora/diaspora/pull/6132)
|
||||
* Use upstream CSS mappings for Entypo [#6158](https://github.com/diaspora/diaspora/pull/6158)
|
||||
* Replace some mobile icons with Entypo [#6218](https://github.com/diaspora/diaspora/pull/6218)
|
||||
* Refactor publisher backbone view [#6228](https://github.com/diaspora/diaspora/pull/6228)
|
||||
* Replace MBP.autogrow with autosize on mobile [#6261](https://github.com/diaspora/diaspora/pull/6261)
|
||||
* Improve mobile drawer transition [#6233](https://github.com/diaspora/diaspora/pull/6233)
|
||||
* Remove unused header icons and an unused favicon [#6283](https://github.com/diaspora/diaspora/pull/6283)
|
||||
* Replace mobile icons for post interactions with Entypo icons [#6291](https://github.com/diaspora/diaspora/pull/6291)
|
||||
* Replace jquery.autocomplete with typeahead.js [#6293](https://github.com/diaspora/diaspora/pull/6293)
|
||||
* Redesign sidebars on stream pages [#6309](https://github.com/diaspora/diaspora/pull/6309)
|
||||
* Improve ignored users styling [#6349](https://github.com/diaspora/diaspora/pull/6349)
|
||||
* Use Blueimp image gallery instead of lightbox [#6301](https://github.com/diaspora/diaspora/pull/6301)
|
||||
* Unify mobile and desktop header design [#6285](https://github.com/diaspora/diaspora/pull/6285)
|
||||
* Add white background and box-shadow to stream elements [#6324](https://github.com/diaspora/diaspora/pull/6324)
|
||||
* Override Bootstrap list group design [#6345](https://github.com/diaspora/diaspora/pull/6345)
|
||||
* Clean up publisher code [#6336](https://github.com/diaspora/diaspora/pull/6336)
|
||||
* Port conversations to new design [#6431](https://github.com/diaspora/diaspora/pull/6431)
|
||||
* Hide cancel button in publisher on small screens [#6435](https://github.com/diaspora/diaspora/pull/6435)
|
||||
* Replace mobile background with color [#6415](https://github.com/diaspora/diaspora/pull/6415)
|
||||
* Port flash messages to backbone [#6395](https://github.com/diaspora/diaspora/pull/6395)
|
||||
* Change login/registration/forgot password button color [#6504](https://github.com/diaspora/diaspora/pull/6504)
|
||||
* A note regarding ignoring users was added to the failure messages on commenting/liking [#6646](https://github.com/diaspora/diaspora/pull/6646)
|
||||
* Replace sidetiq with sidekiq-cron [#6616](https://github.com/diaspora/diaspora/pull/6616)
|
||||
* Refactor mobile comment section [#6509](https://github.com/diaspora/diaspora/pull/6509)
|
||||
* Set vertical resize as default for all textareas [#6654](https://github.com/diaspora/diaspora/pull/6654)
|
||||
* Unifiy max-widths and page layouts [#6675](https://github.com/diaspora/diaspora/pull/6675)
|
||||
* Enable autosizing for all textareas [#6674](https://github.com/diaspora/diaspora/pull/6674)
|
||||
* Stream faces are gone [#6686](https://github.com/diaspora/diaspora/pull/6686)
|
||||
* Refactor mobile javascript and add tests [#6394](https://github.com/diaspora/diaspora/pull/6394)
|
||||
* Dropped `parent_author_signature` from relayables [#6586](https://github.com/diaspora/diaspora/pull/6586)
|
||||
* Attached ShareVisibilities to the User, not the Contact [#6723](https://github.com/diaspora/diaspora/pull/6723)
|
||||
* Refactor mentions input, now based on typeahead.js [#6728](https://github.com/diaspora/diaspora/pull/6728)
|
||||
* Optimized the pod up checks [#6727](https://github.com/diaspora/diaspora/pull/6727)
|
||||
* Prune and do not create aspect visibilities for public posts [#6732](https://github.com/diaspora/diaspora/pull/6732)
|
||||
* Optimized mobile login and registration forms [#6764](https://github.com/diaspora/diaspora/pull/6764)
|
||||
* Redesign stream pages [#6535](https://github.com/diaspora/diaspora/pull/6535)
|
||||
* Improve search and mentions suggestions [#6788](https://github.com/diaspora/diaspora/pull/6788)
|
||||
* Redesign back to top button [#6782](https://github.com/diaspora/diaspora/pull/6782)
|
||||
* Adjusted Facebook integration for a successful review [#6778](https://github.com/diaspora/diaspora/pull/6778)
|
||||
* Redirect to the sign-in page instead of the stream on account deletion [#6784](https://github.com/diaspora/diaspora/pull/6784)
|
||||
* Removed own unicorn killer by a maintained third-party gem [#6792](https://github.com/diaspora/diaspora/pull/6792)
|
||||
* Removed deprecated `REDISTOGO_URL` environment variable [#6863](https://github.com/diaspora/diaspora/pull/6863)
|
||||
* Use Poltergeist instead of Selenium [#6768](https://github.com/diaspora/diaspora/pull/6768)
|
||||
* Redesigned the landing page and added dedicated notes for podmins [#6268](https://github.com/diaspora/diaspora/pull/6268)
|
||||
* Moved the entire federation implementation into its own gem. 🎉 [#6873](https://github.com/diaspora/diaspora/pull/6873)
|
||||
* Remove `StatusMessage#raw_message` [#6921](https://github.com/diaspora/diaspora/pull/6921)
|
||||
* Extract photo export into a service class [#6922](https://github.com/diaspora/diaspora/pull/6922)
|
||||
* Use handlebars template for aspect membership dropdown [#6864](https://github.com/diaspora/diaspora/pull/6864)
|
||||
* Extract relayable signatures into their own tables [#6932](https://github.com/diaspora/diaspora/pull/6932)
|
||||
* Remove outdated columns from posts table [#6940](https://github.com/diaspora/diaspora/pull/6940)
|
||||
* Remove some unused routes [#6781](https://github.com/diaspora/diaspora/pull/6781)
|
||||
* Consolidate sidekiq queues [#6950](https://github.com/diaspora/diaspora/pull/6950)
|
||||
* Don't re-render the whole comment stream when adding comments [#6406](https://github.com/diaspora/diaspora/pull/6406)
|
||||
* Drop legacy invitation system [#6976](https://github.com/diaspora/diaspora/pull/6976)
|
||||
* More consistent and updated meta tags throughout [#6998](https://github.com/diaspora/diaspora/pull/6998)
|
||||
|
||||
## Bug fixes
|
||||
* Destroy Participation when removing interactions with a post [#5852](https://github.com/diaspora/diaspora/pull/5852)
|
||||
* Improve accessibility of a couple pages [#6227](https://github.com/diaspora/diaspora/pull/6227)
|
||||
* Capitalize "Powered by diaspora" [#6254](https://github.com/diaspora/diaspora/pull/6254)
|
||||
* Display username and avatar for NSFW posts in mobile view [#6245](https://github.com/diaspora/diaspora/pull/6245)
|
||||
* Prevent multiple comment boxes on mobile [#6363](https://github.com/diaspora/diaspora/pull/6363)
|
||||
* Correctly display location in post preview [#6429](https://github.com/diaspora/diaspora/pull/6429)
|
||||
* Do not fail when submitting an empty comment in the mobile view [#6543](https://github.com/diaspora/diaspora/pull/6543)
|
||||
* Limit flash message width on small devices [#6529](https://github.com/diaspora/diaspora/pull/6529)
|
||||
* Add navbar on mobile when not logged in [#6483](https://github.com/diaspora/diaspora/pull/6483)
|
||||
* Fix timeago tooltips for reshares [#6648](https://github.com/diaspora/diaspora/pull/6648)
|
||||
* "Getting started" is now turned off after first visit on mobile [#6681](https://github.com/diaspora/diaspora/pull/6681)
|
||||
* Fixed a 500 when liking on mobile without JS enabled [#6683](https://github.com/diaspora/diaspora/pull/6683)
|
||||
* Fixed profile image upload in the mobile UI [#6684](https://github.com/diaspora/diaspora/pull/6684)
|
||||
* Fixed eye not stopping all processes when trying to exit `script/server` [#6693](https://github.com/diaspora/diaspora/pull/6693)
|
||||
* Do not change contacts count when marking notifications on the contacts page as read [#6718](https://github.com/diaspora/diaspora/pull/6718)
|
||||
* Fix typeahead for non-latin characters [#6741](https://github.com/diaspora/diaspora/pull/6741)
|
||||
* Fix upload size error on mobile [#6803](https://github.com/diaspora/diaspora/pull/6803)
|
||||
* Connection tester handles invalid NodeInfo implementations [#6890](https://github.com/diaspora/diaspora/pull/6890)
|
||||
* Do not allow to change email to an already used one [#6905](https://github.com/diaspora/diaspora/pull/6905)
|
||||
* Correctly filter mentions on the server side [#6902](https://github.com/diaspora/diaspora/pull/6902)
|
||||
* Add aspects to the aspect membership dropdown when creating them on the getting started page [#6864](https://github.com/diaspora/diaspora/pull/6864)
|
||||
* Strip markdown from message preview in conversations list [#6923](https://github.com/diaspora/diaspora/pull/6923)
|
||||
* Improve tag stream performance [#6903](https://github.com/diaspora/diaspora/pull/6903)
|
||||
* Only show mutual contacts in conversations auto suggestions [#7001](https://github.com/diaspora/diaspora/pull/7001)
|
||||
|
||||
## Features
|
||||
* Support color themes [#6033](https://github.com/diaspora/diaspora/pull/6033)
|
||||
* Add mobile services and privacy settings pages [#6086](https://github.com/diaspora/diaspora/pull/6086)
|
||||
* Optionally make your extended profile details public [#6162](https://github.com/diaspora/diaspora/pull/6162)
|
||||
* Add admin dashboard showing latest diaspora\* version [#6216](https://github.com/diaspora/diaspora/pull/6216)
|
||||
* Display poll & location on mobile [#6238](https://github.com/diaspora/diaspora/pull/6238)
|
||||
* Update counts on contacts page dynamically [#6240](https://github.com/diaspora/diaspora/pull/6240)
|
||||
* Add support for relay based public post federation [#6207](https://github.com/diaspora/diaspora/pull/6207)
|
||||
* Bigger mobile publisher [#6261](https://github.com/diaspora/diaspora/pull/6261)
|
||||
* Backend information panel & health checks for known pods [#6290](https://github.com/diaspora/diaspora/pull/6290)
|
||||
* Allow users to view a posts locations on an OpenStreetMap [#6256](https://github.com/diaspora/diaspora/pull/6256)
|
||||
* Redesign and unify error pages [#6428](https://github.com/diaspora/diaspora/pull/6428)
|
||||
* Redesign and refactor report admin interface [#6378](https://github.com/diaspora/diaspora/pull/6378)
|
||||
* Add permalink icon to stream elements [#6457](https://github.com/diaspora/diaspora/pull/6457)
|
||||
* Move reshare count to interactions for stream elements [#6487](https://github.com/diaspora/diaspora/pull/6487)
|
||||
* Posts of ignored users are now visible on that profile page [#6617](https://github.com/diaspora/diaspora/pull/6617)
|
||||
* Add white color theme [#6631](https://github.com/diaspora/diaspora/pull/6631)
|
||||
* Add answer counts to poll [#6641](https://github.com/diaspora/diaspora/pull/6641)
|
||||
* Check for collapsible posts after images in posts have loaded [#6671](https://github.com/diaspora/diaspora/pull/6671)
|
||||
* Add reason for post report to email sent to admins [#6679](https://github.com/diaspora/diaspora/pull/6679)
|
||||
* Add links to the single post view of the related post to photos in the photo stream [#6621](https://github.com/diaspora/diaspora/pull/6621)
|
||||
* Add a note for people with disabled JavaScript [#6777](https://github.com/diaspora/diaspora/pull/6777)
|
||||
* Do not include conversation subject in notification mail [#6910](https://github.com/diaspora/diaspora/pull/6910)
|
||||
* Add 'Be excellent to each other!' to the sidebar [#6914](https://github.com/diaspora/diaspora/pull/6914)
|
||||
* Expose Sidekiq dead queue configuration options
|
||||
* Properly support pluralization in timeago strings [#6926](https://github.com/diaspora/diaspora/pull/6926)
|
||||
* Return all contacts in people search [#6951](https://github.com/diaspora/diaspora/pull/6951)
|
||||
* Make screenreaders read alerts [#6973](https://github.com/diaspora/diaspora/pull/6973)
|
||||
* Display message when there are no posts in a stream [#6974](https://github.com/diaspora/diaspora/pull/6974)
|
||||
* Add bootstrap-markdown editor to the publisher [#6551](https://github.com/diaspora/diaspora/pull/6551)
|
||||
* Don't create notifications for ignored users [#6984](https://github.com/diaspora/diaspora/pull/6984)
|
||||
* Fetch missing persons when receiving a mention for them [#6992](https://github.com/diaspora/diaspora/pull/6992)
|
||||
|
||||
# 0.5.10.2
|
||||
|
||||
Update to Rails 4.2.7.1 which fixes [CVE-2016-6316](https://groups.google.com/forum/#!topic/ruby-security-ann/8B2iV2tPRSE) and [CVE-2016-6317](https://groups.google.com/forum/#!topic/ruby-security-ann/WccgKSKiPZA).
|
||||
|
|
@ -193,6 +398,7 @@ and on a pod that received that data.
|
|||
* Update perfect-scrollbar [#6085](https://github.com/diaspora/diaspora/pull/6085)
|
||||
* Remove top margin for first heading in a post [#6110](https://github.com/diaspora/diaspora/pull/6110)
|
||||
* Add link to pod statistics in right navigation [#6117](https://github.com/diaspora/diaspora/pull/6117)
|
||||
* Update to Rails 4.2.3 [#6140](https://github.com/diaspora/diaspora/pull/6140)
|
||||
* Refactor person related URL generation [#6168](https://github.com/diaspora/diaspora/pull/6168)
|
||||
* Move webfinger and HCard generation out of the core and embed the `diaspora_federation-rails` gem [#6151](https://github.com/diaspora/diaspora/pull/6151/)
|
||||
* Refactor rspec tests to to use `let` instead of before blocks [#6199](https://github.com/diaspora/diaspora/pull/6199)
|
||||
|
|
|
|||
118
Gemfile
|
|
@ -9,22 +9,23 @@ gem "responders", "2.2.0"
|
|||
# Appserver
|
||||
|
||||
gem "unicorn", "5.1.0", require: false
|
||||
gem "unicorn-worker-killer", "0.4.4"
|
||||
|
||||
# Federation
|
||||
|
||||
gem "diaspora_federation-rails", "0.0.13"
|
||||
gem "diaspora_federation-rails", "0.1.4"
|
||||
|
||||
# API and JSON
|
||||
|
||||
gem "acts_as_api", "0.4.2"
|
||||
gem "acts_as_api", "0.4.3"
|
||||
gem "json", "1.8.3"
|
||||
gem "json-schema", "2.6.2"
|
||||
|
||||
# Authentication
|
||||
|
||||
gem "devise", "3.5.6"
|
||||
gem "devise", "4.2.0"
|
||||
gem "devise_lastseenable", "0.0.6"
|
||||
gem "devise-token_authenticatable", "0.4.6"
|
||||
gem "devise-token_authenticatable", "0.5.2"
|
||||
|
||||
# Captcha
|
||||
|
||||
|
|
@ -32,16 +33,16 @@ gem "simple_captcha2", "0.4.0", require: "simple_captcha"
|
|||
|
||||
# Background processing
|
||||
|
||||
gem "sidekiq", "3.4.2"
|
||||
gem "sidekiq", "4.1.4"
|
||||
gem "sinatra", "1.4.7"
|
||||
|
||||
# Scheduled processing
|
||||
|
||||
gem "sidetiq", "0.6.3"
|
||||
gem "sidekiq-cron", "0.4.2"
|
||||
|
||||
# Compression
|
||||
|
||||
gem "uglifier", "3.0.0"
|
||||
gem "uglifier", "3.0.1"
|
||||
|
||||
# Configuration
|
||||
|
||||
|
|
@ -53,19 +54,23 @@ gem "rack-cors", "0.4.0", require: "rack/cors"
|
|||
|
||||
# CSS
|
||||
|
||||
gem "bootstrap-sass", "2.3.2.2"
|
||||
gem "bootstrap-sass", "3.3.7"
|
||||
gem "compass-rails", "2.0.5"
|
||||
gem "sass-rails", "5.0.4"
|
||||
gem "autoprefixer-rails", "6.3.6.2"
|
||||
gem "sass-rails", "5.0.6"
|
||||
gem "autoprefixer-rails", "6.4.0.2"
|
||||
gem "bootstrap-switch-rails", "3.3.3"
|
||||
|
||||
# Database
|
||||
|
||||
ENV["DB"] ||= "mysql"
|
||||
group :mysql, optional: true do
|
||||
gem "mysql2", "0.4.4"
|
||||
end
|
||||
group :postgresql, optional: true do
|
||||
gem "pg", "0.18.4"
|
||||
end
|
||||
|
||||
gem "mysql2", "0.4.4" if ENV["DB"] == "all" || ENV["DB"] == "mysql"
|
||||
gem "pg", "0.18.4" if ENV["DB"] == "all" || ENV["DB"] == "postgres"
|
||||
|
||||
gem "activerecord-import", "0.13.0"
|
||||
gem "activerecord-import", "0.15.0"
|
||||
|
||||
# File uploading
|
||||
|
||||
|
|
@ -79,40 +84,39 @@ gem "uuid", "2.3.8"
|
|||
|
||||
# Icons
|
||||
|
||||
gem "entypo-rails", "2.2.3"
|
||||
gem "entypo-rails", "3.0.0.pre.rc2"
|
||||
|
||||
# JavaScript
|
||||
|
||||
gem "backbone-on-rails", "1.2.0.0"
|
||||
gem "handlebars_assets", "0.23.0"
|
||||
gem "handlebars_assets", "0.23.1"
|
||||
gem "jquery-rails", "4.1.1"
|
||||
gem "jquery-ui-rails", "5.0.5"
|
||||
gem "js_image_paths", "0.1.0"
|
||||
gem "js-routes", "1.2.6"
|
||||
gem "js-routes", "1.2.9"
|
||||
|
||||
source "https://rails-assets.org" do
|
||||
gem "rails-assets-jquery", "1.12.0" # Should be kept in sync with jquery-rails
|
||||
gem "rails-assets-jquery", "2.2.1" # Should be kept in sync with jquery-rails
|
||||
|
||||
gem "rails-assets-markdown-it", "6.0.5"
|
||||
gem "rails-assets-markdown-it", "7.0.0"
|
||||
gem "rails-assets-markdown-it-hashtag", "0.4.0"
|
||||
gem "rails-assets-markdown-it-diaspora-mention", "0.4.0"
|
||||
gem "rails-assets-markdown-it-sanitizer", "0.4.1"
|
||||
gem "rails-assets-markdown-it-diaspora-mention", "1.0.0"
|
||||
gem "rails-assets-markdown-it-sanitizer", "0.4.2"
|
||||
gem "rails-assets-markdown-it--markdown-it-for-inline", "0.1.1"
|
||||
gem "rails-assets-markdown-it-sub", "1.0.0"
|
||||
gem "rails-assets-markdown-it-sup", "1.0.0"
|
||||
gem "rails-assets-highlightjs", "9.4.0"
|
||||
gem "rails-assets-highlightjs", "9.6.0"
|
||||
gem "rails-assets-bootstrap-markdown", "2.10.0"
|
||||
|
||||
# jQuery plugins
|
||||
|
||||
gem "rails-assets-jeresig--jquery.hotkeys", "0.2.0"
|
||||
gem "rails-assets-jquery-placeholder", "2.3.1"
|
||||
gem "rails-assets-jquery-textchange", "0.2.3"
|
||||
gem "rails-assets-perfect-scrollbar", "0.6.11"
|
||||
gem "rails-assets-jakobmattsson--jquery-elastic", "1.6.11"
|
||||
gem "rails-assets-perfect-scrollbar", "0.6.12"
|
||||
gem "rails-assets-autosize", "3.0.17"
|
||||
gem "rails-assets-blueimp-gallery", "2.21.3"
|
||||
end
|
||||
|
||||
gem "facebox-rails", "0.2.0"
|
||||
|
||||
# Localization
|
||||
|
||||
gem "http_accept_language", "2.0.5"
|
||||
|
|
@ -122,33 +126,37 @@ gem "rails-i18n", "4.0.8"
|
|||
# Mail
|
||||
|
||||
gem "markerb", "1.1.0"
|
||||
gem "messagebus_ruby_api", "1.0.3"
|
||||
|
||||
# Map
|
||||
gem "leaflet-rails", "0.7.7"
|
||||
|
||||
# Parsing
|
||||
|
||||
gem "nokogiri", "1.6.8"
|
||||
gem "redcarpet", "3.3.4"
|
||||
gem "twitter-text", "1.13.4"
|
||||
gem "roxml", "3.1.6"
|
||||
gem "twitter-text", "1.14.0"
|
||||
gem "ruby-oembed", "0.10.1"
|
||||
gem "open_graph_reader", "0.6.1"
|
||||
|
||||
# Services
|
||||
|
||||
gem "omniauth", "1.3.1"
|
||||
gem "omniauth-facebook", "3.0.0"
|
||||
gem "omniauth-facebook", "4.0.0"
|
||||
gem "omniauth-tumblr", "1.2"
|
||||
gem "omniauth-twitter", "1.2.1"
|
||||
gem "twitter", "5.16.0"
|
||||
gem "omniauth-wordpress", "0.2.2"
|
||||
|
||||
# OpenID Connect
|
||||
gem "openid_connect", "0.12.0"
|
||||
|
||||
# Serializers
|
||||
|
||||
gem "active_model_serializers", "0.9.5"
|
||||
|
||||
# XMPP chat dependencies
|
||||
gem "diaspora-vines", "0.2.0.develop.4"
|
||||
gem "rails-assets-diaspora_jsxc", "0.1.4", source: "https://rails-assets.org"
|
||||
gem "diaspora-prosody-config", "0.0.5"
|
||||
gem "rails-assets-diaspora_jsxc", "0.1.5.develop.1", source: "https://rails-assets.org"
|
||||
|
||||
# Tags
|
||||
|
||||
|
|
@ -160,12 +168,12 @@ gem "addressable", "2.3.8", require: "addressable/uri"
|
|||
gem "faraday", "0.9.2"
|
||||
gem "faraday_middleware", "0.10.0"
|
||||
gem "faraday-cookie_jar", "0.0.6"
|
||||
gem "typhoeus", "1.0.2"
|
||||
gem "typhoeus", "1.1.0"
|
||||
|
||||
# Views
|
||||
|
||||
gem "gon", "6.0.1"
|
||||
gem "haml", "4.0.7"
|
||||
gem "gon", "6.1.0"
|
||||
gem "hamlit", "2.5.0"
|
||||
gem "mobile-fu", "1.3.1"
|
||||
gem "will_paginate", "3.1.0"
|
||||
gem "rails-timeago", "2.11.0"
|
||||
|
|
@ -185,6 +193,8 @@ gem "rubyzip", "1.2.0", require: "zip"
|
|||
# https://github.com/discourse/discourse/pull/238
|
||||
gem "minitest"
|
||||
|
||||
gem "versionist", "1.5.0"
|
||||
|
||||
# Windows and OSX have an execjs compatible runtime built-in, Linux users should
|
||||
# install Node.js or use "therubyracer".
|
||||
#
|
||||
|
|
@ -208,7 +218,7 @@ group :production do # we don"t install these on travis to speed up test runs
|
|||
|
||||
# Process management
|
||||
|
||||
gem "eye", "0.7"
|
||||
gem "eye", "0.8.1"
|
||||
|
||||
# Redirects
|
||||
|
||||
|
|
@ -223,20 +233,24 @@ end
|
|||
group :development do
|
||||
# Automatic test runs
|
||||
gem "guard", "2.14.0", require: false
|
||||
gem "listen", "~> 3.0.0", require: false
|
||||
gem "guard-cucumber", "2.1.2", require: false
|
||||
gem "guard-rspec", "4.7.2", require: false
|
||||
gem "guard-rspec", "4.7.3", require: false
|
||||
gem "guard-rubocop", "1.2.0", require: false
|
||||
gem "rb-fsevent", "0.9.7", require: false
|
||||
gem "rb-inotify", "0.9.7", require: false
|
||||
|
||||
# Linters
|
||||
gem "jshintrb", "0.3.0"
|
||||
gem "rubocop", "0.40.0"
|
||||
gem "rubocop", "0.40.0"
|
||||
gem "haml_lint", "0.18.1"
|
||||
gem "pronto", "0.7.0"
|
||||
gem "pronto-eslint", "0.7.0"
|
||||
gem "pronto-rubocop", "0.7.0"
|
||||
gem "pronto-haml", "0.7.0"
|
||||
gem "pronto-scss", "0.7.0", require: false
|
||||
|
||||
# Preloading environment
|
||||
|
||||
gem "spring", "1.7.1"
|
||||
gem "spring", "1.7.2"
|
||||
gem "spring-commands-rspec", "1.0.4"
|
||||
gem "spring-commands-cucumber", "1.0.1"
|
||||
|
||||
|
|
@ -245,7 +259,7 @@ group :development do
|
|||
gem "pry-byebug"
|
||||
|
||||
# test coverage
|
||||
gem "simplecov", "0.11.2", require: false
|
||||
gem "simplecov", "0.12.0", require: false
|
||||
|
||||
gem "turbo_dev_assets", "0.0.2"
|
||||
end
|
||||
|
|
@ -254,14 +268,17 @@ group :test do
|
|||
# RSpec (unit tests, some integration tests)
|
||||
|
||||
gem "fixture_builder", "0.4.1"
|
||||
gem "fuubar", "2.0.0"
|
||||
gem "test_after_commit", "1.0.0"
|
||||
gem "fuubar", "2.1.1"
|
||||
gem "test_after_commit", "1.1.0"
|
||||
|
||||
# Cucumber (integration tests)
|
||||
|
||||
gem "capybara", "2.7.1"
|
||||
gem "database_cleaner", "1.5.3"
|
||||
gem "selenium-webdriver", "2.47.1"
|
||||
gem "poltergeist", "1.10.0"
|
||||
|
||||
gem "cucumber-api-steps", "0.13", require: false
|
||||
gem "json_spec", "1.1.4"
|
||||
|
||||
# General helpers
|
||||
|
||||
|
|
@ -270,15 +287,18 @@ group :test do
|
|||
gem "webmock", "2.1.0", require: false
|
||||
gem "shoulda-matchers", "3.1.1"
|
||||
|
||||
gem "diaspora_federation-test", "0.0.13"
|
||||
gem "diaspora_federation-test", "0.1.4"
|
||||
|
||||
# Coverage
|
||||
gem 'coveralls', require: false
|
||||
end
|
||||
|
||||
group :development, :test do
|
||||
# RSpec (unit tests, some integration tests)
|
||||
gem "rspec-rails", "3.4.2"
|
||||
gem "rspec-rails", "3.5.1"
|
||||
|
||||
# Cucumber (integration tests)
|
||||
gem "cucumber-rails", "1.4.3", require: false
|
||||
gem "cucumber-rails", "1.4.4", require: false
|
||||
|
||||
# Jasmine (client side application tests (JS))
|
||||
gem "jasmine", "2.4.0"
|
||||
|
|
|
|||
487
Gemfile.lock
|
|
@ -34,8 +34,8 @@ GEM
|
|||
activemodel (= 4.2.7.1)
|
||||
activesupport (= 4.2.7.1)
|
||||
arel (~> 6.0)
|
||||
activerecord-import (0.13.0)
|
||||
activerecord (>= 3.0)
|
||||
activerecord-import (0.15.0)
|
||||
activerecord (>= 3.2)
|
||||
activesupport (4.2.7.1)
|
||||
i18n (~> 0.7)
|
||||
json (~> 1.7, >= 1.7.7)
|
||||
|
|
@ -44,7 +44,7 @@ GEM
|
|||
tzinfo (~> 1.1)
|
||||
acts-as-taggable-on (3.5.0)
|
||||
activerecord (>= 3.2, < 5)
|
||||
acts_as_api (0.4.2)
|
||||
acts_as_api (0.4.3)
|
||||
activemodel (>= 3.0.0)
|
||||
activesupport (>= 3.0.0)
|
||||
rack (>= 1.1.0)
|
||||
|
|
@ -55,7 +55,8 @@ GEM
|
|||
fog (>= 1.8.0)
|
||||
unf
|
||||
ast (2.3.0)
|
||||
autoprefixer-rails (6.3.6.2)
|
||||
attr_required (1.0.1)
|
||||
autoprefixer-rails (6.4.0.2)
|
||||
execjs
|
||||
backbone-on-rails (1.2.0.0)
|
||||
eco
|
||||
|
|
@ -63,8 +64,11 @@ GEM
|
|||
jquery-rails
|
||||
railties
|
||||
bcrypt (3.1.11)
|
||||
bootstrap-sass (2.3.2.2)
|
||||
sass (~> 3.2)
|
||||
bindata (2.3.1)
|
||||
bootstrap-sass (3.3.7)
|
||||
autoprefixer-rails (>= 5.2.1)
|
||||
sass (>= 3.3.4)
|
||||
bootstrap-switch-rails (3.3.3)
|
||||
buftok (0.2.0)
|
||||
builder (3.2.2)
|
||||
byebug (9.0.5)
|
||||
|
|
@ -81,18 +85,33 @@ GEM
|
|||
json (>= 1.7)
|
||||
mime-types (>= 1.16)
|
||||
mimemagic (>= 0.3.0)
|
||||
celluloid (0.16.0)
|
||||
timers (~> 4.0.0)
|
||||
celluloid-io (0.16.2)
|
||||
celluloid (>= 0.16.0)
|
||||
nio4r (>= 1.1.0)
|
||||
childprocess (0.5.9)
|
||||
ffi (~> 1.0, >= 1.0.11)
|
||||
chunky_png (1.3.5)
|
||||
celluloid (0.17.3)
|
||||
celluloid-essentials
|
||||
celluloid-extras
|
||||
celluloid-fsm
|
||||
celluloid-pool
|
||||
celluloid-supervision
|
||||
timers (>= 4.1.1)
|
||||
celluloid-essentials (0.20.5)
|
||||
timers (>= 4.1.1)
|
||||
celluloid-extras (0.20.5)
|
||||
timers (>= 4.1.1)
|
||||
celluloid-fsm (0.20.5)
|
||||
timers (>= 4.1.1)
|
||||
celluloid-io (0.17.3)
|
||||
celluloid (>= 0.17.2)
|
||||
nio4r (>= 1.1)
|
||||
timers (>= 4.1.1)
|
||||
celluloid-pool (0.20.5)
|
||||
timers (>= 4.1.1)
|
||||
celluloid-supervision (0.20.6)
|
||||
timers (>= 4.1.1)
|
||||
chunky_png (1.3.6)
|
||||
cliver (0.3.2)
|
||||
coderay (1.1.1)
|
||||
coffee-rails (4.1.1)
|
||||
coffee-rails (4.2.1)
|
||||
coffee-script (>= 2.2.0)
|
||||
railties (>= 4.0.0, < 5.1.x)
|
||||
railties (>= 4.0.0, < 5.2.x)
|
||||
coffee-script (2.4.1)
|
||||
coffee-script-source
|
||||
execjs
|
||||
|
|
@ -113,8 +132,15 @@ GEM
|
|||
compass (~> 1.0.0)
|
||||
sass-rails (< 5.1)
|
||||
sprockets (< 2.13)
|
||||
concurrent-ruby (1.0.2)
|
||||
configurate (0.3.1)
|
||||
connection_pool (2.2.0)
|
||||
coveralls (0.8.15)
|
||||
json (>= 1.8, < 3)
|
||||
simplecov (~> 0.12.0)
|
||||
term-ansicolor (~> 1.3)
|
||||
thor (~> 0.19.1)
|
||||
tins (>= 1.6.0, < 2)
|
||||
crack (0.4.3)
|
||||
safe_yaml (~> 1.0.0)
|
||||
cucumber (2.4.0)
|
||||
|
|
@ -125,50 +151,47 @@ GEM
|
|||
gherkin (~> 4.0)
|
||||
multi_json (>= 1.7.5, < 2.0)
|
||||
multi_test (>= 0.1.2)
|
||||
cucumber-api-steps (0.13)
|
||||
cucumber (>= 1.2.1)
|
||||
jsonpath (>= 0.1.2)
|
||||
rspec (>= 2.12.0)
|
||||
cucumber-core (1.5.0)
|
||||
gherkin (~> 4.0)
|
||||
cucumber-rails (1.4.3)
|
||||
cucumber-rails (1.4.4)
|
||||
capybara (>= 1.1.2, < 3)
|
||||
cucumber (>= 1.3.8, < 3)
|
||||
mime-types (>= 1.16, < 4)
|
||||
nokogiri (~> 1.5)
|
||||
railties (>= 3, < 5)
|
||||
railties (>= 3, < 5.1)
|
||||
cucumber-wire (0.0.1)
|
||||
database_cleaner (1.5.3)
|
||||
devise (3.5.6)
|
||||
devise (4.2.0)
|
||||
bcrypt (~> 3.0)
|
||||
orm_adapter (~> 0.1)
|
||||
railties (>= 3.2.6, < 5)
|
||||
railties (>= 4.1.0, < 5.1)
|
||||
responders
|
||||
thread_safe (~> 0.1)
|
||||
warden (~> 1.2.3)
|
||||
devise-token_authenticatable (0.4.6)
|
||||
devise (>= 3.5.2, < 4.0.0)
|
||||
devise-token_authenticatable (0.5.2)
|
||||
devise (>= 4.0.0, < 4.3.0)
|
||||
devise_lastseenable (0.0.6)
|
||||
devise
|
||||
rails (>= 3.0.4)
|
||||
diaspora-vines (0.2.0.develop.4)
|
||||
activerecord (~> 4.1)
|
||||
bcrypt (~> 3.1)
|
||||
em-hiredis (~> 0.3.0)
|
||||
eventmachine (~> 1.0.8)
|
||||
http_parser.rb (~> 0.6)
|
||||
nokogiri (~> 1.6)
|
||||
diaspora_federation (0.0.13)
|
||||
diaspora-prosody-config (0.0.5)
|
||||
diaspora_federation (0.1.4)
|
||||
faraday (~> 0.9.0)
|
||||
faraday_middleware (~> 0.10.0)
|
||||
nokogiri (~> 1.6, >= 1.6.7.2)
|
||||
nokogiri (~> 1.6, >= 1.6.8)
|
||||
typhoeus (~> 1.0)
|
||||
valid (~> 1.0)
|
||||
diaspora_federation-rails (0.0.13)
|
||||
diaspora_federation (= 0.0.13)
|
||||
diaspora_federation-rails (0.1.4)
|
||||
diaspora_federation (= 0.1.4)
|
||||
rails (~> 4.2)
|
||||
diaspora_federation-test (0.0.13)
|
||||
diaspora_federation (= 0.0.13)
|
||||
factory_girl (~> 4.5, >= 4.5.0)
|
||||
diaspora_federation-test (0.1.4)
|
||||
diaspora_federation (= 0.1.4)
|
||||
factory_girl (~> 4.7)
|
||||
diff-lcs (1.2.5)
|
||||
docile (1.1.5)
|
||||
domain_name (0.5.20160310)
|
||||
domain_name (0.5.20160615)
|
||||
unf (>= 0.0.5, < 1.0.0)
|
||||
eco (1.0.0)
|
||||
coffee-script
|
||||
|
|
@ -176,27 +199,24 @@ GEM
|
|||
execjs
|
||||
eco-source (1.1.0.rc.1)
|
||||
ejs (1.1.1)
|
||||
em-hiredis (0.3.1)
|
||||
eventmachine (~> 1.0)
|
||||
hiredis (~> 0.6.0)
|
||||
entypo-rails (2.2.3)
|
||||
railties (>= 3.1, <= 5)
|
||||
entypo-rails (3.0.0.pre.rc2)
|
||||
railties (>= 4.1, <= 5)
|
||||
equalizer (0.0.10)
|
||||
erubis (2.7.0)
|
||||
eslintrb (2.1.0)
|
||||
execjs
|
||||
multi_json (>= 1.3)
|
||||
rake
|
||||
ethon (0.9.0)
|
||||
ffi (>= 1.3.0)
|
||||
eventmachine (1.0.9.1)
|
||||
excon (0.49.0)
|
||||
execjs (2.7.0)
|
||||
eye (0.7)
|
||||
celluloid (~> 0.16.0)
|
||||
celluloid-io (~> 0.16.0)
|
||||
eye (0.8.1)
|
||||
celluloid (~> 0.17.3)
|
||||
celluloid-io (~> 0.17.0)
|
||||
sigar (~> 0.7.3)
|
||||
state_machine
|
||||
thor
|
||||
facebox-rails (0.2.0)
|
||||
railties (>= 3.0, < 5.0)
|
||||
thor (>= 0.14, < 2.0)
|
||||
factory_girl (4.7.0)
|
||||
activesupport (>= 3.0.0)
|
||||
factory_girl_rails (4.7.0)
|
||||
|
|
@ -209,7 +229,7 @@ GEM
|
|||
http-cookie (~> 1.0.0)
|
||||
faraday_middleware (0.10.0)
|
||||
faraday (>= 0.7.4, < 0.10)
|
||||
ffi (1.9.10)
|
||||
ffi (1.9.14)
|
||||
fission (0.5.0)
|
||||
CFPropertyList (~> 2.2)
|
||||
fixture_builder (0.4.1)
|
||||
|
|
@ -342,16 +362,20 @@ GEM
|
|||
fog-xml (0.1.2)
|
||||
fog-core
|
||||
nokogiri (~> 1.5, >= 1.5.11)
|
||||
font-awesome-rails (4.6.3.0)
|
||||
font-awesome-rails (4.6.3.1)
|
||||
railties (>= 3.2, < 5.1)
|
||||
formatador (0.2.5)
|
||||
fuubar (2.0.0)
|
||||
fuubar (2.1.1)
|
||||
rspec (~> 3.0)
|
||||
ruby-progressbar (~> 1.4)
|
||||
get_process_mem (0.2.1)
|
||||
gherkin (4.0.0)
|
||||
gitlab (3.6.1)
|
||||
httparty
|
||||
terminal-table
|
||||
globalid (0.3.7)
|
||||
activesupport (>= 4.1.0)
|
||||
gon (6.0.1)
|
||||
gon (6.1.0)
|
||||
actionpack (>= 3.0)
|
||||
json
|
||||
multi_json
|
||||
|
|
@ -370,7 +394,7 @@ GEM
|
|||
cucumber (~> 2.0)
|
||||
guard-compat (~> 1.0)
|
||||
nenv (~> 0.1)
|
||||
guard-rspec (4.7.2)
|
||||
guard-rspec (4.7.3)
|
||||
guard (~> 2.1)
|
||||
guard-compat (~> 1.1)
|
||||
rspec (>= 2.99.0, < 4.0)
|
||||
|
|
@ -379,7 +403,16 @@ GEM
|
|||
rubocop (~> 0.20)
|
||||
haml (4.0.7)
|
||||
tilt
|
||||
handlebars_assets (0.23.0)
|
||||
haml_lint (0.18.1)
|
||||
haml (~> 4.0)
|
||||
rake (>= 10, < 12)
|
||||
rubocop (>= 0.36.0)
|
||||
sysexits (~> 1.1)
|
||||
hamlit (2.5.0)
|
||||
temple (~> 0.7.6)
|
||||
thor
|
||||
tilt
|
||||
handlebars_assets (0.23.1)
|
||||
execjs (~> 2.0)
|
||||
multi_json (~> 1.0)
|
||||
sprockets (>= 2.0.0)
|
||||
|
|
@ -387,7 +420,6 @@ GEM
|
|||
hashdiff (0.3.0)
|
||||
hashie (3.4.4)
|
||||
hike (1.2.3)
|
||||
hiredis (0.6.1)
|
||||
hitimes (1.2.4)
|
||||
http (1.0.4)
|
||||
addressable (~> 2.3)
|
||||
|
|
@ -399,6 +431,10 @@ GEM
|
|||
http-form_data (1.0.1)
|
||||
http_accept_language (2.0.5)
|
||||
http_parser.rb (0.6.0)
|
||||
httparty (0.13.7)
|
||||
json (~> 1.8)
|
||||
multi_xml (>= 0.5.2)
|
||||
httpclient (2.8.1)
|
||||
i18n (0.7.0)
|
||||
i18n-inflector (2.6.7)
|
||||
i18n (>= 0.4.1)
|
||||
|
|
@ -406,7 +442,6 @@ GEM
|
|||
actionpack (>= 3.0.0)
|
||||
i18n-inflector (~> 2.6)
|
||||
railties (>= 3.0.0)
|
||||
ice_cube (0.11.1)
|
||||
inflecto (0.0.2)
|
||||
ipaddress (0.8.3)
|
||||
jasmine (2.4.0)
|
||||
|
|
@ -422,26 +457,35 @@ GEM
|
|||
thor (>= 0.14, < 2.0)
|
||||
jquery-ui-rails (5.0.5)
|
||||
railties (>= 3.2.16)
|
||||
js-routes (1.2.6)
|
||||
js-routes (1.2.9)
|
||||
railties (>= 3.2)
|
||||
sprockets-rails
|
||||
js_image_paths (0.1.0)
|
||||
rails (~> 4.0)
|
||||
jshintrb (0.3.0)
|
||||
execjs
|
||||
multi_json (>= 1.3)
|
||||
rake
|
||||
json (1.8.3)
|
||||
json-jwt (1.6.3)
|
||||
activesupport
|
||||
bindata
|
||||
multi_json (>= 1.3)
|
||||
securecompare
|
||||
url_safe_base64
|
||||
json-schema (2.6.2)
|
||||
addressable (~> 2.3.8)
|
||||
jwt (1.5.1)
|
||||
json_spec (1.1.4)
|
||||
multi_json (~> 1.0)
|
||||
rspec (>= 2.0, < 4.0)
|
||||
jsonpath (0.5.8)
|
||||
multi_json
|
||||
jwt (1.5.4)
|
||||
kaminari (0.16.3)
|
||||
actionpack (>= 3.0.0)
|
||||
activesupport (>= 3.0.0)
|
||||
kgio (2.10.0)
|
||||
listen (3.0.8)
|
||||
leaflet-rails (0.7.7)
|
||||
listen (3.1.5)
|
||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||
rb-inotify (~> 0.9, >= 0.9.7)
|
||||
ruby_dep (~> 1.2)
|
||||
little-plugger (1.1.4)
|
||||
logging (2.1.0)
|
||||
little-plugger (~> 1.1)
|
||||
|
|
@ -458,7 +502,6 @@ GEM
|
|||
markerb (1.1.0)
|
||||
memoizable (0.4.2)
|
||||
thread_safe (~> 0.3, >= 0.3.1)
|
||||
messagebus_ruby_api (1.0.3)
|
||||
method_source (0.8.2)
|
||||
mime-types (3.1)
|
||||
mime-types-data (~> 3.2015)
|
||||
|
|
@ -478,24 +521,26 @@ GEM
|
|||
naught (1.1.0)
|
||||
nenv (0.3.0)
|
||||
nested_form (0.3.2)
|
||||
nio4r (1.2.0)
|
||||
nio4r (1.2.1)
|
||||
nokogiri (1.6.8)
|
||||
mini_portile2 (~> 2.1.0)
|
||||
pkg-config (~> 1.1.7)
|
||||
notiffany (0.1.0)
|
||||
notiffany (0.1.1)
|
||||
nenv (~> 0.1)
|
||||
shellany (~> 0.0)
|
||||
oauth (0.5.1)
|
||||
oauth2 (1.1.0)
|
||||
oauth2 (1.2.0)
|
||||
faraday (>= 0.8, < 0.10)
|
||||
jwt (~> 1.0, < 1.5.2)
|
||||
jwt (~> 1.0)
|
||||
multi_json (~> 1.3)
|
||||
multi_xml (~> 0.5)
|
||||
rack (>= 1.2, < 3)
|
||||
octokit (4.3.0)
|
||||
sawyer (~> 0.7.0, >= 0.5.3)
|
||||
omniauth (1.3.1)
|
||||
hashie (>= 1.2, < 4)
|
||||
rack (>= 1.0, < 3)
|
||||
omniauth-facebook (3.0.0)
|
||||
omniauth-facebook (4.0.0)
|
||||
omniauth-oauth2 (~> 1.2)
|
||||
omniauth-oauth (1.1.0)
|
||||
oauth
|
||||
|
|
@ -514,13 +559,48 @@ GEM
|
|||
open_graph_reader (0.6.1)
|
||||
faraday (~> 0.9.0)
|
||||
nokogiri (~> 1.6)
|
||||
openid_connect (0.12.0)
|
||||
activemodel
|
||||
attr_required (>= 1.0.0)
|
||||
json (>= 1.4.3)
|
||||
json-jwt (>= 1.5.0)
|
||||
rack-oauth2 (>= 1.3.1)
|
||||
swd (>= 1.0.0)
|
||||
tzinfo
|
||||
validate_email
|
||||
validate_url
|
||||
webfinger (>= 1.0.1)
|
||||
orm_adapter (0.5.0)
|
||||
parser (2.3.1.2)
|
||||
ast (~> 2.2)
|
||||
pg (0.18.4)
|
||||
phantomjs (2.1.1.0)
|
||||
pkg-config (1.1.7)
|
||||
poltergeist (1.10.0)
|
||||
capybara (~> 2.1)
|
||||
cliver (~> 0.3.1)
|
||||
websocket-driver (>= 0.2.0)
|
||||
powerpack (0.1.1)
|
||||
pry (0.10.3)
|
||||
pronto (0.7.0)
|
||||
gitlab (~> 3.6, >= 3.4.0)
|
||||
httparty (~> 0.13.7)
|
||||
octokit (~> 4.3, >= 4.1.0)
|
||||
rainbow (~> 2.1)
|
||||
rugged (~> 0.24, >= 0.23.0)
|
||||
thor (~> 0.19.0)
|
||||
pronto-eslint (0.7.0)
|
||||
eslintrb (~> 2.0, >= 2.0.0)
|
||||
pronto (~> 0.7.0)
|
||||
pronto-haml (0.7.0)
|
||||
haml_lint (~> 0.16, >= 0.15.0)
|
||||
pronto (~> 0.7.0)
|
||||
pronto-rubocop (0.7.0)
|
||||
pronto (~> 0.7.0)
|
||||
rubocop (~> 0.38, >= 0.35.0)
|
||||
pronto-scss (0.7.0)
|
||||
pronto (~> 0.7.0)
|
||||
scss_lint (~> 0.43, >= 0.43.0)
|
||||
pry (0.10.4)
|
||||
coderay (~> 1.1.0)
|
||||
method_source (~> 0.8.1)
|
||||
slop (~> 3.4)
|
||||
|
|
@ -536,6 +616,12 @@ GEM
|
|||
activesupport
|
||||
rack-mobile-detect (0.4.0)
|
||||
rack
|
||||
rack-oauth2 (1.4.0)
|
||||
activesupport (>= 2.3)
|
||||
attr_required (>= 0.0.5)
|
||||
httpclient (>= 2.4)
|
||||
multi_json (>= 1.3.6)
|
||||
rack (>= 1.1)
|
||||
rack-piwik (0.3.0)
|
||||
rack-pjax (0.8.0)
|
||||
nokogiri (~> 1.5)
|
||||
|
|
@ -558,7 +644,13 @@ GEM
|
|||
bundler (>= 1.3.0, < 2.0)
|
||||
railties (= 4.2.7.1)
|
||||
sprockets-rails
|
||||
rails-assets-diaspora_jsxc (0.1.4)
|
||||
rails-assets-autosize (3.0.17)
|
||||
rails-assets-blueimp-gallery (2.21.3)
|
||||
rails-assets-bootstrap (3.3.7)
|
||||
rails-assets-jquery (>= 1.9.1, < 4)
|
||||
rails-assets-bootstrap-markdown (2.10.0)
|
||||
rails-assets-bootstrap (~> 3)
|
||||
rails-assets-diaspora_jsxc (0.1.5.develop.1)
|
||||
rails-assets-favico.js (~> 0.3.9)
|
||||
rails-assets-jquery (>= 1.11)
|
||||
rails-assets-jquery-colorbox (~> 1.6.3)
|
||||
|
|
@ -566,15 +658,11 @@ GEM
|
|||
rails-assets-jquery.slimscroll (~> 1.3.6)
|
||||
rails-assets-jquery.ui (~> 1.11.4)
|
||||
rails-assets-favico.js (0.3.10)
|
||||
rails-assets-highlightjs (9.4.0)
|
||||
rails-assets-jakobmattsson--jquery-elastic (1.6.11)
|
||||
rails-assets-jquery (>= 1.2.6)
|
||||
rails-assets-highlightjs (9.6.0)
|
||||
rails-assets-jasmine (2.4.1)
|
||||
rails-assets-jasmine-ajax (3.2.0)
|
||||
rails-assets-jasmine (~> 2)
|
||||
rails-assets-jeresig--jquery.hotkeys (0.2.0)
|
||||
rails-assets-jquery (>= 1.4.2)
|
||||
rails-assets-jquery (1.12.0)
|
||||
rails-assets-jquery (2.2.1)
|
||||
rails-assets-jquery-colorbox (1.6.4)
|
||||
rails-assets-jquery (>= 1.3.2)
|
||||
rails-assets-jquery-fullscreen-plugin (0.5.0)
|
||||
|
|
@ -582,17 +670,17 @@ GEM
|
|||
rails-assets-jquery (>= 1.6)
|
||||
rails-assets-jquery-textchange (0.2.3)
|
||||
rails-assets-jquery
|
||||
rails-assets-jquery.slimscroll (1.3.7)
|
||||
rails-assets-jquery.slimscroll (1.3.8)
|
||||
rails-assets-jquery.ui (1.11.4)
|
||||
rails-assets-jquery (>= 1.6)
|
||||
rails-assets-markdown-it--markdown-it-for-inline (0.1.1)
|
||||
rails-assets-markdown-it (6.0.5)
|
||||
rails-assets-markdown-it-diaspora-mention (0.4.0)
|
||||
rails-assets-markdown-it (7.0.0)
|
||||
rails-assets-markdown-it-diaspora-mention (1.0.0)
|
||||
rails-assets-markdown-it-hashtag (0.4.0)
|
||||
rails-assets-markdown-it-sanitizer (0.4.1)
|
||||
rails-assets-markdown-it-sanitizer (0.4.2)
|
||||
rails-assets-markdown-it-sub (1.0.0)
|
||||
rails-assets-markdown-it-sup (1.0.0)
|
||||
rails-assets-perfect-scrollbar (0.6.11)
|
||||
rails-assets-perfect-scrollbar (0.6.12)
|
||||
rails-deprecated_sanitizer (1.0.3)
|
||||
activesupport (>= 4.2.0.alpha)
|
||||
rails-dom-testing (1.0.7)
|
||||
|
|
@ -637,37 +725,34 @@ GEM
|
|||
nokogiri (>= 1.4.1)
|
||||
trollop
|
||||
redcarpet (3.3.4)
|
||||
redis (3.2.2)
|
||||
redis (3.3.1)
|
||||
redis-namespace (1.5.2)
|
||||
redis (~> 3.0, >= 3.0.4)
|
||||
remotipart (1.2.1)
|
||||
request_store (1.3.1)
|
||||
responders (2.2.0)
|
||||
railties (>= 4.2.0, < 5.1)
|
||||
roxml (3.1.6)
|
||||
activesupport (>= 2.3.0)
|
||||
nokogiri (>= 1.3.3)
|
||||
rspec (3.4.0)
|
||||
rspec-core (~> 3.4.0)
|
||||
rspec-expectations (~> 3.4.0)
|
||||
rspec-mocks (~> 3.4.0)
|
||||
rspec-core (3.4.4)
|
||||
rspec-support (~> 3.4.0)
|
||||
rspec-expectations (3.4.0)
|
||||
rspec (3.5.0)
|
||||
rspec-core (~> 3.5.0)
|
||||
rspec-expectations (~> 3.5.0)
|
||||
rspec-mocks (~> 3.5.0)
|
||||
rspec-core (3.5.2)
|
||||
rspec-support (~> 3.5.0)
|
||||
rspec-expectations (3.5.0)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.4.0)
|
||||
rspec-mocks (3.4.1)
|
||||
rspec-support (~> 3.5.0)
|
||||
rspec-mocks (3.5.0)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.4.0)
|
||||
rspec-rails (3.4.2)
|
||||
actionpack (>= 3.0, < 4.3)
|
||||
activesupport (>= 3.0, < 4.3)
|
||||
railties (>= 3.0, < 4.3)
|
||||
rspec-core (~> 3.4.0)
|
||||
rspec-expectations (~> 3.4.0)
|
||||
rspec-mocks (~> 3.4.0)
|
||||
rspec-support (~> 3.4.0)
|
||||
rspec-support (3.4.1)
|
||||
rspec-support (~> 3.5.0)
|
||||
rspec-rails (3.5.1)
|
||||
actionpack (>= 3.0)
|
||||
activesupport (>= 3.0)
|
||||
railties (>= 3.0)
|
||||
rspec-core (~> 3.5.0)
|
||||
rspec-expectations (~> 3.5.0)
|
||||
rspec-mocks (~> 3.5.0)
|
||||
rspec-support (~> 3.5.0)
|
||||
rspec-support (3.5.0)
|
||||
rubocop (0.40.0)
|
||||
parser (>= 2.3.1.0, < 3.0)
|
||||
powerpack (~> 0.1)
|
||||
|
|
@ -676,40 +761,44 @@ GEM
|
|||
unicode-display_width (~> 1.0, >= 1.0.1)
|
||||
ruby-oembed (0.10.1)
|
||||
ruby-progressbar (1.8.1)
|
||||
ruby_dep (1.3.1)
|
||||
rubyzip (1.2.0)
|
||||
rufus-scheduler (3.2.1)
|
||||
rugged (0.24.0)
|
||||
safe_yaml (1.0.4)
|
||||
sass (3.4.22)
|
||||
sass-rails (5.0.4)
|
||||
railties (>= 4.0.0, < 5.0)
|
||||
sass-rails (5.0.6)
|
||||
railties (>= 4.0.0, < 6)
|
||||
sass (~> 3.1)
|
||||
sprockets (>= 2.8, < 4.0)
|
||||
sprockets-rails (>= 2.0, < 4.0)
|
||||
tilt (>= 1.1, < 3)
|
||||
selenium-webdriver (2.47.1)
|
||||
childprocess (~> 0.5)
|
||||
multi_json (~> 1.0)
|
||||
rubyzip (~> 1.0)
|
||||
websocket (~> 1.0)
|
||||
sawyer (0.7.0)
|
||||
addressable (>= 2.3.5, < 2.5)
|
||||
faraday (~> 0.8, < 0.10)
|
||||
scss_lint (0.49.0)
|
||||
rake (>= 0.9, < 12)
|
||||
sass (~> 3.4.20)
|
||||
securecompare (1.0.0)
|
||||
shellany (0.0.1)
|
||||
shoulda-matchers (3.1.1)
|
||||
activesupport (>= 4.0.0)
|
||||
sidekiq (3.4.2)
|
||||
celluloid (~> 0.16.0)
|
||||
sidekiq (4.1.4)
|
||||
concurrent-ruby (~> 1.0)
|
||||
connection_pool (~> 2.2, >= 2.2.0)
|
||||
json (~> 1.0)
|
||||
redis (~> 3.2, >= 3.2.1)
|
||||
redis-namespace (~> 1.5, >= 1.5.2)
|
||||
sidetiq (0.6.3)
|
||||
celluloid (>= 0.14.1)
|
||||
ice_cube (= 0.11.1)
|
||||
sidekiq (>= 3.0.0)
|
||||
sinatra (>= 1.4.7)
|
||||
sidekiq-cron (0.4.2)
|
||||
redis-namespace (>= 1.5.2)
|
||||
rufus-scheduler (>= 2.0.24)
|
||||
sidekiq (>= 4.0.0)
|
||||
sigar (0.7.3)
|
||||
simple_captcha2 (0.4.0)
|
||||
rails (>= 4.1)
|
||||
simple_oauth (0.3.1)
|
||||
simplecov (0.11.2)
|
||||
simplecov (0.12.0)
|
||||
docile (~> 1.1.0)
|
||||
json (~> 1.8)
|
||||
json (>= 1.8, < 3)
|
||||
simplecov-html (~> 0.10.0)
|
||||
simplecov-html (0.10.0)
|
||||
sinatra (1.4.7)
|
||||
|
|
@ -719,7 +808,7 @@ GEM
|
|||
sinon-rails (1.15.0)
|
||||
railties (>= 3.1)
|
||||
slop (3.6.0)
|
||||
spring (1.7.1)
|
||||
spring (1.7.2)
|
||||
spring-commands-cucumber (1.0.1)
|
||||
spring (>= 0.9.1)
|
||||
spring-commands-rspec (1.0.4)
|
||||
|
|
@ -734,15 +823,27 @@ GEM
|
|||
activesupport (>= 3.0)
|
||||
sprockets (>= 2.8, < 4.0)
|
||||
state_machine (1.2.0)
|
||||
swd (1.0.1)
|
||||
activesupport (>= 3)
|
||||
attr_required (>= 0.0.5)
|
||||
httpclient (>= 2.4)
|
||||
i18n
|
||||
json (>= 1.4.3)
|
||||
sysexits (1.2.0)
|
||||
systemu (2.6.5)
|
||||
test_after_commit (1.0.0)
|
||||
temple (0.7.7)
|
||||
term-ansicolor (1.3.2)
|
||||
tins (~> 1.0)
|
||||
terminal-table (1.6.0)
|
||||
test_after_commit (1.1.0)
|
||||
activerecord (>= 3.2)
|
||||
thor (0.19.1)
|
||||
thread_safe (0.3.5)
|
||||
tilt (1.4.1)
|
||||
timecop (0.8.1)
|
||||
timers (4.0.4)
|
||||
timers (4.1.1)
|
||||
hitimes
|
||||
tins (1.12.0)
|
||||
trollop (2.1.2)
|
||||
turbo_dev_assets (0.0.2)
|
||||
twitter (5.16.0)
|
||||
|
|
@ -756,104 +857,135 @@ GEM
|
|||
memoizable (~> 0.4.0)
|
||||
naught (~> 1.0)
|
||||
simple_oauth (~> 0.3.0)
|
||||
twitter-text (1.13.4)
|
||||
twitter-text (1.14.0)
|
||||
unf (~> 0.1.0)
|
||||
typhoeus (1.0.2)
|
||||
typhoeus (1.1.0)
|
||||
ethon (>= 0.9.0)
|
||||
tzinfo (1.2.2)
|
||||
thread_safe (~> 0.1)
|
||||
uglifier (3.0.0)
|
||||
uglifier (3.0.1)
|
||||
execjs (>= 0.3.0, < 3)
|
||||
unf (0.1.4)
|
||||
unf_ext
|
||||
unf_ext (0.0.7.2)
|
||||
unicode-display_width (1.0.5)
|
||||
unicode-display_width (1.1.0)
|
||||
unicorn (5.1.0)
|
||||
kgio (~> 2.6)
|
||||
raindrops (~> 0.7)
|
||||
unicorn-worker-killer (0.4.4)
|
||||
get_process_mem (~> 0)
|
||||
unicorn (>= 4, < 6)
|
||||
url_safe_base64 (0.2.2)
|
||||
uuid (2.3.8)
|
||||
macaddr (~> 1.0)
|
||||
valid (1.1.0)
|
||||
valid (1.2.0)
|
||||
validate_email (0.1.6)
|
||||
activemodel (>= 3.0)
|
||||
mail (>= 2.2.5)
|
||||
validate_url (1.0.2)
|
||||
activemodel (>= 3.0.0)
|
||||
addressable
|
||||
versionist (1.5.0)
|
||||
activesupport (>= 3)
|
||||
railties (>= 3)
|
||||
yard (~> 0.7)
|
||||
warden (1.2.6)
|
||||
rack (>= 1.0)
|
||||
webfinger (1.0.2)
|
||||
activesupport
|
||||
httpclient (>= 2.4)
|
||||
multi_json
|
||||
webmock (2.1.0)
|
||||
addressable (>= 2.3.6)
|
||||
crack (>= 0.3.2)
|
||||
hashdiff
|
||||
websocket (1.2.3)
|
||||
websocket-driver (0.6.4)
|
||||
websocket-extensions (>= 0.1.0)
|
||||
websocket-extensions (0.1.2)
|
||||
will_paginate (3.1.0)
|
||||
xml-simple (1.1.5)
|
||||
xpath (2.0.0)
|
||||
nokogiri (~> 1.3)
|
||||
yard (0.8.7.6)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
active_model_serializers (= 0.9.5)
|
||||
activerecord-import (= 0.13.0)
|
||||
activerecord-import (= 0.15.0)
|
||||
acts-as-taggable-on (= 3.5.0)
|
||||
acts_as_api (= 0.4.2)
|
||||
acts_as_api (= 0.4.3)
|
||||
addressable (= 2.3.8)
|
||||
asset_sync (= 1.1.0)
|
||||
autoprefixer-rails (= 6.3.6.2)
|
||||
autoprefixer-rails (= 6.4.0.2)
|
||||
backbone-on-rails (= 1.2.0.0)
|
||||
bootstrap-sass (= 2.3.2.2)
|
||||
bootstrap-sass (= 3.3.7)
|
||||
bootstrap-switch-rails (= 3.3.3)
|
||||
capybara (= 2.7.1)
|
||||
carrierwave (= 0.11.2)
|
||||
compass-rails (= 2.0.5)
|
||||
configurate (= 0.3.1)
|
||||
cucumber-rails (= 1.4.3)
|
||||
coveralls
|
||||
cucumber-api-steps (= 0.13)
|
||||
cucumber-rails (= 1.4.4)
|
||||
database_cleaner (= 1.5.3)
|
||||
devise (= 3.5.6)
|
||||
devise-token_authenticatable (= 0.4.6)
|
||||
devise (= 4.2.0)
|
||||
devise-token_authenticatable (= 0.5.2)
|
||||
devise_lastseenable (= 0.0.6)
|
||||
diaspora-vines (= 0.2.0.develop.4)
|
||||
diaspora_federation-rails (= 0.0.13)
|
||||
diaspora_federation-test (= 0.0.13)
|
||||
entypo-rails (= 2.2.3)
|
||||
eye (= 0.7)
|
||||
facebox-rails (= 0.2.0)
|
||||
diaspora-prosody-config (= 0.0.5)
|
||||
diaspora_federation-rails (= 0.1.4)
|
||||
diaspora_federation-test (= 0.1.4)
|
||||
entypo-rails (= 3.0.0.pre.rc2)
|
||||
eye (= 0.8.1)
|
||||
factory_girl_rails (= 4.7.0)
|
||||
faraday (= 0.9.2)
|
||||
faraday-cookie_jar (= 0.0.6)
|
||||
faraday_middleware (= 0.10.0)
|
||||
fixture_builder (= 0.4.1)
|
||||
fog (= 1.38.0)
|
||||
fuubar (= 2.0.0)
|
||||
gon (= 6.0.1)
|
||||
fuubar (= 2.1.1)
|
||||
gon (= 6.1.0)
|
||||
guard (= 2.14.0)
|
||||
guard-cucumber (= 2.1.2)
|
||||
guard-rspec (= 4.7.2)
|
||||
guard-rspec (= 4.7.3)
|
||||
guard-rubocop (= 1.2.0)
|
||||
haml (= 4.0.7)
|
||||
handlebars_assets (= 0.23.0)
|
||||
haml_lint (= 0.18.1)
|
||||
hamlit (= 2.5.0)
|
||||
handlebars_assets (= 0.23.1)
|
||||
http_accept_language (= 2.0.5)
|
||||
i18n-inflector-rails (= 1.0.7)
|
||||
jasmine (= 2.4.0)
|
||||
jasmine-jquery-rails (= 2.0.3)
|
||||
jquery-rails (= 4.1.1)
|
||||
jquery-ui-rails (= 5.0.5)
|
||||
js-routes (= 1.2.6)
|
||||
js-routes (= 1.2.9)
|
||||
js_image_paths (= 0.1.0)
|
||||
jshintrb (= 0.3.0)
|
||||
json (= 1.8.3)
|
||||
json-schema (= 2.6.2)
|
||||
listen (~> 3.0.0)
|
||||
json_spec (= 1.1.4)
|
||||
leaflet-rails (= 0.7.7)
|
||||
logging-rails (= 0.5.0)
|
||||
markerb (= 1.1.0)
|
||||
messagebus_ruby_api (= 1.0.3)
|
||||
mini_magick (= 4.5.1)
|
||||
minitest
|
||||
mobile-fu (= 1.3.1)
|
||||
mysql2 (= 0.4.4)
|
||||
nokogiri (= 1.6.8)
|
||||
omniauth (= 1.3.1)
|
||||
omniauth-facebook (= 3.0.0)
|
||||
omniauth-facebook (= 4.0.0)
|
||||
omniauth-tumblr (= 1.2)
|
||||
omniauth-twitter (= 1.2.1)
|
||||
omniauth-wordpress (= 0.2.2)
|
||||
open_graph_reader (= 0.6.1)
|
||||
openid_connect (= 0.12.0)
|
||||
pg (= 0.18.4)
|
||||
poltergeist (= 1.10.0)
|
||||
pronto (= 0.7.0)
|
||||
pronto-eslint (= 0.7.0)
|
||||
pronto-haml (= 0.7.0)
|
||||
pronto-rubocop (= 0.7.0)
|
||||
pronto-scss (= 0.7.0)
|
||||
pry
|
||||
pry-byebug
|
||||
quiet_assets (= 1.1.0)
|
||||
|
|
@ -864,22 +996,23 @@ DEPENDENCIES
|
|||
rack-rewrite (= 1.5.1)
|
||||
rack-ssl (= 1.4.1)
|
||||
rails (= 4.2.7.1)
|
||||
rails-assets-diaspora_jsxc (= 0.1.4)!
|
||||
rails-assets-highlightjs (= 9.4.0)!
|
||||
rails-assets-jakobmattsson--jquery-elastic (= 1.6.11)!
|
||||
rails-assets-autosize (= 3.0.17)!
|
||||
rails-assets-blueimp-gallery (= 2.21.3)!
|
||||
rails-assets-bootstrap-markdown (= 2.10.0)!
|
||||
rails-assets-diaspora_jsxc (= 0.1.5.develop.1)!
|
||||
rails-assets-highlightjs (= 9.6.0)!
|
||||
rails-assets-jasmine-ajax (= 3.2.0)!
|
||||
rails-assets-jeresig--jquery.hotkeys (= 0.2.0)!
|
||||
rails-assets-jquery (= 1.12.0)!
|
||||
rails-assets-jquery (= 2.2.1)!
|
||||
rails-assets-jquery-placeholder (= 2.3.1)!
|
||||
rails-assets-jquery-textchange (= 0.2.3)!
|
||||
rails-assets-markdown-it (= 6.0.5)!
|
||||
rails-assets-markdown-it (= 7.0.0)!
|
||||
rails-assets-markdown-it--markdown-it-for-inline (= 0.1.1)!
|
||||
rails-assets-markdown-it-diaspora-mention (= 0.4.0)!
|
||||
rails-assets-markdown-it-diaspora-mention (= 1.0.0)!
|
||||
rails-assets-markdown-it-hashtag (= 0.4.0)!
|
||||
rails-assets-markdown-it-sanitizer (= 0.4.1)!
|
||||
rails-assets-markdown-it-sanitizer (= 0.4.2)!
|
||||
rails-assets-markdown-it-sub (= 1.0.0)!
|
||||
rails-assets-markdown-it-sup (= 1.0.0)!
|
||||
rails-assets-perfect-scrollbar (= 0.6.11)!
|
||||
rails-assets-perfect-scrollbar (= 0.6.12)!
|
||||
rails-i18n (= 4.0.8)
|
||||
rails-timeago (= 2.11.0)
|
||||
rails_admin (= 0.8.1)
|
||||
|
|
@ -888,32 +1021,32 @@ DEPENDENCIES
|
|||
redcarpet (= 3.3.4)
|
||||
remotipart (= 1.2.1)
|
||||
responders (= 2.2.0)
|
||||
roxml (= 3.1.6)
|
||||
rspec-rails (= 3.4.2)
|
||||
rspec-rails (= 3.5.1)
|
||||
rubocop (= 0.40.0)
|
||||
ruby-oembed (= 0.10.1)
|
||||
rubyzip (= 1.2.0)
|
||||
sass-rails (= 5.0.4)
|
||||
selenium-webdriver (= 2.47.1)
|
||||
sass-rails (= 5.0.6)
|
||||
shoulda-matchers (= 3.1.1)
|
||||
sidekiq (= 3.4.2)
|
||||
sidetiq (= 0.6.3)
|
||||
sidekiq (= 4.1.4)
|
||||
sidekiq-cron (= 0.4.2)
|
||||
simple_captcha2 (= 0.4.0)
|
||||
simplecov (= 0.11.2)
|
||||
simplecov (= 0.12.0)
|
||||
sinatra (= 1.4.7)
|
||||
sinon-rails (= 1.15.0)
|
||||
spring (= 1.7.1)
|
||||
spring (= 1.7.2)
|
||||
spring-commands-cucumber (= 1.0.1)
|
||||
spring-commands-rspec (= 1.0.4)
|
||||
test_after_commit (= 1.0.0)
|
||||
test_after_commit (= 1.1.0)
|
||||
timecop (= 0.8.1)
|
||||
turbo_dev_assets (= 0.0.2)
|
||||
twitter (= 5.16.0)
|
||||
twitter-text (= 1.13.4)
|
||||
typhoeus (= 1.0.2)
|
||||
uglifier (= 3.0.0)
|
||||
twitter-text (= 1.14.0)
|
||||
typhoeus (= 1.1.0)
|
||||
uglifier (= 3.0.1)
|
||||
unicorn (= 5.1.0)
|
||||
unicorn-worker-killer (= 0.4.4)
|
||||
uuid (= 2.3.8)
|
||||
versionist (= 1.5.0)
|
||||
webmock (= 2.1.0)
|
||||
will_paginate (= 3.1.0)
|
||||
|
||||
|
|
|
|||
18
README.md
|
|
@ -1,15 +1,17 @@
|
|||
# diaspora*
|
||||
### A privacy-aware, distributed, open source social network
|
||||
|
||||
**master:** [](http://travis-ci.org/diaspora/diaspora)
|
||||
**stable:** [](http://travis-ci.org/diaspora/diaspora) |
|
||||
**develop:** [](http://travis-ci.org/diaspora/diaspora) |
|
||||
[](https://gemnasium.com/diaspora/diaspora)
|
||||
[](https://codeclimate.com/github/diaspora/diaspora)
|
||||
**master:** [](http://travis-ci.org/diaspora/diaspora)
|
||||
**next-minor:** [](http://travis-ci.org/diaspora/diaspora)
|
||||
[](https://coveralls.io/github/diaspora/diaspora?branch=next-minor)|
|
||||
**develop:** [](http://travis-ci.org/diaspora/diaspora)
|
||||
[](https://coveralls.io/github/diaspora/diaspora?branch=develop) |
|
||||
[](https://gemnasium.com/diaspora/diaspora)
|
||||
[](https://codeclimate.com/github/diaspora/diaspora)
|
||||
|
||||
[Project site](https://diasporafoundation.org) |
|
||||
[Wiki](https://wiki.diasporafoundation.org) |
|
||||
[Bugtracker](http://github.com/diaspora/diaspora/issues) |
|
||||
[Bugtracker](https://github.com/diaspora/diaspora/issues) |
|
||||
[Discussions](https://www.loomio.org/groups/194) |
|
||||
[Mailing lists](https://wiki.diasporafoundation.org/How_We_Communicate#Mailing_Lists) |
|
||||
[License](/COPYRIGHT) |
|
||||
|
|
@ -17,7 +19,6 @@
|
|||
|
||||
## Installation
|
||||
|
||||
|
||||
You don't have to install diaspora* to use the network. There are many servers connected to diaspora*s network which are open to anyone, and you can create an account on one of these servers. Have a look at our [tips for finding a home](https://wiki.diasporafoundation.org/Choosing_a_pod), or you can just go straight to the [list of open servers](http://podupti.me) to sign up.
|
||||
|
||||
Want to own your data and install diaspora*? Whether you just want to try it out, want to install it on your server or want to contribute and need a development setup, our [installation guides](https://wiki.diasporafoundation.org/Installation) will get you started!
|
||||
|
|
@ -36,5 +37,4 @@ Everyone interacting in diaspora’s codebases, issue trackers, chat rooms, mail
|
|||
|
||||
## Security
|
||||
|
||||
Found a security issue? Please disclose it responsibly. We have a team of developers listening to [security@diasporafoundation.org](mailto:security@diasporafoundation.org). The PGP fingerprint is [AB0D AB02 0FC5 D398 03AB 3CE1 6F70 243F 27AD 886A](http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x6F70243F27AD886A)
|
||||
|
||||
Found a security issue? Please disclose it responsibly. We have a team of developers listening to [security@diasporafoundation.org](mailto:security@diasporafoundation.org). The PGP fingerprint is [AB0D AB02 0FC5 D398 03AB 3CE1 6F70 243F 27AD 886A](https://pgp.mit.edu/pks/lookup?op=get&search=0x6F70243F27AD886A).
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 2.9 KiB |
BIN
app/assets/images/dandelion.jpg
Normal file
|
After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
BIN
app/assets/images/fonts/diaspora-custom.ttf
Normal file
21
app/assets/images/fonts/svg-icons/compose_mobile.svg
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
version="1.1"
|
||||
viewBox="0 0 744.09448819 1052.3622047"
|
||||
height="40px"
|
||||
width="40px">
|
||||
<g
|
||||
style="display:inline"
|
||||
id="layer1"
|
||||
transform="matrix(4.9383994,0,0,5.2618096,-1527.6262,-2214.8726)">
|
||||
<path
|
||||
id="path3511"
|
||||
d="m 278.125,520.93362 0,-100 79.0625,0.0138 c 43.48437,0.008 81.17062,0.36221 83.74721,0.7881 3.3747,0.55781 6.95755,2.85698 12.8125,8.22198 l 8.12779,7.44764 0,16.13926 0,16.13926 -10,0 -10,0 -0.0158,-10.3125 -0.0157,-10.3125 -6.77054,-5.9375 -6.77057,-5.9375 -66.3387,0 -66.33869,0 0,83.75 0,83.75 24.54911,0 24.54912,0 -0.77696,6.5625 c -0.47778,4.0355 -1.59948,7.16416 -2.91302,8.125 -1.57019,1.14856 -10.18586,1.5625 -32.52216,1.5625 l -30.38609,0 0,-100 z m 75.01385,98.75856 c -0.95897,-0.59267 0.76874,-9.48251 5.61079,-28.86997 l 6.99644,-28.01359 39.00196,-39.14467 c 21.45108,-21.52956 40.5209,-39.95144 42.37738,-40.9375 1.87165,-0.99411 6.78352,-1.79283 11.02537,-1.79283 l 7.64993,0 12.71105,12.39542 12.71105,12.39542 0,12.61571 0,12.6157 -39.44885,39.44886 -39.44886,39.44885 -19.28755,4.7892 c -18.3445,4.55503 -36.89916,6.90323 -39.89871,5.0494 z m 33.55295,-18.06936 c 3.68049,-0.97963 6.89841,-1.98775 7.15094,-2.24027 0.25252,-0.25253 -3.66299,-4.55375 -8.70115,-9.55828 l -9.16028,-9.09915 -2.11015,8.40052 c -2.09814,8.35273 -2.09435,8.41733 0.66474,11.35425 3.24463,3.45376 3.41414,3.46969 12.1559,1.14293 z m 66.1351,-79.11794 -5.26283,-5.36242 -24.7019,24.67873 -24.70189,24.67874 5.26282,5.36243 5.26282,5.36242 24.70191,-24.67873 24.70189,-24.67875 -5.26282,-5.36242 z"
|
||||
style="fill:#fefefe"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 571 B |
|
Before Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 898 B |
|
Before Width: | Height: | Size: 265 B |
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 449 B |
|
Before Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 4 KiB |
|
Before Width: | Height: | Size: 1,014 B |
|
Before Width: | Height: | Size: 715 B |
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 455 B |
|
Before Width: | Height: | Size: 460 B |
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 273 B |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 203 B |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 992 B |
|
Before Width: | Height: | Size: 262 B |
|
Before Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 871 B |
|
Before Width: | Height: | Size: 764 B |
|
Before Width: | Height: | Size: 761 B |
|
Before Width: | Height: | Size: 307 B After Width: | Height: | Size: 307 B |
|
Before Width: | Height: | Size: 814 B After Width: | Height: | Size: 814 B |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 348 B After Width: | Height: | Size: 348 B |
|
Before Width: | Height: | Size: 796 B After Width: | Height: | Size: 796 B |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 390 B After Width: | Height: | Size: 390 B |
|
Before Width: | Height: | Size: 929 B After Width: | Height: | Size: 929 B |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 823 B After Width: | Height: | Size: 823 B |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 306 B |
5
app/assets/javascripts/api/authorization_page.js
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
$(document).ready(function() {
|
||||
$("#js-app-logo").error(function () {
|
||||
$(this).attr("src", ImagePaths.get("user/default.png"));
|
||||
});
|
||||
});
|
||||
|
|
@ -46,8 +46,8 @@ var app = {
|
|||
app.router = new app.Router();
|
||||
|
||||
this.setupDummyPreloads();
|
||||
this.setupFacebox();
|
||||
this.setupUser();
|
||||
this.setupAspects();
|
||||
this.setupHeader();
|
||||
this.setupBackboneLinks();
|
||||
this.setupGlobalViews();
|
||||
|
|
@ -66,7 +66,7 @@ var app = {
|
|||
},
|
||||
|
||||
parsePreload : function(prop) {
|
||||
if(!app.hasPreload(prop)) { return }
|
||||
if(!app.hasPreload(prop)) { return; }
|
||||
|
||||
var preload = window.gon.preloads[prop];
|
||||
delete window.gon.preloads[prop]; //prevent dirty state across navigates
|
||||
|
|
@ -84,6 +84,10 @@ var app = {
|
|||
app.currentUser = app.user(window.gon.user) || new app.models.User();
|
||||
},
|
||||
|
||||
setupAspects: function() {
|
||||
app.aspects = new app.collections.Aspects(app.currentUser.get("aspects"));
|
||||
},
|
||||
|
||||
setupHeader: function() {
|
||||
if(app.currentUser.authenticated()) {
|
||||
app.header = new app.views.Header();
|
||||
|
|
@ -92,12 +96,6 @@ var app = {
|
|||
}
|
||||
},
|
||||
|
||||
setupFacebox: function() {
|
||||
$.facebox.settings.closeImage = ImagePaths.get('facebox/closelabel.png');
|
||||
$.facebox.settings.loadingImage = ImagePaths.get('facebox/loading.gif');
|
||||
$.facebox.settings.opacity = 0.75;
|
||||
},
|
||||
|
||||
setupBackboneLinks: function() {
|
||||
Backbone.history.start({pushState: true});
|
||||
|
||||
|
|
@ -110,12 +108,6 @@ var app = {
|
|||
|
||||
evt.preventDefault();
|
||||
var link = $(this);
|
||||
if(link.data("stream-title") && link.data("stream-title").length) {
|
||||
$(".stream_title").text(link.data("stream-title"));
|
||||
} else {
|
||||
$(".stream_title").text(link.text());
|
||||
}
|
||||
|
||||
$("html, body").animate({scrollTop: 0});
|
||||
|
||||
// app.router.navigate doesn't tell us if it changed the page,
|
||||
|
|
@ -127,16 +119,14 @@ var app = {
|
|||
|
||||
setupGlobalViews: function() {
|
||||
app.hovercard = new app.views.Hovercard();
|
||||
$('.aspect_membership_dropdown').each(function(){
|
||||
new app.views.AspectMembership({el: this});
|
||||
});
|
||||
app.sidebar = new app.views.Sidebar();
|
||||
app.backToTop = new app.views.BackToTop({el: $(document)});
|
||||
app.flashMessages = new app.views.FlashMessages({el: $("#flash-container")});
|
||||
},
|
||||
|
||||
/* mixpanel wrapper function */
|
||||
instrument : function(type, name, object, callback) {
|
||||
if(!window.mixpanel) { return }
|
||||
if(!window.mixpanel) { return; }
|
||||
window.mixpanel[type](name, object, callback);
|
||||
},
|
||||
|
||||
|
|
@ -150,6 +140,9 @@ var app = {
|
|||
// add placeholder support for old browsers
|
||||
$("input, textarea").placeholder();
|
||||
|
||||
// init autosize plugin
|
||||
autosize($("textarea"));
|
||||
|
||||
// setup remote forms
|
||||
$(document).on("ajax:success", "form[data-remote]", function() {
|
||||
$(this).clearForm();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,10 @@
|
|||
// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-v3-or-Later
|
||||
|
||||
app.collections.AspectMemberships = Backbone.Collection.extend({
|
||||
model: app.models.AspectMembership
|
||||
model: app.models.AspectMembership,
|
||||
|
||||
findByAspectId: function(id) {
|
||||
return this.find(function(membership) { return membership.belongsToAspect(id); });
|
||||
}
|
||||
});
|
||||
// @license-end
|
||||
|
|
|
|||
31
app/assets/javascripts/app/collections/aspect_selections.js
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-v3-or-Later
|
||||
|
||||
app.collections.AspectSelections = Backbone.Collection.extend({
|
||||
model: app.models.AspectSelection,
|
||||
|
||||
selectedGetAttribute: function(attribute) {
|
||||
return _.pluck(_.filter(this.toJSON(), function(a) {
|
||||
return a.selected;
|
||||
}), attribute);
|
||||
},
|
||||
|
||||
allSelected: function() {
|
||||
return this.length === _.filter(this.toJSON(), function(a) { return a.selected; }).length;
|
||||
},
|
||||
|
||||
selectAll: function() {
|
||||
this.map(function(a) { a.set({"selected": true}); });
|
||||
},
|
||||
|
||||
deselectAll: function() {
|
||||
this.map(function(a) { a.set({"selected": false}); });
|
||||
},
|
||||
|
||||
toSentence: function() {
|
||||
var separator = Diaspora.I18n.t("comma") + " ";
|
||||
var pattern = new RegExp(Diaspora.I18n.t("comma") + "\\s([^" + Diaspora.I18n.t("comma") + "]+)$");
|
||||
return this.selectedGetAttribute("name").join(separator).replace(pattern, " " + Diaspora.I18n.t("and") + " $1")
|
||||
|| Diaspora.I18n.t("my_aspects");
|
||||
}
|
||||
});
|
||||
// @license-end
|
||||
|
|
@ -1,29 +1,7 @@
|
|||
// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-v3-or-Later
|
||||
|
||||
app.collections.Aspects = Backbone.Collection.extend({
|
||||
model: app.models.AspectSelection,
|
||||
|
||||
selectedAspects: function(attribute){
|
||||
return _.pluck(_.filter(this.toJSON(), function(a){
|
||||
return a.selected;
|
||||
}), attribute);
|
||||
},
|
||||
|
||||
allSelected: function(){
|
||||
return this.length === _.filter(this.toJSON(), function(a){ return a.selected; }).length;
|
||||
},
|
||||
|
||||
selectAll: function(){
|
||||
this.map(function(a){ a.set({ 'selected' : true })} );
|
||||
},
|
||||
|
||||
deselectAll: function(){
|
||||
this.map(function(a){ a.set({ 'selected' : false })} );
|
||||
},
|
||||
|
||||
toSentence: function(){
|
||||
var separator = Diaspora.I18n.t("comma") + ' ';
|
||||
return this.selectedAspects('name').join(separator).replace(/,\s([^,]+)$/, ' ' + Diaspora.I18n.t("and") + ' $1') || Diaspora.I18n.t("my_aspects");
|
||||
}
|
||||
model: app.models.Aspect,
|
||||
url: "/aspects"
|
||||
});
|
||||
// @license-end
|
||||
|
|
|
|||
|
|
@ -2,19 +2,20 @@
|
|||
|
||||
app.collections.Comments = Backbone.Collection.extend({
|
||||
model: app.models.Comment,
|
||||
url: function() { return _.result(this.post, 'url') + '/comments'; },
|
||||
url: function() {
|
||||
return _.result(this.post, "url") + "/comments";
|
||||
},
|
||||
|
||||
initialize : function(models, options) {
|
||||
this.post = options.post;
|
||||
},
|
||||
|
||||
make : function(text){
|
||||
make : function(text) {
|
||||
var self = this;
|
||||
|
||||
var comment = new app.models.Comment({text: text });
|
||||
var comment = new app.models.Comment({ "text": text });
|
||||
|
||||
var deferred = comment.save({}, {
|
||||
url: '/posts/'+this.post.id+'/comments',
|
||||
url: "/posts/"+ this.post.id +"/comments",
|
||||
success: function() {
|
||||
comment.set({author: app.currentUser.toJSON(), parent: self.post });
|
||||
self.add(comment);
|
||||
|
|
|
|||
10
app/assets/javascripts/app/collections/pods.js
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-v3-or-Later
|
||||
app.collections.Pods = Backbone.Collection.extend({
|
||||
model: app.models.Pod,
|
||||
|
||||
comparator: function(model) {
|
||||
var host = model.get("host") || "";
|
||||
return host.toLowerCase();
|
||||
}
|
||||
});
|
||||
// @license-end
|
||||
|
|
@ -5,4 +5,3 @@ app.collections.Posts = Backbone.Collection.extend({
|
|||
url : "/posts"
|
||||
});
|
||||
// @license-end
|
||||
|
||||
|
|
|
|||
|
|
@ -5,4 +5,3 @@ app.collections.Reshares = Backbone.Collection.extend({
|
|||
url : "/reshares"
|
||||
});
|
||||
// @license-end
|
||||
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ Handlebars.registerHelper("sharingMessage", function(person) {
|
|||
var icon = "circle";
|
||||
if( person.is_sharing ) {
|
||||
i18nScope = "people.helper.is_sharing";
|
||||
icon = "entypo check";
|
||||
icon = "entypo-check";
|
||||
}
|
||||
|
||||
var title = Diaspora.I18n.t(i18nScope, {name: _.escape(person.name)});
|
||||
|
|
@ -60,11 +60,8 @@ Handlebars.registerHelper("sharingMessage", function(person) {
|
|||
|
||||
// allow hovercards for users that are not the current user.
|
||||
// returns the html class name used to trigger hovercards.
|
||||
Handlebars.registerHelper('hovercardable', function(person) {
|
||||
if( app.currentUser.get('guid') !== person.guid ) {
|
||||
return 'hovercardable';
|
||||
}
|
||||
return '';
|
||||
Handlebars.registerHelper("hovercardable", function(person) {
|
||||
return app.currentUser.get("guid") === person.guid ? "" : "hovercardable";
|
||||
});
|
||||
|
||||
Handlebars.registerHelper('personImage', function(person, size, imageClass) {
|
||||
|
|
@ -78,10 +75,11 @@ Handlebars.registerHelper('personImage', function(person, size, imageClass) {
|
|||
size = ( !_.isString(size) ) ? "small" : size;
|
||||
imageClass = ( !_.isString(imageClass) ) ? size : imageClass;
|
||||
|
||||
return _.template('<img src="<%= src %>" class="avatar <%= img_class %>" title="<%= title %>" alt="<%= title %>" />')({
|
||||
'src': avatar[size],
|
||||
'img_class': imageClass,
|
||||
'title': _.escape(name)
|
||||
return _.template("<img src=\"<%= src %>\" class=\"<%= imageClass %>\" " +
|
||||
"title=\"<%= title %>\" alt=\"<%= title %>\" />")({
|
||||
src: avatar[size],
|
||||
imageClass: imageClass + " avatar img-responsive center-block",
|
||||
title: _.escape(name)
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -120,7 +118,7 @@ Handlebars.registerHelper("isCurrentProfilePage", function(id, diasporaHandle, o
|
|||
Handlebars.registerHelper('aspectMembershipIndicator', function(contact,in_aspect) {
|
||||
if(!app.aspect || !app.aspect.get('id')) return '<div class="aspect_membership_dropdown placeholder"></div>';
|
||||
|
||||
var html = '<i class="entypo ';
|
||||
var html = "<i class=\"entypo-";
|
||||
if( in_aspect === 'in_aspect' ) {
|
||||
html += 'circled-cross contact_remove-from-aspect" ';
|
||||
html += 'title="' + Diaspora.I18n.t('contacts.remove_contact') + '" ';
|
||||
|
|
|
|||
25
app/assets/javascripts/app/helpers/locations.js
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
(function() {
|
||||
app.helpers.locations = {
|
||||
getTiles: function() {
|
||||
// If the mapbox option is enabled in the diaspora.yml, the mapbox tiles with the podmin's credentials are used.
|
||||
if (gon.appConfig.map.mapbox.enabled) {
|
||||
return L.tileLayer("https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}", {
|
||||
id: gon.appConfig.map.mapbox.id,
|
||||
accessToken: gon.appConfig.map.mapbox.access_token,
|
||||
attribution: "Map data © <a href='http://openstreetmap.org'>OpenStreetMap</a> contributors, " +
|
||||
"<a href='http://creativecommons.org/licenses/by-sa/2.0/''>CC-BY-SA</a>, " +
|
||||
"Imagery © <a href='https://www.mapbox.com'>Mapbox</a>",
|
||||
maxZoom: 18
|
||||
});
|
||||
}
|
||||
|
||||
// maptiles from the Heidelberg University are used by default.
|
||||
return L.tileLayer("http://korona.geog.uni-heidelberg.de/tiles/roads/x={x}&y={y}&z={z}", {
|
||||
attribution: "Map data © <a href='http://openstreetmap.org'>OpenStreetMap</a> contributors, " +
|
||||
"rendering <a href='http://giscience.uni-hd.de/'>" +
|
||||
"GIScience Research Group @ Heidelberg University</a>",
|
||||
maxZoom: 18
|
||||
});
|
||||
}
|
||||
};
|
||||
})();
|
||||
13
app/assets/javascripts/app/helpers/modal_helper.js
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
(function(){
|
||||
app.helpers.showModal = function(id){
|
||||
$(id).modal();
|
||||
var modalBody = $(id).find(".modal-body");
|
||||
|
||||
var url = $(id).attr("href");
|
||||
|
||||
modalBody.load(url, function(){
|
||||
$(id).find("#modalWaiter").remove();
|
||||
$(id).trigger("modal:loaded");
|
||||
});
|
||||
};
|
||||
})();
|
||||
|
|
@ -26,7 +26,12 @@
|
|||
array[index][1] = attribute[1].replace(/^www\./, "http://www.");
|
||||
}
|
||||
});
|
||||
tokens[idx].attrPush([ "target", "_blank" ]);
|
||||
tokens[idx].attrPush(["target", "_blank"]);
|
||||
tokens[idx].attrPush(["rel", "noopener noreferrer"]);
|
||||
});
|
||||
|
||||
md.use(inlinePlugin, "responsive_images", "image", function (tokens, idx) {
|
||||
tokens[idx].attrPush(["class", "img-responsive"]);
|
||||
});
|
||||
|
||||
var hashtagPlugin = window.markdownitHashtag;
|
||||
|
|
@ -49,7 +54,7 @@
|
|||
var supPlugin = window.markdownitSup;
|
||||
md.use(supPlugin);
|
||||
var sanitizerPlugin = window.markdownitSanitizer;
|
||||
md.use(sanitizerPlugin);
|
||||
md.use(sanitizerPlugin, {imageClass: "img-responsive"});
|
||||
|
||||
var hljs = window.hljs;
|
||||
md.set({
|
||||
|
|
@ -76,7 +81,6 @@
|
|||
|
||||
// Bootstrap table markup
|
||||
md.renderer.rules.table_open = function () { return "<table class=\"table table-striped\">\n"; };
|
||||
|
||||
return md.render(text);
|
||||
};
|
||||
})();
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@
|
|||
// Requires:
|
||||
// this = model with "created_at" attribute
|
||||
app.models.formatDateMixin = {
|
||||
|
||||
timeOf: function(field) {
|
||||
return app.helpers.dateFormatter.parse(this.get(field)) / 1000;
|
||||
},
|
||||
|
|
@ -13,7 +12,5 @@ app.models.formatDateMixin = {
|
|||
createdAt: function() {
|
||||
return this.timeOf("created_at");
|
||||
}
|
||||
|
||||
};
|
||||
// @license-end
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,11 @@
|
|||
* (only valid for the context of the current user)
|
||||
*/
|
||||
app.models.AspectMembership = Backbone.Model.extend({
|
||||
urlRoot: "/aspect_memberships"
|
||||
urlRoot: "/aspect_memberships",
|
||||
|
||||
belongsToAspect: function(aspectId) {
|
||||
var aspect = this.get("aspect");
|
||||
return aspect && aspect.id === aspectId;
|
||||
}
|
||||
});
|
||||
// @license-end
|
||||
|
||||
|
|
|
|||
|
|
@ -4,4 +4,3 @@ app.models.Comment = Backbone.Model.extend({
|
|||
urlRoot: "/comments"
|
||||
});
|
||||
// @license-end
|
||||
|
||||
|
|
|
|||
|
|
@ -2,12 +2,15 @@
|
|||
|
||||
app.models.Contact = Backbone.Model.extend({
|
||||
initialize : function() {
|
||||
this.aspect_memberships = new app.collections.AspectMemberships(this.get('aspect_memberships'));
|
||||
if( this.get('person') ) this.person = new app.models.Person(this.get('person'));
|
||||
this.aspectMemberships = new app.collections.AspectMemberships(this.get("aspect_memberships"));
|
||||
if (this.get("person")) {
|
||||
this.person = new app.models.Person(this.get("person"));
|
||||
this.person.contact = this;
|
||||
}
|
||||
},
|
||||
|
||||
inAspect : function(id) {
|
||||
return this.aspect_memberships.any(function(membership){ return membership.get('aspect').id === id; });
|
||||
return this.aspectMemberships.any(function(membership) { return membership.belongsToAspect(id); });
|
||||
}
|
||||
});
|
||||
// @license-end
|
||||
|
|
|
|||
|
|
@ -6,8 +6,13 @@ app.models.Person = Backbone.Model.extend({
|
|||
},
|
||||
|
||||
initialize: function() {
|
||||
if( this.get('profile') )
|
||||
this.profile = new app.models.Profile(this.get('profile'));
|
||||
if (this.get("profile")) {
|
||||
this.profile = new app.models.Profile(this.get("profile"));
|
||||
}
|
||||
if (this.get("contact")) {
|
||||
this.contact = new app.models.Contact(this.get("contact"));
|
||||
this.contact.person = this;
|
||||
}
|
||||
},
|
||||
|
||||
isSharing: function() {
|
||||
|
|
|
|||
15
app/assets/javascripts/app/models/pod.js
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-v3-or-Later
|
||||
app.models.Pod = Backbone.Model.extend({
|
||||
urlRoot: Routes.adminPods(),
|
||||
|
||||
recheck: function() {
|
||||
var self = this,
|
||||
url = Routes.adminPodRecheck(this.id).toString();
|
||||
|
||||
return $.ajax({url: url, method: "POST", dataType: "json"})
|
||||
.done(function(newAttributes) {
|
||||
self.set(newAttributes);
|
||||
});
|
||||
}
|
||||
});
|
||||
// @license-end
|
||||
|
|
@ -32,7 +32,7 @@ app.models.Post.Interactions = Backbone.Model.extend({
|
|||
},
|
||||
|
||||
likesCount : function(){
|
||||
return (this.get("fetched") ? this.likes.models.length : this.get("likes_count") );
|
||||
return this.get("fetched") ? this.likes.models.length : this.get("likes_count");
|
||||
},
|
||||
|
||||
resharesCount : function(){
|
||||
|
|
@ -44,12 +44,15 @@ app.models.Post.Interactions = Backbone.Model.extend({
|
|||
},
|
||||
|
||||
userLike : function(){
|
||||
return this.likes.select(function(like){ return like.get("author").guid === app.currentUser.get("guid")})[0];
|
||||
return this.likes.select(function(like){
|
||||
return like.get("author") && like.get("author").guid === app.currentUser.get("guid");
|
||||
})[0];
|
||||
},
|
||||
|
||||
userReshare : function(){
|
||||
return this.reshares.select(function(reshare){
|
||||
return reshare.get("author") && reshare.get("author").guid === app.currentUser.get("guid")})[0];
|
||||
return reshare.get("author") && reshare.get("author").guid === app.currentUser.get("guid");
|
||||
})[0];
|
||||
},
|
||||
|
||||
toggleLike : function() {
|
||||
|
|
@ -62,10 +65,15 @@ app.models.Post.Interactions = Backbone.Model.extend({
|
|||
|
||||
like : function() {
|
||||
var self = this;
|
||||
this.likes.create({}, {success : function(){
|
||||
self.trigger("change");
|
||||
self.set({"likes_count" : self.get("likes_count") + 1});
|
||||
}});
|
||||
this.likes.create({}, {
|
||||
success: function() {
|
||||
self.trigger("change");
|
||||
self.set({"likes_count" : self.get("likes_count") + 1});
|
||||
},
|
||||
error: function() {
|
||||
app.flashMessages.error(Diaspora.I18n.t("failed_to_like"));
|
||||
}
|
||||
});
|
||||
|
||||
app.instrument("track", "Like");
|
||||
},
|
||||
|
|
@ -84,11 +92,7 @@ app.models.Post.Interactions = Backbone.Model.extend({
|
|||
var self = this;
|
||||
|
||||
this.comments.make(text).fail(function () {
|
||||
var flash = new Diaspora.Widgets.FlashMessages();
|
||||
flash.render({
|
||||
success: false,
|
||||
notice: Diaspora.I18n.t("failed_to_post_message")
|
||||
});
|
||||
app.flashMessages.error(Diaspora.I18n.t("failed_to_comment"));
|
||||
}).done(function() {
|
||||
self.trigger('change'); //updates after sync
|
||||
});
|
||||
|
|
@ -99,16 +103,11 @@ app.models.Post.Interactions = Backbone.Model.extend({
|
|||
},
|
||||
|
||||
reshare : function(){
|
||||
var interactions = this
|
||||
, reshare = this.post.reshare()
|
||||
, flash = new Diaspora.Widgets.FlashMessages();
|
||||
var interactions = this;
|
||||
|
||||
reshare.save()
|
||||
this.post.reshare().save()
|
||||
.done(function(reshare) {
|
||||
flash.render({
|
||||
success: true,
|
||||
notice: Diaspora.I18n.t("reshares.successful")
|
||||
});
|
||||
app.flashMessages.success(Diaspora.I18n.t("reshares.successful"));
|
||||
interactions.reshares.add(reshare);
|
||||
if (app.stream && /^\/(?:stream|activity|aspects)/.test(app.stream.basePath())) {
|
||||
app.stream.addNow(reshare);
|
||||
|
|
@ -116,10 +115,7 @@ app.models.Post.Interactions = Backbone.Model.extend({
|
|||
interactions.trigger("change");
|
||||
})
|
||||
.fail(function(){
|
||||
flash.render({
|
||||
success: false,
|
||||
notice: Diaspora.I18n.t("reshares.duplicate")
|
||||
});
|
||||
app.flashMessages.error(Diaspora.I18n.t("reshares.duplicate"));
|
||||
});
|
||||
|
||||
app.instrument("track", "Reshare");
|
||||
|
|
|
|||
|
|
@ -21,4 +21,3 @@ app.models.StatusMessage = app.models.Post.extend({
|
|||
}
|
||||
});
|
||||
// @license-end
|
||||
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ app.models.StreamAspects = app.models.Stream.extend({
|
|||
},
|
||||
|
||||
fetch: function() {
|
||||
if(this.isFetching()){ return false }
|
||||
if(this.isFetching()) { return false; }
|
||||
var url = this.url();
|
||||
var ids = this.aspects_ids;
|
||||
this.deferred = this.items.fetch(this._fetchOpts({url : url, data : { 'a_ids': ids }}))
|
||||
|
|
@ -26,10 +26,9 @@ app.models.StreamAspects = app.models.Stream.extend({
|
|||
|
||||
fetchDone: function() {
|
||||
this.triggerFetchedEvents();
|
||||
if (app.aspects) {
|
||||
app.aspects.trigger('aspectStreamFetched');
|
||||
if (app.aspectSelections) {
|
||||
app.aspectSelections.trigger("aspectStreamFetched");
|
||||
}
|
||||
}
|
||||
});
|
||||
// @license-end
|
||||
|
||||
|
|
|
|||
75
app/assets/javascripts/app/pages/admin_dashboard.js
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-v3-or-Later
|
||||
|
||||
app.pages.AdminDashboard = Backbone.View.extend({
|
||||
initialize: function() {
|
||||
this.updatePodStatus();
|
||||
},
|
||||
|
||||
updatePodStatus: function() {
|
||||
var self = this,
|
||||
tagName = "";
|
||||
$.get("https://api.github.com/repos/diaspora/diaspora/releases/latest")
|
||||
.done(function(data) {
|
||||
// the response might be malformed
|
||||
try {
|
||||
/* jshint camelcase: false */
|
||||
tagName = data.tag_name;
|
||||
/* jshint camelcase: true */
|
||||
if(tagName.charAt(0) !== "v") {
|
||||
self.updatePodStatusFail();
|
||||
return;
|
||||
}
|
||||
} catch(e) {
|
||||
self.updatePodStatusFail();
|
||||
return;
|
||||
}
|
||||
|
||||
// split version into components
|
||||
self.latestVersion = tagName.slice(1).split(".").map(Number);
|
||||
if(self.podUpToDate() === null) {
|
||||
self.updatePodStatusFail();
|
||||
} else {
|
||||
self.updatePodStatusSuccess();
|
||||
}
|
||||
})
|
||||
.fail(function() {
|
||||
self.updatePodStatusFail();
|
||||
});
|
||||
},
|
||||
|
||||
updatePodStatusSuccess: function() {
|
||||
$("#pod-status .alert").removeClass("alert-info");
|
||||
var podStatusMessage = Diaspora.I18n.t("admins.dashboard.up_to_date");
|
||||
if(this.podUpToDate()) {
|
||||
$("#pod-status .alert").addClass("alert-success");
|
||||
} else {
|
||||
podStatusMessage = Diaspora.I18n.t("admins.dashboard.outdated");
|
||||
$("#pod-status .alert").addClass("alert-danger");
|
||||
}
|
||||
$("#pod-status .alert")
|
||||
.html("<strong>" + podStatusMessage + "</strong>")
|
||||
.append(" ")
|
||||
.append(Diaspora.I18n.t("admins.dashboard.compare_versions", {
|
||||
latestVersion: "v" + this.latestVersion.join("."),
|
||||
podVersion: "v" + gon.podVersion
|
||||
}));
|
||||
},
|
||||
|
||||
updatePodStatusFail: function() {
|
||||
$("#pod-status .alert")
|
||||
.removeClass("alert-info")
|
||||
.addClass("alert-warning")
|
||||
.text(Diaspora.I18n.t("admins.dashboard.error"));
|
||||
},
|
||||
|
||||
podUpToDate: function() {
|
||||
var podVersion = gon.podVersion.split(/\.|\-/).map(Number);
|
||||
if(this.latestVersion.length < 4 || podVersion.length < 4) { return null; }
|
||||
for(var i = 0; i < 4; i++) {
|
||||
if(this.latestVersion[i] < podVersion[i]) { return true; }
|
||||
if(this.latestVersion[i] > podVersion[i]) { return false; }
|
||||
}
|
||||
return true;
|
||||
}
|
||||
});
|
||||
// @license-end
|
||||
52
app/assets/javascripts/app/pages/admin_pods.js
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-v3-or-Later
|
||||
|
||||
app.pages.AdminPods = app.views.Base.extend({
|
||||
templateName: "pod_table",
|
||||
|
||||
tooltipSelector: "th i",
|
||||
|
||||
initialize: function() {
|
||||
this.pods = new app.collections.Pods(app.parsePreload("pods"));
|
||||
this.rows = []; // contains the table row views
|
||||
},
|
||||
|
||||
postRenderTemplate: function() {
|
||||
var self = this;
|
||||
this._showMessages();
|
||||
|
||||
// avoid reflowing the page for every entry
|
||||
var fragment = document.createDocumentFragment();
|
||||
this.pods.each(function(pod) {
|
||||
self.rows.push(new app.views.PodEntry({
|
||||
parent: fragment,
|
||||
model: pod
|
||||
}).render());
|
||||
});
|
||||
this.$("tbody").append(fragment);
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
_showMessages: function() {
|
||||
var msgs = document.createDocumentFragment();
|
||||
if( gon.uncheckedCount && gon.uncheckedCount > 0 ) {
|
||||
var unchecked = $("<div class='alert alert-info' role='alert' />")
|
||||
.append(Diaspora.I18n.t("admin.pods.unchecked", {count: gon.uncheckedCount}));
|
||||
msgs.appendChild(unchecked[0]);
|
||||
}
|
||||
if( gon.versionFailedCount && gon.versionFailedCount > 0 ) {
|
||||
var versionFailed = $("<div class='alert alert-warning' role='alert' />")
|
||||
.append(Diaspora.I18n.t("admin.pods.version_failed", {count: gon.versionFailedCount}));
|
||||
msgs.appendChild(versionFailed[0]);
|
||||
}
|
||||
if( gon.errorCount && gon.errorCount > 0 ) {
|
||||
var errors = $("<div class='alert alert-danger' role='alert' />")
|
||||
.append(Diaspora.I18n.t("admin.pods.errors", {count: gon.errorCount}));
|
||||
msgs.appendChild(errors[0]);
|
||||
}
|
||||
|
||||
$("#pod-alerts").html(msgs);
|
||||
}
|
||||
});
|
||||
|
||||
// @license-end
|
||||
|
|
@ -8,17 +8,20 @@ app.pages.Contacts = Backbone.View.extend({
|
|||
"click #contacts_visibility_toggle" : "toggleContactVisibility",
|
||||
"click #chat_privilege_toggle" : "toggleChatPrivilege",
|
||||
"click #change_aspect_name" : "showAspectNameForm",
|
||||
"keyup #contact_list_search" : "searchContactList"
|
||||
"click .conversation_button": "showMessageModal",
|
||||
"click #invitations-button": "showInvitationsModal"
|
||||
},
|
||||
|
||||
initialize: function(opts) {
|
||||
this.visibility_toggle = $("#contacts_visibility_toggle .entypo");
|
||||
this.chat_toggle = $("#chat_privilege_toggle .entypo");
|
||||
this.visibilityToggle = $("#contacts_visibility_toggle i");
|
||||
this.chatToggle = $("#chat_privilege_toggle i");
|
||||
this.stream = opts.stream;
|
||||
this.stream.render();
|
||||
$("#people_stream.contacts .header .entypo").tooltip({"placement": "bottom"});
|
||||
$("#people_stream.contacts .header i").tooltip({"placement": "bottom"});
|
||||
$(document).on("ajax:success", "form.edit_aspect", this.updateAspectName);
|
||||
app.events.on("aspect:create", function(){ window.location.reload() });
|
||||
app.events.on("aspect_membership:create", this.addAspectMembership, this);
|
||||
app.events.on("aspect_membership:destroy", this.removeAspectMembership, this);
|
||||
|
||||
this.aspectCreateView = new app.views.AspectCreate({ el: $("#newAspectContainer") });
|
||||
this.aspectCreateView.render();
|
||||
|
|
@ -27,14 +30,14 @@ app.pages.Contacts = Backbone.View.extend({
|
|||
},
|
||||
|
||||
toggleChatPrivilege: function() {
|
||||
if (this.chat_toggle.hasClass("enabled")) {
|
||||
this.chat_toggle.tooltip("destroy")
|
||||
if (this.chatToggle.hasClass("enabled")) {
|
||||
this.chatToggle.tooltip("destroy")
|
||||
.removeClass("enabled")
|
||||
.removeAttr("data-original-title")
|
||||
.attr("title", Diaspora.I18n.t("contacts.aspect_chat_is_not_enabled"))
|
||||
.tooltip({"placement": "bottom"});
|
||||
} else {
|
||||
this.chat_toggle.tooltip("destroy")
|
||||
this.chatToggle.tooltip("destroy")
|
||||
.addClass("enabled")
|
||||
.removeAttr("data-original-title")
|
||||
.attr("title", Diaspora.I18n.t("contacts.aspect_chat_is_enabled"))
|
||||
|
|
@ -43,17 +46,17 @@ app.pages.Contacts = Backbone.View.extend({
|
|||
},
|
||||
|
||||
toggleContactVisibility: function() {
|
||||
if (this.visibility_toggle.hasClass("lock-open")) {
|
||||
this.visibility_toggle.removeClass("lock-open")
|
||||
.addClass("lock")
|
||||
if (this.visibilityToggle.hasClass("entypo-lock-open")) {
|
||||
this.visibilityToggle.removeClass("entypo-lock-open")
|
||||
.addClass("entypo-lock")
|
||||
.tooltip("destroy")
|
||||
.removeAttr("data-original-title")
|
||||
.attr("title", Diaspora.I18n.t("contacts.aspect_list_is_not_visible"))
|
||||
.tooltip({"placement": "bottom"});
|
||||
}
|
||||
else {
|
||||
this.visibility_toggle.removeClass("lock")
|
||||
.addClass("lock-open")
|
||||
this.visibilityToggle.removeClass("entypo-lock")
|
||||
.addClass("entypo-lock-open")
|
||||
.tooltip("destroy")
|
||||
.removeAttr("data-original-title")
|
||||
.attr("title", Diaspora.I18n.t("contacts.aspect_list_is_visible"))
|
||||
|
|
@ -75,13 +78,17 @@ app.pages.Contacts = Backbone.View.extend({
|
|||
$(".header > h3").show();
|
||||
},
|
||||
|
||||
searchContactList: function(e) {
|
||||
this.stream.search($(e.target).val());
|
||||
showMessageModal: function(){
|
||||
app.helpers.showModal("#conversationModal");
|
||||
},
|
||||
|
||||
showInvitationsModal: function() {
|
||||
app.helpers.showModal("#invitationsModal");
|
||||
},
|
||||
|
||||
setupAspectSorting: function() {
|
||||
$("#aspect_nav .nav").sortable({
|
||||
items: "li.aspect[data-aspect-id]",
|
||||
$("#aspect_nav .list-group").sortable({
|
||||
items: "a.aspect[data-aspect-id]",
|
||||
update: function() {
|
||||
$("#aspect_nav .ui-sortable").addClass("syncing");
|
||||
var data = JSON.stringify({ ordered_aspect_ids: $(this).sortable("toArray", { attribute: "data-aspect-id" }) });
|
||||
|
|
@ -92,7 +99,51 @@ app.pages.Contacts = Backbone.View.extend({
|
|||
revert: true,
|
||||
helper: "clone"
|
||||
});
|
||||
},
|
||||
|
||||
updateBadgeCount: function(selector, change) {
|
||||
var count = parseInt($("#aspect_nav " + selector + " .badge").text(), 10);
|
||||
$("#aspect_nav " + selector + " .badge").text(count + change);
|
||||
},
|
||||
|
||||
addAspectMembership: function(data) {
|
||||
if(data.startSharing) {
|
||||
this.updateBadgeCount(".all_aspects", 1);
|
||||
|
||||
var contact = this.stream.collection.find(function(c) {
|
||||
return c.get("person").id === data.membership.personId;
|
||||
});
|
||||
|
||||
if(contact && contact.person.get("relationship") === "sharing") {
|
||||
contact.person.set({relationship: "mutual"});
|
||||
this.updateBadgeCount(".only_sharing", -1);
|
||||
}
|
||||
else if(contact && contact.person.get("relationship") === "not_sharing") {
|
||||
contact.person.set({relationship: "receiving"});
|
||||
this.updateBadgeCount(".all_contacts", 1);
|
||||
}
|
||||
}
|
||||
this.updateBadgeCount("[data-aspect-id='" + data.membership.aspectId + "']", 1);
|
||||
},
|
||||
|
||||
removeAspectMembership: function(data) {
|
||||
if(data.stopSharing) {
|
||||
this.updateBadgeCount(".all_aspects", -1);
|
||||
|
||||
var contact = this.stream.collection.find(function(c) {
|
||||
return c.get("person").id === data.membership.personId;
|
||||
});
|
||||
|
||||
if(contact && contact.person.get("relationship") === "mutual") {
|
||||
contact.person.set({relationship: "sharing"});
|
||||
this.updateBadgeCount(".only_sharing", 1);
|
||||
}
|
||||
else if(contact && contact.person.get("relationship") === "receiving") {
|
||||
contact.person.set({relationship: "not_sharing"});
|
||||
this.updateBadgeCount(".all_contacts", -1);
|
||||
}
|
||||
}
|
||||
this.updateBadgeCount("[data-aspect-id='" + data.membership.aspectId + "']", -1);
|
||||
}
|
||||
});
|
||||
// @license-end
|
||||
|
||||
|
|
|
|||
20
app/assets/javascripts/app/pages/getting_started.js
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-v3-or-Later
|
||||
app.pages.GettingStarted = app.views.Base.extend({
|
||||
el: "#hello-there",
|
||||
|
||||
templateName: false,
|
||||
|
||||
subviews: {
|
||||
".aspect_membership_dropdown": "aspectMembershipView"
|
||||
},
|
||||
|
||||
initialize: function(opts) {
|
||||
this.inviter = opts.inviter;
|
||||
app.events.on("aspect:create", this.render, this);
|
||||
},
|
||||
|
||||
aspectMembershipView: function() {
|
||||
return new app.views.AspectMembership({person: this.inviter, dropdownMayCreateNewAspect: true});
|
||||
}
|
||||
});
|
||||
// @license-end
|
||||
|
|
@ -4,45 +4,49 @@ app.pages.Profile = app.views.Base.extend({
|
|||
templateName: false,
|
||||
|
||||
events: {
|
||||
'click #block_user_button': 'blockPerson',
|
||||
'click #unblock_user_button': 'unblockPerson'
|
||||
"click #block_user_button": "blockPerson",
|
||||
"click #unblock_user_button": "unblockPerson"
|
||||
},
|
||||
|
||||
subviews: {
|
||||
'#profile': 'sidebarView',
|
||||
'.profile_header': 'headerView',
|
||||
'#main_stream': 'streamView'
|
||||
"#profile": "sidebarView",
|
||||
".profile_header": "headerView",
|
||||
"#main_stream": "streamView"
|
||||
},
|
||||
|
||||
tooltipSelector: '.profile_button .profile-header-icon, .sharing_message_container',
|
||||
tooltipSelector: ".profile_button .profile-header-icon, .sharing_message_container",
|
||||
|
||||
initialize: function(opts) {
|
||||
if( !this.model ) {
|
||||
this._populateModel(opts);
|
||||
}
|
||||
|
||||
if( app.hasPreload('photos') )
|
||||
this.photos = app.parsePreload('photos'); // we don't interact with it, so no model
|
||||
if( app.hasPreload('contacts') )
|
||||
this.contacts = app.parsePreload('contacts'); // we don't interact with it, so no model
|
||||
if (app.hasPreload("photos_count")) {
|
||||
this.photos = app.parsePreload("photos_count");
|
||||
}
|
||||
if (app.hasPreload("contacts_count")) {
|
||||
this.contacts = app.parsePreload("contacts_count");
|
||||
}
|
||||
|
||||
this.streamCollection = _.has(opts, 'streamCollection') ? opts.streamCollection : null;
|
||||
this.streamViewClass = _.has(opts, 'streamView') ? opts.streamView : null;
|
||||
this.streamCollection = _.has(opts, "streamCollection") ? opts.streamCollection : null;
|
||||
this.streamViewClass = _.has(opts, "streamView") ? opts.streamView : null;
|
||||
|
||||
this.model.on('change', this.render, this);
|
||||
this.model.on('sync', this._done, this);
|
||||
this.model.on("change", this.render, this);
|
||||
this.model.on("sync", this._done, this);
|
||||
|
||||
// bind to global events
|
||||
var id = this.model.get('id');
|
||||
app.events.on('person:block:'+id, this.reload, this);
|
||||
app.events.on('person:unblock:'+id, this.reload, this);
|
||||
app.events.on('aspect:create', this.reload, this);
|
||||
app.events.on('aspect_membership:update', this.reload, this);
|
||||
var id = this.model.get("id");
|
||||
app.events.on("person:block:"+id, this.reload, this);
|
||||
app.events.on("person:unblock:"+id, this.reload, this);
|
||||
app.events.on("aspect:create", this.reload, this);
|
||||
app.events.on("aspect_membership:update", this.reload, this);
|
||||
|
||||
app.router.renderAspectMembershipDropdowns(this.$el);
|
||||
},
|
||||
|
||||
_populateModel: function(opts) {
|
||||
if( app.hasPreload('person') ) {
|
||||
this.model = new app.models.Person(app.parsePreload('person'));
|
||||
if( app.hasPreload("person") ) {
|
||||
this.model = new app.models.Person(app.parsePreload("person"));
|
||||
} else if(opts && opts.person_id) {
|
||||
this.model = new app.models.Person({guid: opts.person_id});
|
||||
this.model.fetch();
|
||||
|
|
@ -52,14 +56,18 @@ app.pages.Profile = app.views.Base.extend({
|
|||
},
|
||||
|
||||
sidebarView: function() {
|
||||
if( !this.model.has('profile') ) return false;
|
||||
if(!this.model.has("profile")){
|
||||
return false;
|
||||
}
|
||||
return new app.views.ProfileSidebar({
|
||||
model: this.model,
|
||||
model: this.model
|
||||
});
|
||||
},
|
||||
|
||||
headerView: function() {
|
||||
if( !this.model.has('profile') ) return false;
|
||||
if(!this.model.has("profile")){
|
||||
return false;
|
||||
}
|
||||
return new app.views.ProfileHeader({
|
||||
model: this.model,
|
||||
photos: this.photos,
|
||||
|
|
@ -68,12 +76,7 @@ app.pages.Profile = app.views.Base.extend({
|
|||
},
|
||||
|
||||
streamView: function() {
|
||||
if( !this.model.has('profile') ) return false;
|
||||
if( this.model.isBlocked() ) {
|
||||
$('#main_stream').empty().html(
|
||||
'<div class="dull">'+
|
||||
Diaspora.I18n.t('profile.ignoring', {name: this.model.get('name')}) +
|
||||
'</div>');
|
||||
if(!this.model.has("profile")){
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -96,14 +99,13 @@ app.pages.Profile = app.views.Base.extend({
|
|||
},
|
||||
|
||||
blockPerson: function() {
|
||||
if( !confirm(Diaspora.I18n.t('ignore_user')) ) return;
|
||||
if(!confirm(Diaspora.I18n.t("ignore_user"))){
|
||||
return;
|
||||
}
|
||||
|
||||
var block = this.model.block();
|
||||
block.fail(function() {
|
||||
Diaspora.page.flashMessages.render({
|
||||
success: false,
|
||||
notice: Diaspora.I18n.t('ignore_failed')
|
||||
});
|
||||
app.flashMessages.error(Diaspora.I18n.t("ignore_failed"));
|
||||
});
|
||||
|
||||
return false;
|
||||
|
|
@ -112,22 +114,18 @@ app.pages.Profile = app.views.Base.extend({
|
|||
unblockPerson: function() {
|
||||
var block = this.model.unblock();
|
||||
block.fail(function() {
|
||||
Diaspora.page.flashMessages.render({
|
||||
success: false,
|
||||
notice: Diaspora.I18.t('unblock_failed')
|
||||
});
|
||||
app.flashMessages.error(Diaspora.I18.t("unblock_failed"));
|
||||
});
|
||||
return false;
|
||||
},
|
||||
|
||||
reload: function() {
|
||||
this.$('#profile').addClass('loading');
|
||||
this.$("#profile").addClass("loading");
|
||||
this.model.fetch();
|
||||
},
|
||||
|
||||
_done: function() {
|
||||
this.$('#profile').removeClass('loading');
|
||||
this.$("#profile").removeClass("loading");
|
||||
}
|
||||
});
|
||||
// @license-end
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-v3-or-Later
|
||||
app.pages.Settings = Backbone.View.extend({
|
||||
initialize: function() {
|
||||
$(".settings_visibilty").tooltip({placement: "top"});
|
||||
$(".settings-visibility").tooltip({placement: "top"});
|
||||
$(".profile-visibility-hint").tooltip({placement: "top"});
|
||||
$("[name='profile[public_details]']").bootstrapSwitch();
|
||||
}
|
||||
});
|
||||
// @license-end
|
||||
|
|
|
|||
|
|
@ -12,16 +12,6 @@ app.pages.SinglePostViewer = app.views.Base.extend({
|
|||
this.model = new app.models.Post({ id : gon.post.id });
|
||||
this.model.preloadOrFetch().done(_.bind(this.initViews, this));
|
||||
this.model.interactions.fetch(); //async, yo, might want to throttle this later.
|
||||
this.setupLightbox();
|
||||
},
|
||||
|
||||
setupLightbox : function(){
|
||||
this.lightbox = Diaspora.BaseWidget.instantiate("Lightbox");
|
||||
this.lightbox.set({
|
||||
imageParent: '.photo_attachments',
|
||||
imageSelector: 'img.stream-photo'
|
||||
});
|
||||
this.$el.delegate("a.stream-photo-link", "click", this.lightbox.lightboxImageClicked);
|
||||
},
|
||||
|
||||
initViews : function() {
|
||||
|
|
@ -37,7 +27,6 @@ app.pages.SinglePostViewer = app.views.Base.extend({
|
|||
//... and converts html to plain text
|
||||
document.title = $('<div>').html(html_title).text();
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
});
|
||||
// @license-end
|
||||
|
|
|
|||