Commit 42ceb8b3 authored by Benjamin Neff's avatar Benjamin Neff

Merge branch 'release/0.7.5.0'

parents aa6f4d46 6a3d9ede
......@@ -10,16 +10,17 @@
"autosize": false,
"Backbone": false,
"Bloodhound": false,
"blueimp": false,
"gon": false,
"Handlebars": false,
"HandlebarsTemplates": false,
"ImagePaths": false,
"jsxc": false,
"L": false,
"Routes": false,
"OSM": false,
"PerfectScrollbar": false,
"qq": false,
"blueimp": false,
"Routes": false,
"loginAs": true,
"logout": true,
......
......@@ -16,6 +16,7 @@ vendor/bundle/
vendor/cache/
config/database.yml
config/oidc_key.pem
config/schedule.yml
# Generated files
log/
......@@ -50,6 +51,7 @@ public/source.tar*
tmp/
# Temporary files of every sort
.byebug_history
.sass-cache/
.DS_Store
.idea
......
# 0.7.5.0
## Refactor
* Remove the 'make contacts in this aspect visible to each other' option [#7769](https://github.com/diaspora/diaspora/pull/7769)
* Remove the requirement to have at least two users to disable the /podmin redirect [#7783](https://github.com/diaspora/diaspora/pull/7783)
* Randomize start times of daily Sidekiq-Cron jobs [#7787](https://github.com/diaspora/diaspora/pull/7787)
## Bug fixes
* Prefill conversation form on contacts page only with mutual contacts [#7744](https://github.com/diaspora/diaspora/pull/7744)
* Fix profiles sometimes not loading properly in background tabs [#7740](https://github.com/diaspora/diaspora/pull/7740)
* Show error message when creating posts with invalid aspects [#7742](https://github.com/diaspora/diaspora/pull/7742)
* Fix mention syntax backport for two immediately consecutive mentions [#7777](https://github.com/diaspora/diaspora/pull/7777)
* Fix link to 'make yourself an admin' [#7783](https://github.com/diaspora/diaspora/pull/7783)
* Fix calculation of content lengths when cross-posting to twitter [#7791](https://github.com/diaspora/diaspora/pull/7791)
## Features
* Make public stream accessible for logged out users [#7775](https://github.com/diaspora/diaspora/pull/7775)
* Add account-merging support when receiving an account migration [#7803](https://github.com/diaspora/diaspora/pull/7803)
# 0.7.4.1
Fixes a possible cross-site scripting issue with maliciously crafted OpenGraph metadata.
......
......@@ -2,7 +2,7 @@
source "https://rubygems.org"
gem "rails", "5.1.4"
gem "rails", "5.1.6"
# Legacy Rails features, remove me!
# responders (class level)
......@@ -10,7 +10,7 @@ gem "responders", "2.4.0"
# Appserver
gem "unicorn", "5.3.0", require: false
gem "unicorn", "5.4.0", require: false
gem "unicorn-worker-killer", "0.4.4"
# Federation
......@@ -26,7 +26,7 @@ gem "json-schema", "2.8.0"
# Authentication
gem "devise", "4.4.1"
gem "devise", "4.4.3"
gem "devise_lastseenable", "0.0.6"
# Captcha
......@@ -35,7 +35,8 @@ gem "simple_captcha2", "0.4.3", require: "simple_captcha"
# Background processing
gem "sidekiq", "5.0.4"
gem "redis", "3.3.5" # Pinned to 3.3.x because of https://github.com/antirez/redis/issues/4272
gem "sidekiq", "5.1.3"
# Scheduled processing
......@@ -43,7 +44,7 @@ gem "sidekiq-cron", "0.6.3"
# Compression
gem "uglifier", "3.2.0"
gem "uglifier", "4.1.8"
# Configuration
......@@ -51,33 +52,33 @@ gem "configurate", "0.3.1"
# Cross-origin resource sharing
gem "rack-cors", "1.0.1", require: "rack/cors"
gem "rack-cors", "1.0.2", require: "rack/cors"
# CSS
gem "autoprefixer-rails", "7.1.4.1"
gem "autoprefixer-rails", "8.2.0"
gem "bootstrap-sass", "3.3.7"
gem "bootstrap-switch-rails", "3.3.3"
gem "compass-rails", "3.0.2"
gem "sass-rails", "5.0.6"
gem "sass-rails", "5.0.7"
gem "sprockets-rails", "3.2.1"
# Database
group :mysql, optional: true do
gem "mysql2", "0.4.9"
gem "mysql2", "0.5.0"
end
group :postgresql, optional: true do
gem "pg", "0.21.0"
gem "pg", "1.0.0"
end
gem "activerecord-import", "0.20.1"
gem "activerecord-import", "0.22.0"
# File uploading
gem "carrierwave", "1.1.0"
gem "fog-aws", "1.4.1"
gem "carrierwave", "1.2.2"
gem "fog-aws", "2.0.1"
gem "mini_magick", "4.8.0"
# GUID generation
......@@ -91,7 +92,7 @@ gem "entypo-rails", "3.0.0"
gem "handlebars_assets", "0.23.2"
gem "jquery-rails", "4.3.1"
gem "js-routes", "1.4.1"
gem "js-routes", "1.4.3"
gem "js_image_paths", "0.1.1"
source "https://rails-assets.org" do
......@@ -99,7 +100,7 @@ source "https://rails-assets.org" do
gem "rails-assets-jquery.ui", "1.11.4"
gem "rails-assets-highlightjs", "9.12.0"
gem "rails-assets-markdown-it", "8.4.0"
gem "rails-assets-markdown-it", "8.4.1"
gem "rails-assets-markdown-it-hashtag", "0.4.0"
gem "rails-assets-markdown-it-diaspora-mention", "1.2.0"
gem "rails-assets-markdown-it-sanitizer", "0.4.3"
......@@ -109,17 +110,17 @@ source "https://rails-assets.org" do
gem "rails-assets-backbone", "1.3.3"
gem "rails-assets-bootstrap-markdown", "2.10.0"
gem "rails-assets-corejs-typeahead", "1.1.1"
gem "rails-assets-corejs-typeahead", "1.2.1"
gem "rails-assets-fine-uploader", "5.13.0"
# jQuery plugins
gem "rails-assets-autosize", "4.0.0"
gem "rails-assets-blueimp-gallery", "2.27.0"
gem "rails-assets-autosize", "4.0.1"
gem "rails-assets-blueimp-gallery", "2.33.0"
gem "rails-assets-jquery.are-you-sure", "1.9.0"
gem "rails-assets-jquery-placeholder", "2.3.1"
gem "rails-assets-jquery-textchange", "0.2.3"
gem "rails-assets-perfect-scrollbar", "0.6.16"
gem "rails-assets-utatti-perfect-scrollbar", "1.3.0"
end
gem "markdown-it-html5-embed", "1.0.0"
......@@ -135,7 +136,7 @@ gem "rails-i18n", "5.1.1"
gem "markerb", "1.1.0"
# Map
gem "leaflet-rails", "1.2.0"
gem "leaflet-rails", "1.3.1"
# Parsing
......@@ -147,23 +148,23 @@ gem "twitter-text", "1.14.7"
# RTL support
gem "string-direction", "1.2.0"
gem "string-direction", "1.2.1"
# Security Headers
gem "secure_headers", "3.7.1"
gem "secure_headers", "5.0.5"
# Services
gem "omniauth", "1.6.1"
gem "omniauth", "1.8.1"
gem "omniauth-facebook", "4.0.0"
gem "omniauth-tumblr", "1.2"
gem "omniauth-twitter", "1.4.0"
gem "twitter", "6.1.0"
gem "omniauth-wordpress", "0.2.2"
gem "twitter", "6.2.0"
# OpenID Connect
gem "openid_connect", "1.1.3"
gem "openid_connect", "1.1.5"
# Serializers
......@@ -180,15 +181,15 @@ gem "acts-as-taggable-on", "5.0.0"
# URIs and HTTP
gem "addressable", "2.5.2", require: "addressable/uri"
gem "faraday", "0.11.0" # also update User-Agent in OpenID specs
gem "faraday", "0.12.2" # also update User-Agent in OpenID specs
gem "faraday_middleware", "0.12.2"
gem "faraday-cookie_jar", "0.0.6"
gem "typhoeus", "1.3.0"
# Views
gem "gon", "6.1.0"
gem "hamlit", "2.8.6"
gem "gon", "6.2.0"
gem "hamlit", "2.8.8"
gem "mobile-fu", "1.4.0"
gem "rails-timeago", "2.16.0"
gem "will_paginate", "3.1.6"
......@@ -208,7 +209,7 @@ gem "rubyzip", "1.2.1", require: "zip"
# https://github.com/discourse/discourse/pull/238
gem "minitest"
gem "versionist", "1.6.0"
gem "versionist", "1.7.0"
# Windows and OSX have an execjs compatible runtime built-in, Linux users should
# install Node.js or use "therubyracer".
......@@ -225,7 +226,7 @@ group :production do # we don"t install these on travis to speed up test runs
# Process management
gem "eye", "0.9.2"
gem "eye", "0.10.0"
# Redirects
......@@ -234,26 +235,26 @@ group :production do # we don"t install these on travis to speed up test runs
# Third party asset hosting
gem "asset_sync", "2.2.0", require: false
gem "asset_sync", "2.4.0", require: false
end
group :development do
# Automatic test runs
gem "guard", "2.14.1", require: false
gem "guard", "2.14.2", require: false
gem "guard-cucumber", "2.1.2", require: false
gem "guard-rspec", "4.7.3", require: false
gem "guard-rubocop", "1.3.0", require: false
gem "rb-fsevent", "0.10.2", require: false
gem "rb-fsevent", "0.10.3", require: false
gem "rb-inotify", "0.9.10", require: false
# Linters
gem "haml_lint", "0.26.0", require: false
gem "haml_lint", "0.27.0", require: false
gem "pronto", "0.9.5", require: false
gem "pronto-eslint", "0.9.1", require: false
gem "pronto-haml", "0.9.0", require: false
gem "pronto-rubocop", "0.9.0", require: false
gem "pronto-scss", "0.9.1", require: false
gem "rubocop", "0.50.0", require: false
gem "rubocop", "0.54.0", require: false
# Preloading environment
......@@ -274,25 +275,25 @@ end
group :test do
# RSpec (unit tests, some integration tests)
gem "fixture_builder", "0.5.0"
gem "fuubar", "2.2.0"
gem "fixture_builder", "0.5.1"
gem "fuubar", "2.3.1"
gem "json-schema-rspec", "0.0.4"
gem "rspec-json_expectations", "~> 2.1"
# Cucumber (integration tests)
gem "capybara", "2.15.1"
gem "database_cleaner", "1.6.1"
gem "poltergeist", "1.16.0"
gem "capybara", "2.18.0"
gem "database_cleaner", "1.6.2"
gem "poltergeist", "1.17.0"
gem "cucumber-api-steps", "0.13", require: false
gem "cucumber-api-steps", "0.14", require: false
# General helpers
gem "factory_girl_rails", "4.8.0"
gem "shoulda-matchers", "3.1.2"
gem "timecop", "0.9.1"
gem "webmock", "3.0.1", require: false
gem "webmock", "3.3.0", require: false
gem "diaspora_federation-test", "0.2.4"
......@@ -302,13 +303,13 @@ end
group :development, :test do
# RSpec (unit tests, some integration tests)
gem "rspec-rails", "3.6.1"
gem "rspec-rails", "3.7.2"
# Cucumber (integration tests)
gem "cucumber-rails", "1.5.0", require: false
# Jasmine (client side application tests (JS))
gem "jasmine", "2.8.0"
gem "jasmine", "3.1.0"
gem "jasmine-jquery-rails", "2.0.3"
gem "rails-assets-jasmine-ajax", "3.3.1", source: "https://rails-assets.org"
gem "sinon-rails", "1.15.0"
......
This diff is collapsed.
......@@ -6,7 +6,6 @@
//= link bookmarklet.js
//= link mobile/bookmarklet.js
//= link mobile/mobile.js
//= link templates.js
//= link error_pages.css
//= link admin.css
//= link rtl.css
......@@ -14,7 +14,7 @@
//= require_tree ./collections
//= require_tree ./views
//= require perfect-scrollbar/perfect-scrollbar.jquery
//= require utatti-perfect-scrollbar/dist/perfect-scrollbar
var app = {
collections: {},
......
// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-v3-or-Later
/* we need to wrap this in a document ready to ensure JST is accessible */
$(function(){
Handlebars.registerPartial('status-message', HandlebarsTemplates['status-message_tpl']);
});
Handlebars.registerPartial("status-message", HandlebarsTemplates["status-message_tpl"]);
// @license-end
......@@ -5,7 +5,6 @@ app.pages.Contacts = Backbone.View.extend({
el: "#contacts_container",
events: {
"click #contacts_visibility_toggle" : "toggleContactVisibility",
"click #chat_privilege_toggle" : "toggleChatPrivilege",
"click #change_aspect_name" : "showAspectNameForm",
"click .conversation_button": "showMessageModal",
......@@ -13,7 +12,6 @@ app.pages.Contacts = Backbone.View.extend({
},
initialize: function(opts) {
this.visibilityToggle = $("#contacts_visibility_toggle i");
this.chatToggle = $("#chat_privilege_toggle i");
this.stream = opts.stream;
this.stream.render();
......@@ -45,25 +43,6 @@ app.pages.Contacts = Backbone.View.extend({
}
},
toggleContactVisibility: function() {
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.visibilityToggle.removeClass("entypo-lock")
.addClass("entypo-lock-open")
.tooltip("destroy")
.removeAttr("data-original-title")
.attr("title", Diaspora.I18n.t("contacts.aspect_list_is_visible"))
.tooltip({"placement": "bottom"});
}
},
showAspectNameForm: function() {
$(".header > h3").hide();
var aspectName = $.trim($(".header h3 #aspect_name").text());
......@@ -81,7 +60,7 @@ app.pages.Contacts = Backbone.View.extend({
showMessageModal: function(){
$("#conversationModal").on("modal:loaded", function() {
var people = _.pluck(app.contacts.filter(function(contact) {
return contact.inAspect(app.aspect.get("id"));
return contact.person.get("relationship") === "mutual" && contact.inAspect(app.aspect.get("id"));
}), "person");
new app.views.ConversationsForm({prefill: people});
});
......
......@@ -24,9 +24,6 @@ app.pages.Profile = app.views.Base.extend({
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;
......@@ -70,7 +67,6 @@ app.pages.Profile = app.views.Base.extend({
return new app.views.ProfileHeader({
model: this.model,
photos: this.photos,
contacts: this.contacts
});
},
......
......@@ -20,7 +20,6 @@ app.Router = Backbone.Router.extend({
"p/:id(/)": "singlePost",
"people(/)": "peopleSearch",
"people/:id(/)": "profile",
"people/:id/contacts(/)": "profile",
"people/:id/photos(/)": "photos",
"posts/:id(/)": "singlePost",
"profile/edit(/)": "settings",
......
......@@ -21,10 +21,6 @@ app.views.AspectCreate = app.views.Base.extend({
});
},
_contactsVisible: function() {
return this.$("#aspect_contacts_visible").is(":checked");
},
_name: function() {
return this.$("#aspect_name").val();
},
......@@ -71,8 +67,7 @@ app.views.AspectCreate = app.views.Base.extend({
app.aspects.create({
"person_id": this._personId || null,
"name": this._name(),
"contacts_visible": this._contactsVisible()
"name": this._name()
});
},
......
......@@ -12,7 +12,7 @@ app.views.NotificationDropdown = app.views.Base.extend({
this.dropdown = $("#notification-dropdown");
this.dropdownNotifications = this.dropdown.find(".notifications");
this.ajaxLoader = this.dropdown.find(".ajax-loader");
this.perfectScrollbarInitialized = false;
this.perfectScrollbar = null;
this.dropdownNotifications.scroll(this.dropdownScroll.bind(this));
this.bindCollectionEvents();
},
......@@ -106,18 +106,17 @@ app.views.NotificationDropdown = app.views.Base.extend({
},
updateScrollbar: function() {
if(this.perfectScrollbarInitialized) {
this.dropdownNotifications.perfectScrollbar("update");
if (this.perfectScrollbar) {
this.perfectScrollbar.update();
} else {
this.dropdownNotifications.perfectScrollbar();
this.perfectScrollbarInitialized = true;
this.perfectScrollbar = new PerfectScrollbar(this.dropdownNotifications[0]);
}
},
destroyScrollbar: function() {
if(this.perfectScrollbarInitialized) {
this.dropdownNotifications.perfectScrollbar("destroy");
this.perfectScrollbarInitialized = false;
if (this.perfectScrollbar) {
this.perfectScrollbar.destroy();
this.perfectScrollbar = null;
}
}
});
......
......@@ -14,7 +14,6 @@ app.views.ProfileHeader = app.views.Base.extend({
initialize: function(opts) {
this.photos = _.has(opts, 'photos') ? opts.photos : null;
this.contacts = _.has(opts, 'contacts') ? opts.contacts : null;
this.model.on("change", this.render, this);
$("#mentionModal").on("modal:loaded", this.mentionModalLoaded.bind(this));
$("#mentionModal").on("hidden.bs.modal", this.mentionModalHidden);
......@@ -24,13 +23,11 @@ app.views.ProfileHeader = app.views.Base.extend({
return _.extend({}, this.defaultPresenter(), {
show_profile_btns: this._shouldShowProfileBtns(),
show_photos: this._shouldShowPhotos(),
show_contacts: this._shouldShowContacts(),
is_blocked: this.model.isBlocked(),
is_sharing: this.model.isSharing(),
is_receiving: this.model.isReceiving(),
is_mutual: this.model.isMutual(),
has_tags: this._hasTags(),
contacts: this.contacts,
photos: this.photos
});
},
......@@ -51,10 +48,6 @@ app.views.ProfileHeader = app.views.Base.extend({
return (this.photos && this.photos > 0);
},
_shouldShowContacts: function() {
return (this.contacts && this.contacts > 0);
},
showMentionModal: function() {
app.helpers.showModal("#mentionModal");
},
......
......@@ -25,7 +25,7 @@ app.views.Stream = app.views.InfScroll.extend({
markNavSelected : function() {
var activeStream = Backbone.history.fragment;
var streamSelection = $("#stream_selection");
var streamSelection = $("#stream-selection");
streamSelection.find("[data-stream]").removeClass("selected");
streamSelection.find("[data-stream='" + activeStream + "']").addClass("selected");
......
//= require jquery3
//= require handlebars.runtime
//= require templates
//= require main
//= require fine-uploader/fine-uploader.core
//= require mobile/mobile
......
......@@ -18,6 +18,7 @@
//= require jquery.autoSuggest.custom
//= require fine-uploader/fine-uploader.core
//= require handlebars.runtime
//= require_tree ../templates
//= require posix-bracket-expressions
//= require markdown-it
//= require markdown-it-diaspora-mention
......
/* Copyright (c) 2010-2011, Diaspora Inc. This file is
* licensed under the Affero General Public License version 3 or later. See
* the COPYRIGHT file.
*/
//= require_tree ../templates
@import 'perfect-scrollbar';
@import 'utatti-perfect-scrollbar/css/perfect-scrollbar';
@import 'color-variables';
@import 'bootstrap-complete';
......@@ -17,7 +17,6 @@
@import 'interactions';
@import 'spinner';
@import 'timeago';
@import 'vendor/fileuploader';
@import 'vendor/autoSuggest';
@import 'typeahead';
@import 'colors';
......
......@@ -4,6 +4,10 @@
}
}
.public-stream {
float: none;
}
.main-stream-publisher {
margin-top: 20px;
padding: 0;
......
.qq-uploader {
position:relative;
width: 100%;
}
.qq-upload-button {
display:block; /* or inline-block */
width: 105px;
padding: 7px 0;
text-align:center;
background:#333;
border-bottom:1px solid #999;
color:#fff;
}
.qq-upload-drop-area {
position:absolute;
top:0; left:0;
width:100%;
height:100%;
min-height: 70px;
z-index:2;
background:#ccc;
text-align:center;
}
.qq-upload-drop-area span {
display:block;
position:absolute;
top: 50%;
width:100%;
margin-top:-8px;
font-size:16px;
}
.qq-upload-drop-area-active {
background:#FF7171;
}
.qq-upload-list {
margin:15px 35px;
padding:0;
list-style:disc;
}
.qq-upload-list li {
margin:0;
padding:0;
line-height:15px;
font-size:12px;
}
.qq-upload-file, .qq-upload-spinner, .qq-upload-size, .qq-upload-cancel, .qq-upload-failed-text {
margin-right: 7px;
}
.qq-upload-spinner {
display:inline-block;
background: url("loading.gif");
width:15px;
height:15px;
vertical-align:text-bottom;
}
.qq-upload-size,.qq-upload-cancel {
font-size:11px;
}
.qq-upload-failed-text {
display:none;
}