Merge branch 'master' into debugger
Conflicts: Gemfile.lock
This commit is contained in:
commit
b71f380f5d
173 changed files with 1089 additions and 1401 deletions
11
Gemfile
11
Gemfile
|
|
@ -29,6 +29,7 @@ gem 'rails_admin'
|
|||
|
||||
# mail
|
||||
|
||||
gem 'markerb', '~> 1.0.0'
|
||||
gem 'messagebus_ruby_api', '1.0.3'
|
||||
gem 'airbrake'
|
||||
gem 'newrelic_rpm'
|
||||
|
|
@ -44,7 +45,7 @@ end
|
|||
|
||||
group :heroku do
|
||||
gem 'pg'
|
||||
gem 'unicorn', '~> 4.2.0', :require => false
|
||||
gem 'unicorn', '~> 4.3.0', :require => false
|
||||
end
|
||||
|
||||
gem 'settingslogic', :git => 'git://github.com/binarylogic/settingslogic.git'
|
||||
|
|
@ -116,12 +117,12 @@ group :assets do
|
|||
# install Node.js or use 'therubyracer'.
|
||||
#
|
||||
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
|
||||
|
||||
|
||||
# gem 'therubyracer', :platform => :ruby
|
||||
|
||||
|
||||
gem 'handlebars_assets'
|
||||
gem 'uglifier'
|
||||
|
||||
|
||||
# asset_sync is required as needed by application.rb
|
||||
gem "asset_sync", :require => nil
|
||||
end
|
||||
|
|
@ -156,7 +157,7 @@ group :test do
|
|||
gem 'rspec-core', '~> 2.9.0'
|
||||
gem 'rspec-instafail', '>= 0.1.7', :require => false
|
||||
gem "rspec-rails", "~> 2.9.0"
|
||||
gem 'selenium-webdriver'
|
||||
gem 'selenium-webdriver', '2.22.0.rc1'
|
||||
|
||||
gem 'webmock', :require => false
|
||||
gem 'sqlite3'
|
||||
|
|
|
|||
24
Gemfile.lock
24
Gemfile.lock
|
|
@ -110,7 +110,7 @@ GEM
|
|||
carrierwave (0.5.8)
|
||||
activesupport (~> 3.0)
|
||||
cgi_multipart_eof_fix (2.5.0)
|
||||
childprocess (0.3.1)
|
||||
childprocess (0.3.2)
|
||||
ffi (~> 1.0.6)
|
||||
chronic (0.6.7)
|
||||
client_side_validations (3.1.4)
|
||||
|
|
@ -259,12 +259,16 @@ GEM
|
|||
railties (>= 3.0.0)
|
||||
kgio (2.7.4)
|
||||
launchy (2.0.3)
|
||||
libwebsocket (0.1.3)
|
||||
addressable
|
||||
linecache (0.46)
|
||||
rbx-require-relative (> 0.0.4)
|
||||
mail (2.3.3)
|
||||
i18n (>= 0.4.0)
|
||||
mime-types (~> 1.16)
|
||||
treetop (~> 1.4.8)
|
||||
markerb (1.0.0)
|
||||
redcarpet (>= 2.0)
|
||||
messagebus_ruby_api (1.0.3)
|
||||
mime-types (1.18)
|
||||
mini_magick (3.4)
|
||||
|
|
@ -414,7 +418,9 @@ GEM
|
|||
ruby-hmac (0.4.0)
|
||||
ruby-oembed (0.8.7)
|
||||
ruby-progressbar (0.0.10)
|
||||
rubyzip (0.9.7)
|
||||
ruby_core_source (0.1.5)
|
||||
archive-tar-minitar (>= 0.5.2)
|
||||
rubyzip (0.9.8)
|
||||
sass (3.1.15)
|
||||
sass-rails (3.1.4)
|
||||
actionpack (~> 3.1.0)
|
||||
|
|
@ -422,10 +428,11 @@ GEM
|
|||
sass (>= 3.1.4)
|
||||
sprockets (~> 2.0.0)
|
||||
tilt (~> 1.3.2)
|
||||
selenium-webdriver (2.19.0)
|
||||
selenium-webdriver (2.22.0.rc1)
|
||||
childprocess (>= 0.2.5)
|
||||
ffi (~> 1.0.9)
|
||||
multi_json (~> 1.0.4)
|
||||
ffi (~> 1.0)
|
||||
libwebsocket (~> 0.1.3)
|
||||
multi_json (~> 1.0)
|
||||
rubyzip
|
||||
simple_oauth (0.1.5)
|
||||
sinatra (1.3.2)
|
||||
|
|
@ -461,7 +468,7 @@ GEM
|
|||
uglifier (1.2.4)
|
||||
execjs (>= 0.3.0)
|
||||
multi_json (>= 1.0.2)
|
||||
unicorn (4.2.1)
|
||||
unicorn (4.3.1)
|
||||
kgio (~> 2.6)
|
||||
rack
|
||||
raindrops (~> 0.7)
|
||||
|
|
@ -530,6 +537,7 @@ DEPENDENCIES
|
|||
json
|
||||
jwt
|
||||
linecache (= 0.46)
|
||||
markerb (~> 1.0.0)
|
||||
messagebus_ruby_api (= 1.0.3)
|
||||
mini_magick (= 3.4)
|
||||
mobile-fu
|
||||
|
|
@ -567,7 +575,7 @@ DEPENDENCIES
|
|||
rspec-rails (~> 2.9.0)
|
||||
ruby-oembed (~> 0.8.7)
|
||||
sass-rails (= 3.1.4)
|
||||
selenium-webdriver
|
||||
selenium-webdriver (= 2.22.0.rc1)
|
||||
settingslogic!
|
||||
spork (~> 1.0rc2)
|
||||
sqlite3
|
||||
|
|
@ -576,7 +584,7 @@ DEPENDENCIES
|
|||
twitter (= 2.0.2)
|
||||
typhoeus
|
||||
uglifier
|
||||
unicorn (~> 4.2.0)
|
||||
unicorn (~> 4.3.0)
|
||||
webmock
|
||||
whenever
|
||||
will_paginate
|
||||
|
|
|
|||
38
README.md
38
README.md
|
|
@ -1,4 +1,4 @@
|
|||
## Welcome to the Diaspora Project!
|
||||
Diaspora*
|
||||
|
||||
Diaspora is a privacy-aware, personally-controlled, do-it-all open source social network. Check out our [project site](http://diasporaproject.org).
|
||||
|
||||
|
|
@ -12,41 +12,47 @@ If you want to do something big, reach out on IRC or the mailing list first, so
|
|||
|
||||
With Diaspora you can:
|
||||
|
||||
- Run and host your own pod and have control over your own social experience.
|
||||
- Own your own data.
|
||||
- Make friends across other pods seamlessly.
|
||||
- Make cool stuff
|
||||
- Share it across the web
|
||||
- Own your own data
|
||||
|
||||
Documentation is available on our [wiki](https://github.com/diaspora/diaspora/wiki)
|
||||
|
||||
[Pull Request Guidelines](https://github.com/diaspora/diaspora/wiki/Pull-Request-Guidelines)
|
||||
|
||||
Before submitting code, feel free to sign our [Contributor License Agreement](https://github.com/diaspora/diaspora/wiki/New-CLA--12-13-10) [Sign Here](https://spreadsheets.google.com/a/joindiaspora.com/spreadsheet/viewform?formkey=dFdRTnY0TGtfaklKQXZNUndsMlJ2eGc6MQ)
|
||||
|
||||
## Quick Start:
|
||||
|
||||
Here's how you can get a development environment up and running. You can check out system-specific guides [here](https://github.com/diaspora/diaspora/wiki/Installation-Guides).
|
||||
Here's how you can get a **[development](http://guides.rubyonrails.org/getting_started.html)** environment up and running. This is where any new pod runner should start, as well as people
|
||||
looking to contribute to D*. This script assumes you have [a basic Rails setup installed](http://railsapps.github.com/installing-rails-3-1.html).
|
||||
|
||||
### Step 1: Download the script
|
||||
### Step 1: Run the script and follow the on screen instructions.
|
||||
```
|
||||
curl https://raw.github.com/diaspora/diaspora/master/script/install.sh | /bin/sh
|
||||
```
|
||||
|
||||
### Step 2: Follow the instructions
|
||||
|
||||
|
||||
### Step 3: Run the the development server
|
||||
### Step 2: Run the the development server
|
||||
```
|
||||
rails s
|
||||
```
|
||||
|
||||
then visit 'http://localhost:3000' in your browser.
|
||||
|
||||
### Step 4: Run tests
|
||||
### Step 3 (for developers): Run tests
|
||||
```
|
||||
rake
|
||||
```
|
||||
|
||||
## Resources:
|
||||
### Want a production setup? Having trouble with install script? Want to install D* the slow way?
|
||||
Look to more specific install guides [here](https://github.com/diaspora/diaspora/wiki/Installation-Guides).
|
||||
|
||||
## Contributing
|
||||
We love community contributions, and we work extra hard to make sure every code contribution is looked at and given feedback.
|
||||
To help everyone involved, please review our [Pull Request Guidelines](https://github.com/diaspora/diaspora/wiki/Pull-Request-Guidelines)
|
||||
to make sure all contributions are submitted smoothly.
|
||||
|
||||
Documentation is available on our [wiki](https://github.com/diaspora/diaspora/wiki)
|
||||
|
||||
Before submitting code, please sign our [Contributor License Agreement](https://github.com/diaspora/diaspora/wiki/New-CLA--12-13-10) [Sign Here](https://spreadsheets.google.com/a/joindiaspora.com/spreadsheet/viewform?formkey=dFdRTnY0TGtfaklKQXZNUndsMlJ2eGc6MQ)
|
||||
|
||||
## More Resources:
|
||||
|
||||
- [Wiki](https://github.com/diaspora/diaspora/wiki)
|
||||
- [Podmin Resources](https://github.com/diaspora/diaspora/wiki/Podmin-Resources)
|
||||
|
|
|
|||
BIN
app/assets/images/buttons/bday@2x-white.png
Normal file
BIN
app/assets/images/buttons/bday@2x-white.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
BIN
app/assets/images/buttons/service-icons/fb@2x-white.png
Normal file
BIN
app/assets/images/buttons/service-icons/fb@2x-white.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
BIN
app/assets/images/buttons/service-icons/tumblr@2x-white.png
Normal file
BIN
app/assets/images/buttons/service-icons/tumblr@2x-white.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
BIN
app/assets/images/buttons/service-icons/twitter@2x-white.png
Normal file
BIN
app/assets/images/buttons/service-icons/twitter@2x-white.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
|
|
@ -42,7 +42,7 @@ var app = {
|
|||
Backbone.history.start({pushState: true});
|
||||
|
||||
// there's probably a better way to do this...
|
||||
$("a[rel=backbone]").bind("click", function(evt){
|
||||
$("a[rel=backbone]").live("click", function(evt){
|
||||
evt.preventDefault();
|
||||
var link = $(this);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,11 +1,35 @@
|
|||
app.forms.Picture = app.views.Base.extend({
|
||||
templateName : "picture-form",
|
||||
|
||||
app.forms.PictureBase = app.views.Base.extend({
|
||||
events : {
|
||||
'ajax:complete .new_photo' : "photoUploaded",
|
||||
"change input[name='photo[user_file]']" : "submitForm"
|
||||
},
|
||||
|
||||
onSubmit : $.noop,
|
||||
uploadSuccess : $.noop,
|
||||
|
||||
postRenderTemplate : function(){
|
||||
this.$("input[name=authenticity_token]").val($("meta[name=csrf-token]").attr("content"))
|
||||
},
|
||||
|
||||
submitForm : function (){
|
||||
this.$("form").submit();
|
||||
this.onSubmit();
|
||||
},
|
||||
|
||||
photoUploaded : function(evt, xhr) {
|
||||
resp = JSON.parse(xhr.responseText)
|
||||
if(resp.success) {
|
||||
this.uploadSuccess(resp)
|
||||
} else {
|
||||
alert("Upload failed! Please try again. " + resp.error);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/* multi photo uploader */
|
||||
app.forms.Picture = app.forms.PictureBase.extend({
|
||||
templateName : "picture-form",
|
||||
|
||||
initialize : function() {
|
||||
this.photos = new Backbone.Collection()
|
||||
this.photos.bind("add", this.render, this)
|
||||
|
|
@ -17,18 +41,12 @@ app.forms.Picture = app.views.Base.extend({
|
|||
this.renderPhotos();
|
||||
},
|
||||
|
||||
submitForm : function (){
|
||||
this.$("form").submit();
|
||||
onSubmit : function (){
|
||||
this.$(".photos").append($('<span class="loader" style="margin-left: 80px;"></span>'))
|
||||
},
|
||||
|
||||
photoUploaded : function(evt, xhr) {
|
||||
resp = JSON.parse(xhr.responseText)
|
||||
if(resp.success) {
|
||||
this.photos.add(new Backbone.Model(resp.data))
|
||||
} else {
|
||||
alert("Upload failed! Please try again. " + resp.error);
|
||||
}
|
||||
uploadSuccess : function(resp) {
|
||||
this.photos.add(new Backbone.Model(resp.data))
|
||||
},
|
||||
|
||||
renderPhotos : function(){
|
||||
|
|
@ -38,4 +56,13 @@ app.forms.Picture = app.views.Base.extend({
|
|||
photoContainer.append(photoView)
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
/* wallpaper uploader */
|
||||
app.forms.Wallpaper = app.forms.PictureBase.extend({
|
||||
templateName : "wallpaper-form",
|
||||
|
||||
uploadSuccess : function(resp) {
|
||||
$("#profile").css("background-image", "url(" + resp.data.wallpaper + ")")
|
||||
}
|
||||
});
|
||||
|
|
@ -2,6 +2,14 @@ app.models.Profile = Backbone.Model.extend({
|
|||
urlRoot : "/profiles"
|
||||
}, {
|
||||
|
||||
preloadOrFetch : function(id){
|
||||
if(app.hasPreload("person")) {
|
||||
return new app.models.Profile(app.parsePreload("person"))
|
||||
} else {
|
||||
return this.findByGuid(id)
|
||||
}
|
||||
},
|
||||
|
||||
findByGuid : function(personId){
|
||||
var person = new app.models.Profile({ id : personId})
|
||||
person.fetch()
|
||||
|
|
|
|||
|
|
@ -11,5 +11,9 @@ app.models.User = Backbone.Model.extend({
|
|||
|
||||
expProfileUrl : function(){
|
||||
return "/people/" + app.currentUser.get("guid") + "?ex=true"
|
||||
},
|
||||
|
||||
isServiceConfigured : function(providerName) {
|
||||
return _.include(this.get("configured_services"), providerName)
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -59,5 +59,5 @@ app.views.framerControls = app.views.Base.extend({
|
|||
|
||||
//crazy hack for model publisher.
|
||||
function closeIFrame(){
|
||||
location.reload()
|
||||
location = "/people/" + app.currentUser.get("guid")
|
||||
};
|
||||
|
|
@ -5,18 +5,13 @@ app.pages.PostViewer = app.views.Base.extend({
|
|||
"#post-content" : "postView",
|
||||
"#post-nav" : "navView",
|
||||
"#post-interactions" : "interactionsView",
|
||||
"#header-container" : "authorView"
|
||||
"#author-info" : "authorView"
|
||||
},
|
||||
|
||||
initialize : function(options) {
|
||||
this.model = new app.models.Post({ id : options.id });
|
||||
this.model.preloadOrFetch().done(_.bind(this.initViews, this));
|
||||
|
||||
this.prepIdleHooks();
|
||||
|
||||
$(document).bind("keypress", _.bind(this.commentAnywhere, this))
|
||||
$(document).bind("keypress", _.bind(this.invokePane, this))
|
||||
$(document).bind("keyup", _.bind(this.closePane, this))
|
||||
this.bindEvents()
|
||||
},
|
||||
|
||||
initViews : function() {
|
||||
|
|
@ -29,6 +24,23 @@ app.pages.PostViewer = app.views.Base.extend({
|
|||
this.render();
|
||||
},
|
||||
|
||||
bindEvents : function(){
|
||||
this.prepIdleHooks();
|
||||
this.bindNavHooks();
|
||||
|
||||
$(document).bind("keypress", _.bind(this.commentAnywhere, this))
|
||||
$(document).bind("keypress", _.bind(this.invokePane, this))
|
||||
$(document).bind("keyup", _.bind(this.closePane, this))
|
||||
},
|
||||
|
||||
unbind : function(){
|
||||
$(document).unbind("idle.idleTimer")
|
||||
$(document).unbind("active.idleTimer")
|
||||
$(document).unbind('keydown')
|
||||
$(document).unbind('keypress')
|
||||
$(document).unbind('keyup')
|
||||
},
|
||||
|
||||
prepIdleHooks : function () {
|
||||
$.idleTimer(3000);
|
||||
|
||||
|
|
@ -41,38 +53,25 @@ app.pages.PostViewer = app.views.Base.extend({
|
|||
});
|
||||
},
|
||||
|
||||
postRenderTemplate : function() {
|
||||
/* set the document title, if it has one */
|
||||
if(this.model.get("title")){
|
||||
document.title = this.model.get("title");
|
||||
}
|
||||
this.bindNavHooks();
|
||||
},
|
||||
|
||||
bindNavHooks : function() {
|
||||
/* navagation hooks */
|
||||
var nextPostLocation = this.model.get("next_post");
|
||||
var previousPostLocation = this.model.get("previous_post");
|
||||
|
||||
|
||||
var model = this.model;
|
||||
$(document).keydown(function(evt){
|
||||
/* prevent nav from happening if the user is using the arrow
|
||||
* keys to navigate through their comment text */
|
||||
// prevent nav from happening if the user is using the arrow keys to navigate through their comment text
|
||||
if($(evt.target).is("textarea")) { return }
|
||||
|
||||
switch(evt.keyCode) {
|
||||
case 37:
|
||||
navigate(nextPostLocation); break;
|
||||
app.router.navigate(model.get("next_post"), true); break;
|
||||
case 39:
|
||||
navigate(previousPostLocation); break;
|
||||
app.router.navigate(model.get("previous_post"), true); break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
function navigate(loc) {
|
||||
loc ? window.location = loc : null
|
||||
}
|
||||
postRenderTemplate : function() {
|
||||
if(this.model.get("title")){ document.title = this.model.get("title"); }
|
||||
},
|
||||
|
||||
commentAnywhere : function(evt) {
|
||||
|
|
|
|||
|
|
@ -2,13 +2,13 @@
|
|||
//= require ../views/profile_info_view
|
||||
|
||||
app.pages.Profile = app.views.Base.extend({
|
||||
className : "container",
|
||||
|
||||
templateName : "profile",
|
||||
id : "profile",
|
||||
|
||||
subviews : {
|
||||
"#profile-info" : "profileInfo",
|
||||
"#canvas" : "canvasView"
|
||||
"#canvas" : "canvasView",
|
||||
"#wallpaper-upload" : "wallpaperForm"
|
||||
},
|
||||
|
||||
events : {
|
||||
|
|
@ -21,23 +21,13 @@ app.pages.Profile = app.views.Base.extend({
|
|||
personGUID : null,
|
||||
editMode : false,
|
||||
|
||||
presenter : function(){
|
||||
var bio = this.model.get("bio") || ''
|
||||
|
||||
return _.extend(this.defaultPresenter(),
|
||||
{text : this.model && app.helpers.textFormatter(bio, this.model),
|
||||
isOwnProfile : this.isOwnProfile(),
|
||||
showFollowButton : this.showFollowButton()
|
||||
})
|
||||
},
|
||||
|
||||
initialize : function(options) {
|
||||
this.personGUID = options.personId
|
||||
|
||||
this.model = new app.models.Profile.findByGuid(options.personId)
|
||||
this.model = this.model || app.models.Profile.preloadOrFetch(this.personGUID)
|
||||
this.stream = options && options.stream || new app.models.Stream()
|
||||
|
||||
this.model.bind("change", this.setPageTitle, this)
|
||||
this.model.bind("change", this.setPageTitleAndBackground, this)
|
||||
|
||||
/* binds for getting started pulsation */
|
||||
this.stream.bind("fetched", this.pulsateNewPostControl, this)
|
||||
|
|
@ -46,9 +36,17 @@ app.pages.Profile = app.views.Base.extend({
|
|||
this.stream.preloadOrFetch();
|
||||
|
||||
this.canvasView = new app.views.Canvas({ model : this.stream })
|
||||
this.wallpaperForm = new app.forms.Wallpaper()
|
||||
this.profileInfo = new app.views.ProfileInfo({ model : this.model })
|
||||
},
|
||||
|
||||
// send in isOwnProfile data
|
||||
this.profileInfo = new app.views.ProfileInfo({ model : this.model.set({isOwnProfile : this.isOwnProfile()}) })
|
||||
presenter : function(){
|
||||
var bio = this.model.get("bio") || ''
|
||||
|
||||
return _.extend(this.defaultPresenter(),
|
||||
{text : this.model && app.helpers.textFormatter(bio, this.model),
|
||||
showFollowButton : this.showFollowButton()
|
||||
})
|
||||
},
|
||||
|
||||
pulsateNewPostControl : function() {
|
||||
|
|
@ -59,9 +57,11 @@ app.pages.Profile = app.views.Base.extend({
|
|||
]("pulse")
|
||||
},
|
||||
|
||||
setPageTitle : function() {
|
||||
if(this.model.get("name"))
|
||||
setPageTitleAndBackground : function() {
|
||||
if(this.model.get("name")) {
|
||||
document.title = this.model.get("name")
|
||||
this.$el.css("background-image", "url(" + this.model.get("wallpaper") + ")")
|
||||
}
|
||||
},
|
||||
|
||||
toggleEdit : function(evt) {
|
||||
|
|
@ -81,10 +81,6 @@ app.pages.Profile = app.views.Base.extend({
|
|||
},
|
||||
|
||||
showFollowButton : function() {
|
||||
return this.followingEnabled() && !this.isOwnProfile()
|
||||
},
|
||||
|
||||
isOwnProfile : function() {
|
||||
return(app.currentUser.get("guid") == this.personGUID)
|
||||
return this.followingEnabled() && !this.model.get("is_own_profile")
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -23,25 +23,38 @@ app.Router = Backbone.Router.extend({
|
|||
|
||||
"posts/new" : "composer",
|
||||
"posts/:id": "singlePost",
|
||||
"posts/:id/next": "siblingPost",
|
||||
"posts/:id/previous": "siblingPost",
|
||||
|
||||
"p/:id": "singlePost",
|
||||
"framer": "framer"
|
||||
},
|
||||
|
||||
siblingPost : function(){ //next or previous
|
||||
var post = new app.models.Post();
|
||||
post.bind("change", setPreloadAttributesAndNavigate)
|
||||
post.fetch({url : window.location})
|
||||
|
||||
function setPreloadAttributesAndNavigate(){
|
||||
window.preloads.post = post.attributes
|
||||
app.router.navigate(post.url(), true)
|
||||
}
|
||||
},
|
||||
|
||||
newProfile : function(personId) {
|
||||
this.renderPage(new app.pages.Profile({ personId : personId }));
|
||||
this.renderPage(function(){ return new app.pages.Profile({ personId : personId })});
|
||||
},
|
||||
|
||||
composer : function(){
|
||||
this.renderPage(new app.pages.Composer());
|
||||
this.renderPage(function(){ return new app.pages.Composer()});
|
||||
},
|
||||
|
||||
framer : function(){
|
||||
this.renderPage(new app.pages.Framer());
|
||||
this.renderPage(function(){ return new app.pages.Framer()});
|
||||
},
|
||||
|
||||
singlePost : function(id) {
|
||||
this.renderPage(new app.pages.PostViewer({ id: id }));
|
||||
this.renderPage(function(){ return new app.pages.PostViewer({ id: id })});
|
||||
},
|
||||
|
||||
profile : function(page) {
|
||||
|
|
@ -72,8 +85,9 @@ app.Router = Backbone.Router.extend({
|
|||
return query.search("ex=true") != -1
|
||||
},
|
||||
|
||||
renderPage : function(page){
|
||||
app.page = page
|
||||
renderPage : function(pageConstructor){
|
||||
app.page && app.page.unbind && app.page.unbind() //old page might mutate global events $(document).keypress, so unbind before creating
|
||||
app.page = pageConstructor() //create new page after the world is clean (like that will ever happen)
|
||||
$("#container").html(app.page.render().el)
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -10,9 +10,23 @@ app.views.Canvas = app.views.Base.extend(_.extend({}, app.views.infiniteScrollMi
|
|||
|
||||
renderTemplate : function() {
|
||||
this.$el.empty()
|
||||
this.stream.items.each(_.bind(function(post){
|
||||
this.$el.append(this.createPostView(post).render().el);
|
||||
}, this))
|
||||
|
||||
if(this.stream.items.isEmpty()){
|
||||
var message
|
||||
, person = app.page.model
|
||||
if(person.get("is_own_profile")){
|
||||
message = "Make something to start the magic."
|
||||
} else {
|
||||
var name = person.get("name") || ""
|
||||
message = name + " hasn't posted anything yet."
|
||||
}
|
||||
|
||||
this.$el.html("<p class='no-post-message'>" + message + "</p>")
|
||||
} else {
|
||||
this.stream.items.each(_.bind(function(post){
|
||||
this.$el.append(this.createPostView(post).render().el);
|
||||
}, this))
|
||||
}
|
||||
|
||||
//needs to be deferred so it happens after html rendering finishes
|
||||
_.defer(_.bind(this.mason, this))
|
||||
|
|
@ -29,6 +43,7 @@ app.views.Canvas = app.views.Base.extend(_.extend({}, app.views.infiniteScrollMi
|
|||
itemSelector : '.canvas-frame',
|
||||
visibleStyle : {scale : 1},
|
||||
hiddenStyle : {scale : 0.001},
|
||||
containerStyle : {position : "relative"},
|
||||
masonry : {
|
||||
columnWidth : 292.5
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,13 @@ app.views.PostViewerAuthor = app.views.Base.extend({
|
|||
id : "post-author",
|
||||
className : "media",
|
||||
|
||||
templateName: "post-viewer/author"
|
||||
tooltipSelector : ".profile-image-container",
|
||||
|
||||
templateName: "post-viewer/author",
|
||||
|
||||
initialize : function() {
|
||||
/* add a class so we know how to color the text for the author name */
|
||||
this.$el.addClass(this.model.get("frame_name"))
|
||||
}
|
||||
|
||||
});
|
||||
|
|
@ -1,16 +1,3 @@
|
|||
app.views.PostViewerNav = app.views.Base.extend({
|
||||
templateName: "post-viewer/nav",
|
||||
|
||||
postRenderTemplate : function() {
|
||||
var mappings = {"#forward" : "next_post",
|
||||
"#back" : "previous_post"};
|
||||
|
||||
_.each(mappings, function(attribute, selector){
|
||||
this.setArrow(this.$(selector), this.model.get(attribute))
|
||||
}, this);
|
||||
},
|
||||
|
||||
setArrow : function(arrow, loc) {
|
||||
loc ? arrow.attr('href', loc) : arrow.remove()
|
||||
}
|
||||
templateName: "post-viewer/nav"
|
||||
});
|
||||
|
|
@ -1,5 +1,30 @@
|
|||
app.views.ServicesSelector = app.views.Base.extend({
|
||||
|
||||
templateName : "services-selector"
|
||||
templateName : "services-selector",
|
||||
|
||||
});
|
||||
events : {
|
||||
"click label" : "askForAuth"
|
||||
},
|
||||
|
||||
tooltipSelector : "img",
|
||||
|
||||
services : [
|
||||
'facebook',
|
||||
'twitter',
|
||||
'tumblr'
|
||||
],
|
||||
|
||||
presenter : function() {
|
||||
return _.extend(this.defaultPresenter(), {services : this.services})
|
||||
},
|
||||
|
||||
askForAuth : function(evt){
|
||||
var $target = $(evt.target);
|
||||
|
||||
if(app.currentUser.isServiceConfigured($target.data('provider'))) { return }
|
||||
|
||||
var serviceUrl = $target.data('url')
|
||||
window.open(serviceUrl, 'popup', 'height=400,width=500')
|
||||
}
|
||||
|
||||
});
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ app.views.SmallFrame = app.views.Post.extend({
|
|||
},
|
||||
|
||||
adjustedImageHeight : function() {
|
||||
if(!this.model.get("photos")[0]) { return }
|
||||
if(!(this.model.get("photos") || [])[0]) { return }
|
||||
|
||||
var modifiers = [this.dimensionsClass(), this.colorClass()].join(' ')
|
||||
|
||||
|
|
|
|||
|
|
@ -1818,6 +1818,8 @@ ul#press_logos
|
|||
:overflow hidden
|
||||
:position relative
|
||||
p
|
||||
:margin 0 0 0.8em
|
||||
p:nth-last-child(2)
|
||||
:margin 0
|
||||
|
||||
.expander
|
||||
|
|
|
|||
|
|
@ -1,3 +1,7 @@
|
|||
body {
|
||||
background-image : image_url("pattern.png");
|
||||
}
|
||||
|
||||
/* new link color */
|
||||
a { color : rgb(42,156,235) }
|
||||
|
||||
|
|
@ -5,12 +9,6 @@ a { color : rgb(42,156,235) }
|
|||
.icon-red { background-image: image_url("img/glyphicons-halflings-red.png"); }
|
||||
.icon-blue { background-image: image_url("img/glyphicons-halflings-blue.png"); }
|
||||
|
||||
@media (max-width: 770px) { //why is 770 a magic number?
|
||||
body {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.photoset {
|
||||
@include center(horizontal);
|
||||
width: 100%;
|
||||
|
|
@ -58,30 +56,6 @@ a { color : rgb(42,156,235) }
|
|||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.header {
|
||||
position: fixed;
|
||||
|
||||
/* position absolute for mobile */
|
||||
@media (max-width: 480px) {
|
||||
position: absolute !important;
|
||||
}
|
||||
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 10;
|
||||
width: 100%;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
#header-container {
|
||||
padding: 1.2%;
|
||||
|
||||
/* don't pad the header if we're mobile */
|
||||
@media (max-width: 480px) {
|
||||
padding: 0 !important;
|
||||
}
|
||||
}
|
||||
|
||||
.avatar {
|
||||
&.micro {
|
||||
height: 20px;
|
||||
|
|
@ -95,46 +69,46 @@ a { color : rgb(42,156,235) }
|
|||
}
|
||||
|
||||
.author-name {
|
||||
font-family : Roboto;
|
||||
color: inherit;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#post-author {
|
||||
@include border-radius();
|
||||
#author-info {
|
||||
position : absolute;
|
||||
z-index : 300;
|
||||
|
||||
border: 1px solid rgba(255,255,255,0.2);
|
||||
border-top: 1px solid rgba(255,255,255,0.5);
|
||||
|
||||
float: left;
|
||||
margin: 0;
|
||||
|
||||
padding: 5px;
|
||||
padding-right: 10px;
|
||||
|
||||
background-color: rgba(255,255,255,0.6);
|
||||
|
||||
/* don't pad the header if we're mobile */
|
||||
@media (max-width: 480px) {
|
||||
@include border-radius(0);
|
||||
background-color: rgba(255,255,255,0.4);
|
||||
width: 100% !important;
|
||||
border: none !important;
|
||||
padding: none !important;
|
||||
.author-name {
|
||||
color: #555;
|
||||
}
|
||||
|
||||
max-height: 35px;
|
||||
|
||||
.avatar {
|
||||
@include border-radius();
|
||||
.bd {
|
||||
margin-top : 5px;
|
||||
}
|
||||
|
||||
.post-time,
|
||||
.icon-retweet {
|
||||
color: #000;
|
||||
color: #555;
|
||||
@include opacity(0.5);
|
||||
}
|
||||
}
|
||||
|
||||
#post-author {
|
||||
margin : 0;
|
||||
padding : 10px;
|
||||
|
||||
&.status-with-photo-backdrop,
|
||||
&.Wallpaper {
|
||||
.author-name {
|
||||
color : #fff;
|
||||
}
|
||||
|
||||
.post-time,
|
||||
.icon-retweet {
|
||||
color: #fff;
|
||||
@include opacity(0.5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.post-view {
|
||||
display: table;
|
||||
|
|
@ -203,6 +177,10 @@ article { //mood posts
|
|||
background-color : $night-background-color;
|
||||
color : $night-text-color;
|
||||
|
||||
#author-info {
|
||||
color : $night-text-color;
|
||||
}
|
||||
|
||||
.photo-viewer {
|
||||
img {
|
||||
max-height: 80%;
|
||||
|
|
@ -240,9 +218,6 @@ article { //mood posts
|
|||
|
||||
&.wallpaper{
|
||||
color : #fff;
|
||||
header {
|
||||
margin: 0 7%;
|
||||
}
|
||||
}
|
||||
|
||||
&.multi-photo {
|
||||
|
|
@ -441,17 +416,23 @@ div[data-template=flow] {
|
|||
label { display : inline;}
|
||||
|
||||
img {
|
||||
@include transition(opacity);
|
||||
|
||||
cursor : pointer;
|
||||
height : 28px;
|
||||
width : 28px;
|
||||
|
||||
&:hover {
|
||||
@include opacity(0.6);
|
||||
}
|
||||
}
|
||||
|
||||
input:not(:checked) + label {
|
||||
@include opacity(0.4);
|
||||
img {
|
||||
@include opacity(0.4);
|
||||
}
|
||||
}
|
||||
|
||||
input:checked + label {
|
||||
&:hover img {
|
||||
@include opacity(1);
|
||||
}
|
||||
}
|
||||
|
||||
input {
|
||||
|
|
@ -466,19 +447,6 @@ div[data-template=flow] {
|
|||
right : 10px;
|
||||
top : 10px;
|
||||
|
||||
|
||||
.label {
|
||||
padding : 2px 5px;
|
||||
padding-bottom : 3px;
|
||||
|
||||
span {
|
||||
display : inline-block;
|
||||
position : relative;
|
||||
top : 1px;
|
||||
font-family : Roboto-Bold;
|
||||
}
|
||||
}
|
||||
|
||||
& > a {
|
||||
@include transition(opacity);
|
||||
@include opacity(0.4);
|
||||
|
|
@ -490,4 +458,17 @@ div[data-template=flow] {
|
|||
text-decoration : none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* bootstrap label fixes for Roboto */
|
||||
.label {
|
||||
padding : 2px 5px;
|
||||
padding-bottom : 3px;
|
||||
|
||||
span {
|
||||
display : inline-block;
|
||||
position : relative;
|
||||
top : 1px;
|
||||
font-family : Roboto-Bold;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,18 +1,18 @@
|
|||
|
||||
@mixin wide() {
|
||||
width : $two-column-width + px;
|
||||
min-width : $two-column-width + px;
|
||||
max-width : $two-column-width + px;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color : #F6F6F6;
|
||||
background-image : image_url('pattern.png')
|
||||
.no-post-message {
|
||||
text-align: center;
|
||||
margin-top: 50px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
.canvas-frame {
|
||||
float : left;
|
||||
margin : 10px;
|
||||
margin-bottom : 18px;
|
||||
|
||||
/* expand / contract cursor declarations */
|
||||
&.x2 .content {
|
||||
|
|
@ -28,12 +28,12 @@ body {
|
|||
|
||||
.content {
|
||||
@include transition(box-shadow);
|
||||
@include box-shadow(0,1px,3px,rgba(0,0,0,0.2));
|
||||
@include box-shadow(0, 8px, 50px, rgba(0,0,0,0.9));
|
||||
|
||||
background-image : image_url("paper-texture-1.jpg");
|
||||
|
||||
&:hover {
|
||||
@include box-shadow(0,1px,5px,rgba(0,0,0,0.5));
|
||||
@include box-shadow(0, 3px, 10px,rgba(0,0,0,0.9));
|
||||
|
||||
.info {
|
||||
top : 0;
|
||||
|
|
@ -59,11 +59,9 @@ body {
|
|||
max-width : $column-width + px;
|
||||
|
||||
overflow : hidden;
|
||||
//padding : 20px;
|
||||
|
||||
/* used in masking photos with overflow: hidden; */
|
||||
.image-container {
|
||||
|
||||
overflow : hidden;
|
||||
width : 100%;
|
||||
|
||||
|
|
@ -128,6 +126,8 @@ body {
|
|||
background-color : rgba(255,255,255,0.8);
|
||||
border-bottom : 1px solid #fff;
|
||||
|
||||
color : #000;
|
||||
|
||||
position : absolute;
|
||||
top : -32px;
|
||||
right : 0;
|
||||
|
|
|
|||
|
|
@ -11,9 +11,7 @@
|
|||
|
||||
#photo_upload_button {
|
||||
position: relative;
|
||||
margin : {
|
||||
bottom : 9px;
|
||||
}
|
||||
margin-bottom : 9px;
|
||||
|
||||
input{
|
||||
@include opacity(0);
|
||||
|
|
@ -21,6 +19,7 @@
|
|||
top: 0;
|
||||
left: 0;
|
||||
height:100%;
|
||||
cursor : pointer;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,26 @@
|
|||
#profile {
|
||||
min-height : 100%;
|
||||
|
||||
color : #fff;
|
||||
background : {
|
||||
color : #333;
|
||||
|
||||
/* The background-image property will be user-generated and set in `app.pages.Profile` (app/assets/javascripts/app/pages/profile.js)
|
||||
and should ONLY be set once the image is fully loaded.
|
||||
|
||||
Optimal imagemagick manipulation settings for uploaded image (via trial & error):
|
||||
|
||||
`mogrify -brightness-contrast -40x-50`
|
||||
|
||||
NOTE: I noticed that just turning the brightness down had an adverse affect on contrast,
|
||||
thus the "washing out" at -50 contrast. For more info on this specific command, read the documentation
|
||||
on it here: http://www.imagemagick.org/script/command-line-options.php#brightness-contrast */
|
||||
|
||||
size : cover;
|
||||
attachment : fixed;
|
||||
}
|
||||
}
|
||||
|
||||
/* getting started pulse animation */
|
||||
#composer-button.pulse {
|
||||
-webkit-animation: opacity-pulse 1s infinite;
|
||||
|
|
@ -35,6 +58,18 @@
|
|||
display : inline-block;
|
||||
|
||||
margin-bottom : 5px;
|
||||
|
||||
&.small {
|
||||
height : 40px;
|
||||
width : 40px;
|
||||
border : 2px solid #fff;
|
||||
}
|
||||
|
||||
&.micro {
|
||||
height : 24px;
|
||||
width : 24px;
|
||||
border : 2px solid #fff;
|
||||
}
|
||||
}
|
||||
|
||||
#profile-controls {
|
||||
|
|
|
|||
|
|
@ -1,173 +0,0 @@
|
|||
<div class="canvas-frame">
|
||||
<div class="content">
|
||||
<img src="https://joindiaspora.s3.amazonaws.com/uploads/images/scaled_full_bb076dd0d45f0caa4478.gif"/>
|
||||
</div>
|
||||
<div class="info">
|
||||
Daniel Grippi
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="canvas-frame width x2">
|
||||
<div class="content">
|
||||
<p>
|
||||
Here, he discusses how globalisation has exacerbated income inequalities and the control over politics exerted by the rich, citing the Occupy movement which he describes as a 'public relations hazard not a health hazard'
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Echo park wolf kale chips sunt, dolor scenester deserunt ad cray leggings 3 wolf moon thundercats direct trade. Banksy placeat odd future et, ex gastropub elit whatever. Messenger bag eu fanny pack, pitchfork locavore four loko yr marfa forage. Mcsweeney's hoodie terry richardson exercitation, consectetur commodo banh mi ullamco laboris cliche raw denim salvia selvage in nulla. Lo-fi chambray culpa, dreamcatcher fugiat squid portland nihil high life. Quis VHS blog sunt sint, salvia wes anderson fingerstache portland eiusmod ex consectetur synth enim. Tattooed aliquip proident id, lomo aliqua qui pitchfork hella cosby sweater pariatur vero. </p>
|
||||
|
||||
</div>
|
||||
<div class="info">
|
||||
Dennis Collinson
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="canvas-frame">
|
||||
<div class="content">
|
||||
<img src="https://joindiaspora.s3.amazonaws.com/uploads/images/scaled_full_7dbfea26846d99848aac.jpg"/>
|
||||
</div>
|
||||
<div class="info">
|
||||
Sarah Mei
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="canvas-frame">
|
||||
<div class="content">
|
||||
<h1>
|
||||
sometimes, i say things loud.
|
||||
</h1>
|
||||
</div>
|
||||
<div class="info">
|
||||
Sean Tilley
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="canvas-frame height x2">
|
||||
<div class="content">
|
||||
<h1>
|
||||
this is a longish status but i don't have that much to say. i guess i can keep on typing or something like that or make this a run-on sentance.
|
||||
</h1>
|
||||
</div>
|
||||
<div class="info">
|
||||
Daniel Grippi
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="canvas-frame width x2">
|
||||
<div class="content">
|
||||
<p>
|
||||
Echo park wolf kale chips sunt, dolor scenester deserunt ad cray leggings 3 wolf moon thundercats direct trade. Banksy placeat odd future et, ex gastropub elit whatever. Messenger bag eu fanny pack, pitchfork locavore four loko yr marfa forage. Mcsweeney's hoodie terry richardson exercitation, consectetur commodo banh mi ullamco laboris cliche raw denim salvia selvage in nulla. Lo-fi chambray culpa, dreamcatcher fugiat squid portland nihil high life. Quis VHS blog sunt sint, salvia wes anderson fingerstache portland eiusmod ex consectetur synth enim. Tattooed aliquip proident id, lomo aliqua qui pitchfork hella cosby sweater pariatur vero.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
<div class="info">
|
||||
Dennis Collinson
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="canvas-frame height width x2">
|
||||
<div class="content">
|
||||
<img src="http://24.media.tumblr.com/tumblr_lzwkez5ew31qzxz2so1_500.jpg"/>
|
||||
</div>
|
||||
<div class="info">
|
||||
Sarah Mei
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="canvas-frame">
|
||||
<div class="content">
|
||||
<h1>
|
||||
#weinerjuice
|
||||
</h1>
|
||||
</div>
|
||||
<div class="info">
|
||||
Sean Tilley
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="canvas-frame width x2">
|
||||
<div class="content">
|
||||
<img src="http://hipsteripsum.wpengine.netdna-cdn.com/wp-content/uploads/2011/08/cropped-asian_hipster.jpg"/>
|
||||
</div>
|
||||
<div class="info">
|
||||
Rosanna Yau
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="canvas-frame height x2">
|
||||
<div class="content">
|
||||
<h3>
|
||||
Banksy placeat odd future et, ex gastropub elit whatever. Messenger bag eu fanny pack, pitchfork locavore four loko yr marfa forage. Mcsweeney's hoodie terry richardson exercitation, consectetur commodo banh mi ullamco laboris cliche raw denim salvia selvage
|
||||
Banksy placeat odd future et, ex gastropub elit whatever. Messenger bag eu fanny pack, pitchfork.
|
||||
</h3>
|
||||
</div>
|
||||
<div class="info">
|
||||
Sarah Mei
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="canvas-frame width height x2">
|
||||
<div class="content">
|
||||
<img src="http://28.media.tumblr.com/tumblr_m02dfqdQT31qfzxa7o1_500.jpg"/>
|
||||
</div>
|
||||
<div class="info">
|
||||
Daniel Grippi
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="canvas-frame">
|
||||
<div class="content">
|
||||
<p>
|
||||
Banksy placeat odd future et, ex gastropub elit whatever. Messenger bag eu fanny pack, pitchfork locavore four loko yr marfa forage. Mcsweeney's hoodie terry richardson exercitation, consectetur commodo banh mi ullamco laboris cliche raw denim salvia selvage
|
||||
</p>
|
||||
</div>
|
||||
<div class="info">
|
||||
Daniel Grippi
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="canvas-frame">
|
||||
<div class="content">
|
||||
<h1>
|
||||
skribblex.
|
||||
</h1>
|
||||
</div>
|
||||
<div class="info">
|
||||
Rosanna Yau
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="canvas-frame height x2">
|
||||
<div class="content">
|
||||
<img src="http://28.media.tumblr.com/tumblr_ln5654hJrs1qd33kzo1_1280.jpg"/>
|
||||
</div>
|
||||
<div class="info">
|
||||
Sarah Mei
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="canvas-frame">
|
||||
<div class="content">
|
||||
hey there kids!
|
||||
</div>
|
||||
<div class="info">
|
||||
Daniel Grippi
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="canvas-frame width x2">
|
||||
<div class="content">
|
||||
<iframe width="100%" height="450" scrolling="no" frameborder="no" src="http://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Fplaylists%2F1821180&show_artwork=true"></iframe>
|
||||
</div>
|
||||
<div class="info">
|
||||
Rosanna Yau
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -107,7 +107,7 @@
|
|||
|
||||
<div id="lightbox">
|
||||
<div id="lightbox-content">
|
||||
<a href="#" id="lightbox-close-link">[x] close</a>
|
||||
<a href="#" id="lightbox-close-link">[x] {{t "header.close"}}</a>
|
||||
<img id="lightbox-image">
|
||||
<div id="lightbox-imageset"></div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,8 +1,4 @@
|
|||
<!-- header to be extracted -->
|
||||
|
||||
<div class="header">
|
||||
<div id="header-container"> </div>
|
||||
</div>
|
||||
<div id="author-info"></div>
|
||||
|
||||
<div id="top-right-nav">
|
||||
<a href="/" id="home-button">
|
||||
|
|
|
|||
|
|
@ -1,25 +1,25 @@
|
|||
<div class="img">
|
||||
{{#linkToPerson author}}
|
||||
{{{personImage this "small"}}}
|
||||
{{/linkToPerson}}
|
||||
{{#linkToPerson author}}
|
||||
<div class="profile-image-container small" style="background-image : url('{{avatar.small}}');" data-placement="right"></div>
|
||||
{{/linkToPerson}}
|
||||
</div>
|
||||
|
||||
<div class="bd">
|
||||
{{#linkToPerson author}}
|
||||
{{name}}
|
||||
{{/linkToPerson}}
|
||||
|
||||
{{#if root}}
|
||||
<i class="icon-retweet"></i>
|
||||
{{#linkToPerson root.author}}
|
||||
{{name}}
|
||||
{{#linkToPerson author}}
|
||||
{{name}}
|
||||
{{/linkToPerson}}
|
||||
{{/if}}
|
||||
|
||||
<div class="post-time">
|
||||
<time datetime="{{created_at}}" />
|
||||
{{#unless public}}
|
||||
<i class="icon-lock"> </i>
|
||||
{{/unless}}
|
||||
</div>
|
||||
{{#if root}}
|
||||
<i class="icon-retweet"></i>
|
||||
{{#linkToPerson root.author}}
|
||||
{{name}}
|
||||
{{/linkToPerson}}
|
||||
{{/if}}
|
||||
|
||||
<div class="post-time">
|
||||
<time datetime="{{created_at}}" />
|
||||
{{#unless public}}
|
||||
<i class="icon-lock"> </i>
|
||||
{{/unless}}
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
<a href="#" class="nav-arrow left" id="forward">
|
||||
<a href="{{next_post}}" class="nav-arrow left" id="forward" rel="backbone">
|
||||
<div class="nav-arrow-inner">
|
||||
<img src="{{imageUrl "arrow-left.png"}}" />
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="#" class="nav-arrow right" id="back">
|
||||
<a href="{{previous_post}}" class="nav-arrow right" id="back" rel="backbone">
|
||||
<div class="nav-arrow-inner">
|
||||
<img src="{{imageUrl "arrow-right.png"}}" />
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
{{#if location}}
|
||||
<span class="stat">
|
||||
<a href="http://maps.google.com/maps?q={{location}}" target="_blank">
|
||||
<i class="icon-map-marker"></i>
|
||||
<i class="icon-map-marker icon-white"></i>
|
||||
</a>
|
||||
{{location}}
|
||||
</span>
|
||||
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
{{#if birthday}}
|
||||
<span class="stat">
|
||||
<img src='{{imageUrl "buttons/bday@2x.png"}}' class="cake" />
|
||||
<img src='{{imageUrl "buttons/bday@2x-white.png"}}' class="cake" />
|
||||
{{birthday}}
|
||||
</span>
|
||||
<span class="divider">•</span>
|
||||
|
|
@ -25,20 +25,20 @@
|
|||
|
||||
<span class="stat services">
|
||||
<a href="https://facebook.com" class="service" target="_blank">
|
||||
<img src='{{imageUrl "buttons/service-icons/fb@2x.png"}}' />
|
||||
<img src='{{imageUrl "buttons/service-icons/fb@2x-white.png"}}' />
|
||||
</a>
|
||||
<a href="https://twitter.com" class="service" target="_blank">
|
||||
<img src='{{imageUrl "buttons/service-icons/twitter@2x.png"}}' />
|
||||
<img src='{{imageUrl "buttons/service-icons/twitter@2x-white.png"}}' />
|
||||
</a>
|
||||
<a href="https://tumblr.com" class="service" target="_blank">
|
||||
<img src='{{imageUrl "buttons/service-icons/tumblr@2x.png"}}' />
|
||||
<img src='{{imageUrl "buttons/service-icons/tumblr@2x-white.png"}}' />
|
||||
</a>
|
||||
</span>
|
||||
|
||||
{{#if isOwnProfile}}
|
||||
{{#if is_own_profile}}
|
||||
<span class="divider">•</span>
|
||||
<a href="/profile/edit" title="Edit Profile" rel="tooltip" style="margin-left:2px;">
|
||||
<i class="icon-cog"></i>
|
||||
<i class="icon-cog icon-white"></i>
|
||||
</a>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,60 +1,68 @@
|
|||
<div id="top-right-nav">
|
||||
{{#if showFollowButton}}
|
||||
<a href="#" onClick="alert('Not yet implemented!')" id="follow-button">
|
||||
<span class="label label-inverse">
|
||||
<i class="icon-plus icon-white"></i>
|
||||
<span>
|
||||
FOLLOW
|
||||
</span>
|
||||
</span>
|
||||
</a>
|
||||
{{/if}}
|
||||
{{#if is_own_profile}}
|
||||
<div id="wallpaper-upload"></div>
|
||||
{{/if}}
|
||||
|
||||
{{#if current_user.guid}}
|
||||
<a href="/" id="home-button">
|
||||
<span class="label label-inverse">
|
||||
<i class="icon-home icon-white"></i>
|
||||
<span>
|
||||
HOME
|
||||
<div class="container">
|
||||
<div id="top-right-nav">
|
||||
{{#if showFollowButton}}
|
||||
<a href="#" onClick="alert('Not yet implemented!')" id="follow-button">
|
||||
<span class="label label-inverse">
|
||||
<i class="icon-plus icon-white"></i>
|
||||
<span>
|
||||
FOLLOW
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
</a>
|
||||
{{else}}
|
||||
<a href="/" id="home-button">
|
||||
<span class="label label-inverse">
|
||||
<span>
|
||||
DIASPORA
|
||||
</span>
|
||||
</span>
|
||||
</a>
|
||||
{{/if}}
|
||||
</a>
|
||||
{{/if}}
|
||||
|
||||
{{#if isOwnProfile}}
|
||||
<a href="/users/sign_out" title="Log out" id="logout-button">
|
||||
<span class="label label-inverse">
|
||||
<i class="icon-off icon-white"></i>
|
||||
</span>
|
||||
</a>
|
||||
{{/if}}
|
||||
{{#if current_user.guid}}
|
||||
<a href="/" id="home-button">
|
||||
<span class="label label-inverse">
|
||||
<i class="icon-home icon-white"></i>
|
||||
<span>
|
||||
HOME
|
||||
</span>
|
||||
</span>
|
||||
</a>
|
||||
{{else}}
|
||||
<a href="/" id="home-button">
|
||||
<span class="label label-inverse">
|
||||
<span>
|
||||
DIASPORA
|
||||
</span>
|
||||
</span>
|
||||
</a>
|
||||
{{/if}}
|
||||
|
||||
{{#if is_own_profile}}
|
||||
<a href="/users/sign_out" title="Log out" id="logout-button">
|
||||
<span class="label label-inverse">
|
||||
<i class="icon-off icon-white"></i>
|
||||
</span>
|
||||
</a>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
<section id="profile-info"/>
|
||||
|
||||
<section id="profile-controls">
|
||||
{{#if is_own_profile}}
|
||||
<a href="#composer" id="composer-button" class="control small" rel="facebox">
|
||||
<img src='{{imageUrl "buttons/pub@2x.png"}}' title="New Post" rel="tooltip"/>
|
||||
</a>
|
||||
<a href="#" id="edit-mode-toggle" class="control small">
|
||||
<img src='{{imageUrl "buttons/edit@2x.png"}}' title="Edit Posts" rel="tooltip"/>
|
||||
</a>
|
||||
|
||||
<!-- only load up this iframe if the current user is on their own page.
|
||||
this should be ajax'ed in, regardless. -->
|
||||
<div id="composer" style="display:none;">
|
||||
<iframe src="/posts/new" height=500 width=700 style="border:none;"></iframe>
|
||||
</div>
|
||||
{{/if}}
|
||||
</section>
|
||||
|
||||
<section id="canvas"></section>
|
||||
|
||||
<div id="paginate"><span class="loader hidden"/></div>
|
||||
</div>
|
||||
|
||||
<section id="profile-info"/>
|
||||
|
||||
<div id="composer" style="display:none;">
|
||||
<iframe src="/posts/new" height=500 width=700 style="border:none;"></iframe>
|
||||
</div>
|
||||
|
||||
<section id="profile-controls">
|
||||
{{#if isOwnProfile}}
|
||||
<a href="#composer" id="composer-button" class="control small" rel="facebox">
|
||||
<img src='{{imageUrl "buttons/pub@2x.png"}}' title="New Post" rel="tooltip"/>
|
||||
</a>
|
||||
<a href="#" id="edit-mode-toggle" class="control small">
|
||||
<img src='{{imageUrl "buttons/edit@2x.png"}}' title="Edit Posts" rel="tooltip"/>
|
||||
</a>
|
||||
{{/if}}
|
||||
</section>
|
||||
|
||||
<section id="canvas"></section>
|
||||
|
||||
<div id="paginate"><span class="loader hidden"/></div>
|
||||
|
|
@ -1,8 +1,10 @@
|
|||
<!--*CSS MAGIC* CHECKBOX IS HIDDEN AND IS CHECKED BY CLICKING THE LABEL, CHANGE THIS AT YOUR OWN PERIL, RUN JASMINE AFTER-->
|
||||
<div class="magic-service-selector">
|
||||
{{#each current_user.services}}
|
||||
<input id="service_toggle_{{provider}}" type="checkbox" name="services" class="service" value="{{provider}}" />
|
||||
<label for="service_toggle_{{provider}}"><img class="legacy-provider-image" src="/assets/social_media_logos/{{provider}}-32x32.png" data-provider="{{provider}}" /></label>
|
||||
{{#each services}}
|
||||
<input id="service_toggle_{{this}}" type="checkbox" name="services" class="service" value="{{this}}"/>
|
||||
<label for="service_toggle_{{this}}">
|
||||
<img class="legacy-provider-image" src="/assets/social_media_logos/{{this}}-32x32.png" data-provider="{{this}}" data-url="/auth/{{this}}" title="Share on {{this}}" />
|
||||
</label>
|
||||
{{/each}}
|
||||
</div>
|
||||
|
||||
|
|
|
|||
13
app/assets/templates/wallpaper-form.jst.hbs
Normal file
13
app/assets/templates/wallpaper-form.jst.hbs
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<form accept-charset="UTF-8" action="/upload_wallpaper" class="new_photo" data-remote="true" enctype="multipart/form-data" method="post" style="position:absolute; left:10px; top: 10px; opacity:0.4;">
|
||||
<input name="authenticity_token" type="hidden"/>
|
||||
<div style="margin:0;padding:0;display:inline">
|
||||
<input name="utf8" type="hidden" value="✓"/>
|
||||
</div>
|
||||
|
||||
<div id='photo_upload_button'>
|
||||
<a href="#" class='label label-inverse'>
|
||||
<i class="icon-picture icon-white" style="margin-right:4px;"></i>CHANGE WALLPAPER
|
||||
</a>
|
||||
<input name="photo[user_file]" type="file"/>
|
||||
</div>
|
||||
</form>
|
||||
|
|
@ -106,10 +106,17 @@ class ApplicationController < ActionController::Base
|
|||
end
|
||||
|
||||
def after_sign_in_path_for(resource)
|
||||
stored_location_for(:user) || (current_user.getting_started? ? getting_started_path : root_path)
|
||||
stored_location_for(:user) || current_user_redirect_path
|
||||
end
|
||||
|
||||
def max_time
|
||||
params[:max_time] ? Time.at(params[:max_time].to_i) : Time.now + 1
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def current_user_redirect_path
|
||||
return person_path(current_user.person) if current_user.beta?
|
||||
current_user.getting_started? ? getting_started_path : root_path
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -119,7 +119,9 @@ class PeopleController < ApplicationController
|
|||
format.all do
|
||||
if params[:ex]
|
||||
@page = :experimental
|
||||
gon.stream = @stream.stream_posts.as_api_response(:backbone).as_json
|
||||
gon.person = PersonPresenter.new(@person, current_user)
|
||||
gon.stream = @stream.stream_posts.as_api_response(:backbone)
|
||||
|
||||
render :nothing => true, :layout => 'post'
|
||||
else
|
||||
respond_with @person, :locals => {:post_type => :all}
|
||||
|
|
|
|||
|
|
@ -19,25 +19,21 @@ class PostsController < ApplicationController
|
|||
:xml
|
||||
|
||||
def new
|
||||
@feature_flag = FeatureFlagger.new(current_user) #I should be a global before filter so @feature_flag is accessible
|
||||
@feature_flag = FeatureFlagger.new(current_user, current_user.person) #I should be a global before filter so @feature_flag is accessible
|
||||
redirect_to "/stream" and return unless @feature_flag.new_publisher?
|
||||
render :text => "", :layout => true
|
||||
end
|
||||
|
||||
def show
|
||||
return log_and_redirect_back unless @post
|
||||
# @commenting_disabled = can_not_comment_on_post?
|
||||
# mark corresponding notification as read
|
||||
if user_signed_in? && notification = Notification.where(:recipient_id => current_user.id, :target_id => @post.id).first
|
||||
notification.unread = false
|
||||
notification.save
|
||||
end
|
||||
|
||||
mark_corresponding_notification_read if user_signed_in?
|
||||
|
||||
respond_to do |format|
|
||||
format.html{ gon.post = postJson; render 'posts/show.html.haml' }
|
||||
format.html{ gon.post = post_json(@post); render 'posts/show.html.haml' }
|
||||
format.xml{ render :xml => @post.to_diaspora_xml }
|
||||
format.mobile{render 'posts/show.mobile.haml', :layout => "application"}
|
||||
format.json{ render :json => postJson }
|
||||
format.json{ render :json => post_json(@post) }
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -81,11 +77,21 @@ class PostsController < ApplicationController
|
|||
end
|
||||
|
||||
def next
|
||||
redirect_to post_path(post_base.newer(@post))
|
||||
next_post = visible_posts_from_author.newer(@post)
|
||||
|
||||
respond_to do |format|
|
||||
format.html{ redirect_to post_path(next_post) }
|
||||
format.json{ render :json => post_json(next_post) }
|
||||
end
|
||||
end
|
||||
|
||||
def previous
|
||||
redirect_to post_path(post_base.older(@post))
|
||||
previous_post = visible_posts_from_author.older(@post)
|
||||
|
||||
respond_to do |format|
|
||||
format.html{ redirect_to post_path(previous_post) }
|
||||
format.json{ render :json => post_json(previous_post) }
|
||||
end
|
||||
end
|
||||
|
||||
protected
|
||||
|
|
@ -101,12 +107,12 @@ class PostsController < ApplicationController
|
|||
@post = find_by_guid_or_id_with_current_user(params[:id])
|
||||
end
|
||||
|
||||
def post_base
|
||||
def visible_posts_from_author
|
||||
Post.visible_from_author(@post.author, current_user)
|
||||
end
|
||||
|
||||
def postJson
|
||||
PostPresenter.new(@post, current_user).to_json
|
||||
def post_json(post)
|
||||
PostPresenter.new(post, current_user).to_json
|
||||
end
|
||||
|
||||
def find_by_guid_or_id_with_current_user(id)
|
||||
|
|
@ -122,17 +128,10 @@ class PostsController < ApplicationController
|
|||
request.format = :html if request.format == 'application/html+xml'
|
||||
end
|
||||
|
||||
def can_not_comment_on_post?
|
||||
if !user_signed_in?
|
||||
true
|
||||
elsif @post.public && @post.author.local?
|
||||
false
|
||||
elsif current_user.contact_for(@post.author)
|
||||
false
|
||||
elsif current_user.owns?(@post)
|
||||
false
|
||||
else
|
||||
true
|
||||
def mark_corresponding_notification_read
|
||||
if notification = Notification.where(:recipient_id => current_user.id, :target_id => @post.id).first
|
||||
notification.unread = false
|
||||
notification.save
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -14,20 +14,7 @@ class ProfilesController < ApplicationController
|
|||
@person = Person.find_by_guid!(params[:id])
|
||||
|
||||
respond_to do |format|
|
||||
format.json {
|
||||
public_json = @person.as_api_response(:backbone)
|
||||
extra_json = {}
|
||||
|
||||
if(current_user && (current_user.person == @person || current_user.contacts.receiving.where(:person_id => @person.id).first))
|
||||
extra_json = {
|
||||
:location => @person.profile.location,
|
||||
:birthday => @person.profile.formatted_birthday,
|
||||
:bio => @person.profile.bio
|
||||
}
|
||||
end
|
||||
|
||||
render :json => public_json.merge(extra_json)
|
||||
}
|
||||
format.json { render :json => PersonPresenter.new(@person, current_user) }
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -77,6 +64,30 @@ class ProfilesController < ApplicationController
|
|||
end
|
||||
end
|
||||
|
||||
def upload_wallpaper_image
|
||||
unless params[:photo].present?
|
||||
respond_to do |format|
|
||||
format.json { render :json => {"success" => false} }
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
if remotipart_submitted?
|
||||
profile = current_user.person.profile
|
||||
|
||||
profile.wallpaper.store! params[:photo][:user_file]
|
||||
if profile.save
|
||||
respond_to do |format|
|
||||
format.json { render :json => {"success" => true, "data" => {"wallpaper" => profile.wallpaper.url}} }
|
||||
end
|
||||
else
|
||||
respond_to do |format|
|
||||
format.json { render :json => {"success" => false} }
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def munge_tag_string
|
||||
|
|
|
|||
|
|
@ -49,11 +49,7 @@ class ServicesController < ApplicationController
|
|||
end
|
||||
end
|
||||
|
||||
if current_user.getting_started
|
||||
redirect_to getting_started_path
|
||||
else
|
||||
redirect_to services_url
|
||||
end
|
||||
render :text => ("<script>window.close()</script>")
|
||||
end
|
||||
|
||||
def failure
|
||||
|
|
|
|||
|
|
@ -7,11 +7,15 @@ class SessionsController < Devise::SessionsController
|
|||
after_filter :enqueue_update, :only => :create
|
||||
|
||||
protected
|
||||
|
||||
def enqueue_update
|
||||
begin
|
||||
if current_user
|
||||
current_user.services.each do |s|
|
||||
Resque.enqueue(Jobs::UpdateServiceUsers, s.id) if s.respond_to? :save_friends
|
||||
end
|
||||
end
|
||||
rescue
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -30,7 +30,10 @@ class Notifier < ActionMailer::Base
|
|||
|
||||
|
||||
|
||||
mail(default_opts)
|
||||
mail(default_opts) do |format|
|
||||
format.text
|
||||
format.html
|
||||
end
|
||||
end
|
||||
|
||||
def invite(email, message, inviter, invitation_code, locale)
|
||||
|
|
@ -44,7 +47,10 @@ class Notifier < ActionMailer::Base
|
|||
:host => AppConfig[:pod_uri].host}
|
||||
|
||||
I18n.with_locale(locale) do
|
||||
mail(mail_opts)
|
||||
mail(mail_opts) do |format|
|
||||
format.text
|
||||
format.html
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -85,7 +91,10 @@ class Notifier < ActionMailer::Base
|
|||
@notification = NotificationMailers.const_get(type.to_s.camelize).new(*args)
|
||||
|
||||
with_recipient_locale do
|
||||
mail(@notification.headers)
|
||||
mail(@notification.headers) do |format|
|
||||
format.text
|
||||
format.html
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -309,6 +309,11 @@ class Person < ActiveRecord::Base
|
|||
end
|
||||
end
|
||||
|
||||
#gross method pulled out from controller, not exactly sure how it should be used.
|
||||
def shares_with(user)
|
||||
user.contacts.receiving.where(:person_id => self.id).first if user
|
||||
end
|
||||
|
||||
# @param person [Person]
|
||||
# @param url [String]
|
||||
def update_url(url)
|
||||
|
|
@ -339,6 +344,7 @@ class Person < ActiveRecord::Base
|
|||
end
|
||||
|
||||
private
|
||||
|
||||
def fix_profile
|
||||
Webfinger.new(self.diaspora_handle).fetch
|
||||
self.reload
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@
|
|||
class Profile < ActiveRecord::Base
|
||||
self.include_root_in_json = false
|
||||
|
||||
mount_uploader :wallpaper, WallpaperUploader
|
||||
|
||||
include Diaspora::Federated::Base
|
||||
include Diaspora::Taggable
|
||||
|
||||
|
|
|
|||
|
|
@ -61,6 +61,10 @@ class Reshare < Post
|
|||
Notifications::Reshared if root.author == user.person
|
||||
end
|
||||
|
||||
def nsfw
|
||||
root.nsfw
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def after_parse
|
||||
|
|
|
|||
34
app/presenters/person_presenter.rb
Normal file
34
app/presenters/person_presenter.rb
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
class PersonPresenter
|
||||
def initialize(person, current_user = nil)
|
||||
@person = person
|
||||
@current_user = current_user
|
||||
end
|
||||
|
||||
def as_json(options={})
|
||||
attrs = @person.as_api_response(:backbone).merge(
|
||||
{
|
||||
:wallpaper => @person.profile.wallpaper.url,
|
||||
:is_own_profile => is_own_profile
|
||||
})
|
||||
|
||||
if is_own_profile || person_is_following_current_user
|
||||
attrs.merge!({
|
||||
:location => @person.profile.location,
|
||||
:birthday => @person.profile.formatted_birthday,
|
||||
:bio => @person.profile.bio
|
||||
})
|
||||
end
|
||||
|
||||
attrs
|
||||
end
|
||||
|
||||
def is_own_profile
|
||||
@current_user.try(:person) == @person
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def person_is_following_current_user
|
||||
@person.shares_with(@current_user)
|
||||
end
|
||||
end
|
||||
|
|
@ -12,7 +12,8 @@ class UserPresenter
|
|||
:admin => admin,
|
||||
:aspects => aspects,
|
||||
:services => services,
|
||||
:following_count => self.user.contacts.receiving.count
|
||||
:following_count => self.user.contacts.receiving.count,
|
||||
:configured_services => self.configured_services
|
||||
}
|
||||
).to_json(options)
|
||||
end
|
||||
|
|
@ -21,6 +22,10 @@ class UserPresenter
|
|||
ServicePresenter.as_collection(user.services)
|
||||
end
|
||||
|
||||
def configured_services
|
||||
user.services.map{|service| service.provider }
|
||||
end
|
||||
|
||||
def aspects
|
||||
AspectPresenter.as_collection(user.aspects)
|
||||
end
|
||||
|
|
|
|||
30
app/uploaders/wallpaper_uploader.rb
Normal file
30
app/uploaders/wallpaper_uploader.rb
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
class WallpaperUploader < CarrierWave::Uploader::Base
|
||||
include CarrierWave::MiniMagick
|
||||
|
||||
def store_dir
|
||||
"uploads/images/wallpaper"
|
||||
end
|
||||
|
||||
def extension_white_list
|
||||
%w(jpg jpeg png tiff)
|
||||
end
|
||||
|
||||
# Filename is associated with the user's diaspora handle, ensuring uniqueness
|
||||
# and that only one copy is kept in the filesystem.
|
||||
def filename
|
||||
Digest::MD5.hexdigest(model.diaspora_handle) + File.extname(@filename) if @filename
|
||||
end
|
||||
|
||||
process :darken
|
||||
|
||||
def darken
|
||||
manipulate! do |img|
|
||||
# img.brightness_contrast "-40x-50"
|
||||
# thanks, heroku.
|
||||
img.modulate "40,40"
|
||||
|
||||
img = yield(img) if block_given?
|
||||
img
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -5,10 +5,18 @@
|
|||
%h3#aspect_stream_header.stream_title
|
||||
= stream.title
|
||||
|
||||
= render 'shared/publisher', :selected_aspects => stream.aspects, :aspect_ids => stream.aspect_ids, :for_all_aspects => stream.for_all_aspects?, :aspect => stream.aspect
|
||||
- if current_user.beta?
|
||||
= link_to "Make something", "#composer", :rel => "facebox", :class => "button primary", :style => "display: block; margin: 20px 10px; margin-bottom: 30px; padding: 10px; text-align:center; font-weight: bold;"
|
||||
|
||||
#composer{:style => "display:none;"}
|
||||
%iframe{:src => '/posts/new', :height => 500, :width => 700, :style => "border:none;"}
|
||||
|
||||
- else
|
||||
= render 'shared/publisher', :selected_aspects => stream.aspects, :aspect_ids => stream.aspect_ids, :for_all_aspects => stream.for_all_aspects?, :aspect => stream.aspect
|
||||
= render 'aspects/no_posts_message'
|
||||
|
||||
#gs-shim{:title => popover_with_close_html("3. #{t('.stay_updated')}"), 'data-content' => t('.stay_updated_explanation')}
|
||||
- unless current_user.beta?
|
||||
#gs-shim{:title => popover_with_close_html("3. #{t('.stay_updated')}"), 'data-content' => t('.stay_updated_explanation')}
|
||||
|
||||
#main_stream.stream
|
||||
|
||||
|
|
|
|||
|
|
@ -1,18 +0,0 @@
|
|||
<table style="padding: 20px 20px; background: rgb(255, 255, 255) none repeat scroll 0%; font-size: 16px; color: rgb(51, 51, 51); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="center" border="0" cellpadding="0" cellspacing="0" width="600">
|
||||
<tbody><tr>
|
||||
<td width='100px'></td>
|
||||
<td width="70px">
|
||||
<a href="<%= accept_invitation_url(@resource, :invitation_token => @resource.invitation_token)%>" target="_blank"><img style="border: 0pt none ; padding: 0pt 5px; display: block;" src="<%=invite.sender.person.profile.image_url(:thumb_medium) %>" height="75" ></a>
|
||||
</td>
|
||||
<td style="line-height: 20px; width: 360px;">
|
||||
<%= t('.has_invited_you', :name => invite.sender.name + " (#{invite.sender.diaspora_handle})") %> <br/>
|
||||
|
||||
<% unless invite.message.blank? %>
|
||||
<strong> "<%= invite.message %>"</strong>
|
||||
<% end %>
|
||||
|
||||
</td>
|
||||
<td width='100px'></td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
!!!
|
||||
%html
|
||||
%head
|
||||
%meta{"http-equiv"=>"Content-Type", :content=>"text/html; charset=utf-8"}/
|
||||
= render :partial => 'notifier/notifier_css'
|
||||
%body
|
||||
%header
|
||||
= image_tag('branding/white.png')
|
||||
#container
|
||||
%p
|
||||
= t('devise.mailer.welcome', :email => @resource.email)
|
||||
%p= t('.you_can_confirm')
|
||||
%p= link_to t('.confirm'), confirmation_url(@resource, :confirmation_token => @resource.confirmation_token), :class => "large_text"
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
<%= t('devise.mailer.welcome', :email => @resource.email) %>
|
||||
|
||||
<%= t('.you_can_confirm') %>
|
||||
|
||||
[<%= t('.confirm') %>][1]
|
||||
|
||||
[1]: <%= confirmation_url(@resource, :confirmation_token => @resource.confirmation_token) %>
|
||||
|
|
@ -1,174 +0,0 @@
|
|||
<%- self.extend NotifierHelper -%>
|
||||
<% @invites = @resource.invitations_to_me.includes(:sender =>{:person => :profile}).where(:admin => false).all %>
|
||||
<head>
|
||||
<title><%=invite_email_title %></title>
|
||||
</head>
|
||||
<p style="background-color: rgb(255, 255, 255); text-align: center; font-size: 11px;"><%= t('.displaying_correctly', :link => link_to(t('.view_in'), invite_email_url(:invitation_token => @resource.invitation_token), :style => "color: #3F8FBA; text-decoration: none;")).html_safe %> </p>
|
||||
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td style="padding: 30px 15px 0pt; background-color: rgb(221, 221, 221);">
|
||||
<table style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; font-size: 16px; color: rgb(51, 51, 51);" align="center" border="0" cellpadding="0" cellspacing="0" width="600">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="background-color: rgb(0, 0, 0);">
|
||||
<a style="display: block;" href="<%= accept_invitation_url(@resource, :invitation_token => @resource.invitation_token) %>" target="_blank">
|
||||
<img alt="Diaspora" src="http://dl.dropbox.com/u/15865/diaspora%20logo.png" style="border: 0pt none ; display: block;" height="134" width="600">
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
<td style="padding: 10px 0pt 0px 20px; background: rgb(255, 255, 255) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-size: 44px; font-weight: bold; color: rgb(0, 0, 0);">
|
||||
<%= t('.finally') %><br>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td style="padding: 0px 20px 0pt; background: rgb(255, 255, 255) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="600" height='389'>
|
||||
<a href="<%= accept_invitation_url(@resource, :invitation_token => @resource.invitation_token)%>" target="_blank"><img src="http://dl.dropbox.com/u/15865/diaspora_shots.jpg" style="border: 0pt none ; display: block;" width="560">
|
||||
</a></td></tr>
|
||||
|
||||
|
||||
<tr><td style="padding: 0pt 30px; background: rgb(255, 255, 255) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; line-height: 20px;">
|
||||
<%= t('.arrived', :strong_diaspora => content_tag(:strong, "DIASPORA*")).html_safe %>
|
||||
<br>
|
||||
<br>
|
||||
<%= link_to(t('.sign_up_now').html_safe, accept_invitation_url(@resource, :invitation_token => @resource.invitation_token), :style => "color: #3F8FBA; text-decoration: underline; font-weight: bold; font-size: 20px;", :target => "_blank").html_safe %>
|
||||
</td></tr>
|
||||
|
||||
|
||||
<% unless @invites.blank? %>
|
||||
<% @invites_with_message, @invites_without_message = @invites.partition{|x| !x.message.blank?} %>
|
||||
<% unless @invites_with_message.empty? %>
|
||||
<tr>
|
||||
<td style="padding: 10px 0pt 0px 20px; background: rgb(255, 255, 255) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-size: 24px; font-weight: bold; color: rgb(0, 0, 0);">
|
||||
<br>
|
||||
<%= t('.friends_saying') %><br>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<% @invites_with_message.each do |i| %>
|
||||
<tr><td>
|
||||
<%= render(:partial => 'devise/mailer/inviter', :locals => {:invite => i}) %>
|
||||
</td></tr>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
<% unless @invites_without_message.empty? %>
|
||||
|
||||
<tr>
|
||||
<td style="padding: 10px 0pt 0px 20px; background: rgb(255, 255, 255) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-size: 24px; font-weight: bold; color: rgb(0, 0, 0);">
|
||||
<br>
|
||||
<%= t('.more_people') %><br>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<% @invites_without_message.each do |i| %>
|
||||
<tr><td>
|
||||
<%= render(:partial => 'devise/mailer/inviter', :locals => {:invite => i}) %>
|
||||
</td></tr>
|
||||
<% end %>
|
||||
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<tr><td style="padding: 20px 20px 0px; background: rgb(255, 255, 255) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-size: 44px; font-weight: bold; color: rgb(0, 0, 0);">
|
||||
1. <%= t('.get_connected') %></td></tr>
|
||||
<tr><td>
|
||||
<table style="padding: 0pt 20px; background: rgb(255, 255, 255) none repeat scroll 0%; font-size: 16px; color: rgb(51, 51, 51); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="center" border="0" cellpadding="0" cellspacing="0" width="600">
|
||||
<tbody><tr>
|
||||
<td width="200">
|
||||
<a href="<%=accept_invitation_url(@resource, :invitation_token => @resource.invitation_token) %>" target="_blank"><img style="border: 0pt none ; padding: 0pt 10px 0px 5px; display: block;" src="https://joindiaspora.s3.amazonaws.com/uploads/images/scaled_full_c7506ec0b3ae6694c64d.gif" height="156" width="200"></a>
|
||||
</td>
|
||||
<td style="line-height: 20px; width: 360px;">
|
||||
<%= t('.get_connected_paragraph', :strong_diaspora => content_tag(:strong, "DIASPORA*")).html_safe %>
|
||||
<br>
|
||||
<!-- <a style="color: #3F8FBA; text-decoration: underline; font-weight: bold; font-size: 20px;" href="https://joindiaspora.com/channels" target="_blank">Tune in to your favorite Channels</a>-->
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</td></tr>
|
||||
|
||||
<tr><td style="padding: 20px 20px 0px; background: rgb(255, 255, 255) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-size: 44px; font-weight: bold; color: rgb(0, 0, 0);">
|
||||
2. <%= t('.be_yourself') %></td></tr>
|
||||
<tr><td>
|
||||
<table style="padding: 0pt 20px; background: rgb(255, 255, 255) none repeat scroll 0%; font-size: 16px; color: rgb(51, 51, 51); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="center" border="0" cellpadding="0" cellspacing="0" width="600">
|
||||
<tbody><tr>
|
||||
<td style="line-height: 20px; width: 360px;">
|
||||
|
||||
<%= t('.be_yourself_paragraph', :strong_diaspora => content_tag(:strong, "DIASPORA*")).html_safe %>
|
||||
|
||||
<br>
|
||||
<!-- <a style="color: #3F8FBA; text-decoration: underline; font-weight: bold; font-size: 20px;" href="#" target="_blank">Watch all the bumpers</a>-->
|
||||
</td>
|
||||
|
||||
<td width="200">
|
||||
<a href="<%= accept_invitation_url(@resource, :invitation_token => @resource.invitation_token)%>" target="_blank"><img style="border: 0pt none ; padding: 0pt 5px 0px 10px; display: block;" src="http://dl.dropbox.com/u/15865/apolonisaphrodisia.png" height="150" width="170"></a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</td></tr>
|
||||
|
||||
|
||||
<tr><td style="padding: 20px 20px 0px; background: rgb(255, 255, 255) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-size: 44px; font-weight: bold; color: rgb(0, 0, 0);">
|
||||
3. <%= t('.have_fun') %></td></tr>
|
||||
<tr><td>
|
||||
<table style="padding: 0pt 20px; background: rgb(255, 255, 255) none repeat scroll 0%; font-size: 16px; color: rgb(51, 51, 51); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="center" border="0" cellpadding="0" cellspacing="0" width="600">
|
||||
<tbody><tr>
|
||||
<td width="200">
|
||||
<a href="<%= accept_invitation_url(@resource, :invitation_token => @resource.invitation_token)%>" target="_blank"><img style="border: 0pt none ; padding: 0pt 5px; display: block;" src="http://joindiaspora.com/images/cubbies_screenshot2.png" height="151" width="200"></a>
|
||||
</td>
|
||||
<td style="line-height: 20px; width: 360px;">
|
||||
|
||||
<%= t('.have_fun_paragraph', :strong_diaspora => content_tag(:strong, "DIASPORA*"), :link => link_to(t('.cubbies'), "https://cubbi.es", :style => "color: #3F8FBA; text-decoration: underline; font-weight: bold; font-size: 20px;", :target => "_blank")).html_safe %>
|
||||
<!-- <a style="color: #3F8FBA; text-decoration: underline; font-weight: bold; font-size: 20px;" href="#" target="_blank">Watch all the bumpers</a>-->
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</td></tr>
|
||||
|
||||
<tr><td>
|
||||
<table style="padding: 0pt 20px; background: rgb(255, 255, 255) none repeat scroll 0%; font-size: 16px; color: rgb(51, 51, 51); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="center" border="0" cellpadding="0" cellspacing="0" width="600">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="padding: 40px 20px 20px; background: rgb(255, 255, 255) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">
|
||||
<%= link_to(t('.sign_up_now').html_safe, accept_invitation_url(@resource, :invitation_token => @resource.invitation_token), :style => "color: #3F8FBA; text-decoration: underline; font-weight: bold; font-size: 20px;", :target => "_blank").html_safe %>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td></tr>
|
||||
|
||||
<tr><td>
|
||||
<table style="padding: 0pt 20px; background: rgb(255, 255, 255) none repeat scroll 0%; font-size: 16px; color: rgb(51, 51, 51); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="center" border="0" cellpadding="0" cellspacing="0" width="600">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="padding: 20px 20px 0px; background: rgb(255, 255, 255) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">
|
||||
<%= t('.made_by_people', :strong_diaspora => content_tag(:strong, "DIASPORA*"), :jointeam => link_to(t('.join_team'), "https://github.com/diaspora/diaspora/wiki/Become-a-Contributor", :style =>"color: #3F8FBA; text-decoration: underline; font-weight: bold; font-size: 18px;", :target => "_blank"), :helpfund => link_to(t('.help_fund'), "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QG4L6VYD8YGPU", :style =>"color: #3F8FBA; text-decoration: underline; font-weight: bold; font-size: 18px;", :target => "_blank")).html_safe %>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td></tr>
|
||||
|
||||
<tr><td style="padding: 35px 20px 20px; background: rgb(255, 255, 255) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">
|
||||
<%= t('.love') %><br>
|
||||
<%= t('.team_diaspora') %><br>
|
||||
</td></tr>
|
||||
<tr><td style="padding: 35px 40px; font-size: 11px; color: rgb(102, 102, 102); line-height: 16px;">
|
||||
<% if AppConfig[:pod_uri].host.match(/joindiaspora.com/) %>
|
||||
<%= t('.unsubscribe', :link => link_to(t('.here'), "http://joindiaspora.us1.list-manage.com/unsubscribe?u=d759919b94f9cdcf39d204f3f&id=7b5ceb2f8b", :style => "color: #3F8FBA; text-decoration: none;")).html_safe %>
|
||||
<% end %>
|
||||
<%= t('.email_us', :email => link_to(t('.email_address'), "mailto:questions@joindiaspora.com", :style => "color: #3F8FBA; text-decoration: none;")).html_safe %>
|
||||
</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
!!!
|
||||
%html
|
||||
%head
|
||||
%meta{"http-equiv"=>"Content-Type", :content=>"text/html; charset=utf-8"}/
|
||||
= render :partial => 'notifier/notifier_css'
|
||||
%body
|
||||
%header
|
||||
= image_tag('branding/white.png')
|
||||
#container
|
||||
%p
|
||||
= t('devise.mailer.hello', :email => @resource.email)
|
||||
%p= t('.someone_requested')
|
||||
%p= link_to t('.change'), edit_password_url(@resource, :reset_password_token => @resource.reset_password_token), :class => "large_text"
|
||||
%p= t('.wont_change')
|
||||
%p.small= t('.ignore')
|
||||
11
app/views/devise/mailer/reset_password_instructions.markerb
Normal file
11
app/views/devise/mailer/reset_password_instructions.markerb
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<%= t('devise.mailer.hello', :email => @resource.email) %>
|
||||
|
||||
<%= t('.someone_requested') %>
|
||||
|
||||
[<%= t('.change') %>][1]
|
||||
|
||||
[1]: <%= edit_password_url(@resource, :reset_password_token => @resource.reset_password_token) %>
|
||||
|
||||
<%= t('.wont_change') %>
|
||||
|
||||
<%= t('.ignore') %>
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
!!!
|
||||
%html
|
||||
%head
|
||||
%meta{"http-equiv"=>"Content-Type", :content=>"text/html; charset=utf-8"}/
|
||||
= render :partial => 'notifier/notifier_css'
|
||||
%body
|
||||
%header
|
||||
= image_tag('branding/white.png')
|
||||
#container
|
||||
%p
|
||||
= t('devise.mailer.hello', :email => @resource.email)
|
||||
%p= t('.account_locked')
|
||||
%p= t('.click_to_unlock')
|
||||
%p= link_to t('.unlock'), unlock_url(@resource, :unlock_token => @resource.unlock_token), :class => "large_text"
|
||||
9
app/views/devise/mailer/unlock_instructions.markerb
Normal file
9
app/views/devise/mailer/unlock_instructions.markerb
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<%= t('devise.mailer.hello', :email => @resource.email) %>
|
||||
|
||||
<%= t('.account_locked') %>
|
||||
|
||||
<%= t('.click_to_unlock') %>
|
||||
|
||||
[<%= t('.unlock') %>][1]
|
||||
|
||||
[1]: <%= unlock_url(@resource, :unlock_token => @resource.unlock_token) %>
|
||||
|
|
@ -6,7 +6,7 @@
|
|||
- content_for :head do
|
||||
= javascript_include_tag :home
|
||||
|
||||
- if current_user.getting_started?
|
||||
- if current_user.getting_started? && !current_user.beta?
|
||||
#welcome-to-diaspora
|
||||
.container{:style => "position: relative;"}
|
||||
.right
|
||||
|
|
|
|||
|
|
@ -1,4 +0,0 @@
|
|||
%p
|
||||
= comment_message(@notification.comment, :process_newlines => true)
|
||||
%p
|
||||
= link_to t('notifier.comment_on_post.reply', :name => @notification.comment.post.author.first_name), post_url(@notification.comment.post)
|
||||
5
app/views/notifier/also_commented.markerb
Normal file
5
app/views/notifier/also_commented.markerb
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<%= comment_message(@notification.comment, :process_newlines => true) %>
|
||||
|
||||
[<%= t('notifier.comment_on_post.reply', :name => @notification.comment.post.author.first_name) %>][1]
|
||||
|
||||
[1]: <%= post_url(@notification.comment.post) %>
|
||||
|
|
@ -1 +0,0 @@
|
|||
!= comment_message(@notification.comment)
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
%p
|
||||
= comment_message(@notification.comment, :process_newlines => true)
|
||||
%p
|
||||
= link_to t('notifier.comment_on_post.reply', :name => @notification.comment.post.author.name), post_url(@notification.comment.post)
|
||||
5
app/views/notifier/comment_on_post.markerb
Normal file
5
app/views/notifier/comment_on_post.markerb
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<%= comment_message(@notification.comment, :process_newlines => true) %>
|
||||
|
||||
[<%= t('notifier.comment_on_post.reply', :name => @notification.comment.post.author.name) %>][1]
|
||||
|
||||
[1]: <%= post_url(@notification.comment.post) %>
|
||||
|
|
@ -1 +0,0 @@
|
|||
!= comment_message(@notification.comment)
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
%p
|
||||
= t('notifier.hello', :name => @notification.recipient.profile.first_name)
|
||||
%p
|
||||
!= t('notifier.confirm_email.click_link', :unconfirmed_email => @notification.recipient.unconfirmed_email)
|
||||
%br
|
||||
= link_to confirm_email_url(:token => @notification.recipient.confirm_email_token),
|
||||
confirm_email_url(:token => @notification.recipient.confirm_email_token)
|
||||
5
app/views/notifier/confirm_email.markerb
Normal file
5
app/views/notifier/confirm_email.markerb
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<%= t('notifier.hello', :name => @notification.recipient.profile.first_name) %>
|
||||
|
||||
<%= t('notifier.confirm_email.click_link', :unconfirmed_email => @notification.recipient.unconfirmed_email) %>
|
||||
|
||||
<<%= confirm_email_url(:token => @notification.recipient.confirm_email_token) %>>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
!= t('notifier.hello', :name => @notification.recipient.profile.first_name)
|
||||
|
||||
!= t('notifier.confirm_email.click_link', :unconfirmed_email => @notification.recipient.unconfirmed_email)
|
||||
!= confirm_email_url(:token => @notification.recipient.confirm_email_token)
|
||||
|
|
@ -1,134 +0,0 @@
|
|||
<%- self.extend NotifierHelper -%>
|
||||
<head>
|
||||
<title><%=invite_email_title %></title>
|
||||
</head>
|
||||
<p style="background-color: rgb(255, 255, 255); text-align: center; font-size: 11px;"><%= t('devise.mailer.invitation_instructions.displaying_correctly', :link => link_to(t('devise.mailer.invitation_instructions.view_in'), invite_email_url(:invitation_code => @invitation_code), :style => "color: #3F8FBA; text-decoration: none;")).html_safe %> </p>
|
||||
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td style="padding: 30px 15px 0pt; background-color: rgb(221, 221, 221);">
|
||||
<table style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; font-size: 16px; color: rgb(51, 51, 51);" align="center" border="0" cellpadding="0" cellspacing="0" width="600">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="background-color: rgb(0, 0, 0);">
|
||||
<a style="display: block;" href="<%= invite_code_url(@invitation_code) %>" target="_blank">
|
||||
<img alt="Diaspora" src="http://dl.dropbox.com/u/15865/diaspora%20logo.png" style="border: 0pt none ; display: block;" height="134" width="600">
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
<td style="padding: 10px 0pt 0px 20px; background: rgb(255, 255, 255) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-size: 44px; font-weight: bold; color: rgb(0, 0, 0);">
|
||||
<%= t('devise.mailer.invitation_instructions.finally') %><br>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td style="padding: 0px 20px 0pt; background: rgb(255, 255, 255) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="600" height='389'>
|
||||
<a href="<%= invite_code_url(@invitation_code)%>" target="_blank"><img src="http://dl.dropbox.com/u/15865/diaspora_shots.jpg" style="border: 0pt none ; display: block;" width="560">
|
||||
</a></td></tr>
|
||||
|
||||
|
||||
<tr><td style="padding: 0pt 30px; background: rgb(255, 255, 255) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; line-height: 20px;">
|
||||
<%= t('devise.mailer.invitation_instructions.arrived', :strong_diaspora => content_tag(:strong, "DIASPORA*")).html_safe %>
|
||||
<br>
|
||||
<br>
|
||||
<%= link_to(t('devise.mailer.invitation_instructions.sign_up_now').html_safe, invite_code_url(@invitation_code), :style => "color: #3F8FBA; text-decoration: underline; font-weight: bold; font-size: 20px;", :target => "_blank").html_safe %>
|
||||
</td></tr>
|
||||
|
||||
|
||||
<tr><td style="padding: 20px 20px 0px; background: rgb(255, 255, 255) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-size: 44px; font-weight: bold; color: rgb(0, 0, 0);">
|
||||
1. <%= t('devise.mailer.invitation_instructions.get_connected') %></td></tr>
|
||||
<tr><td>
|
||||
<table style="padding: 0pt 20px; background: rgb(255, 255, 255) none repeat scroll 0%; font-size: 16px; color: rgb(51, 51, 51); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="center" border="0" cellpadding="0" cellspacing="0" width="600">
|
||||
<tbody><tr>
|
||||
<td width="200">
|
||||
<a href="<%=invite_code_url(@invitation_code) %>" target="_blank"><img style="border: 0pt none ; padding: 0pt 10px 0px 5px; display: block;" src="https://joindiaspora.s3.amazonaws.com/uploads/images/scaled_full_c7506ec0b3ae6694c64d.gif" height="156" width="200"></a>
|
||||
</td>
|
||||
<td style="line-height: 20px; width: 360px;">
|
||||
<%= t('devise.mailer.invitation_instructions.get_connected_paragraph', :strong_diaspora => content_tag(:strong, "DIASPORA*")).html_safe %>
|
||||
<br>
|
||||
<!-- <a style="color: #3F8FBA; text-decoration: underline; font-weight: bold; font-size: 20px;" href="https://joindiaspora.com/channels" target="_blank">Tune in to your favorite Channels</a>-->
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</td></tr>
|
||||
|
||||
<tr><td style="padding: 20px 20px 0px; background: rgb(255, 255, 255) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-size: 44px; font-weight: bold; color: rgb(0, 0, 0);">
|
||||
2. <%= t('devise.mailer.invitation_instructions.be_yourself') %></td></tr>
|
||||
<tr><td>
|
||||
<table style="padding: 0pt 20px; background: rgb(255, 255, 255) none repeat scroll 0%; font-size: 16px; color: rgb(51, 51, 51); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="center" border="0" cellpadding="0" cellspacing="0" width="600">
|
||||
<tbody><tr>
|
||||
<td style="line-height: 20px; width: 360px;">
|
||||
|
||||
<%= t('devise.mailer.invitation_instructions.be_yourself_paragraph', :strong_diaspora => content_tag(:strong, "DIASPORA*")).html_safe %>
|
||||
|
||||
<br>
|
||||
<!-- <a style="color: #3F8FBA; text-decoration: underline; font-weight: bold; font-size: 20px;" href="#" target="_blank">Watch all the bumpers</a>-->
|
||||
</td>
|
||||
|
||||
<td width="200">
|
||||
<a href="<%= invite_code_url(@invitation_code)%>" target="_blank"><img style="border: 0pt none ; padding: 0pt 5px 0px 10px; display: block;" src="http://dl.dropbox.com/u/15865/apolonisaphrodisia.png" height="150" width="170"></a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</td></tr>
|
||||
|
||||
|
||||
<tr><td style="padding: 20px 20px 0px; background: rgb(255, 255, 255) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-size: 44px; font-weight: bold; color: rgb(0, 0, 0);">
|
||||
3. <%= t('devise.mailer.invitation_instructions.have_fun') %></td></tr>
|
||||
<tr><td>
|
||||
<table style="padding: 0pt 20px; background: rgb(255, 255, 255) none repeat scroll 0%; font-size: 16px; color: rgb(51, 51, 51); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="center" border="0" cellpadding="0" cellspacing="0" width="600">
|
||||
<tbody><tr>
|
||||
<td width="200">
|
||||
<a href="<%= invite_code_url(@invitation_code)%>" target="_blank"><img style="border: 0pt none ; padding: 0pt 5px; display: block;" src="http://joindiaspora.com/images/cubbies_screenshot2.png" height="151" width="200"></a>
|
||||
</td>
|
||||
<td style="line-height: 20px; width: 360px;">
|
||||
|
||||
<%= t('devise.mailer.invitation_instructions.have_fun_paragraph', :strong_diaspora => content_tag(:strong, "DIASPORA*"), :link => link_to(t('devise.mailer.invitation_instructions.cubbies'), "https://cubbi.es", :style => "color: #3F8FBA; text-decoration: underline; font-weight: bold; font-size: 20px;", :target => "_blank")).html_safe %>
|
||||
<!-- <a style="color: #3F8FBA; text-decoration: underline; font-weight: bold; font-size: 20px;" href="#" target="_blank">Watch all the bumpers</a>-->
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</td></tr>
|
||||
|
||||
<tr><td>
|
||||
<table style="padding: 0pt 20px; background: rgb(255, 255, 255) none repeat scroll 0%; font-size: 16px; color: rgb(51, 51, 51); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="center" border="0" cellpadding="0" cellspacing="0" width="600">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="padding: 40px 20px 20px; background: rgb(255, 255, 255) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">
|
||||
<%= link_to(t('devise.mailer.invitation_instructions.sign_up_now').html_safe, invite_code_url(@invitation_code), :style => "color: #3F8FBA; text-decoration: underline; font-weight: bold; font-size: 20px;", :target => "_blank").html_safe %>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td></tr>
|
||||
|
||||
<tr><td>
|
||||
<table style="padding: 0pt 20px; background: rgb(255, 255, 255) none repeat scroll 0%; font-size: 16px; color: rgb(51, 51, 51); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="center" border="0" cellpadding="0" cellspacing="0" width="600">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="padding: 20px 20px 0px; background: rgb(255, 255, 255) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">
|
||||
<%= t('devise.mailer.invitation_instructions.made_by_people', :strong_diaspora => content_tag(:strong, "DIASPORA*"), :jointeam => link_to(t('devise.mailer.invitation_instructions.join_team'), "https://github.com/diaspora/diaspora/wiki/Become-a-Contributor", :style =>"color: #3F8FBA; text-decoration: underline; font-weight: bold; font-size: 18px;", :target => "_blank"), :helpfund => link_to(t('devise.mailer.invitation_instructions.help_fund'), "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QG4L6VYD8YGPU", :style =>"color: #3F8FBA; text-decoration: underline; font-weight: bold; font-size: 18px;", :target => "_blank")).html_safe %>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td></tr>
|
||||
|
||||
<tr><td style="padding: 35px 20px 20px; background: rgb(255, 255, 255) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">
|
||||
<%= t('devise.mailer.invitation_instructions.love') %><br>
|
||||
<%= t('devise.mailer.invitation_instructions.team_diaspora') %><br>
|
||||
</td></tr>
|
||||
<tr><td style="padding: 35px 40px; font-size: 11px; color: rgb(102, 102, 102); line-height: 16px;">
|
||||
<% if AppConfig[:pod_uri].host.match(/joindiaspora.com/) %>
|
||||
<%= t('devise.mailer.invitation_instructions.unsubscribe', :link => link_to(t('devise.mailer.invitation_instructions.here'), "http://joindiaspora.us1.list-manage.com/unsubscribe?u=d759919b94f9cdcf39d204f3f&id=7b5ceb2f8b", :style => "color: #3F8FBA; text-decoration: none;")).html_safe %>
|
||||
<% end %>
|
||||
<%= t('devise.mailer.invitation_instructions.email_us', :email => link_to(t('devise.mailer.invitation_instructions.email_address'), "mailto:questions@joindiaspora.com", :style => "color: #3F8FBA; text-decoration: none;")).html_safe %>
|
||||
</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
1
app/views/notifier/invite.markerb
Normal file
1
app/views/notifier/invite.markerb
Normal file
|
|
@ -0,0 +1 @@
|
|||
<%= t('.message', :invite_url => invite_code_url(@invitation_code)) %>
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
%p
|
||||
= "#{t('.liked', :name => "#{@notification.sender.name}")}:"
|
||||
|
||||
%p{:style => "font-style:italic;color:#666"}
|
||||
= post_message(@notification.like.target, :process_newlines => true)
|
||||
|
||||
%p
|
||||
= link_to t('.view_post'), post_url(@notification.like.target)
|
||||
7
app/views/notifier/liked.markerb
Normal file
7
app/views/notifier/liked.markerb
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<%= "#{t('.liked', :name => "#{@notification.sender.name}")}:" %>
|
||||
|
||||
<%= post_message(@notification.like.target, :process_newlines => true) %>
|
||||
|
||||
[<%= t('.view_post') %>][1]
|
||||
|
||||
[1]: <%= post_url(@notification.like.target) %>
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
!= "#{t('notifier.liked.liked', :name => "#{@notification.sender.name}")}:"
|
||||
!=post_message(@notification.like.target)
|
||||
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
%p
|
||||
= post_message(@notification.post, :process_newlines => true, :length => 600)
|
||||
%p
|
||||
= link_to t('notifier.comment_on_post.reply', :name => @notification.post.author.name), post_url(@notification.post)
|
||||
5
app/views/notifier/mentioned.markerb
Normal file
5
app/views/notifier/mentioned.markerb
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<%= post_message(@notification.post, :process_newlines => true, :length => 600) %>
|
||||
|
||||
[<%= t('notifier.comment_on_post.reply', :name => @notification.post.author.name) %>][1]
|
||||
|
||||
[1]: <%= post_url(@notification.post) %>
|
||||
|
|
@ -1 +0,0 @@
|
|||
!= post_message(@notification.post, :process_newlines => true, :length => 600)
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
%p
|
||||
= post_message(@notification.message, :process_newlines => true, :length => 2000)
|
||||
%p
|
||||
= link_to t('.reply_to_or_view'), conversations_url(:conversation_id => @notification.conversation)
|
||||
5
app/views/notifier/private_message.markerb
Normal file
5
app/views/notifier/private_message.markerb
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<%= post_message(@notification.message, :process_newlines => true, :length => 2000) %>
|
||||
|
||||
[<%= t('.reply_to_or_view') %>][1]
|
||||
|
||||
[1]: <%= conversations_url(:conversation_id => @notification.conversation) %>
|
||||
|
|
@ -1 +0,0 @@
|
|||
!= @notification.message.text
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
%p
|
||||
= "#{t('.reshared', :name => "#{@notification.sender.name}")}:"
|
||||
|
||||
%p{:style => "font-style:italic;color:#666"}
|
||||
= post_message(@notification.reshare.root, :process_newlines => true)
|
||||
|
||||
%p
|
||||
= link_to t('.view_post'), post_url(@notification.reshare)
|
||||
7
app/views/notifier/reshared.markerb
Normal file
7
app/views/notifier/reshared.markerb
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<%= "#{t('.reshared', :name => "#{@notification.sender.name}")}:" %>
|
||||
|
||||
<%= post_message(@notification.reshare.root, :process_newlines => true) %>
|
||||
|
||||
[<%= t('.view_post') %>][1]
|
||||
|
||||
[1]: <%= post_url(@notification.reshare) %>
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
!= "#{t('notifier.reshared.reshared', :name => "#{@notification.sender.name}")}:"
|
||||
!=post_message(@notification.reshare.root)
|
||||
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
%p
|
||||
= t('notifier.hello', :name => @receiver.username)
|
||||
%p
|
||||
= @string
|
||||
|
||||
%br
|
||||
= t('notifier.thanks')
|
||||
= t('notifier.single_admin.admin')
|
||||
7
app/views/notifier/single_admin.markerb
Normal file
7
app/views/notifier/single_admin.markerb
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<%= t('notifier.hello', :name => @receiver.username) %>
|
||||
|
||||
<%= @string %>
|
||||
|
||||
<%= t('notifier.thanks') %>
|
||||
|
||||
<%= t('notifier.single_admin.admin') %>
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
!= t('notifier.hello', :name => @receiver.username)
|
||||
|
||||
!= @string
|
||||
|
||||
!= t('notifier.thanks')
|
||||
!= t('notifier.single_admin.admin')
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
%p
|
||||
= @notification.sender.name
|
||||
= t('.sharing')
|
||||
%p
|
||||
= link_to t('.view_profile', :name => @notification.sender.first_name), local_or_remote_person_path(@notification.sender, :absolute => true)
|
||||
5
app/views/notifier/started_sharing.markerb
Normal file
5
app/views/notifier/started_sharing.markerb
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<%= @notification.sender.name %> <%= t('.sharing') %>
|
||||
|
||||
[<%= t('.view_profile', :name => @notification.sender.first_name) %>][1]
|
||||
|
||||
[1]: <%= local_or_remote_person_path(@notification.sender, :absolute => true) %>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
!= "#{@notification.sender.name}"
|
||||
!= t('notifier.started_sharing.sharing')
|
||||
!= t('.view_profile', :name => @notification.sender.first_name)
|
||||
!= local_or_remote_person_path(@notification.sender, :absolute => true)
|
||||
|
|
@ -16,4 +16,4 @@
|
|||
|
||||
- AppConfig.configured_services.each do |service|
|
||||
- unless @services.any?{|x| x.provider == service}
|
||||
%h4= link_to t("services.index.connect_to_#{service}"), "/auth/#{service}"
|
||||
%h4= link_to t("services.index.connect_to_#{service}"), "#", :onclick => "window.open('/auth/#{service}', 'popup', 'height=400,width=500')"
|
||||
|
|
|
|||
|
|
@ -251,10 +251,10 @@ test:
|
|||
|
||||
integration1:
|
||||
<<: *defaults
|
||||
pod_url: "http://localhost:45789/"
|
||||
pod_url: "http://localhost:3001/"
|
||||
serve_static_assets: true
|
||||
|
||||
integration2:
|
||||
<<: *defaults
|
||||
pod_url: "http://localhost:34658/"
|
||||
pod_url: "http://localhost:3002/"
|
||||
serve_static_assets: true
|
||||
|
|
@ -15,7 +15,6 @@ Diaspora::Application.configure do
|
|||
|
||||
# Show full error reports and disable caching
|
||||
config.consider_all_requests_local = true
|
||||
config.action_view.debug_rjs = true
|
||||
config.action_controller.perform_caching = false
|
||||
|
||||
# Don't care if the mailer can't send
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ Rails.application.config.middleware.use OmniAuth::Builder do
|
|||
provider :tumblr, SERVICES['tumblr']['consumer_key'], SERVICES['tumblr']['consumer_secret']
|
||||
end
|
||||
if SERVICES['facebook'] && SERVICES['facebook']['app_id'] && SERVICES['facebook']['app_secret']
|
||||
provider :facebook, SERVICES['facebook']['app_id'], SERVICES['facebook']['app_secret'], { :scope => "publish_stream,email,offline_access",
|
||||
provider :facebook, SERVICES['facebook']['app_id'], SERVICES['facebook']['app_secret'], { :display => "popup", :scope => "publish_stream,email,offline_access",
|
||||
:client_options => {:ssl => {:ca_file => EnviromentConfiguration.ca_cert_file_location}}}
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -6,10 +6,10 @@ if !AppConfig.single_process_mode?
|
|||
if redis_to_go = ENV["REDISTOGO_URL"]
|
||||
uri = URI.parse(redis_to_go)
|
||||
Resque.redis = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)
|
||||
elsif AppConfig[:redis_url]
|
||||
Resque.redis = Redis.new(:host => AppConfig[:redis_url], :port => 6379)
|
||||
elsif ENV['RAILS_ENV']== 'integration2'
|
||||
Resque.redis = Redis.new(:host => 'localhost', :port => 6380)
|
||||
elsif AppConfig[:redis_url]
|
||||
Resque.redis = Redis.new(:host => AppConfig[:redis_url], :port => 6379)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,14 @@
|
|||
|
||||
|
||||
fa:
|
||||
devise:
|
||||
failure:
|
||||
invalid: "نام کاربری و یا رمز عبور اشتباه است."
|
||||
invalid_token: "نشانه تأیید هویت اشتباه است."
|
||||
locked: "حساب شما قفل شده است."
|
||||
timeout: "جلسه شما منقضی شده است، برای ادامه لطفا دوباره وارد شوید ."
|
||||
unauthenticated: "قبل از ادامه, شما باید به سیستم وارد شوید یا ثبت نام کنید."
|
||||
unconfirmed: "قبل از ادامه، شما باید حساب کاربری خود را تأیید کنید."
|
||||
errors:
|
||||
messages:
|
||||
already_confirmed: "قبلا تایید شد"
|
||||
|
|
|
|||
|
|
@ -32,13 +32,15 @@ nn:
|
|||
invitation_instructions:
|
||||
accept: "Godta invitasjonen"
|
||||
be_yourself: "Ver deg sjølv"
|
||||
be_yourself_paragraph: "Internettet har laga nye, unike vegar for korleis me kan uttrykka oss. %{strong_diaspora} lar deg vere deg sjølv og dele på den måten du ynskjer, både med eller utan det ekte namnet ditt."
|
||||
be_yourself_paragraph: "Verdsveven har laga nye, unike vegar for korleis me kan uttrykka oss. %{strong_diaspora} lar deg vere deg sjølv og dele på den måten du ynskjer, både med eller utan det ekte namnet ditt."
|
||||
cubbies: "Cubbi.es"
|
||||
displaying_correctly: "Email not displaying correctly? %{link} in your browser"
|
||||
email_address: "questions@joindiaspora.com"
|
||||
email_us: "For å få vite meir eller for å få hjelp med Diaspora*-kontoen din, ta kontakt med oss på %{email}."
|
||||
finally: "Endeleg er det her!"
|
||||
friends_saying: "Dette seier venene dine..."
|
||||
get_connected: "Vert tilknytt"
|
||||
get_connected_paragraph: "Som ei internasjonal rørsle med mål om å ein betre verdsvev, er %{strong_diaspora} sitt viktigaste verkemiddel samhaldet. Treff nye menneske, del med vener, og ver med på moroa."
|
||||
have_fun: "Ha det gama"
|
||||
have_fun_paragraph: "%{strong_diaspora} handlar om å oppdage framifrå nytt innhald og nye folk på nettet. %{link}, verda si fyrste %{strong_diaspora}-tilleggsprogram er berre byrja. Samle og el nettet i all si prakt."
|
||||
help_fund: "gje ein slant til Diaspora"
|
||||
|
|
|
|||
|
|
@ -935,10 +935,6 @@ ar:
|
|||
saved: "تم الحفظ!"
|
||||
what_facebook_does: "to Diaspora. This will pull your name and photo, and enable cross-positng."
|
||||
who_are_you: "من أنت؟"
|
||||
logged_out:
|
||||
go_mobile: "اذهب الى الجوال"
|
||||
signed_out: "تم تسجيل خروجك من دياسبرا"
|
||||
works_on_modern: "يعمل على جميع الهواتف الذكية الحديثة"
|
||||
privacy_settings:
|
||||
ignored_users: "المستخدمين الذين تم تجاهلهم"
|
||||
stop_ignoring: "اوقف التجاهل"
|
||||
|
|
|
|||
|
|
@ -246,12 +246,6 @@ art-nvi:
|
|||
getting_started:
|
||||
well_hello_there: "Tse, kaltxì tsatseng!"
|
||||
who_are_you: "Pesu nga lu"
|
||||
logged_out:
|
||||
go_mobile: "Sar hì'ia eltuti lefngap."
|
||||
on_your_mobile_device: "mì ngeyä hì'ia eltu lefngap fte sar diasporati ahì'i"
|
||||
signed_out: "Nga holum Diasporait"
|
||||
simply_visit: "Frrfen"
|
||||
works_on_modern: "Fì'u tìkangkem si mì syawyu lefngap lefkrr nìwotx"
|
||||
privacy_settings:
|
||||
title: "Le'aw 'awpoä Sìfkeytok"
|
||||
update:
|
||||
|
|
|
|||
|
|
@ -912,12 +912,6 @@ bg:
|
|||
what_are_you_in_to: "От какво се интересувате?"
|
||||
what_facebook_does: "с Diaspora. Така някои данни (име и снимка) ще бъдат попълнени автоматично и ще можете да публикувате съобщения във Facebook от Diaspora."
|
||||
who_are_you: "Кой сте вие?"
|
||||
logged_out:
|
||||
go_mobile: "Пробвайте и версията за мобилни устройства."
|
||||
on_your_mobile_device: "от вашето мобилно устройство за достъп до мобилната версия на Diaspora*."
|
||||
signed_out: "Отписахте се от Diaspora*"
|
||||
simply_visit: "Просто посетете"
|
||||
works_on_modern: "Съвместима е с всеки съвременен смартфон"
|
||||
privacy_settings:
|
||||
ignored_users: "Игнорирани потребители"
|
||||
stop_ignoring: "Прекратяване на игнорирането"
|
||||
|
|
|
|||
|
|
@ -855,8 +855,6 @@ cs:
|
|||
well_hello_there: "Jé, ahojte!"
|
||||
what_facebook_does: "to Diaspora. This will pull your name and photo, and enable cross-positng."
|
||||
who_are_you: "Kdo jste?"
|
||||
logged_out:
|
||||
signed_out: "Odhlásili jste se z Diaspory*"
|
||||
privacy_settings:
|
||||
title: "Nastavení soukromí"
|
||||
public:
|
||||
|
|
|
|||
|
|
@ -915,12 +915,6 @@ da:
|
|||
what_are_you_in_to: "Hvad er dine interesser?"
|
||||
what_facebook_does: "til diaspora. Dette vil hente dit navn og foto, samt gøre det muligt at skrive indlæg på tværs af platforme."
|
||||
who_are_you: "Hvem er du?"
|
||||
logged_out:
|
||||
go_mobile: "Bliv mobil nu."
|
||||
on_your_mobile_device: "på din mobile enhed til at få adgang til Diaspora* mobil."
|
||||
signed_out: "Du er logget ud af Diaspora*"
|
||||
simply_visit: "Du skal blot besøge"
|
||||
works_on_modern: "Virker på alle moderne smartphones"
|
||||
privacy_settings:
|
||||
ignored_users: "Ignorerede brugere"
|
||||
stop_ignoring: "Hold op med at ignorere"
|
||||
|
|
|
|||
|
|
@ -986,12 +986,6 @@ de:
|
|||
what_are_you_in_to: "Was machst du so?"
|
||||
what_facebook_does: "mit Diaspora verbindest. Hierbei wird dein Name und dein Foto geladen, um das Veröffentlichen bei Facebook zu ermöglichen."
|
||||
who_are_you: "Wer bist Du?"
|
||||
logged_out:
|
||||
go_mobile: "Jetzt mobil werden."
|
||||
on_your_mobile_device: "auf deinem mobilen Gerät, um die mobile Seite von Diaspora* aufzurufen."
|
||||
signed_out: "Du hast dich aus Diaspora* ausgeloggt"
|
||||
simply_visit: "Besuche einfach"
|
||||
works_on_modern: "Funktioniert auf allen modernen Smartphones"
|
||||
privacy_settings:
|
||||
ignored_users: "Benutzer, die ignoriert werden"
|
||||
stop_ignoring: "Aufhören, zu ignorieren"
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue