Merge branch 'master' into trinidad

This commit is contained in:
friendica 2015-01-06 11:40:31 -08:00
commit 7ee5567421
3 changed files with 217 additions and 140 deletions

View File

@ -347,6 +347,11 @@ surfer@debian:/var/www$ git config --global user.name "Your Name"
surfer@debian:/var/www$ git config --global user.email "your@mail.com" surfer@debian:/var/www$ git config --global user.email "your@mail.com"
[/code] [/code]
Create a descriptive topic branch
[code]
surfer@debian:/var/www$ git checkout -b dev_beginning
[/code]
Make sure your local repository is up-to-date with the main project. Make sure your local repository is up-to-date with the main project.
Add the original repository as a remote named upstream if not done yet Add the original repository as a remote named upstream if not done yet
[code] [code]
@ -356,11 +361,7 @@ surfer@debian:/var/www$ git remote add upstream https://github.com/friendica/red
Fetch the newest work from that remote Fetch the newest work from that remote
[code] [code]
surfer@debian:/var/www$ git fetch upstream surfer@debian:/var/www$ git fetch upstream
[/code] surfer@debian:/var/www$ git merge upstream/master
Create a descriptive topic branch
[code]
surfer@debian:/var/www$ git checkout -b dev_beginning
[/code] [/code]
Hint: You can list the branches Hint: You can list the branches
@ -382,12 +383,12 @@ surfer@debian:/var/www$ git add doc/dev_beginner.bb
Commit the changes to your local branch. This will open an editor to provide a message. Commit the changes to your local branch. This will open an editor to provide a message.
[code] [code]
surfer@debian:/var/www$ git commit surfer@debian:/var/www$ git commit -a
[/code] [/code]
Push back up to the same topic branch online Push back up to the same topic branch online
[code] [code]
surfer@debian:/var/www$ git push origin dev_beginning surfer@debian:/var/www$ git push
[/code] [/code]
Now you can go to your (online) account at github and create the pull request. Now you can go to your (online) account at github and create the pull request.

View File

