aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/ajax/update.php3
-rw-r--r--core/command/upgrade.php3
-rw-r--r--core/css/apps.css1
-rw-r--r--core/img/filetypes/folder-shared.pngbin1155 -> 1229 bytes
-rw-r--r--core/img/filetypes/folder-shared.svg44
-rw-r--r--core/js/share.js135
-rw-r--r--core/js/tests/specs/shareSpec.js138
-rw-r--r--core/js/update.js2
-rw-r--r--core/l10n/ast.php13
-rw-r--r--core/l10n/de.php2
-rw-r--r--core/l10n/de_DE.php2
-rw-r--r--core/l10n/fi_FI.php2
-rw-r--r--core/l10n/gl.php18
-rw-r--r--core/l10n/it.php10
-rw-r--r--core/l10n/ja.php6
-rw-r--r--core/l10n/tr.php2
16 files changed, 312 insertions, 69 deletions
diff --git a/core/ajax/update.php b/core/ajax/update.php
index 84d7a21209e..698614c975f 100644
--- a/core/ajax/update.php
+++ b/core/ajax/update.php
@@ -15,6 +15,9 @@ if (OC::checkUpgrade(false)) {
$updater->listen('\OC\Updater', 'dbUpgrade', function () use ($eventSource, $l) {
$eventSource->send('success', (string)$l->t('Updated database'));
});
+ $updater->listen('\OC\Updater', 'dbSimulateUpgrade', function () use ($eventSource, $l) {
+ $eventSource->send('success', (string)$l->t('Checked database schema update'));
+ });
$updater->listen('\OC\Updater', 'disabledApps', function ($appList) use ($eventSource, $l) {
$list = array();
foreach ($appList as $appId) {
diff --git a/core/command/upgrade.php b/core/command/upgrade.php
index 8ce8ef9b6e5..c3946d2aab5 100644
--- a/core/command/upgrade.php
+++ b/core/command/upgrade.php
@@ -56,6 +56,9 @@ class Upgrade extends Command {
$updater->listen('\OC\Updater', 'dbUpgrade', function () use($output) {
$output->writeln('<info>Updated database</info>');
});
+ $updater->listen('\OC\Updater', 'dbSimulateUpgrade', function () use($output) {
+ $output->writeln('<info>Checked database schema update</info>');
+ });
$updater->listen('\OC\Updater', 'disabledApps', function ($appList) use($output) {
$output->writeln('<info>Disabled incompatible apps: ' . implode(', ', $appList) . '</info>');
});
diff --git a/core/css/apps.css b/core/css/apps.css
index 18e299552e5..4bcf89c7ee4 100644
--- a/core/css/apps.css
+++ b/core/css/apps.css
@@ -168,6 +168,7 @@
/* Part where the content will be loaded into */
#app-content {
+ position: relative;
height: 100%;
overflow-y: auto;
}
diff --git a/core/img/filetypes/folder-shared.png b/core/img/filetypes/folder-shared.png
index e3c0ee9815a..b4f02ac7399 100644
--- a/core/img/filetypes/folder-shared.png
+++ b/core/img/filetypes/folder-shared.png
Binary files differ
diff --git a/core/img/filetypes/folder-shared.svg b/core/img/filetypes/folder-shared.svg
index a389e535439..aba8cadbe28 100644
--- a/core/img/filetypes/folder-shared.svg
+++ b/core/img/filetypes/folder-shared.svg
@@ -1,60 +1,64 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="32px" width="32px" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs>
- <linearGradient id="p" x1="27.557" gradientUnits="userSpaceOnUse" y1="7.1627" gradientTransform="matrix(.89186 0 0 1.0539 3.1208 5.4125)" x2="27.557" y2="21.387">
+ <linearGradient id="c" y2="21.387" gradientUnits="userSpaceOnUse" x2="27.557" gradientTransform="matrix(.89186 0 0 1.0539 3.1208 5.4125)" y1="7.1627" x1="27.557">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#fff" stop-opacity=".23529" offset=".0097359"/>
<stop stop-color="#fff" stop-opacity=".15686" offset=".99001"/>
<stop stop-color="#fff" stop-opacity=".39216" offset="1"/>
</linearGradient>
- <linearGradient id="o" x1="22.935" gradientUnits="userSpaceOnUse" y1="49.629" gradientTransform="matrix(.74675 0 0 .65549 -1.9219 1.1676)" x2="22.809" y2="36.658">
+ <linearGradient id="d" y2="36.658" gradientUnits="userSpaceOnUse" x2="22.809" gradientTransform="matrix(.74675 0 0 .65549 -1.9219 1.1676)" y1="49.629" x1="22.935">
<stop stop-color="#0a0a0a" stop-opacity=".498" offset="0"/>
<stop stop-color="#0a0a0a" stop-opacity="0" offset="1"/>
</linearGradient>
- <linearGradient id="n" x1="35.793" gradientUnits="userSpaceOnUse" y1="17.118" gradientTransform="matrix(.64444 0 0 .64286 .53352 .89286)" x2="35.793" y2="43.761">
+ <linearGradient id="e" y2="43.761" gradientUnits="userSpaceOnUse" x2="35.793" gradientTransform="matrix(.64444 0 0 .64286 .53352 .89286)" y1="17.118" x1="35.793">
<stop stop-color="#b4cee1" offset="0"/>
<stop stop-color="#5d9fcd" offset="1"/>
</linearGradient>
- <linearGradient id="m" x1="302.86" gradientUnits="userSpaceOnUse" y1="366.65" gradientTransform="matrix(.051143 0 0 .015916 -2.49 22.299)" x2="302.86" y2="609.51">
+ <linearGradient id="f" y2="609.51" gradientUnits="userSpaceOnUse" x2="302.86" gradientTransform="matrix(.051143 0 0 .015916 -2.49 22.299)" y1="366.65" x1="302.86">
<stop stop-opacity="0" offset="0"/>
<stop offset=".5"/>
<stop stop-opacity="0" offset="1"/>
</linearGradient>
- <radialGradient id="q" gradientUnits="userSpaceOnUse" cy="486.65" cx="605.71" gradientTransform="matrix(.019836 0 0 .015916 16.388 22.299)" r="117.14">
+ <radialGradient id="b" gradientUnits="userSpaceOnUse" cy="486.65" cx="605.71" gradientTransform="matrix(.019836 0 0 .015916 16.388 22.299)" r="117.14">
<stop offset="0"/>
<stop stop-opacity="0" offset="1"/>
</radialGradient>
- <radialGradient id="r" gradientUnits="userSpaceOnUse" cy="486.65" cx="605.71" gradientTransform="matrix(-.019836 0 0 .015916 15.601 22.299)" r="117.14">
+ <radialGradient id="a" gradientUnits="userSpaceOnUse" cy="486.65" cx="605.71" gradientTransform="matrix(-.019836 0 0 .015916 15.601 22.299)" r="117.14">
<stop offset="0"/>
<stop stop-opacity="0" offset="1"/>
</radialGradient>
- <linearGradient id="l" x1="21.37" gradientUnits="userSpaceOnUse" y1="4.7324" gradientTransform="matrix(.54384 0 0 .61466 3.2689 5.0911)" x2="21.37" y2="34.143">
+ <linearGradient id="g" y2="34.143" gradientUnits="userSpaceOnUse" x2="21.37" gradientTransform="matrix(.54384 0 0 .61466 3.2689 5.0911)" y1="4.7324" x1="21.37">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#fff" stop-opacity=".23529" offset=".11063"/>
<stop stop-color="#fff" stop-opacity=".15686" offset=".99001"/>
<stop stop-color="#fff" stop-opacity=".39216" offset="1"/>
</linearGradient>
- <linearGradient id="k" x1="62.989" gradientUnits="userSpaceOnUse" y1="13" gradientTransform="matrix(.61905 0 0 .61905 -30.392 1.4286)" x2="62.989" y2="16">
+ <linearGradient id="h" y2="16" gradientUnits="userSpaceOnUse" x2="62.989" gradientTransform="matrix(.61905 0 0 .61905 -30.392 1.4286)" y1="13" x1="62.989">
<stop stop-color="#f9f9f9" offset="0"/>
<stop stop-color="#d8d8d8" offset="1"/>
</linearGradient>
- <linearGradient id="j" x1="-51.786" gradientUnits="userSpaceOnUse" x2="-51.786" gradientTransform="matrix(.50703 0 0 .503 68.029 1.3298)" y1="53.514" y2="3.6337">
+ <linearGradient id="i" y2="3.6337" gradientUnits="userSpaceOnUse" y1="53.514" gradientTransform="matrix(.50703 0 0 .503 68.029 1.3298)" x2="-51.786" x1="-51.786">
<stop stop-opacity=".32174" offset="0"/>
<stop stop-opacity=".27826" offset="1"/>
</linearGradient>
</defs>
- <path opacity=".8" style="color:#000000" d="m4.0002 6.5001c-0.43342 0.005-0.5 0.21723-0.5 0.6349v1.365c-1.2457 0-1-0.002-1 0.54389 0.0216 6.5331 0 6.9014 0 7.4561 0.90135 0 27-2.349 27-3.36v-4.0961c0-0.41767-0.34799-0.54876-0.78141-0.54389h-14.219v-1.365c0-0.41767-0.26424-0.63977-0.69767-0.6349h-9.8023z" stroke="url(#j)" fill="none"/>
- <path style="color:#000000" d="m4.0002 7v2h-1v4h26v-4h-15v-2h-10z" fill="url(#k)"/>
- <path style="color:#000000" stroke-linecap="round" d="m4.5002 7.5v2h-1v4h25v-4h-15v-2h-9z" stroke="url(#l)" fill="none"/>
+ <path opacity=".8" style="color:#000000" d="m4.0002 6.5001c-0.43342 0.005-0.5 0.21723-0.5 0.6349v1.365c-1.2457 0-1-0.002-1 0.54389 0.0216 6.5331 0 6.9014 0 7.4561 0.90135 0 27-2.349 27-3.36v-4.0961c0-0.41767-0.34799-0.54876-0.78141-0.54389h-14.219v-1.365c0-0.41767-0.26424-0.63977-0.69767-0.6349h-9.8023z" stroke="url(#i)" fill="none"/>
+ <path style="color:#000000" d="m4.0002 7v2h-1v4h26v-4h-15v-2h-10z" fill="url(#h)"/>
+ <path style="color:#000000" d="m4.5002 7.5v2h-1v4h25v-4h-15v-2h-9z" stroke="url(#g)" stroke-linecap="round" fill="none"/>
<g transform="translate(.00017936 -1)">
- <rect opacity=".3" height="3.8653" width="24.695" y="28.135" x="3.6472" fill="url(#m)"/>
- <path opacity=".3" d="m28.342 28.135v3.865c1.0215 0.0073 2.4695-0.86596 2.4695-1.9328s-1.1399-1.9323-2.4695-1.9323z" fill="url(#q)"/>
- <path opacity=".3" d="m3.6472 28.135v3.865c-1.0215 0.0073-2.4695-0.86596-2.4695-1.9328s1.1399-1.9323 2.4695-1.9323z" fill="url(#r)"/>
+ <rect opacity=".3" height="3.8653" width="24.695" y="28.135" x="3.6472" fill="url(#f)"/>
+ <path opacity=".3" d="m28.342 28.135v3.865c1.0215 0.0073 2.4695-0.86596 2.4695-1.9328s-1.1399-1.9323-2.4695-1.9323z" fill="url(#b)"/>
+ <path opacity=".3" d="m3.6472 28.135v3.865c-1.0215 0.0073-2.4695-0.86596-2.4695-1.9328s1.1399-1.9323 2.4695-1.9323z" fill="url(#a)"/>
</g>
- <path style="color:#000000" d="m1.927 11.5c-0.69105 0.0796-0.32196 0.90258-0.37705 1.3654 0.0802 0.29906 0.59771 15.718 0.59771 16.247 0 0.46018 0.22667 0.38222 0.80101 0.38222h26.397c0.61872 0.0143 0.48796 0.007 0.48796-0.38947 0.0452-0.20269 0.63993-16.978 0.66282-17.243 0-0.279 0.0581-0.3621-0.30493-0.3621h-28.265z" fill="url(#n)"/>
- <path opacity=".4" d="m1.682 11 28.636 0.00027c0.4137 0 0.68181 0.29209 0.68181 0.65523l-0.6735 17.712c0.01 0.45948-0.1364 0.64166-0.61707 0.63203l-27.256-0.0115c-0.4137 0-0.83086-0.27118-0.83086-0.63432l-0.62244-17.698c0-0.36314 0.26812-0.65549 0.68182-0.65549z" fill="url(#o)"/>
- <path opacity=".5" style="color:#000000" d="m2.5002 12.5 0.62498 16h25.749l0.62498-16z" stroke="url(#p)" stroke-linecap="round" fill="none"/>
+ <path style="color:#000000" d="m1.927 11.5c-0.69105 0.0796-0.32196 0.90258-0.37705 1.3654 0.0802 0.29906 0.59771 15.718 0.59771 16.247 0 0.46018 0.22667 0.38222 0.80101 0.38222h26.397c0.61872 0.0143 0.48796 0.007 0.48796-0.38947 0.0452-0.20269 0.63993-16.978 0.66282-17.243 0-0.279 0.0581-0.3621-0.30493-0.3621h-28.265z" fill="url(#e)"/>
+ <path opacity=".4" d="m1.682 11 28.636 0.00027c0.4137 0 0.68181 0.29209 0.68181 0.65523l-0.6735 17.712c0.01 0.45948-0.1364 0.64166-0.61707 0.63203l-27.256-0.0115c-0.4137 0-0.83086-0.27118-0.83086-0.63432l-0.62244-17.698c0-0.36314 0.26812-0.65549 0.68182-0.65549z" fill="url(#d)"/>
+ <path opacity=".5" style="color:#000000" d="m2.5002 12.5 0.62498 16h25.749l0.62498-16z" stroke="url(#c)" stroke-linecap="round" fill="none"/>
<path opacity=".3" stroke-linejoin="round" style="color:#000000" d="m1.927 11.5c-0.69105 0.0796-0.32196 0.90258-0.37705 1.3654 0.0802 0.29906 0.59771 15.718 0.59771 16.247 0 0.46018 0.22667 0.38222 0.80101 0.38222h26.397c0.61872 0.0143 0.48796 0.007 0.48796-0.38947 0.0452-0.20269 0.63993-16.978 0.66282-17.243 0-0.279 0.0581-0.3621-0.30493-0.3621h-28.265z" stroke="#000" stroke-linecap="round" fill="none"/>
- <path opacity=".3" style="block-progression:tb;color:#000000;text-transform:none;text-indent:0" d="m12.388 16.483c-0.96482 0-1.7833 0.70559-1.7833 1.6162 0.0069 0.28781 0.03259 0.64272 0.20434 1.3933v0.01858l0.01857 0.01857c0.05513 0.15793 0.13537 0.24827 0.24149 0.37154 0.10612 0.12326 0.23263 0.26834 0.35294 0.39011 0.01415 0.01433 0.02323 0.0232 0.03715 0.03716 0.02386 0.10383 0.05276 0.21557 0.0743 0.3158 0.05732 0.26668 0.05144 0.45553 0.03716 0.52015-0.4146 0.1454-0.9304 0.3187-1.3932 0.5199-0.2598 0.113-0.4949 0.2139-0.6873 0.3344-0.1923 0.1206-0.3836 0.2116-0.4458 0.483-0.000797 0.01237-0.000797 0.02479 0 0.03716-0.06076 0.55788-0.15266 1.3783-0.22291 1.932-0.015166 0.11656 0.046264 0.23943 0.14861 0.29723 0.84033 0.45393 2.1312 0.63663 3.418 0.63161 1.2868-0.005 2.5674-0.19845 3.3808-0.63161 0.10234-0.0578 0.16378-0.18067 0.14861-0.29723-0.0224-0.173-0.05-0.5633-0.0743-0.9474-0.0243-0.384-0.0454-0.7617-0.0743-0.9845-0.0101-0.0552-0.0362-0.1074-0.0743-0.1486-0.2584-0.3086-0.6445-0.4973-1.096-0.6874-0.4122-0.1735-0.8954-0.3538-1.3746-0.5573-0.02682-0.05975-0.05346-0.23358 0-0.50157 0.01436-0.07196 0.03684-0.14903 0.05573-0.22292 0.04503-0.05044 0.08013-0.09166 0.13003-0.14861 0.1064-0.1215 0.2207-0.2489 0.3157-0.3715 0.0951-0.1226 0.1728-0.2279 0.223-0.3715l0.01857-0.01858c0.1941-0.7837 0.1942-1.1107 0.2043-1.3933v-0.01857c0-0.91058-0.81848-1.6162-1.7833-1.6162zm5.101-1.4831c-1.4067 0-2.6 1.0287-2.6 2.3562 0.01 0.4196 0.04751 0.93701 0.29791 2.0312v0.02708l0.02708 0.02708c0.08038 0.23025 0.19736 0.36196 0.35208 0.54166s0.33917 0.39121 0.51458 0.56874c0.02064 0.02089 0.03386 0.03383 0.05416 0.05418 0.03479 0.15137 0.07693 0.31428 0.10833 0.46041 0.08357 0.38879 0.07499 0.66411 0.05417 0.75832-0.6045 0.2122-1.3565 0.465-2.0312 0.7583-0.3789 0.1647-0.7217 0.3118-1.0021 0.4875-0.28044 0.17574-0.55934 0.30851-0.64999 0.70416-0.0012 0.01804-0.0012 0.03613 0 0.05418-0.08858 0.81334-0.22257 2.0094-0.325 2.8166-0.02211 0.16993 0.06745 0.34906 0.21666 0.43333 1.2252 0.66179 3.1072 0.92814 4.9833 0.92082 1.8761-0.0073 3.7431-0.28932 4.9291-0.92082 0.14921-0.08427 0.23878-0.2634 0.21666-0.43333-0.0327-0.25234-0.07287-0.82136-0.10833-1.3812-0.03546-0.55988-0.06625-1.1106-0.10833-1.4354-0.01468-0.0805-0.05274-0.15661-0.10833-0.21666-0.377-0.4498-0.94-0.7248-1.598-1.002-0.601-0.253-1.306-0.5158-2.004-0.8125-0.0391-0.08711-0.07795-0.34054 0-0.73124 0.02093-0.10491 0.05371-0.21727 0.08125-0.325 0.06566-0.07354 0.11683-0.13363 0.18958-0.21666 0.15516-0.17709 0.32189-0.36287 0.46041-0.54166s0.25186-0.33217 0.325-0.54166l0.02708-0.02708c0.28309-1.1425 0.28324-1.6193 0.29792-2.0312v-0.02708c0-1.3275-1.1933-2.3562-2.6-2.3562z" fill="#FFF"/>
- <path opacity=".7" style="block-progression:tb;color:#000000;text-transform:none;text-indent:0" d="m12.388 15.483c-0.96482 0-1.7833 0.70559-1.7833 1.6162 0.0069 0.28781 0.03259 0.64272 0.20434 1.3933v0.01858l0.01857 0.01857c0.05513 0.15793 0.13537 0.24827 0.24149 0.37154 0.10612 0.12326 0.23263 0.26834 0.35294 0.39011 0.01415 0.01433 0.02323 0.0232 0.03715 0.03716 0.02386 0.10383 0.05276 0.21557 0.0743 0.3158 0.05732 0.26668 0.05144 0.45553 0.03716 0.52015-0.4146 0.1454-0.9304 0.3187-1.3932 0.5199-0.2598 0.113-0.4949 0.2139-0.6873 0.3344-0.1923 0.1206-0.3836 0.2116-0.4458 0.483-0.000797 0.01237-0.000797 0.02479 0 0.03716-0.06076 0.55788-0.15266 1.3783-0.22291 1.932-0.015166 0.11656 0.046264 0.23943 0.14861 0.29723 0.84033 0.45393 2.1312 0.63663 3.418 0.63161 1.2868-0.005 2.5674-0.19845 3.3808-0.63161 0.10234-0.0578 0.16378-0.18067 0.14861-0.29723-0.0224-0.173-0.05-0.5633-0.0743-0.9474-0.0243-0.384-0.0454-0.7617-0.0743-0.9845-0.0101-0.0552-0.0362-0.1074-0.0743-0.1486-0.2584-0.3086-0.6445-0.4973-1.096-0.6874-0.4122-0.1735-0.8954-0.3538-1.3746-0.5573-0.02682-0.05975-0.05346-0.23358 0-0.50157 0.01436-0.07196 0.03684-0.14903 0.05573-0.22292 0.04503-0.05044 0.08013-0.09166 0.13003-0.14861 0.1064-0.1215 0.2207-0.2489 0.3157-0.3715 0.0951-0.1226 0.1728-0.2279 0.223-0.3715l0.01857-0.01858c0.1941-0.7837 0.1942-1.1107 0.2043-1.3933v-0.01857c0-0.91058-0.81848-1.6162-1.7833-1.6162zm5.101-1.4831c-1.4067 0-2.6 1.0287-2.6 2.3562 0.01 0.4196 0.04751 0.93701 0.29791 2.0312v0.02708l0.02708 0.02708c0.08038 0.23025 0.19736 0.36196 0.35208 0.54166s0.33917 0.39121 0.51458 0.56874c0.02064 0.02089 0.03386 0.03383 0.05416 0.05418 0.03479 0.15137 0.07693 0.31428 0.10833 0.46041 0.08357 0.38879 0.07499 0.66411 0.05417 0.75832-0.6045 0.2122-1.3565 0.465-2.0312 0.7583-0.3789 0.1647-0.7217 0.3118-1.0021 0.4875-0.28044 0.17574-0.55934 0.30851-0.64999 0.70416-0.0012 0.01804-0.0012 0.03613 0 0.05418-0.08858 0.81334-0.22257 2.0094-0.325 2.8166-0.02211 0.16993 0.06745 0.34906 0.21666 0.43333 1.2252 0.66179 3.1072 0.92814 4.9833 0.92082 1.8761-0.0073 3.7431-0.28932 4.9291-0.92082 0.14921-0.08427 0.23878-0.2634 0.21666-0.43333-0.0327-0.25234-0.07287-0.82136-0.10833-1.3812-0.03546-0.55988-0.06625-1.1106-0.10833-1.4354-0.01468-0.0805-0.05274-0.15661-0.10833-0.21666-0.377-0.4498-0.94-0.7248-1.598-1.002-0.601-0.253-1.306-0.5158-2.004-0.8125-0.0391-0.08711-0.07795-0.34054 0-0.73124 0.02093-0.10491 0.05371-0.21727 0.08125-0.325 0.06566-0.07354 0.11683-0.13363 0.18958-0.21666 0.15516-0.17709 0.32189-0.36287 0.46041-0.54166s0.25186-0.33217 0.325-0.54166l0.02708-0.02708c0.28309-1.1425 0.28324-1.6193 0.29792-2.0312v-0.02708c0-1.3275-1.1933-2.3562-2.6-2.3562z"/>
+ <g opacity=".3" transform="translate(6.9998,-1023.4)" fill="#fff">
+ <path fill="#fff" d="m12.228 1037.4c-1.3565 0-2.4592 1.0977-2.4592 2.4542 0 0.075 0.0084 0.1504 0.0149 0.2236l-4.7346 2.4145c-0.4291-0.3667-0.98611-0.5863-1.5947-0.5863-1.3565 0-2.4542 1.0977-2.4542 2.4543 0 1.3565 1.0977 2.4542 2.4542 2.4542 0.54607 0 1.0528-0.1755 1.4606-0.477l4.8637 2.4741c-0.0024 0.044-0.0099 0.089-0.0099 0.1342 0 1.3565 1.1027 2.4542 2.4592 2.4542s2.4542-1.0977 2.4542-2.4542-1.0977-2.4592-2.4542-2.4592c-0.63653 0-1.218 0.2437-1.6544 0.6409l-4.6953-2.4c0.01892-0.1228 0.03478-0.2494 0.03478-0.3775 0-0.072-0.0089-0.1437-0.0149-0.2137l4.7395-2.4145c0.42802 0.3627 0.98488 0.5813 1.5898 0.5813 1.3565 0 2.4542-1.1027 2.4542-2.4592s-1.0977-2.4542-2.4542-2.4542z"/>
+ </g>
+ <g opacity=".7" transform="translate(6.9998,-1024.4)">
+ <path d="m12.228 1037.4c-1.3565 0-2.4592 1.0977-2.4592 2.4542 0 0.075 0.0084 0.1504 0.0149 0.2236l-4.7346 2.4145c-0.4291-0.3667-0.98611-0.5863-1.5947-0.5863-1.3565 0-2.4542 1.0977-2.4542 2.4543 0 1.3565 1.0977 2.4542 2.4542 2.4542 0.54607 0 1.0528-0.1755 1.4606-0.477l4.8637 2.4741c-0.0024 0.044-0.0099 0.089-0.0099 0.1342 0 1.3565 1.1027 2.4542 2.4592 2.4542s2.4542-1.0977 2.4542-2.4542-1.0977-2.4592-2.4542-2.4592c-0.63653 0-1.218 0.2437-1.6544 0.6409l-4.6953-2.4c0.01892-0.1228 0.03478-0.2494 0.03478-0.3775 0-0.072-0.0089-0.1437-0.0149-0.2137l4.7395-2.4145c0.42802 0.3627 0.98488 0.5813 1.5898 0.5813 1.3565 0 2.4542-1.1027 2.4542-2.4592s-1.0977-2.4542-2.4542-2.4542z"/>
+ </g>
</svg>
diff --git a/core/js/share.js b/core/js/share.js
index bcc04225b9f..7e3b0d8c65d 100644
--- a/core/js/share.js
+++ b/core/js/share.js
@@ -3,8 +3,25 @@ OC.Share={
SHARE_TYPE_GROUP:1,
SHARE_TYPE_LINK:3,
SHARE_TYPE_EMAIL:4,
+ /**
+ * @deprecated use OC.Share.currentShares instead
+ */
itemShares:[],
+ /**
+ * Full list of all share statuses
+ */
statuses:{},
+ /**
+ * Shares for the currently selected file.
+ * (for which the dropdown is open)
+ *
+ * Key is item type and value is an array or
+ * shares of the given item type.
+ */
+ currentShares: {},
+ /**
+ * Whether the share dropdown is opened.
+ */
droppedDown:false,
/**
* Loads ALL share statuses from server, stores them in
@@ -54,8 +71,9 @@ OC.Share={
$fileList = fileList.$fileList;
currentDir = fileList.getCurrentDirectory();
}
+ // TODO: iterating over the files might be more efficient
for (item in OC.Share.statuses){
- var image = OC.imagePath('core', 'actions/shared');
+ var image = OC.imagePath('core', 'actions/share');
var data = OC.Share.statuses[item];
var hasLink = data.link;
// Links override shared in terms of icon display
@@ -63,20 +81,14 @@ OC.Share={
image = OC.imagePath('core', 'actions/public');
}
if (itemType !== 'file' && itemType !== 'folder') {
- $fileList.find('a.share[data-item="'+item+'"]').css('background', 'url('+image+') no-repeat center');
+ $('a.share[data-item="'+item+'"]').css('background', 'url('+image+') no-repeat center');
} else {
+ // TODO: ultimately this part should be moved to files_sharing app
var file = $fileList.find('tr[data-id="'+item+'"]');
var shareFolder = OC.imagePath('core', 'filetypes/folder-shared');
var img;
if (file.length > 0) {
- var type = file.data('type');
- if (type === 'dir') {
- file.children('.filename').css('background-image', 'url('+shareFolder+')');
- }
- var action = $(file).find('.fileactions .action[data-action="Share"]');
- img = action.find('img').attr('src', image);
- action.addClass('permanent');
- action.html(' <span>'+t('core', 'Shared')+'</span>').prepend(img);
+ this.markFileAsShared(file, true, hasLink);
} else {
var dir = currentDir;
if (dir.length > 1) {
@@ -89,6 +101,7 @@ OC.Share={
var files = $fileList.find('.filename');
var i;
for (i = 0; i < actions.length; i++) {
+ // TODO: use this.markFileAsShared()
img = $(actions[i]).find('img');
if (img.attr('src') !== OC.imagePath('core', 'actions/public')) {
img.attr('src', image);
@@ -125,35 +138,19 @@ OC.Share={
}
} else if (OC.Share.itemShares[index].length > 0) {
shares = true;
- image = OC.imagePath('core', 'actions/shared');
+ image = OC.imagePath('core', 'actions/share');
}
}
});
if (itemType != 'file' && itemType != 'folder') {
$('a.share[data-item="'+itemSource+'"]').css('background', 'url('+image+') no-repeat center');
} else {
- var file = $('tr').filterAttr('data-id', String(itemSource));
- if (file.length > 0) {
- var type = file.data('type');
- var shareFolder = OC.imagePath('core', 'filetypes/folder');
- if (type === 'dir' && shares) {
- shareFolder = OC.imagePath('core', 'filetypes/folder-shared');
- file.children('.filename').css('background-image', 'url('+shareFolder+')');
- } else if (type === 'dir') {
- file.children('.filename').css('background-image', 'url('+shareFolder+')');
- }
- var action = $(file).find('.fileactions .action').filterAttr('data-action', 'Share');
- // in case of multiple lists/rows, there might be more than one visible
- action.each(function() {
- var action = $(this);
- var img = action.find('img').attr('src', image);
- if (shares) {
- action.addClass('permanent');
- action.html(' <span>'+ escapeHTML(t('core', 'Shared'))+'</span>').prepend(img);
- } else {
- action.removeClass('permanent');
- action.html(' <span>'+ escapeHTML(t('core', 'Share'))+'</span>').prepend(img);
- }
+ var $tr = $('tr').filterAttr('data-id', String(itemSource));
+ if ($tr.length > 0) {
+ // it might happen that multiple lists exist in the DOM
+ // with the same id
+ $tr.each(function() {
+ OC.Share.markFileAsShared($(this), shares, link);
});
}
}
@@ -164,6 +161,60 @@ OC.Share={
delete OC.Share.statuses[itemSource];
}
},
+ /**
+ * Marks/unmarks a given file as shared by changing its action icon
+ * and folder icon.
+ *
+ * @param $tr file element to mark as shared
+ * @param hasShares whether shares are available
+ * @param hasLink whether link share is available
+ */
+ markFileAsShared: function($tr, hasShares, hasLink) {
+ var action = $tr.find('.fileactions .action[data-action="Share"]');
+ var type = $tr.data('type');
+ var img = action.find('img');
+ var message;
+ var recipients;
+ var owner = $tr.attr('data-share-owner');
+ var shareFolderIcon;
+ var image = OC.imagePath('core', 'actions/share');
+ // update folder icon
+ if (type === 'dir' && (hasShares || hasLink)) {
+ if (hasLink) {
+ shareFolderIcon = OC.imagePath('core', 'filetypes/folder-public');
+ }
+ else {
+ shareFolderIcon = OC.imagePath('core', 'filetypes/folder-shared');
+ }
+ $tr.children('.filename').css('background-image', 'url(' + shareFolderIcon + ')');
+ } else if (type === 'dir') {
+ shareFolderIcon = OC.imagePath('core', 'filetypes/folder');
+ $tr.children('.filename').css('background-image', 'url(' + shareFolderIcon + ')');
+ }
+ // update share action text / icon
+ if (hasShares || owner) {
+ recipients = $tr.attr('data-share-recipients');
+
+ action.addClass('permanent');
+ message = t('core', 'Shared');
+ // even if reshared, only show "Shared by"
+ if (owner) {
+ message = t('files_sharing', 'Shared by {owner}', {owner: owner});
+ }
+ else if (recipients) {
+ message = t('core', 'Shared with {recipients}', {recipients: recipients});
+ }
+ action.html(' <span>'+ message + '</span>').prepend(img);
+ }
+ else {
+ action.removeClass('permanent');
+ action.html(' <span>'+ escapeHTML(t('core', 'Share'))+'</span>').prepend(img);
+ }
+ if (hasLink) {
+ image = OC.imagePath('core', 'actions/public');
+ }
+ img.attr('src', image);
+ },
loadItem:function(itemType, itemSource) {
var data = '';
var checkReshare = true;
@@ -319,6 +370,7 @@ OC.Share={
dropDownEl = dropDownEl.appendTo(appendTo);
// Reset item shares
OC.Share.itemShares = [];
+ OC.Share.currentShares = {};
if (data.shares) {
$.each(data.shares, function(index, share) {
if (share.share_type == OC.Share.SHARE_TYPE_LINK) {
@@ -392,6 +444,7 @@ OC.Share={
OC.Share.share(itemType, itemSource, shareType, shareWith, permissions, itemSourceName, expirationDate, function() {
OC.Share.addShareWith(shareType, shareWith, selected.item.label, permissions, possiblePermissions);
$('#shareWith').val('');
+ $('#dropdown').trigger(new $.Event('sharesChanged', {shares: OC.Share.currentShares}));
OC.Share.updateIcon(itemType, itemSource);
});
return false;
@@ -448,6 +501,7 @@ OC.Share={
$('#shareWith').focus();
},
hideDropDown:function(callback) {
+ OC.Share.currentShares = null;
$('#dropdown').hide('blind', function() {
OC.Share.droppedDown = false;
$('#dropdown').remove();
@@ -460,6 +514,12 @@ OC.Share={
});
},
addShareWith:function(shareType, shareWith, shareWithDisplayName, permissions, possiblePermissions, mailSend, collection) {
+ var shareItem = {
+ share_type: shareType,
+ share_with: shareWith,
+ share_with_displayname: shareWithDisplayName,
+ permissions: permissions
+ };
if (shareType === 1) {
shareWithDisplayName = shareWithDisplayName + " (" + t('core', 'group') + ')';
}
@@ -538,6 +598,10 @@ OC.Share={
html.find('.cruds').before(showCrudsButton);
}
$('#expiration').show();
+ if (!OC.Share.currentShares[shareType]) {
+ OC.Share.currentShares[shareType] = [];
+ }
+ OC.Share.currentShares[shareType].push(shareItem);
}
},
showLink:function(token, password, itemSource) {
@@ -673,6 +737,9 @@ $(document).ready(function() {
$li.remove();
var index = OC.Share.itemShares[shareType].indexOf(shareWith);
OC.Share.itemShares[shareType].splice(index, 1);
+ // updated list of shares
+ OC.Share.currentShares[shareType].splice(index, 1);
+ $('#dropdown').trigger(new $.Event('sharesChanged', {shares: OC.Share.currentShares}));
OC.Share.updateIcon(itemType, itemSource);
if (typeof OC.Share.statuses[itemSource] === 'undefined') {
$('#expiration').hide('blind');
@@ -731,6 +798,7 @@ $(document).ready(function() {
if (oc_appconfig.core.enforcePasswordForPublicLink === false) {
OC.Share.share(itemType, itemSource, OC.Share.SHARE_TYPE_LINK, '', OC.PERMISSION_READ, itemSourceName, expirationDate, function(data) {
OC.Share.showLink(data.token, null, itemSource);
+ $('#dropdown').trigger(new $.Event('sharesChanged', {shares: OC.Share.currentShares}));
OC.Share.updateIcon(itemType, itemSource);
});
} else {
@@ -743,6 +811,7 @@ $(document).ready(function() {
if ($('#linkText').val() !== '') {
OC.Share.unshare(itemType, itemSource, OC.Share.SHARE_TYPE_LINK, '', function() {
OC.Share.itemShares[OC.Share.SHARE_TYPE_LINK] = false;
+ $('#dropdown').trigger(new $.Event('sharesChanged', {shares: OC.Share.currentShares}));
OC.Share.updateIcon(itemType, itemSource);
if (typeof OC.Share.statuses[itemSource] === 'undefined') {
$('#expiration').hide('blind');
diff --git a/core/js/tests/specs/shareSpec.js b/core/js/tests/specs/shareSpec.js
index a487b71fdbb..458bc41b6a1 100644
--- a/core/js/tests/specs/shareSpec.js
+++ b/core/js/tests/specs/shareSpec.js
@@ -26,13 +26,17 @@ describe('OC.Share tests', function() {
var oldAppConfig;
var loadItemStub;
var autocompleteStub;
+
beforeEach(function() {
$('#testArea').append($('<div id="shareContainer"></div>'));
+ // horrible parameters
+ $('#testArea').append('<input id="allowShareWithLink" type="hidden" value="yes">');
$container = $('#shareContainer');
/* jshint camelcase:false */
- oldAppConfig = oc_appconfig.core;
- loadItemStub = sinon.stub(OC.Share, 'loadItem');
+ oldAppConfig = _.extend({}, oc_appconfig.core);
+ oc_appconfig.core.enforcePasswordForPublicLink = false;
+ loadItemStub = sinon.stub(OC.Share, 'loadItem');
loadItemStub.returns({
reshare: [],
shares: []
@@ -89,9 +93,133 @@ describe('OC.Share tests', function() {
oc_appconfig.core.defaultExpireDate = '';
// TODO: expect that default date was NOT set
});
- // TODO: test password field visibility (whenever enforced or not)
- // TODO: check link share field visibility based on whether it is allowed
- // TODO: check public upload visibility based on config
+ describe('Share with link', function() {
+ // TODO: test ajax calls
+ // TODO: test password field visibility (whenever enforced or not)
+ // TODO: check public upload visibility based on config
+ it('shows share with link checkbox when allowed', function() {
+ $('#allowShareWithLink').val('yes');
+ OC.Share.showDropDown(
+ 'file',
+ 123,
+ $container,
+ 'http://localhost/dummylink',
+ 31,
+ 'shared_file_name.txt'
+ );
+ expect($('#dropdown #linkCheckbox').length).toEqual(1);
+ });
+ it('does not show share with link checkbox when not allowed', function() {
+ $('#allowShareWithLink').val('no');
+ OC.Share.showDropDown(
+ 'file',
+ 123,
+ $container,
+ 'http://localhost/dummylink',
+ 31,
+ 'shared_file_name.txt'
+ );
+ expect($('#dropdown #linkCheckbox').length).toEqual(0);
+ });
+ });
+ describe('"sharesChanged" event', function() {
+ var autocompleteOptions;
+ var handler;
+ beforeEach(function() {
+ handler = sinon.stub();
+ loadItemStub.returns({
+ reshare: [],
+ shares: [{
+ id: 100,
+ item_source: 123,
+ permissions: 31,
+ share_type: OC.Share.SHARE_TYPE_USER,
+ share_with: 'user1',
+ share_with_displayname: 'User One'
+ }]
+ });
+ OC.Share.showDropDown(
+ 'file',
+ 123,
+ $container,
+ 'http://localhost/dummylink',
+ 31,
+ 'shared_file_name.txt'
+ );
+ $('#dropdown').on('sharesChanged', handler);
+ autocompleteOptions = autocompleteStub.getCall(0).args[0];
+ });
+ afterEach(function() {
+ autocompleteOptions = null;
+ handler = null;
+ });
+ it('triggers "sharesChanged" event when adding shares', function() {
+ // simulate autocomplete selection
+ autocompleteOptions.select(new $.Event('select'), {
+ item: {
+ label: 'User Two',
+ value: {
+ shareType: OC.Share.SHARE_TYPE_USER,
+ shareWith: 'user2'
+ }
+ }
+ });
+ fakeServer.requests[0].respond(
+ 200,
+ { 'Content-Type': 'application/json' },
+ JSON.stringify({status: 'success'})
+ );
+ expect(handler.calledOnce).toEqual(true);
+ var shares = handler.getCall(0).args[0].shares;
+ expect(shares).toBeDefined();
+ expect(shares[OC.Share.SHARE_TYPE_USER][0].share_with_displayname).toEqual('User One');
+ expect(shares[OC.Share.SHARE_TYPE_USER][1].share_with_displayname).toEqual('User Two');
+ expect(shares[OC.Share.SHARE_TYPE_GROUP]).not.toBeDefined();
+ });
+ it('triggers "sharesChanged" event when deleting shares', function() {
+ $('#dropdown .unshare:eq(0)').click();
+ fakeServer.requests[0].respond(
+ 200,
+ { 'Content-Type': 'application/json' },
+ JSON.stringify({status: 'success'})
+ );
+ expect(handler.calledOnce).toEqual(true);
+ var shares = handler.getCall(0).args[0].shares;
+ expect(shares).toBeDefined();
+ expect(shares[OC.Share.SHARE_TYPE_USER]).toEqual([]);
+ expect(shares[OC.Share.SHARE_TYPE_GROUP]).not.toBeDefined();
+ });
+ it('triggers "sharesChanged" event when toggling link share', function() {
+ // simulate autocomplete selection
+ $('#dropdown #linkCheckbox').click();
+ fakeServer.requests[0].respond(
+ 200,
+ { 'Content-Type': 'application/json' },
+ JSON.stringify({status: 'success', data: { token: 'abc' }})
+ );
+ expect(handler.calledOnce).toEqual(true);
+ var shares = handler.getCall(0).args[0].shares;
+ expect(shares).toBeDefined();
+ expect(shares[OC.Share.SHARE_TYPE_USER][0].share_with_displayname).toEqual('User One');
+ expect(shares[OC.Share.SHARE_TYPE_GROUP]).not.toBeDefined();
+
+ handler.reset();
+
+ // uncheck checkbox
+ $('#dropdown #linkCheckbox').click();
+ fakeServer.requests[1].respond(
+ 200,
+ { 'Content-Type': 'application/json' },
+ JSON.stringify({status: 'success'})
+ );
+
+ expect(handler.calledOnce).toEqual(true);
+ shares = handler.getCall(0).args[0].shares;
+ expect(shares).toBeDefined();
+ expect(shares[OC.Share.SHARE_TYPE_USER][0].share_with_displayname).toEqual('User One');
+ expect(shares[OC.Share.SHARE_TYPE_GROUP]).not.toBeDefined();
+ });
+ });
});
});
diff --git a/core/js/update.js b/core/js/update.js
index cc0f541bd79..e5ce322df95 100644
--- a/core/js/update.js
+++ b/core/js/update.js
@@ -28,7 +28,7 @@
this.addMessage(t(
'core',
'Updating {productName} to version {version}, this may take a while.', {
- productName: OC.theme.name,
+ productName: OC.theme.name || 'ownCloud',
version: OC.config.versionstring
}),
'bold'
diff --git a/core/l10n/ast.php b/core/l10n/ast.php
index 65ec8192744..483bd4b7f7d 100644
--- a/core/l10n/ast.php
+++ b/core/l10n/ast.php
@@ -69,6 +69,7 @@ $TRANSLATIONS = array(
"Error while changing permissions" => "Fallu mientres camudaben los permisos",
"Shared with you and the group {group} by {owner}" => "Compartíu contigo y col grupu {group} por {owner}",
"Shared with you by {owner}" => "Compartíu contigo por {owner}",
+"Share with user or group …" => "Compartir col usuariu o grupu ...",
"Share link" => "Compartir enllaz",
"Password protect" => "Protexer con contraseña",
"Choose a password for the public link" => "Escueyi una contraseña pal enllaz públicu",
@@ -101,6 +102,7 @@ $TRANSLATIONS = array(
"Add" => "Amestar",
"Edit tags" => "Editar etiquetes",
"Please reload the page." => "Por favor, recarga la páxina",
+"The update was unsuccessful." => "L'anovamientu nun foi esitosu.",
"The update was successful. Redirecting you to ownCloud now." => "L'anovamientu fízose con ésitu. Redirixiendo agora al to ownCloud.",
"%s password reset" => "%s restablecer contraseña",
"Use the following link to reset your password: {link}" => "Usa'l siguiente enllaz pa restablecer la to contraseña: {link}",
@@ -122,6 +124,9 @@ $TRANSLATIONS = array(
"Apps" => "Aplicaciones",
"Admin" => "Alministrador",
"Help" => "Ayuda",
+"Error loading tags" => "Fallu cargando les etiquetes",
+"Tag already exists" => "Yá esiste la etiqueta",
+"Error tagging" => "Fallu etiquetando",
"Access forbidden" => "Accesu denegáu",
"Cloud not found" => "Ñube non atopada",
"Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" => "Hola, ¿qué hai?\n\nnamái déxanos dicite que %s compartió %s contigo.\nVelu: %s\n\n",
@@ -137,6 +142,7 @@ $TRANSLATIONS = array(
"Password" => "Contraseña",
"Data folder" => "Carpeta de datos",
"Configure the database" => "Configura la base de datos",
+"Only %s is available." => "Namái ta disponible %s",
"Database user" => "Usuariu de la base de datos",
"Database password" => "Contraseña de la base de datos",
"Database name" => "Nome de la base de datos",
@@ -154,6 +160,11 @@ $TRANSLATIONS = array(
"remember" => "recordar",
"Log in" => "Aniciar sesión",
"Alternative Logins" => "Anicios de sesión alternativos",
-"Thank you for your patience." => "Gracies pola to paciencia."
+"Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" => "Hola, ¿qué hai?,<br><br>namái déxamos dicite que %s compartió <strong>%s</strong> contigo.\n<br><a href=\"%s\">¡Velu!</a><br><br>",
+"Thank you for your patience." => "Gracies pola to paciencia.",
+"%s will be updated to version %s." => "%s anovaráse a la versión %s.",
+"The following apps will be disabled:" => "Deshabilitaránse les siguientes aplicaciones:",
+"Start update" => "Aniciar anovamientu",
+"This ownCloud instance is currently being updated, which may take a while." => "Esta instancia de OwnCloud ta anguaño anovándose, polo que pue tardar un pocoñín."
);
$PLURAL_FORMS = "nplurals=2; plural=(n != 1);";
diff --git a/core/l10n/de.php b/core/l10n/de.php
index b3a30a228ef..d51a810b348 100644
--- a/core/l10n/de.php
+++ b/core/l10n/de.php
@@ -158,11 +158,13 @@ $TRANSLATIONS = array(
"Storage & database" => "Speicher & Datenbank",
"Data folder" => "Datenverzeichnis",
"Configure the database" => "Datenbank einrichten",
+"Only %s is available." => "Es sind nur %s verfügbar.",
"Database user" => "Datenbank-Benutzer",
"Database password" => "Datenbank-Passwort",
"Database name" => "Datenbank-Name",
"Database tablespace" => "Datenbank-Tablespace",
"Database host" => "Datenbank-Host",
+"SQLite will be used as database. For larger installations we recommend to change this." => "SQLite wird als Datenbank benutzt. Für größere Installationen wird empfohlen, dies zu ändern.",
"Finish setup" => "Installation abschließen",
"Finishing …" => "Abschließen ...",
"This application requires JavaScript to be enabled for correct operation. Please <a href=\"http://enable-javascript.com/\" target=\"_blank\">enable JavaScript</a> and re-load this interface." => "Diese Anwendung benötigt ein aktiviertes JavaScript zum korrekten Betrieb. Bitte <a href=\"http://enable-javascript.com/\" target=\"_blank\">aktiviere JavaScript</a> und lade diese Schnittstelle neu.",
diff --git a/core/l10n/de_DE.php b/core/l10n/de_DE.php
index dfceff4113f..4d1079d81a9 100644
--- a/core/l10n/de_DE.php
+++ b/core/l10n/de_DE.php
@@ -158,11 +158,13 @@ $TRANSLATIONS = array(
"Storage & database" => "Speicher & Datenbank",
"Data folder" => "Datenverzeichnis",
"Configure the database" => "Datenbank einrichten",
+"Only %s is available." => "Es sind nur %s verfügbar.",
"Database user" => "Datenbank-Benutzer",
"Database password" => "Datenbank-Passwort",
"Database name" => "Datenbank-Name",
"Database tablespace" => "Datenbank-Tablespace",
"Database host" => "Datenbank-Host",
+"SQLite will be used as database. For larger installations we recommend to change this." => "SQLite wird als Datenbank benutzt. Für größere Installationen wird empfohlen, dies zu ändern.",
"Finish setup" => "Installation abschließen",
"Finishing …" => "Abschließen ...",
"This application requires JavaScript to be enabled for correct operation. Please <a href=\"http://enable-javascript.com/\" target=\"_blank\">enable JavaScript</a> and re-load this interface." => "Diese Anwendung benötigt ein aktiviertes JavaScript zum korrekten Betrieb. Bitte <a href=\"http://enable-javascript.com/\" target=\"_blank\">aktivieren Sie JavaScript</a> und laden Sie diese Schnittstelle neu.",
diff --git a/core/l10n/fi_FI.php b/core/l10n/fi_FI.php
index 716f6fdd4a8..88f94f254e1 100644
--- a/core/l10n/fi_FI.php
+++ b/core/l10n/fi_FI.php
@@ -158,11 +158,13 @@ $TRANSLATIONS = array(
"Storage & database" => "Tallennus ja tietokanta",
"Data folder" => "Datakansio",
"Configure the database" => "Muokkaa tietokantaa",
+"Only %s is available." => "Vain %s on käytettävissä.",
"Database user" => "Tietokannan käyttäjä",
"Database password" => "Tietokannan salasana",
"Database name" => "Tietokannan nimi",
"Database tablespace" => "Tietokannan taulukkotila",
"Database host" => "Tietokantapalvelin",
+"SQLite will be used as database. For larger installations we recommend to change this." => "SQLitea käytetään tietokantana. Laajoja asennuksia varten tämä asetus kannattaa muuttaa. ",
"Finish setup" => "Viimeistele asennus",
"Finishing …" => "Valmistellaan…",
"This application requires JavaScript to be enabled for correct operation. Please <a href=\"http://enable-javascript.com/\" target=\"_blank\">enable JavaScript</a> and re-load this interface." => "Tämä sovellus vaatii toimiakseen JavaScriptin käyttöä. <a href=\"http://enable-javascript.com/\" target=\"_blank\">Ota JavaScript käyttöön</a> ja päivitä tämä käyttöliittymä.",
diff --git a/core/l10n/gl.php b/core/l10n/gl.php
index a6dd114c021..c7ff0a923a5 100644
--- a/core/l10n/gl.php
+++ b/core/l10n/gl.php
@@ -33,13 +33,13 @@ $TRANSLATIONS = array(
"Settings" => "Axustes",
"Saving..." => "Gardando...",
"seconds ago" => "segundos atrás",
-"_%n minute ago_::_%n minutes ago_" => array("hai %n minuto","hai %n minutos"),
-"_%n hour ago_::_%n hours ago_" => array("hai %n hora","hai %n horas"),
+"_%n minute ago_::_%n minutes ago_" => array("hai %n minuto","vai %n minutos"),
+"_%n hour ago_::_%n hours ago_" => array("hai %n hora","vai %n horas"),
"today" => "hoxe",
"yesterday" => "onte",
"_%n day ago_::_%n days ago_" => array("hai %n día","vai %n días"),
"last month" => "último mes",
-"_%n month ago_::_%n months ago_" => array("hai %n mes","hai %n meses"),
+"_%n month ago_::_%n months ago_" => array("hai %n mes","vai %n meses"),
"last year" => "último ano",
"years ago" => "anos atrás",
"Yes" => "Si",
@@ -64,7 +64,7 @@ $TRANSLATIONS = array(
"So-so password" => "Contrasinal non moi aló",
"Good password" => "Bo contrasinal",
"Strong password" => "Contrasinal forte",
-"Shared" => "Compartir",
+"Shared" => "Compartido",
"Share" => "Compartir",
"Error" => "Erro",
"Error while sharing" => "Produciuse un erro ao compartir",
@@ -76,7 +76,7 @@ $TRANSLATIONS = array(
"Share link" => "Ligazón para compartir",
"The public link will expire no later than {days} days after it is created" => "A ligazón pública caducará, a máis tardar, {days} días após a súa creación",
"By default the public link will expire after {days} days" => "De xeito predeterminado, a ligazón pública caduca aos {days} días",
-"Password protect" => "Protexido con contrasinais",
+"Password protect" => "Protexido con contrasinal",
"Choose a password for the public link" => "Escolla un contrasinal para a ligazón pública",
"Allow Public Upload" => "Permitir o envío público",
"Email link to person" => "Enviar ligazón por correo",
@@ -86,7 +86,7 @@ $TRANSLATIONS = array(
"Share via email:" => "Compartir por correo:",
"No people found" => "Non se atopou xente",
"group" => "grupo",
-"Resharing is not allowed" => "Non se permite volver a compartir",
+"Resharing is not allowed" => "Non se permite volver compartir",
"Shared in {item} with {user}" => "Compartido en {item} con {user}",
"Unshare" => "Deixar de compartir",
"notify by email" => "notificar por correo",
@@ -110,7 +110,7 @@ $TRANSLATIONS = array(
"Error loading dialog template: {error}" => "Produciuse un erro ao cargar o modelo do dialogo: {error}",
"No tags selected for deletion." => "Non se seleccionaron etiquetas para borrado.",
"Updating {productName} to version {version}, this may take a while." => "Actualizando {productName} a versión {version}, isto pode levar un anaco.",
-"Please reload the page." => "Volva a cargar a páxina.",
+"Please reload the page." => "Volva cargar a páxina.",
"The update was unsuccessful." => "A actualización foi satisfactoria.",
"The update was successful. Redirecting you to ownCloud now." => "A actualización realizouse correctamente. Redirixíndoo agora á ownCloud.",
"%s password reset" => "Restabelecer o contrasinal %s",
@@ -158,13 +158,15 @@ $TRANSLATIONS = array(
"Storage & database" => "Almacenamento e base de datos",
"Data folder" => "Cartafol de datos",
"Configure the database" => "Configurar a base de datos",
+"Only %s is available." => "Só está dispoñíbel %s.",
"Database user" => "Usuario da base de datos",
"Database password" => "Contrasinal da base de datos",
"Database name" => "Nome da base de datos",
"Database tablespace" => "Táboa de espazos da base de datos",
"Database host" => "Servidor da base de datos",
+"SQLite will be used as database. For larger installations we recommend to change this." => "Empregarase SQLite como base de datos. Para instalacións máis grandes recomendámoslle que cambie isto.",
"Finish setup" => "Rematar a configuración",
-"Finishing …" => "Rematado ...",
+"Finishing …" => "Rematando ...",
"This application requires JavaScript to be enabled for correct operation. Please <a href=\"http://enable-javascript.com/\" target=\"_blank\">enable JavaScript</a> and re-load this interface." => "Este aplicativo require que o JavaScript estea activado para unha operativa correcta. <a href=\"http://enable-javascript.com/\" target=\"_blank\">Active o JavaScript</a> e volva a cargar a interface.",
"%s is available. Get more information on how to update." => "%s está dispoñíbel. Obteña máis información sobre como actualizar.",
"Log out" => "Desconectar",
diff --git a/core/l10n/it.php b/core/l10n/it.php
index 3aa35741d49..7c5478dff07 100644
--- a/core/l10n/it.php
+++ b/core/l10n/it.php
@@ -5,6 +5,7 @@ $TRANSLATIONS = array(
"Turned on maintenance mode" => "Modalità di manutenzione attivata",
"Turned off maintenance mode" => "Modalità di manutenzione disattivata",
"Updated database" => "Database aggiornato",
+"Disabled incompatible apps: %s" => "Applicazione incompatibili disabilitate: %s",
"No image or file provided" => "Non è stata fornita alcun immagine o file",
"Unknown filetype" => "Tipo di file sconosciuto",
"Invalid image" => "Immagine non valida",
@@ -108,7 +109,9 @@ $TRANSLATIONS = array(
"Edit tags" => "Modifica etichette",
"Error loading dialog template: {error}" => "Errore durante il caricamento del modello di finestra: {error}",
"No tags selected for deletion." => "Nessuna etichetta selezionata per l'eliminazione.",
+"Updating {productName} to version {version}, this may take a while." => "Aggiornamento di {productName} alla versione {version}, potrebbe richiedere del tempo.",
"Please reload the page." => "Ricarica la pagina.",
+"The update was unsuccessful." => "L'aggiornamento non è riuscito.",
"The update was successful. Redirecting you to ownCloud now." => "L'aggiornamento è stato effettuato correttamente. Stai per essere reindirizzato a ownCloud.",
"%s password reset" => "Ripristino password di %s",
"A problem has occurred whilst sending the email, please contact your administrator." => "Si è verificato un problema durante l'invio della email, contatta il tuo amministratore.",
@@ -155,11 +158,13 @@ $TRANSLATIONS = array(
"Storage & database" => "Archiviazione e database",
"Data folder" => "Cartella dati",
"Configure the database" => "Configura il database",
+"Only %s is available." => "È disponibile solo %s.",
"Database user" => "Utente del database",
"Database password" => "Password del database",
"Database name" => "Nome del database",
"Database tablespace" => "Spazio delle tabelle del database",
"Database host" => "Host del database",
+"SQLite will be used as database. For larger installations we recommend to change this." => "SQLite sarà utilizzato come database. Per installazioni più grandi consigliamo di cambiarlo.",
"Finish setup" => "Termina la configurazione",
"Finishing …" => "Completamento...",
"This application requires JavaScript to be enabled for correct operation. Please <a href=\"http://enable-javascript.com/\" target=\"_blank\">enable JavaScript</a> and re-load this interface." => "L'applicazione richiede che JavaScript sia abilitato per un corretto funzionamento. <a href=\"http://enable-javascript.com/\" target=\"_blank\">Abilita JavaScript</a> e ricarica questa interfaccia.",
@@ -179,6 +184,11 @@ $TRANSLATIONS = array(
"This means only administrators can use the instance." => "Ciò significa che solo gli amministratori possono utilizzare l'istanza.",
"Contact your system administrator if this message persists or appeared unexpectedly." => "Contatta il tuo amministratore di sistema se questo messaggio persiste o appare inaspettatamente.",
"Thank you for your patience." => "Grazie per la pazienza.",
+"%s will be updated to version %s." => "%s sarà aggiornato alla versione %s.",
+"The following apps will be disabled:" => "Le seguenti applicazioni saranno disabilitate:",
+"The theme %s has been disabled." => "Il tema %s è stato disabilitato.",
+"Please make sure that the database, the config folder and the data folder have been backed up before proceeding." => "Assicurati di aver creato una copia di sicurezza del database, della cartella config e della cartella data prima di procedere. ",
+"Start update" => "Avvia l'aggiornamento",
"This ownCloud instance is currently being updated, which may take a while." => "Questa istanza di ownCloud è in fase di aggiornamento, potrebbe richiedere del tempo.",
"Please reload this page after a short time to continue using ownCloud." => "Ricarica questa pagina per poter continuare ad usare ownCloud."
);
diff --git a/core/l10n/ja.php b/core/l10n/ja.php
index 7c2c40dc509..fc87790f289 100644
--- a/core/l10n/ja.php
+++ b/core/l10n/ja.php
@@ -55,7 +55,7 @@ $TRANSLATIONS = array(
"If you select both versions, the copied file will have a number added to its name." => "両方のバージョンを選択した場合は、ファイル名の後ろに数字を追加したファイルのコピーを作成します。",
"Cancel" => "キャンセル",
"Continue" => "続ける",
-"(all selected)" => "(全て選択)",
+"(all selected)" => "(すべて選択)",
"({count} selected)" => "({count} 選択)",
"Error loading file exists template" => "既存ファイルのテンプレートの読み込みエラー",
"Very weak password" => "非常に弱いパスワード",
@@ -109,6 +109,7 @@ $TRANSLATIONS = array(
"Error loading dialog template: {error}" => "メッセージテンプレートの読み込みエラー: {error}",
"No tags selected for deletion." => "削除するタグが選択されていません。",
"Please reload the page." => "ページをリロードしてください。",
+"The update was unsuccessful." => "アップデートに失敗しました。",
"The update was successful. Redirecting you to ownCloud now." => "アップデートに成功しました。今すぐownCloudにリダイレクトします。",
"%s password reset" => "%s パスワードリセット",
"A problem has occurred whilst sending the email, please contact your administrator." => "メールの送信中に問題が発生しました。管理者に問い合わせください。",
@@ -155,6 +156,7 @@ $TRANSLATIONS = array(
"Storage & database" => "ストレージとデータベース",
"Data folder" => "データフォルダー",
"Configure the database" => "データベースを設定してください",
+"Only %s is available." => "%s のみ有効です。",
"Database user" => "データベースのユーザー名",
"Database password" => "データベースのパスワード",
"Database name" => "データベース名",
@@ -179,6 +181,8 @@ $TRANSLATIONS = array(
"This means only administrators can use the instance." => "これは、管理者のみがインスタンスを利用できることを意味しています。",
"Contact your system administrator if this message persists or appeared unexpectedly." => "このメッセージが引き続きもしくは予期せず現れる場合は、システム管理者に連絡してください。",
"Thank you for your patience." => "しばらくお待ちください。",
+"%s will be updated to version %s." => "%s はバージョン %s にアップデートされました。",
+"Start update" => "アップデートを開始",
"This ownCloud instance is currently being updated, which may take a while." => "この ownCloud インスタンスは現在アップデート中のため、しばらく時間がかかります。",
"Please reload this page after a short time to continue using ownCloud." => "ownCloud を続けて利用するには、しばらくした後でページをリロードしてください。"
);
diff --git a/core/l10n/tr.php b/core/l10n/tr.php
index c13420e87c0..cf94b52dec0 100644
--- a/core/l10n/tr.php
+++ b/core/l10n/tr.php
@@ -158,11 +158,13 @@ $TRANSLATIONS = array(
"Storage & database" => "Depolama ve veritabanı",
"Data folder" => "Veri klasörü",
"Configure the database" => "Veritabanını yapılandır",
+"Only %s is available." => "Sadece %s kullanılabilir.",
"Database user" => "Veritabanı kullanıcı adı",
"Database password" => "Veritabanı parolası",
"Database name" => "Veritabanı adı",
"Database tablespace" => "Veritabanı tablo alanı",
"Database host" => "Veritabanı sunucusu",
+"SQLite will be used as database. For larger installations we recommend to change this." => "Veritabanı olarak SQLite kullanılacak. Daha büyük kurulumlar için bunu değiştirmenizi öneririz.",
"Finish setup" => "Kurulumu tamamla",
"Finishing …" => "Tamamlanıyor ...",
"This application requires JavaScript to be enabled for correct operation. Please <a href=\"http://enable-javascript.com/\" target=\"_blank\">enable JavaScript</a> and re-load this interface." => "Uygulama, doğru çalışabilmesi için JavaScript'in etkinleştirilmesini gerektiriyor. Lütfen <a href=\"http://enable-javascript.com/\" target=\"_blank\">JavaScript'i etkinleştirin</a> ve bu arayüzü yeniden yükleyin.",