X-Git-Url: https://git.p6c8.net/jirafeau_mojo42.git/blobdiff_plain/aa171727dc595bfccaffbf8be178f16639827111..ce571122a5b6866835a9313e599bcad57bc790ff:/lib/functions.js.php?ds=sidebyside
diff --git a/lib/functions.js.php b/lib/functions.js.php
index e981e35..1a56186 100644
--- a/lib/functions.js.php
+++ b/lib/functions.js.php
@@ -17,22 +17,72 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
*/
+
header('Content-Type: text/javascript');
-define ('JIRAFEAU_ROOT', dirname (__FILE__) . '/../');
-require (JIRAFEAU_ROOT . 'lib/config.original.php');
-require (JIRAFEAU_ROOT . 'lib/settings.php');
-require (JIRAFEAU_ROOT . 'lib/functions.php');
-require (JIRAFEAU_ROOT . 'lib/lang.php');
+
+define('JIRAFEAU_ROOT', dirname(__FILE__) . '/../');
+
+require(JIRAFEAU_ROOT . 'lib/settings.php');
+require(JIRAFEAU_ROOT . 'lib/functions.php');
+require(JIRAFEAU_ROOT . 'lib/lang.php');
?>
function translate (expr)
{
- var lang_array = ;
+ var lang_array = ;
if (lang_array.hasOwnProperty(expr))
return lang_array[expr];
return expr;
}
+function isEmpty(str) {
+ return (!str || 0 === str.length);
+}
+
+// Extend date object with format method
+Date.prototype.format = function(format) {
+ format = format || 'YYYY-MM-DD hh:mm';
+
+ var zeropad = function(number, length) {
+ number = number.toString();
+ length = length || 2;
+ while(number.length < length)
+ number = '0' + number;
+ return number;
+ },
+ formats = {
+ YYYY: this.getFullYear(),
+ MM: zeropad(this.getMonth() + 1),
+ DD: zeropad(this.getDate()),
+ hh: zeropad(this.getHours()),
+ mm: zeropad(this.getMinutes()),
+ O: (function() {
+ localDate = new Date;
+ sign = (localDate.getTimezoneOffset() > 0) ? '-' : '+';
+ offset = Math.abs(localDate.getTimezoneOffset());
+ hours = zeropad(Math.floor(offset / 60));
+ minutes = zeropad(offset % 60);
+ return sign + hours + ":" + minutes;
+ })()
+ },
+ pattern = '(' + Object.keys(formats).join(')|(') + ')';
+
+ return format.replace(new RegExp(pattern, 'g'), function(match) {
+ return formats[match];
+ });
+};
+
+function dateToUtcString(datelocal) {
+ return new Date(
+ datelocal.getUTCFullYear(),
+ datelocal.getUTCMonth(),
+ datelocal.getUTCDate(),
+ datelocal.getUTCHours(),
+ datelocal.getUTCMinutes(),
+ datelocal.getUTCSeconds()
+ ).format();
+}
+
function show_link (url, reference, delete_code, crypt_key, date)
{
// Upload finished
@@ -59,9 +109,11 @@ function show_link (url, reference, delete_code, crypt_key, date)
var filename = document.getElementById('file_select').files[0].name;
var b = encodeURIComponent("Download file \"" + filename + "\":") + "%0D";
b += encodeURIComponent(download_link_href) + "%0D";
- if (date)
- b += "%0D" + encodeURIComponent("This file will be available until " + date) + "%0D";
- document.getElementById('upload_link_email').href = "mailto:?body=" + b + "&subject=" + encodeURIComponent(filename);
+ if (false == isEmpty(date))
+ {
+ b += "%0D" + encodeURIComponent("This file will be available until " + dateToUtcString(date)) + "%0D";
+ document.getElementById('upload_link_email').href = "mailto:?body=" + b + "&subject=" + encodeURIComponent(filename);
+ }
// Delete link
var delete_link = url + 'f.php?h=' + reference + '&d=' + delete_code;
@@ -70,13 +122,16 @@ function show_link (url, reference, delete_code, crypt_key, date)
document.getElementById('delete_link').href = delete_link_href;
// Validity date
- if (date)
+ if (isEmpty(date))
{
- document.getElementById('date').innerHTML = date;
+ document.getElementById('validity').style.display = 'none';
+ }
+ else {
+ document.getElementById('date').innerHTML = ''
+ + dateToUtcString(date) + ' (GMT)'
+ + '';
document.getElementById('validity').style.display = '';
}
- else
- document.getElementById('validity').style.display = 'none';
// Preview link (if allowed)
if (!!document.getElementById('preview_link'))
@@ -204,7 +259,7 @@ function add_time_string_to_date(d, time)
{
return false;
}
-
+
if (time == 'minute')
{
d.setSeconds (d.getSeconds() + 60);
@@ -230,6 +285,11 @@ function add_time_string_to_date(d, time)
d.setSeconds (d.getSeconds() + 2419200);
return true;
}
+ if (time == 'quarter')
+ {
+ d.setSeconds (d.getSeconds() + 7257600);
+ return true;
+ }
if (time == 'year')
{
d.setSeconds (d.getSeconds() + 29030400);
@@ -252,21 +312,29 @@ function classic_upload (url, file, time, password, one_time, upload_password)
if (req.readyState == 4 && req.status == 200)
{
var res = req.responseText;
- if (res == "Error")
+
+ // if response starts with "Error" then show a failure
+ if (/^Error/.test(res))
{
- pop_failure ();
+ pop_failure (res);
return;
}
+
res = res.split ("\n");
+ var expiryDate = '';
if (time != 'none')
{
- var d = new Date();
- if(!add_time_string_to_date(d, time))
+ // convert time (local time + selected expiry date)
+ var localDatetime = new Date();
+ if(!add_time_string_to_date(localDatetime, time))
+ {
+ pop_failure ('Error: Date can not be parsed');
return;
- show_link (url, res[0], res[1], res[2], d.toString());
+ }
+ expiryDate = localDatetime;
}
- else
- show_link (url, res[0], res[1], res[2]);
+
+ show_link (url, res[0], res[1], res[2], expiryDate);
}
}
req.open ("POST", url + 'script.php' , true);
@@ -314,11 +382,13 @@ function async_upload_start (url, max_size, file, time, password, one_time, uplo
if (req.readyState == 4 && req.status == 200)
{
var res = req.responseText;
- if (res == "Error")
+
+ if (/^Error/.test(res))
{
- pop_failure ();
+ pop_failure (res);
return;
}
+
res = res.split ("\n");
async_global_ref = res[0];
var code = res[1];
@@ -383,11 +453,13 @@ function async_upload_push (code)
if (req.readyState == 4 && req.status == 200)
{
var res = req.responseText;
- if (res == "Error")
+
+ if (/^Error/.test(res))
{
- pop_failure ();
+ pop_failure (res);
return;
}
+
res = res.split ("\n");
var code = res[0]
async_global_transfered = async_global_transfering;
@@ -421,21 +493,27 @@ function async_upload_end (code)
if (req.readyState == 4 && req.status == 200)
{
var res = req.responseText;
- if (res == "Error")
+
+ if (/^Error/.test(res))
{
- pop_failure ();
+ pop_failure (res);
return;
}
+
res = res.split ("\n");
+ var expiryDate = '';
if (async_global_time != 'none')
{
- var d = new Date();
- if(!add_time_string_to_date(d, async_global_time))
- return;
- show_link (async_global_url, res[0], res[1], res[2], d.toString());
+ // convert time (local time + selected expiry date)
+ var localDatetime = new Date();
+ if(!add_time_string_to_date(localDatetime, async_global_time)) {
+ pop_failure ('Error: Date can not be parsed');
+ return;
+ }
+ expiryDate = localDatetime;
}
- else
- show_link (async_global_url, res[0], res[1], res[2]);
+
+ show_link (async_global_url, res[0], res[1], res[2], expiryDate);
}
}
req.open ("POST", async_global_url + 'script.php?end_async' , true);