@ -3,7 +3,7 @@
* updating fuzzy timestamps (e.g. "4 minutes ago" or "about 1 day ago"). * updating fuzzy timestamps (e.g. "4 minutes ago" or "about 1 day ago").
* *
* @name timeago * @name timeago
* @version 0.11.4 * @version 1.4.1
* @requires jQuery v1.2.3+ * @requires jQuery v1.2.3+
* @author Ryan McGeary * @author Ryan McGeary
* @license MIT License - http://www.opensource.org/licenses/mit-license.php * @license MIT License - http://www.opensource.org/licenses/mit-license.php
@ -11,9 +11,18 @@
* For usage and examples, visit: * For usage and examples, visit:
* http://timeago.yarp.com/ * http://timeago.yarp.com/
* *
* Copyright (c) 2008-2012, Ryan McGeary (ryan -[at]- mcgeary [*dot*] org) * Copyright (c) 2008-2013, Ryan McGeary (ryan -[at]- mcgeary [*dot*] org)
*/ */
(function($) {
(function (factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(['jquery'], factory);
} else {
// Browser globals
factory(jQuery);
}
}(function ($) {
$.timeago = function(timestamp) { $.timeago = function(timestamp) {
if (timestamp instanceof Date) { if (timestamp instanceof Date) {
return inWords(timestamp); return inWords(timestamp);
@ -30,12 +39,16 @@
$.extend($.timeago, { $.extend($.timeago, {
settings: { settings: {
refreshMillis: 60000, refreshMillis: 60000,
allowPast: true,
allowFuture: false, allowFuture: false,
localeTitle: false,
cutoff: 0,
strings: { strings: {
prefixAgo: null, prefixAgo: null,
prefixFromNow: null, prefixFromNow: null,
suffixAgo: "ago", suffixAgo: "ago",
suffixFromNow: "from now", suffixFromNow: "from now",
inPast: 'any moment now',
seconds: "less than a minute", seconds: "less than a minute",
minute: "about a minute", minute: "about a minute",
minutes: "%d minutes", minutes: "%d minutes",
@ -51,7 +64,12 @@
numbers: [] numbers: []
} }
}, },
inWords: function(distanceMillis) { inWords: function(distanceMillis) {
if(!this.settings.allowPast && ! this.settings.allowFuture) {
throw 'timeago allowPast and allowFuture settings can not both be set to false.';
}
var $l = this.settings.strings; var $l = this.settings.strings;
var prefix = $l.prefixAgo; var prefix = $l.prefixAgo;
var suffix = $l.suffixAgo; var suffix = $l.suffixAgo;
@ -62,6 +80,10 @@
} }
} }
if(!this.settings.allowPast && distanceMillis >= 0) {
return this.settings.strings.inPast;
}
var seconds = Math.abs(distanceMillis) / 1000; var seconds = Math.abs(distanceMillis) / 1000;
var minutes = seconds / 60; var minutes = seconds / 60;
var hours = minutes / 60; var hours = minutes / 60;
@ -86,15 +108,18 @@
years < 1.5 && substitute($l.year, 1) || years < 1.5 && substitute($l.year, 1) ||
substitute($l.years, Math.round(years)); substitute($l.years, Math.round(years));
var separator = $l.wordSeparator === undefined ? " " : $l.wordSeparator; var separator = $l.wordSeparator || "";
if ($l.wordSeparator === undefined) { separator = " "; }
return $.trim([prefix, words, suffix].join(separator)); return $.trim([prefix, words, suffix].join(separator));
}, },
parse: function(iso8601) { parse: function(iso8601) {
var s = $.trim(iso8601); var s = $.trim(iso8601);
s = s.replace(/\.\d+/,""); // remove milliseconds s = s.replace(/\.\d+/,""); // remove milliseconds
s = s.replace(/-/,"/").replace(/-/,"/"); s = s.replace(/-/,"/").replace(/-/,"/");
s = s.replace(/T/," ").replace(/Z/," UTC"); s = s.replace(/T/," ").replace(/Z/," UTC");
s = s.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2"); // -04:00 -> -0400 s = s.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2"); // -04:00 -> -0400
s = s.replace(/([\+\-]\d\d)$/," $100"); // +09 -> +0900
return new Date(s); return new Date(s);
}, },
datetime: function(elem) { datetime: function(elem) {
@ -107,22 +132,64 @@
} }
}); });
$.fn.timeago = function() { // functions that can be called via $(el).timeago('action')
var self = this; // init is default when no action is given
self.each(refresh); // functions are called with context of a single element
var functions = {
init: function(){
var refresh_el = $.proxy(refresh, this);
refresh_el();
var $s = $t.settings; var $s = $t.settings;
if ($s.refreshMillis > 0) { if ($s.refreshMillis > 0) {
setInterval(function() { self.each(refresh); }, $s.refreshMillis); this._timeagoInterval = setInterval(refresh_el, $s.refreshMillis);
} }
return self; },
update: function(time){
var parsedTime = $t.parse(time);
$(this).data('timeago', { datetime: parsedTime });
if($t.settings.localeTitle) $(this).attr("title", parsedTime.toLocaleString());
refresh.apply(this);
},
updateFromDOM: function(){
$(this).data('timeago', { datetime: $t.parse( $t.isTime(this) ? $(this).attr("datetime") : $(this).attr("title") ) });
refresh.apply(this);
},
dispose: function () {
if (this._timeagoInterval) {
window.clearInterval(this._timeagoInterval);
this._timeagoInterval = null;
}
}
};
$.fn.timeago = function(action, options) {
var fn = action ? functions[action] : functions.init;
if(!fn){
throw new Error("Unknown function name '"+ action +"' for timeago");
}
// each over objects here and call the requested function
this.each(function(){
fn.call(this, options);
});
return this;
}; };
function refresh() { function refresh() {
//check if it's still visible
if(!$.contains(document.documentElement,this)){
//stop if it has been removed
$(this).timeago("dispose");
return this;
}
var data = prepareData(this); var data = prepareData(this);
var $s = $t.settings;
if (!isNaN(data.datetime)) { if (!isNaN(data.datetime)) {
if ( $s.cutoff == 0 || Math.abs(distance(data.datetime)) < $s.cutoff) {
$(this).text(inWords(data.datetime)); $(this).text(inWords(data.datetime));
} }
}
return this; return this;
} }
@ -131,7 +198,9 @@
if (!element.data("timeago")) { if (!element.data("timeago")) {
element.data("timeago", { datetime: $t.datetime(element) }); element.data("timeago", { datetime: $t.datetime(element) });
var text = $.trim(element.text()); var text = $.trim(element.text());
if (text.length > 0 && !($t.isTime(element) && element.attr("title"))) { if ($t.settings.localeTitle) {
element.attr("title", element.data('timeago').datetime.toLocaleString());
} else if (text.length > 0 && !($t.isTime(element) && element.attr("title"))) {
element.attr("title", text); element.attr("title", text);
} }
} }
@ -149,4 +218,4 @@
// fix for IE6 suckage // fix for IE6 suckage
document.createElement("abbr"); document.createElement("abbr");
document.createElement("time"); document.createElement("time");
}(jQuery)); }));

View File

@ -135,11 +135,13 @@
function showHideComments(id) { function showHideComments(id) {
if( $('#collapsed-comments-' + id).is(':visible')) { if( $('#collapsed-comments-' + id).is(':visible')) {
$('#collapsed-comments-' + id + ' .autotime').timeago('dispose');
$('#collapsed-comments-' + id).slideUp(); $('#collapsed-comments-' + id).slideUp();
$('#hide-comments-' + id).html(aStr['showmore']); $('#hide-comments-' + id).html(aStr['showmore']);
$('#hide-comments-total-' + id).show(); $('#hide-comments-total-' + id).show();
} }
else { else {
$('#collapsed-comments-' + id + ' .autotime').timeago();
$('#collapsed-comments-' + id).slideDown(); $('#collapsed-comments-' + id).slideDown();
$('#hide-comments-' + id).html(aStr['showfewer']); $('#hide-comments-' + id).html(aStr['showfewer']);
$('#hide-comments-total-' + id).hide(); $('#hide-comments-total-' + id).hide();
@ -452,6 +454,7 @@ function updateConvItems(mode,data) {
$('.thread-wrapper.toplevel_item',data).each(function() { $('.thread-wrapper.toplevel_item',data).each(function() {
var ident = $(this).attr('id'); var ident = $(this).attr('id');
// This should probably use the context argument instead
var commentWrap = $('#'+ident+' .collapsed-comments').attr('id'); var commentWrap = $('#'+ident+' .collapsed-comments').attr('id');
var itmId = 0; var itmId = 0;
var isVisible = false; var isVisible = false;
@ -468,7 +471,7 @@ function updateConvItems(mode,data) {
$('#' + prev).after($(this)); $('#' + prev).after($(this));
if(isVisible) if(isVisible)
showHideComments(itmId); showHideComments(itmId);
$(".autotime",this).timeago(); $("> .wall-item-outside-wrapper .autotime, > .thread-wrapper .autotime",this).timeago();
} }
else { else {
$('img',this).each(function() { $('img',this).each(function() {
@ -479,7 +482,7 @@ function updateConvItems(mode,data) {
$('#' + ident).replaceWith($(this)); $('#' + ident).replaceWith($(this));
if(isVisible) if(isVisible)
showHideComments(itmId); showHideComments(itmId);
$(".autotime",this).timeago(); $("> .wall-item-outside-wrapper .autotime, > .thread-wrapper .autotime",this).timeago();
} }
prev = ident; prev = ident;
}); });
@ -510,7 +513,7 @@ function updateConvItems(mode,data) {
$('#threads-end').before($(this)); $('#threads-end').before($(this));
if(isVisible) if(isVisible)
showHideComments(itmId); showHideComments(itmId);
$(".autotime",this).timeago(); $("> .wall-item-outside-wrapper .autotime, > .thread-wrapper .autotime",this).timeago();
} }
else { else {
$('img',this).each(function() { $('img',this).each(function() {
@ -521,7 +524,7 @@ function updateConvItems(mode,data) {
$('#' + ident).replaceWith($(this)); $('#' + ident).replaceWith($(this));
if(isVisible) if(isVisible)
showHideComments(itmId); showHideComments(itmId);
$(".autotime",this).timeago(); $("> .wall-item-outside-wrapper .autotime, > .thread-wrapper .autotime",this).timeago();
} }
}); });
@ -555,7 +558,7 @@ function updateConvItems(mode,data) {
$('#' + prev).after($(this)); $('#' + prev).after($(this));
if(isVisible) if(isVisible)
showHideComments(itmId); showHideComments(itmId);
$(".autotime",this).timeago(); $("> .wall-item-outside-wrapper .autotime, > .thread-wrapper .autotime",this).timeago();
} }
prev = ident; prev = ident;
@ -598,7 +601,11 @@ function updateConvItems(mode,data) {
$(".wall-item-body, .contact-info").each(function() { $(".wall-item-body, .contact-info").each(function() {
if($(this).height() > divmore_height + 10) { if($(this).height() > divmore_height + 10) {
if(! $(this).hasClass('divmore')) { if(! $(this).hasClass('divmore')) {
$(this).readmore({collapsedHeight: divmore_height, moreLink: '<a href="#" class="divgrow-showmore">'+aStr['divgrowmore']+'</a>', lessLink: '<a href="#">'+aStr['divgrowless']+'</a>'}); $(this).readmore({
collapsedHeight: divmore_height,
moreLink: '<a href="#" class="divgrow-showmore">'+aStr['divgrowmore']+'</a>',
lessLink: '<a href="#">'+aStr['divgrowless']+'</a>'
});
$(this).addClass('divmore'); $(this).addClass('divmore');
} }
} }