Just to avoid users from trying this with a to new (untested) php version
* Moved the check logic to 1 place
* All directly callable scripts just require this on top
* exit hard (-1) so we know scripts won't continue
* Return status 500 so no sync clients will try fancy stuff
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Add a "searchPrincipals" function to the NC principal backend.
Fix the "findByUri" function to respect the prefixPath.
Signed-off-by: Christoph Seitz <christoph.seitz@posteo.de>
Case: email is set to null, but the avatar is set. In the old case the
email would set $emptyValue but $noImage would still be false. This we
would set the empty string as email.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
When a constructor is spied using Sinon it is wrapped by a proxy
function, which calls the original constructor when invoked. When "new
Foo()" is executed a "Foo" object is created, "Foo" is invoked with the
object as "this", and the object is returned as the result of the whole
"new" expression.
Before Sinon 4.1.3 the proxy called the original constructor directly
using the "thisValue" of the spied call; "thisValue" was the object
created by the "new" operator that called the proxy. The proxy assigned
"thisValue" to "returnValue", so it was also the value returned by the
proxy and, in turn, the value returned by the whole "new" expression.
Since Sinon 4.1.3 (see pull request 1626) the proxy calls the original
constructor using "new" instead of directly. The "thisValue" created by
the outermost "new" (the one that called the proxy) is no longer used by
the original constructor; the internal "new" creates a new object, which
is the one passed to the original constructor and returned by the
internal "new" expression. This object is also the value returned by the
proxy ("returnValue") and, in turn, the value returned by the whole
outermost "new" expression.
Thus, now "returnValue" should be used instead of "thisValue" to get the
object created by the spied constructor.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Fixes#7158. Adds a # on the color if missing.
Increased maxlength, added hash:true for jscolor, and adding a # if not present on the change event.
Since the input element now allows a hex code, changed values to hexcode.
In addition, added a function to get RGB array from hex or rgb values. Calling it in both methods and using it to perform comparison.
Also changed the way we were determining whether the jscolor component had loaded.
Changed the control to use data-jscolor rather than defining opts in the class.
Signed-off-by: Abijeet <abijeetpatro@gmail.com>
When the autocomplete popover is shown the At.js plugin listens on the
message input field for key down events, and when Enter is pressed it
adds the selected item to the message. However, as "_onTypeComment" also
handles key down events for the message input field, when Enter was
pressed the comment was submitted and At.js had no chance to add the
item before that happened. Now when Enter is pressed and the
autocomplete popover is shown the comment is not submitted, and thus
At.js adds the selected item to the message as expected.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
We have to double check. Since getting the info of the root returns a
generic entry. But actually the stroage is not available. Else we get
very weird sync and web behavior.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
When finding ".message" elements on "view.$el" the message area for the
new comment form and all the comments were matched. Now the selector was
restricted to match only the message area for the new comment form.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
* l10n in Nextcloud works by extracting the values only passed on their location and not based on the first parameter
* we need to change the translation pool from `core` to `settings` then
* fixes#7345
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
Even if no avatar is set we should just generate the image. This to not
duplicate the code on all the clients. And only server images from the
avtar endpoint.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Otherwise its a normal string[] with the user ids, in that
case the array_merge did it's job just fine, apart from it
not being deduplicated.
The array+array is only needed when the user id is the key,
so integer only user ids are kept as they are instead of being
reindexed.
Regression from 3820d6883d
Signed-off-by: Joas Schilling <coding@schilljs.com>
Although #7256 was merged cleanly some of the changes really conflicted
with those introduced by the last commit of #7251, and this broke the
appearance of the author row of comments. This commit fixes those silent
conflicts and restores the appearance of the author row.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
In PHP 7.X hexadecimal notation support was removed from "is_numeric",
so "sanitizeMtime" directly rejected those values; in PHP 5.X, on the
other hand, "sanitizeMtime" returned 0 when a string with hexadecimal
notation was given (as it was the behaviour of "intval"). To provide a
consistent behaviour between PHP versions, and given that it does not
make much sense to send X-OC-MTime in hexadecimal notation, now
X-OC-MTime is always rejected if given as a string with hexadecimal
notation.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Directly calling "header" in the PHPUnit process causes the "Cannot
modify header information - headers already sent by" error to be thrown.
Instead of running the test in a separate process, which is slower, this
commit wraps the call to "header" in a method that can be mocked in the
tests.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
This commit is based on the commits from pull request 28066 (included in
018d45cad97e0) from ownCloud by Artur Neumann and Phil Davis.
Unit tests are currently run only on systems that support negative
mtimes, so no special handling of negative values was included in the
tests to keep the test code more manageable.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
This will be used in a following commit to test how the X-OC-MTime
header is handled.
This commit is based on the "make File::put() more testable" commit
(included in 018d45cad97e0) from ownCloud by Artur Neumann.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
This commit extends the changes introduced in pull request #3793 also to
chunked uploads.
The "sanitizeMTime" method name is the same used in the equivalent pull
request to this one from ownCloud (28066).
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
This adds back the support for `\OCP\Share\IShare::getMailSend`, one example is creating bulk shares via API which where previously blocking due to the share notification emails.
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
The contacts menu is not shown for avatars and user names in the author
row if they represent the current user. For consistency, and because the
contacts menu provides no value when shown for the current user, this
commit also disables the contacts menu for mentions to the current user.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
The contacts menu does not provide too much value for users mentioned in
a message being composed, so it is now disabled in this case.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
When it was on an author row the cursor was shown as a pointer, even if
clicking on the author row itself does nothing. On the other hand,
avatars used the default cursor, even if clicking on them either shows
the contacts menu (in the case of the author row, only when the avatar
is for a different user than the current one) or inserts a mention (for
avatars shown in the list of suggested mentions), depending on the case.
Now, the author row uses the default cursor, and avatars (and their
associated user name) use a pointer cursor if clicking on them will
trigger an action (either showing the contacts menu or inserting a
mention).
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
The code tried to find the apps with updates and thus was called for every available app. This caused to get the full appstore content as often as apps are available. The appstore request itself was cached nevertheless in an appdata dir, but with an object storage this is still a lot of round trips to read this cached result. Thus the instantiated list is now cached in a static variable (because it's a static method call).
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
When a comment was being deleted the submit working icon was shown. Now
the submit working icon is kept hidden in that case and a specific
delete working icon, which is shown at the same position as the delete
icon, is used instead.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
The submit confirm icon is shown as the background image of an
absolutely positioned input element, so the CSS rules for the submit
working icon were modified to match those of the submit confirm icon.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
When a comment is being deleted the "disabled" class is added to the
comment div, which causes it to look disabled. However, the input
elements and the content editable div were not truly disabled, and thus
it was still possible to interact with them. This commit ensures that
they are properly disabled while the comment is being deleted.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
fileInfo is composed of data from sharing, however additional data is
pulled when sidebar opens, e.g. the size. Then, existing data is
overwritten by data from the other source (files). The data points that
would be lost are not dirty however and still used, so we keep them.
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
Since the change of the text area to a content editable div the input
field was no longer disabled while a new comment was being sent. It was
caused by still trying to disable the div using the "disabled" property,
which works only on real input fields; when using a content editable div
the way to disable it is by setting "contenteditable" to "false".
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
The contacts menu was being shown as "inline-block", which caused the
top of the menu to be aligned to the top of the author row.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
the contacts popovermenu is also present and is being replaces, ending
up in two permission popupmenus with checkboxes duplicating the id,
breaking further permission changes.
plus, fixing a selector
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
This should allow better reports as often the app id is passed
as context. While this is not used right now, I'd like to have this
for NC13 as adding it later will break the interface for existing apps
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
This adds a crash reporter registry, which is meant for third party apps
to hook into the error logging/reporting chain. This way, external tools
like Sentry can be used to track and aggregate system crashes.
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
In case of error, instead of a generic error message, an upload will
display whichever message is returned in the Sabre Exception, if
applicable.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Mocked getAppValue to deliver a value of 1800 when updateAttributesInterval is requested by needsRefresh.
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
Makes the time between needsRefresh configurable via app config option updateAttribuesInterval.
Default is still 86400 secons which is one day.
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
This seems to be the only way to have the same helpers used between
tests in a manner that works for both standalone phpunit and
autotest.sh.
Signed-off-by: Kyle Fazzari <kyrofa@ubuntu.com>
Fixed transition bug of grouptop
Fix password submit and error handling
Fixed multiple form send
Fix submit loading state
fix login form sending state
Replace loader type
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
Currently, if the app path includes a symlink, the calculated webDir
will be incorrect when generating CSS and URLs will be pointing to the
wrong place, breaking CSS.
Use realpath when retrieving app path, and these issues go away.
Fix#6028
Signed-off-by: Kyle Fazzari <kyrofa@ubuntu.com>
core/js/setup.js has logic to show the spinner upon form submission, but
ever since v12 was released the spinner was never hidden in the first
place.
Modify core/css/guest.css to hide it, which allows core/js/setup.js to
do its thing.
Fix#5532
Signed-off-by: Kyle Fazzari <kyrofa@ubuntu.com>
This commit adds chunked uploads in the Web UI (for authenticated users,
but not for public uploads). To do that the server endpoint used by the
uploader is changed from WebDAV v1 to WebDAV v2. The chunking itself is
done automatically by the jQuery-File-Upload plugin when the
"maxChunkSize" parameter is set; in "fileuploadchunksend" the request is
adjusted to adapt the behaviour of the plugin to the one expected by
"uploads/" in WebDAV v2.
The chunk size to be used by the Web UI can be set in the
"max_chunk_size" parameter of the Files app configuration. By default it
is set to 10MiB.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Now that the permissions returned by the server specify whether a file
is readable or not the frontend no longer needs to assume that every
file is readable.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Now that these tests are executed they are revealed to be partially
obsolete; they were fixed to match the current parsing behaviour.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
The first parameter of "apply" must be the object to act as "this", and
the Promise callback gets the parameters provided in the "resolve".
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
The Details and the Favorite actions do not require any permission on
the files to be performed.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Now a file gets its directory permissions only if it contained no
permissions (they were undefined or null), but not if its permissions
were set to "NONE".
Besides that, now file actions that do not require any permission on the
file to be performed can be used on files that have no permissions.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Until now it was safe to assume that every file was readable by its
owner, so there was no need to return whether the file was readable or
not. However, with the introduction of end to end encryption that is no
longer the case, and it is now necessary to explicitly provide that
information.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
When several files are selected and one of them can not be deleted the
"Delete" file action is not shown in the summary. This commit extends
that behaviour too to the other file actions in the summary ("Move or
copy" and "Download"), so now an action is shown in the summary only if
it can be executed on all the currently selected files.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Fixes#6967
This allows clients to check for Walled Garden connections.
The endpoint just responds with a 204 (which is very unlikely with such
a connection)
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Some providers had issues when using the preview link (since it was
double encoded).
Now we actually serve the max size preview so it looks better
The image isn't cropped anymore so supporting platforms can just embed
the whole image.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
background: we have a flat hierarchy of comments, not a tree. therefore we
can also remove again the unnecessary additions.
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
Seeking is not needed if the $from is 0, because then the pointer is already at the correct position. Additionally another fallback is added, that if the fseek fails it just uses an fread to skip the beginning of the file until it is at the correct position. This skipping is done with a chunked fread.
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
Object storage instances always fall back to the content based mimetype detection, because the file name for object storage was always random due to the fact that it was temporarily storage in a generated temp file. This patch adds a check before that to make sure to use the original file name for this purpose and also remove possible other extensions like the versioning or part file extension.
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
There is no need to cache routes distributed. It even has the downside
that the router might return different routes then the ones in the local
routes.php files.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
When sharing a folder via Facebook, WhatsApp or any other platform that makes use of OpenGraph, the display title was "Nextcloud - a safe home for all your data" and the description was the actual name of the folder. This should not be the case, so the display title has been changed to display the folder name and the description now displays the former OpenGraph title.
Signed-off-by: Sascha Sambale <mastixmc@gmail.com>
Fixing whitespaces and empty line.
Fixes#6821
This makes sure that (supported) browsers will not prefill the password
field if a user has a password saved for that nextcloud.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
App code will not be executable if the app is not enabled, because the autoloader refuses to load that class.
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
* introduce a Controller for requests
* introduce result sorting mechanism
* extend Comments to retrieve commentors (actors) in a tree
* add commenters sorter
* add share recipients sorter
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
Firefox and Chrome drivers for Selenium refuse to click on an element if
the point to be clicked is covered by a different element, throwing an
UnknownError exception with message "Element is not clickable at point
({x}, {y}). Other element would receive the click: {element}". Although
in general that would be a legit error (as the user would not be able to
click on the element) due to a bad layout, sometimes this can be just a
temporal issue caused by an animation, in which case there would be no
problem once the animation finished and the elements are all in their
final location.
Unfortunately, automatically handling those situations in which the
problem is caused by an animation by just retrying a few times if the
element to be clicked is covered before giving up would probably cause
confusion instead of easing test writing.
The reason is that if the center of the element is covered by another
one the Firefox driver for Selenium tries to click on the corners of the
element instead. The problem is that the coordinates used for the click
are integer values, but Firefox has sub-pixel accuracy, so sometimes
(depending on which corner is not covered and whether the left, top,
width or height properties of the element to be clicked have a decimal
component or not) the clicks silently land on a different HTML element
(and that is with squared borders; with round borders they always land
on a different HTML element. That was partially addressed for Selenium
3.0 by clicking first on the edges, but it would still fail if the
middle point of the edges is covered but not the corners).
It is not possible to fix or even detect all that from the tests (except
maybe with some extreme hacks involving accessing private PHP members
from Mink and bypassing or replacing the standard JavaScript executed by
the Firefox driver with a custom implementation...), so it is not
possible to ensure that clicks during an animation will land on the
right element (in fact it is not possible even on static elements,
although except when the layout is wrong there should be no problem);
sometimes retrying a click when the element is covered would solve the
problem, sometimes it would cause a different element to be clicked (and
sometimes there would be even no retry, as the first click would have
silently landed on a different element than the expected one).
Therefore, a different approach must be used. Instead of trying to
automatically handle clicks during animations the tests must be written
being aware of the problem and thus waiting somehow for the animations
that can cause a problem to end before performing the clicks.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Now that the checkbox was moved to its own column clicking on the
thumbnail should behave like clicking on the file name. To achieve this
the left position was replaced with a padding, so the element is kept at
the same place while extending its clickable area to cover the
thumbnail.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
The selection column is not only a visual column, but also a real column
of the file list table. Unlike other columns whose width is reduced in
space constrained screens the selection column must stay the same so the
tapping area is large enough to be easily usable
The selection column does not appear in the search results table, so its
contents have to be explicitly aligned with those of the main table
based on whether the main table has a selection column or not (using the
"has-selection" CSS class in the same way as the "has-favorite" CSS
class was being used when there was a column for favorite actions).
In the tests the ":visible" selector can no longer be used. That
selector matches elements with a width or height that is greater than
zero, but the dimensions calculated in the unit tests are not reliable;
the width of the link was zero before these changes, and now moving the
checkbox to its own column causes the height of the link to become zero
too, so it no longer matches the ":visible" selector even if it is not
hidden. As hidding and showing the link is based on its "display" CSS
property its value is the one checked now.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
The "has-favorites" CSS class is no longer used after moving the
favorite mark to the top right corner of the thumbnail, so there is no
need to add it to the table.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
The favorite icon was shown on its own "column" (not a real column in
the table, but a visual column achieved through margins and left
positions). Now the icon was moved to the top right corner of the file
thumbnail, and the thumbnail and file name were moved to the left to
fill the space left by the "column".
To keep the markup in line with its visual representation (and to ease
the placing through CSS), the favorite mark is no longer prepended to
the row, but appended to the thumbnail instead. In the same way, the
thumbnail is no longer appended to the checkbox label, but to the link
with the name of the file instead (although the checkbox is still shown
at the bottom right corner of the thumbnail, and clicking on the
thumbnail still selects the file). In order to show the "busy" state on
a file the "icon-loading-small" CSS class is set to the parent element
of the thumbnail, so the thumbnail is also wrapped now by another div
with the same size and position as the label.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
The checkbox is not shown always with full opacity, though, in order to
reduce the visual noise (specially later, once the checkbox is moved to
its own column).
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
This is a preparatory step for a following commit in which the position
of the favorite icon and the checkbox will be swapped; in that new
design the favorite icon is no longer expected to be an action but just
a simple mark on whether the file is favorited or not (the action is
expected to be triggered then only from the file actions menu).
The favorite icon is now fully shown or completely hidden depending on
whether the file is favorited or not. As the icon is just informative
but no longer an action now it does not change when hovered or focus. In
the same way, the alternative text when the file is not favorited now it
is not "Favorite" (an action) but "Not favorited" instead.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Currently a file can be favorited either through the inline action or
through the file actions menu. However, the inline action will be
removed in a following commit and then it will be possible to do it only
through the file actions menu.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
The new FileAction for the menu is essentially the same as the old
inline FileAction, except for the rendering; in this case the FileAction
is shown in the menu in a standard way, so there is no need to provide a
custom renderer (although the menu entry text and icon change depending
on whether the file is currently a favorite or not, but that can be done
just with displayName and iconClass functions).
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Icon class function properties make possible to render a different icon
class depending on the context of the file action.
Inline file actions had support for them already and called them passing
the file name and context of the file action as parameters. Due to this
the FileActionsMenu passes those parameters too to icon class functions
instead of just the context like done for display name functions.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
This will allow apps to also have a proper classmap and authorative
autoloader.
Currently if a file: <appdir>/composer/autoload.php exists we will use
it. Else we keep the current behavior.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
IE11 triggers an 'input' event whenever an input is focussed
or loses focus. Thus this causes an endless loading loop as soon
as the view is re-rendered. To prevent this, this remembers the
previous search term and ignores events where the term has not
changed.
Fixes https://github.com/nextcloud/server/issues/5281
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
discovered a bug in the integration test which lead to following a
different code path and giving a false-positive success feedback.
Also listens now to the evendispatcher instead of old hook system
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
however it does not dedupe (appears too complex/expensive while we don't
havve the issue currently)
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
There are currently no "img" or "span" descendants of "td.quota"
elements, so those rules can be removed.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
The quota is set through a dropdown, and this dropdown is only shown
when clicking on the select element itself. Therefore, the cell should
not show a pointer when hovering on it but outside the select element.
Note that although the removed "&.quota" selector also set a "width"
declaration that declaration was later overriden by
"#userlist td.quota", so it was not needed.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Clicking anywhere on the cell shows the input field to set the email
address, so the cursor is set as a pointer not only on the text and
icon, but on the whole cell as well (like done for the full name and the
password).
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
If there is an exception in the template handling then a white page is shown.
This improves the handling of this and shows text only about the internal
error.
To test this just setup redis as cache and then disable the php-redis module.
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
On a remembered login session, we create a new session token
in the database with the values of the old one. As we actually
don't need the old session token anymore, we can delete it right
away.
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
The seed of the image placeholder is needed to generate the background
color of the image, but as the background color is later overriden any
seed could be used. When no text is explicitly given the seed is used as
text too, so there is no need to pass the user ID and simply using "?"
as seed is enough.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
When calling the jQuery avatar plugin with a user that did not exist
(that is, users for which "/avatar/{user}/{size}" return a JSON response
with an empty "displayname" value) "?" on a grey background was shown.
However, if the jQuery avatar plugin was called with an undefined
JavaScript value then "?" was shown on a bluish background. This commit
unifies both cases to use the grey background.
The unit tests were also modified to ensure that the grey background is
used in both cases.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
If extraction fails we should not continue the installation/update
process as the info.xml cannot be loaded and an unrelated error
occurs.
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
Basically we did in almost all cases did a query to much.
This resulted in an extra query for each share type.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
This adjusts the contacts menu to also support searching by email address which is relevant in scenarios where no UID is known such as LDAP, etc.
Furthermore, if `shareapi_allow_share_dialog_user_enumeration` is disabled only results are shown that match the full user ID or email address.
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
- Groups, which are excluded from sharing should not see local users at all
- If sharing is restricted to users own groups, he should only see contacts from his groups:
Signed-off-by: Tobia De Koninck <tobia@ledfan.be>
This fixes an issue with custom filesystem themes that can define title, name
and entity differently, but the theming app was only using the name as fallback
(see #5374).
Signed-off-by: Joachim Bauch <bauch@struktur.de>
The current implementation breaks installations with symlinks to
directories inside the webroot (i.E. apps).
With this change both variants, directory and symlinks, will be detected
correctly.
Fixes: #6028
Signed-off-by: Axel Helmert <axel.helmert@luka.de>
The CSP nonce is based on the CSRF token. This token does not change,
unless you log in (or out). In case of the session data being lost,
e.g. because php gets rid of old sessions, a new CSRF token is gen-
erated. While this is fine in theory, it actually caused some annoying
problems where the browser restored a tab and Nextcloud js was blocked
due to an outdated nonce.
The main problem here is that, while processing the request, we write
out security headers relatively early. At that point the CSRF token
is known/generated and transformed into a CSP nonce. During this request,
however, we also log the user in because the session information was
lost. At that point we also refresh the CSRF token, which eventually
causes the browser to block any scripts as the nonce in the header
does not match the one which is used to include scripts.
This patch adds a flag to indicate whether the CSRF token should be
refreshed or not. It is assumed that refreshing is only necessary
if we want to re-generate the session id too. To my knowledge, this
case only happens on fresh logins, not when we recover from a deleted
session file.
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
Keep mount point visible and also ext storage config visible when
dealing with configs relating to storage backends or auth mechanisms
that were provided by an app that is currently disabled.
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
- Move to SCSS so we use theming color values
- Apply tab style from files sidebar to ui-tabs (e.g. in user_ldap)
- Move select style to the jquery-ui-fixes file and make those only apply to ui-autocomplete elements
Signed-off-by: Julius Härtl <jus@bitgrid.net>
homesToKill was not set in runtime since some changes some place else. It
required deleteUser() to be called first. The method acts independent of it
now.
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
* Store the auth state in the session so we don't have to query it every
time.
* Added some tests
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
The helper funtion did not handle the response correctly and basically
only returned the last share with tags.
This is a simple rewrite. That is still understandable. Loops maybe more
than strictly required. But preformance is not the issue here.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
If the estimated upload time is bigger than 4 hours it shows the text
"Uploading..." because the time then doesn't give any good hint to the
user anyways.
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
```
1) OCA\FederatedFileSharing\Tests\Settings\AdminTest::testGetForm with data set #0 (true)
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead
2) OCA\FederatedFileSharing\Tests\Settings\AdminTest::testGetForm with data set #1 (false)
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead
3) OCA\FederatedFileSharing\Tests\Settings\AdminTest::testGetSection
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead
4) OCA\FederatedFileSharing\Tests\Settings\AdminTest::testGetPriority
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead
```
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
As "singleFileUpload" is used the "add" callback (which in turn calls
"addFileToUpload") will always be called with a single file. Therefore
there is no need to iterate over the files (and it is not done in the
other callbacks either, so this aligns the code with the rest of the
callbacks).
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
There is no need to store the file name, as the "data" parameter given to
all the callbacks provides a "files" attribute with all the files that
the callback refers to; moreover, it will always be a single file due to
the use of "singleFileUploads" in the jQuery File Upload plugin.
This also fixes the loading icon not disappearing when several files were
uploaded at once. "singleFileUploads" causes the "add" callback to be
called once for each file to be uploaded, so "fileName" was overwritten
with the name of each new file in the upload set; when "fileName" was
later used in the "done" callback to find the file in the list whose
loading icon replace with the MIME type icon "fileName" always had the
name of the last file, and thus its icon was the only one replaced.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
The "done" and "fail" callbacks both update the item for the uploaded
file using "setFileIcon". "setFileIcon" updates the contents of the
"<li>" element for the file, but the "fail" callback was giving
"setFileIcon" an element generated by the template, so the resulting
HTML contained a "<li>" element nested in another "<li>" element.
However, generating the HTML is better done through a template, so the
template now receives the icon to show in order to be used by a
successful upload and a failed one, and "setFileIcon" was changed to
"updateFileItem".
Note that the mimeTypeUrl does no longer need to be escaped, as
Handlebars templates escape the needed characters automatically.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
When the "fail" callback is called, "errorThrown" is a property of the
data object instead of a parameter.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Any `\OCP\Authentication\IApacheBackend` previously had to implement `getLogoutAttribute` which returns a string.
This string is directly injected into the logout `<a>` tag, so returning something like `href="foo"` would result
in `<a href="foo">`.
This is rather error prone and also in Nextcloud 12 broken as the logout entry has been moved with
054e161eb5 inside the navigation manager where one cannot simply inject attributes.
Thus this feature is broken in Nextcloud 12 which effectively leads to the bug described at nextcloud/user_saml#112,
people cannot logout anymore when using SAML using SLO. Basically in case of SAML you have a SLO url which redirects
you to the IdP and properly logs you out there as well.
Instead of monkey patching the Navigation manager I decided to instead change `\OCP\Authentication\IApacheBackend` to
use `\OCP\Authentication\IApacheBackend::getLogoutUrl` instead where it can return a string with the appropriate logout
URL. Since this functionality is only prominently used in the SAML plugin. Any custom app would need a small change but
I'm not aware of any and there's simply no way to fix this properly otherwise.
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
PHP's json_encode only accept proper UTF-8 strings, loop over all
elements to ensure that they are properly UTF-8 compliant or convert
them manually.
Without this somebody passing an invalid User Agent may make json_encode
return false which will get logged as empty newline.
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
`\OC\User\Database::createUser` can throw a PHP exception in case the UID is longer than
permitted in the database. This is against it's PHPDocs and we should cast this to `false`,
so that the regular error handling triggers in.
The easiest way to reproduce is on MySQL:
1. Create user `aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` in admin panel
2. Create user `aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` in admin panel again
3. See SQL exception as error message
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
There was a setting to disable the last execution of cron. There is no known
problem with this write access and it was also questioned when this feature
was build in https://github.com/owncloud/core/pull/7689#issuecomment-38264707
Recently there was also a bug report about a non-visible last cron execution
(#6088) - let's better remove this.
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
If you set the permissions on a public share the SHARE permission makes
no sense. So instead of throwing a warning. Just filter out the share
permission.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
If the share input field is unfocused, the autocomplete list is closed. Once
the field was focused again it was not properly opened again. This adds a
trigger to redo the search and show the results again.
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
Pull request #5429 made cached SCSS files depend on a hash of the base
URL, so the "/css/core/server.css" file does no longer exist; as the
file can not be loaded the "Loading preview" message is never removed
and the "Saved" message is never shown.
As it now depends on the hash of the base URL the file to be reloaded
can no longer be hardcoded, so the full URL to the "server.css" file
that has to be reloaded (if any) is now got from the DataResponse
provided by the controller.
Fixes#5975
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
This is a preparatory step for a following change in which
reloadStylesheets will have to be able to receive absolute URLs.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Pull request #5429 made cached SCSS files depend on a hash of the base
URL, so the "/css/core/server.css" file does no longer exist. The
"server.css" URL must be known by the Theming app in order to update the
stylesheets when previewing the changes to the theme, so the
DataResponse from the controller now provides the full URL to the
"server.css" file that has to be reloaded (if any).
The "server.css" URL provided by the response will be taken into account
by the JavaScript front-end in a following commit.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
This is a preparatory step for a following commit in which the
properties present in the response will change depending on whether the
request was successful or not.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
In some cases the acceptance tests have to explicitly wait for something
to happen without using the "find" method from the actor; in those cases
the timeout multiplier needs to be taken into account too, so the test
cases must be able to retrieve it from the actor.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
If we have a jailed storage we must also fix the internal path on copy.
Else we pass in the wrong path.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Pull request #5969 fixed the vertical alignment of loading icon and
status message in Theming app, but in doing so it broke the loading icon
inside the upload button.
When an image is being uploaded the upload icon is replaced by a loading
icon, so the loading icon and the upload icon have to share their CSS
rules, but only in that specific case.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Visually, the icon positioned on the login button is part of the login
button, so clicking on the icon should be the same as clicking on the
button. As the icon is a different element this commit sets the icon to
ignore mouse events so they are received and handled by the login button
instead.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
The pure CSS loading icon uses an ::after pseudo-element, and thus it
can only be used on container elements; the input element is not a
container element, so when the class "icon-loading-small" is set on an
input element it falls back to a loading icon GIF.
This commit modifies the markup of the login button to add a div element
that holds the confirm icon and the loading icon (depending on the
case). In order to position the icon in the same place as before the
input and the icon are both wrapped by another div making possible to
set the absolute position of the icon relative to the input.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
As both elements are inline/inline-block and belong to the same line
they can be aligned vertically using "vertical-align: middle".
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
The loading icon is used in a totally different way than the upload icon
and thus it should not share its CSS rules.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
The removed rules were either always overriden by other rules or never
used due to not matching any element.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Just fetch the first 10kb. This should be more than enough in 99% of the
cases. And avoid downloading a 10mb text file just to display a tiny
portion.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
* Now listeners for those events get proper share objects.
* Legacy hooks still fired
* Updated tests
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
This is broken and will never work as the phan CI step pointed out.
Pro-tip of the day: Check why CI fails before merging 🙈
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
Sometimes it could be the case that after a channel change the last updated
timestamp is reset, but the check for updates is not yet completed. In this
case the update notification showed "You are up to date" and the date was
"1970-01-01 00:00:00". With this fix the state is properly shown.
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
The private API here doesn't have the backends yet properly initialized, probably another bug but let's go with the easy bug fix here. Next step is to write integration tests and then figure out why changing this to the private API (which it actually calls) doesn't work.
Fixes https://github.com/nextcloud/server/issues/5950
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
This is public API and breaks the middlewares of existing apps. Since this also requires maintaining two different code paths for 12 and 13 I'm at the moment voting for reverting this change.
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
* Inject the timefacotry so we can mock it properly in the tests.
* Extended unit tests to cover the new paths
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
This code is a leftover from the old Shibboleth implementation from ownCloud days, nowadays it causes more issues than it does good (such as https://github.com/nextcloud/user_saml/pull/137). Let's remove it for the future thus.
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
* fix the show password button on the personal page
* before: if the password change failed the show password icon was not shown again
* after: show password icon is visible
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
* Nextcloud is not properly loaded in the standalone version (especially the theming)
* it is already not listed anymore in the Nginx config (see nextcloud/documentation#392)
* the index.php-free version doesn't support this
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
- [x] Highlight for selected date should be bold text.
- [x] Hover highlight for day should be the same as for the selected date.
- [x] Remove hover effect on the week.
- [x] Row for days of the week should indeed stay, but non-bold and at 50% opacity so it doesn't take away the focus.
- [x] Dates of previous and next months a bit lighter.
- [x] Remove marking the weekend blue.
- [x] The box centered below the date field, with triangle in the middle.
Signed-off-by: Marin Treselj <marin@pixelipo.com>
This ensures that only a secure connection to the LDAP server will be used,
if Start TLS has been enabled.
Signed-off-by: Jarkko Lehtoranta <devel@jlranta.com>
* shows the filename and sharer on the public page
* allows the user to identify, that this is a user page and not an official page of the Nextcloud hosting
* remove link on logo that redirects to login (fixes#5720)
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
first, it does not work (at least not everywhere/reliably), second if it
did it was not reset properly. Removes a bit of complexity.
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
check if table was updated successfully and only then send a notification
mail and return "true".
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
This adds a phan plugin which checks for SQL injections on code using our QueryBuilder, while it isn't perfect it should already catch most potential issues.
As always, static analysis will sometimes have false positives and this is also here the case. So in some cases the analyzer just doesn't know if something is potential user input or not, thus I had to add some `@suppress SqlInjectionChecker` in front of those potential injections.
The Phan plugin hasn't the most awesome code but it works and I also added a file with test cases.
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
- This kind of hook signal used to be emitted in the old Share library but it was missing from Share 2.0
Signed-off-by: Pauli Järvinen <pauli.jarvinen@gmail.com>
In order to decide if a recovery key needs to be added we always
need to check the files owner settings and not the settings of
the currently logged in user.
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
in case a user is already logged in on the same server from
which the public link comes from, we need to setup the owners
file system in order to show the preview
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
Running the acceptance tests on Drone relied on the pod-style networking
used by services (service containers were available at 127.0.0.1 from
the build containers). However, in Drone 0.7 service and build
containers must be accessed from each other using their domain name
instead. Thus, acceptance tests had to be disabled on Drone.
Now that the acceptance test system supports setting a different domain
for the Selenium server and for the Nextcloud test server the acceptance
tests can be enabled again on Drone.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
By default "127.0.0.1:4444" is used, so nothing needs to be set when the
acceptance tests and the Selenium server share the same network (like
when called by "run.sh").
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
By default "127.0.0.1" is used, so nothing needs to be set when the
Selenium server and the Nextcloud test server share the same network
(like when called by "run.sh").
Besides passing the domain to the acceptance tests the Nextcloud test
server configuration must be modified to see the given domain as a
trusted domain; otherwise the access would be forbidden.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
The NextcloudTestServerLocalHelper started the PHP built-in web server
for the Nextcloud test server at 127.0.0.1; as the Selenium server has
to access the Nextcloud test server they were forced to share the same
network. Now, the domain at which the PHP built-in web server is started
can be specified when the NextcloudTestServerLocalHelper is created,
which removes the need of sharing the same network, as the Selenium
server now can access the Nextcloud test server at an arbitrary domain.
However, by default "127.0.0.1" is still used if no domain is given.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Previously this container used a very old CentOS version. It has been migrated to Debian Jessie now using the deb.sury.org repositories.
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
- When a file was unshared, the legacy hook pre_unshare fired twice and the hook post_unshare did not fire at all. This was obviously a copy-paste error.
Signed-off-by: Pauli Järvinen <pauli.jarvinen@gmail.com>
Fix service container host name
check current folder
fix redis for integration test
Fix more hostnames
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
The toggleSelect extension for Select2 makes possible to unselect items
in a multi-select dropdown by clicking on them; this behaviour should be
enabled in all the multi-select dropdowns used in the server.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
"select2-toggleselect.js" provides an extension to Select2 that makes
possible to unselect items in a multi-select dropdown by clicking on
them. It seems that its load slipped through when moving things around
in commit 6a470e59356b8c52115fe2790666027f38977604; this commit adds it
to the JavaScript files to be loaded in the same position that it should
have had in that commit (based on how the other declarations were
moved).
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
The app navigation is not exclusive to the Files app but a generic
component used by other apps too, so its locators and steps should be in
its own context.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
The sort comparator checks the "isFavorite" property of the FileInfo
objects to compare. That property is set when the file list is loaded
and the response from the server is parsed, and thus a freshly loaded
file list has the proper sorting for favorite files. However, the
property is not set in other cases, like when the FileInfo objects are
derived from FileInfoModels due to a file being marked as a favorite or
a text editor being closed, which causes the file to be sorted in the
wrong position.
There is no need to add the property in those situations, though; in all
cases the TagsPlugin adds a "tags" array property that contains an
OC.TAG_FAVORITE tag, so that tag can be checked instead of "isFavorite".
Moreover, although "isFavorite" was added by the main "_parseFileInfo"
function it did not really belong there but to the "FileInfoParser" from
the TagsPlugin; however, as that property now is not used anywhere it
was removed altogether.
A cleaner solution would have been to make the sort comparator
extensible by plugins like other behaviours of the file list and then
add the sorting logic related to favorite files to the TagsPlugin.
However, right now only the TagsPlugin would need to alter the main
sorting logic, and it seems like a corner case anyway. Even if it is
implemented as a plugin, favorite files is a core feature, so for the
time being it will be taken into account directly in the main sorting
logic; making the sort comparator extensible by plugins is defered until
there are other use cases for that.
Fixes#5410
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Fixme:
- Install and update of apps
- No revert on live systems (debug only)
- Service adjustment to our interface
- Loading via autoloader
Signed-off-by: Joas Schilling <coding@schilljs.com>
Move the inline <script> after the external <script> because the internal JS between CSS <link> and external JS makes firefox loading CSS and JS not in parallel.
The internal js is now parsed last but will still be executed first since everything else is deferred js.
Signed-off-by: Michael Letzgus <michaelletzgus@users.noreply.github.com>
Most of the time, when people have multiple backends or add a
custom backend, they want to create the users there and not in
the default backend. But since that is registered first, users
were always created there.
Signed-off-by: Joas Schilling <coding@schilljs.com>
In some not yet completely determined configurations, the following error could occur while writing a file:
Error: Call to a member function getUsers() on null
/var/www/nextcloud/lib/private/Share20/Manager.php - line 1277: OC\Share20\DefaultShareProvider->getAccessList(Array, true)
/var/www/nextcloud/lib/private/Share20/ShareHelper.php - line 51: OC\Share20\Manager->getAccessList(Object(OC\Files\Node\Folder), true, true)
/var/www/nextcloud/apps/activity/lib/FilesHooks.php - line 616: OC\Share20\ShareHelper->getPathsForAccessList(Object(OC\Files\Node\File))
/var/www/nextcloud/apps/activity/lib/FilesHooks.php - line 196: OCA\Activity\FilesHooks->getUserPathsFromPath('/path/to/file', 'user')
/var/www/nextcloud/apps/activity/lib/FilesHooks.php - line 157: OCA\Activity\FilesHooks->addNotificationsForFileAction('/path/to/file', 'file_changed', 'changed_self', 'changed_by')
/var/www/nextcloud/apps/activity/lib/FilesHooksStatic.php - line 55: OCA\Activity\FilesHooks->fileUpdate('/path/to/file')
/var/www/nextcloud/lib/private/legacy/hook.php - line 106: OCA\Activity\FilesHooksStatic fileUpdate(Array)
/var/www/nextcloud/lib/private/Files/View.php - line 1245: OC_Hook emit('OC_Filesystem', 'post_update', Array)
/var/www/nextcloud/lib/private/Files/View.php - line 1173: OC\Files\View->runHooks(Array, '/path/to/file', true)
/var/www/nextcloud/lib/private/Files/View.php - line 679: OC\Files\View->basicOperation('file_put_conten...', '/path/to/file', Array, '<?xml version="...')
/var/www/nextcloud/lib/private/Files/Node/File.php - line 64: OC\Files\View->file_put_contents('/path/to/file', '<?xml version="...')
[...]
Signed-off-by: Jan-Philipp Litza <janphilipp@litza.de>
The unit of `data.bitrate` is bit, but the argument unit of
`humanFileSize` function is byte, so it should be divided by 8.
Signed-off-by: Yaojin Qian <i@ume.ink>
The upload remaining time is always 'a few second' whatever a big or a
small file uploading.
This commit fixes it. The `new Date().getMilliseconds()` only return a
three digits number. When time arrived the next second, the millisecond
start from ZERO again. So `new Date().getTime()` is the righe choice.
And remaining time variables shoule be initialized when the file starts
uploading, otherwise the remaining time of a new upload will always be
'Infinity years' until you refresh the page.
Signed-off-by: Yaojin Qian <i@ume.ink>
Treat PHP Errors on User session regenerate
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
remove unnecessary lines…
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
change PHP errors to ErrorException in the session (PHP >=7)
Otherwise it might be that authentication apps are being disabled on
during operation while in fact the session handler has hiccup.
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
Overrides \Sabre\DAV\Auth\Backend\AbstractBearer::challenge to prevent sending a second WWW-Authenticate header which is standard-compliant but most DAV clients simply fail hard.
Fixes https://github.com/nextcloud/server/issues/5088
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
The SystemTagsInfoViewToggleView is a basic view that renders a label
that, when clicked, toggles the visibility of an associated
SystemTagsInfoView.
In order to keep the view parent agnostic its attachment and detachment
to/from the MainfFileInfoView is done in the FilesPlugin.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
SystemTagsInfoView now provides public methods related to its visibility
in preparation to be used by external objects.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
The toggle element was added to the MainFileInfoView element when
SystemTagsInfoView was rendered. However, if the MainFileInfoView was
rendered again after that the toggle element was removed. Therefore,
instead of adding it when SystemTagsInfoView is rendered, the toggle
element has to be added when MainFileInfoView triggers its "post-render"
event.
Note, however, that when MainFileInfoView is rendered all the events are
removed from its child elements. As the toggle uses a "click" event
either the event has to be added back or the element has to be detached
before the MainFileInfoView is rendered.
Fixes#4944
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
The post-render event makes possible to modify the
MainFileInfoDetailsView element once it has been rendered, which is
needed by OCA.SystemTags.FilesPlugin to add the "Tags" label to the file
details, while the pre-render event makes possible to detach added
elements if needed before the MainFileInfoDetailsView is rendered again,
as that removes the events from the child DOM elements even if they
belong to other views.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
In some cases, an app may need to act on a detail view registered by
another app or the core, for example, to add extra elements to the
element of the detail view.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
* password form overlaps upload button and doesn't allow to click it
* regression from #5259
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
make sure that we always clear all floating rules after the user settings parts
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
Fixed typo and removed doclink symbol.
Reported at transifex
Update util.php
Another l10n improvement from transifex.
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
Use Unified function to emit <link> tags for css loading, obey "Don't Repeat Yourself" ;-)
(Next step might by to combine this with the emit <script> function (even more DRY?) AND move all this to a better place?)
Signed-off-by: Michael Letzgus <michaelletzgus@users.noreply.github.com>
Else when an upgrade happens we will recompile all the SCSS files all
the time (until the cache expires).
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Acceptance tests opened the details view by clicking on the middle of
the file row, but due to the changes made in issue #4921 that now opens
the file instead; this commit updates the acceptance tests to open the
details view through the "Details" item in the file actions menu.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
* Create generalized function for emmitting <script defer src=""> tags to templates
* Remove type attribute from inline_js
* Add defer attribute to external <script> tags
Signed-off-by: Michael Letzgus <michaelletzgus@users.noreply.github.com>
* :package: **Sync your Data** You keep your files, contacts, calendars and more synchronized amongst your devices.
* :arrows_counterclockwise: **Share your Data** …by giving others access to the stuff you want them to see or to collaborate with.
* :rocket: **Expandable with dozens of Apps** ...like [Calendar](https://github.com/nextcloud/calendar), [Contacts](https://github.com/nextcloud/contacts), [Mail](https://github.com/nextcloud/mail) and all those you can discover in our [App Store](https://apps.nextcloud.com)
* :lock: **Security** with our encryption mechanisms, [HackerOne bounty program](https://hackerone.com/nextcloud) and two-factor authentification.
* :lock: **Security** with our encryption mechanisms, [HackerOne bounty program](https://hackerone.com/nextcloud) and two-factor authentication.
*You want to learn more about how you can use Nextcloud to access, share and protect your files, calendars, contacts, communication & more at home and at your Enterprise?* [**Learn about all our Features**](https://nextcloud.com/features).
[…learn more about how to get support for Nextcloud here!](https://nextcloud.com/support)
@@ -59,7 +60,7 @@ More information how to contribute: [https://nextcloud.com/contribute/](https://
Third-party components are handled as git submodules which have to be initialized first. So aside from the regular git checkout invoking `git submodule update --init` or a similar command is needed, for details see Git documentation.
Several apps by default included in regular releases like [firstrunwizard](https://github.com/nextcloud/firstrunwizard) or [gallery](https://github.com/nextcloud/gallery) are missing in `master` and have to be installed manually as required.
Several apps that are included by default in regular releases such as [firstrunwizard](https://github.com/nextcloud/firstrunwizard) or [gallery](https://github.com/nextcloud/gallery) are missing in `master` and have to be installed manually.
That aside Git checkouts can be handled the same as release archives.
"%1$s commented on %2$s":"%1$s het op %2$s kommentaar gelewer",
"{author} commented on {file}":"{outeur} het op {lêer} kommentaar gelewer",
"<strong>Comments</strong> for files":"<strong>Kommentare</strong> vir lêers",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Jy was genoem op “{lêer}”, in die kommentaar van 'n gebruiker wat intussen geskrap is.",
"{user} mentioned you in a comment on “{file}”":"{gebruiker} het u in ’n kommentaar oor “{lêer}” genoem",
"Unknown user":"Onbekende gebruiker",
"A (now) deleted user mentioned you in a comment on “%s”":"’n (Nou) geskrapte gebruiker het u in ’n kommentaar op “%s” genoem",
"A (now) deleted user mentioned you in a comment on “{file}”":"’n (Nou) geskrapte gebruiker het u in ’n kommentaar op “{lêer}” genoem",
"%1$s mentioned you in a comment on “%2$s”":"%1$s het u in ’n kommentaar op “%2$s” genoem",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Jy was genoem op \"%s\", in die kommentaar van 'n gebruiker wat intussen geskrap is."
"{user} mentioned you in a comment on “{file}”":"{gebruiker} het u in ’n kommentaar oor “{lêer}” genoem",
"A (now) deleted user mentioned you in a comment on “%s”":"’n (Nou) geskrapte gebruiker het u in ’n kommentaar op “%s” genoem",
"A (now) deleted user mentioned you in a comment on “{file}”":"’n (Nou) geskrapte gebruiker het u in ’n kommentaar op “{lêer}” genoem"
"%1$s commented on %2$s":"%1$s het op %2$s kommentaar gelewer",
"{author} commented on {file}":"{outeur} het op {lêer} kommentaar gelewer",
"<strong>Comments</strong> for files":"<strong>Kommentare</strong> vir lêers",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Jy was genoem op “{lêer}”, in die kommentaar van 'n gebruiker wat intussen geskrap is.",
"{user} mentioned you in a comment on “{file}”":"{gebruiker} het u in ’n kommentaar oor “{lêer}” genoem",
"Unknown user":"Onbekende gebruiker",
"A (now) deleted user mentioned you in a comment on “%s”":"’n (Nou) geskrapte gebruiker het u in ’n kommentaar op “%s” genoem",
"A (now) deleted user mentioned you in a comment on “{file}”":"’n (Nou) geskrapte gebruiker het u in ’n kommentaar op “{lêer}” genoem",
"%1$s mentioned you in a comment on “%2$s”":"%1$s het u in ’n kommentaar op “%2$s” genoem",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Jy was genoem op \"%s\", in die kommentaar van 'n gebruiker wat intussen geskrap is."
"{user} mentioned you in a comment on “{file}”":"{gebruiker} het u in ’n kommentaar oor “{lêer}” genoem",
"A (now) deleted user mentioned you in a comment on “%s”":"’n (Nou) geskrapte gebruiker het u in ’n kommentaar op “%s” genoem",
"A (now) deleted user mentioned you in a comment on “{file}”":"’n (Nou) geskrapte gebruiker het u in ’n kommentaar op “{lêer}” genoem"
"%1$s commented on %2$s":"%1$s коментиран за %2$s",
"{author} commented on {file}":"{author} коментира за {file}",
"<strong>Comments</strong> for files":"<strong>Коментари</strong> за файлове",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Бяхте споменат/а към “{file}”, в коментар от потребител, който вече е изтрит",
"{user} mentioned you in a comment on “{file}”":"{user} те спомена в коментар за “{file}”",
"Unknown user":"Непознат потребител",
"A (now) deleted user mentioned you in a comment on “%s”":"(Токущо) изтрит потребител те коментира в “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"(Токущо) изтрит потребител те спомена в коментар за “{file}”",
"%1$s mentioned you in a comment on “%2$s”":"%1$s те спомена в коментар за “%2$s”",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Бяхте споменат/а на “%s”, в коментар от потребител, който вече е изтрит"
"{user} mentioned you in a comment on “{file}”":"{user} те спомена в коментар за “{file}”",
"A (now) deleted user mentioned you in a comment on “%s”":"(Токущо) изтрит потребител те коментира в “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"(Токущо) изтрит потребител те спомена в коментар за “{file}”"
"%1$s commented on %2$s":"%1$s коментиран за %2$s",
"{author} commented on {file}":"{author} коментира за {file}",
"<strong>Comments</strong> for files":"<strong>Коментари</strong> за файлове",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Бяхте споменат/а към “{file}”, в коментар от потребител, който вече е изтрит",
"{user} mentioned you in a comment on “{file}”":"{user} те спомена в коментар за “{file}”",
"Unknown user":"Непознат потребител",
"A (now) deleted user mentioned you in a comment on “%s”":"(Токущо) изтрит потребител те коментира в “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"(Токущо) изтрит потребител те спомена в коментар за “{file}”",
"%1$s mentioned you in a comment on “%2$s”":"%1$s те спомена в коментар за “%2$s”",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Бяхте споменат/а на “%s”, в коментар от потребител, който вече е изтрит"
"{user} mentioned you in a comment on “{file}”":"{user} те спомена в коментар за “{file}”",
"A (now) deleted user mentioned you in a comment on “%s”":"(Токущо) изтрит потребител те коментира в “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"(Токущо) изтрит потребител те спомена в коментар за “{file}”"
"No comments yet, start the conversation!":"Encara no hi ha comentaris. Comenceu la conversa!",
"More comments …":"Més comentaris...",
"Save":"Desa",
"Allowed characters {count} of {max}":"{count} caràcters permesos de {max}",
"Error occurred while retrieving comment with id {id}":"Hi ha hagut un error en extraure el comentari amb id {id}",
"Error occurred while updating comment with id {id}":"Hi ha hagut un error en actualitzar el comentari amb id {id}",
"Error occurred while posting comment":"Hi ha hagut un error en publicar el comentari",
"_%n unread comment_::_%n unread comments_":["%n comentari no llegit","%n comentaris no llegits"],
@@ -24,12 +26,9 @@ OC.L10N.register(
"%1$s commented on %2$s":"%1$s ha comentat a %2$s",
"{author} commented on {file}":"{author} ha comentat a {file}",
"<strong>Comments</strong> for files":"<strong>Comentaris</strong> per arxius",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Has estat mencionat a \"{file}\" en un comentari d'un usuari que ja no existeix",
"{user} mentioned you in a comment on “{file}”":"{user} us ha nomenat en un comentari de “{file}”",
"Unknown user":"Usuari desconegut",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuari (ara) esborrat us ha nomenat en un comentari a “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuari (ara) esborrat us ha nomenat en un comentari de “{file}”",
"%1$s mentioned you in a comment on “%2$s”":"%1$s us ha nomenat en un comentari a “%2$s”",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Has estat mencionat a \"%s\" en un comentari d'un usuari que ja no existeix"
"{user} mentioned you in a comment on “{file}”":"{user} us ha nomenat en un comentari de “{file}”",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuari (ara) esborrat us ha nomenat en un comentari a “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuari (ara) esborrat us ha nomenat en un comentari de “{file}”"
"No comments yet, start the conversation!":"Encara no hi ha comentaris. Comenceu la conversa!",
"More comments …":"Més comentaris...",
"Save":"Desa",
"Allowed characters {count} of {max}":"{count} caràcters permesos de {max}",
"Error occurred while retrieving comment with id {id}":"Hi ha hagut un error en extraure el comentari amb id {id}",
"Error occurred while updating comment with id {id}":"Hi ha hagut un error en actualitzar el comentari amb id {id}",
"Error occurred while posting comment":"Hi ha hagut un error en publicar el comentari",
"_%n unread comment_::_%n unread comments_":["%n comentari no llegit","%n comentaris no llegits"],
@@ -22,12 +24,9 @@
"%1$s commented on %2$s":"%1$s ha comentat a %2$s",
"{author} commented on {file}":"{author} ha comentat a {file}",
"<strong>Comments</strong> for files":"<strong>Comentaris</strong> per arxius",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Has estat mencionat a \"{file}\" en un comentari d'un usuari que ja no existeix",
"{user} mentioned you in a comment on “{file}”":"{user} us ha nomenat en un comentari de “{file}”",
"Unknown user":"Usuari desconegut",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuari (ara) esborrat us ha nomenat en un comentari a “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuari (ara) esborrat us ha nomenat en un comentari de “{file}”",
"%1$s mentioned you in a comment on “%2$s”":"%1$s us ha nomenat en un comentari a “%2$s”",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Has estat mencionat a \"%s\" en un comentari d'un usuari que ja no existeix"
"{user} mentioned you in a comment on “{file}”":"{user} us ha nomenat en un comentari de “{file}”",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuari (ara) esborrat us ha nomenat en un comentari a “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuari (ara) esborrat us ha nomenat en un comentari de “{file}”"
"You commented on {file}":"Okomentovali jste {file}",
"You commented on %1$s":"Okomentoval(a) jste %1$s",
"You commented on {file}":"Okomentoval(a) jste {file}",
"%1$s commented on %2$s":"%1$s okomentoval %2$s",
"{author} commented on {file}":"{author} okomentoval(a) {file}",
"<strong>Comments</strong> for files":"<strong>Komentáře</strong> souborů",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Byli jste zmíněni v “%s”, v komentáři od uživatele, který byl později smazán",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Byli jste zmíněni v souboru “{file}”, v komentáři od uživatele, který byl později smazán",
"{user} mentioned you in a comment on “{file}”":"{user} vás zmínil(a) v komentáři u „{file}“",
"Files app plugin to add comments to files":"Zásuvný modul do aplikace Soubory pro přidávání komentářů k souborům",
"Unknown user":"Neznámý uživatel",
"A (now) deleted user mentioned you in a comment on “%s”":"(Nyní) už smazaný uživatel vás zmínil v komentáři na „%s“.",
"A (now) deleted user mentioned you in a comment on “{file}”":"Nyní už smazaný uživatel vás zmínil v komentáři u „{file}“",
"%1$s mentioned you in a comment on “%2$s”":"%1$s vás zmínil(a) v komentáři u %2$s",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Byli jste zmíněni v „%s“, v komentáři od uživatele, který byl později smazán"
"{user} mentioned you in a comment on “{file}”":"{user} vás zmínil v komentáři u “{file}”",
"A (now) deleted user mentioned you in a comment on “%s”":"A (now) deleted user mentioned you in a comment on “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Nyní již smazaný uživatel vás zmínil v komentáři u \"{file}\""
"You commented on {file}":"Okomentovali jste {file}",
"You commented on %1$s":"Okomentoval(a) jste %1$s",
"You commented on {file}":"Okomentoval(a) jste {file}",
"%1$s commented on %2$s":"%1$s okomentoval %2$s",
"{author} commented on {file}":"{author} okomentoval(a) {file}",
"<strong>Comments</strong> for files":"<strong>Komentáře</strong> souborů",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Byli jste zmíněni v “%s”, v komentáři od uživatele, který byl později smazán",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Byli jste zmíněni v souboru “{file}”, v komentáři od uživatele, který byl později smazán",
"{user} mentioned you in a comment on “{file}”":"{user} vás zmínil(a) v komentáři u „{file}“",
"Files app plugin to add comments to files":"Zásuvný modul do aplikace Soubory pro přidávání komentářů k souborům",
"Unknown user":"Neznámý uživatel",
"A (now) deleted user mentioned you in a comment on “%s”":"(Nyní) už smazaný uživatel vás zmínil v komentáři na „%s“.",
"A (now) deleted user mentioned you in a comment on “{file}”":"Nyní už smazaný uživatel vás zmínil v komentáři u „{file}“",
"%1$s mentioned you in a comment on “%2$s”":"%1$s vás zmínil(a) v komentáři u %2$s",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Byli jste zmíněni v „%s“, v komentáři od uživatele, který byl později smazán"
"%1$s commented on %2$s":"%1$s kommenterede %2$s",
"{author} commented on {file}":"{author} kommenterede {file}",
"<strong>Comments</strong> for files":"<strong>Kommentarer</strong> for filer",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Du blev nævnt i \"%s”, I en kommentar af en bruger der siden er blevet slettet",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Du blev nævnt i \"{file}”, I en kommentar af en bruger der siden er blevet slettet",
"{user} mentioned you in a comment on “{file}”":"{user} nævnte dig i en kommentarer på \"{file}\"",
"Unknown user":"Ukendt bruger",
"A (now) deleted user mentioned you in a comment on “%s”":"En (nu) slettet bruger nævnte dig i en kommentarer på “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"En (nu) slettet bruger nævnte dig i en kommentarer på \"{file}\"",
"%1$s mentioned you in a comment on “%2$s”":"%1$s nævnte dig i en kommentarer på “%2$s”",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Du blev nævnt i \"%s”, I en kommentar af en bruger der er blevet slettet efterfølgende"
"{user} mentioned you in a comment on “{file}”":"{user} nævnte dig i en kommentarer på \"{file}\"",
"A (now) deleted user mentioned you in a comment on “%s”":"En (nu) slettet bruger nævnte dig i en kommentarer på “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"En (nu) slettet bruger nævnte dig i en kommentarer på \"{file}\""
"%1$s commented on %2$s":"%1$s kommenterede %2$s",
"{author} commented on {file}":"{author} kommenterede {file}",
"<strong>Comments</strong> for files":"<strong>Kommentarer</strong> for filer",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Du blev nævnt i \"%s”, I en kommentar af en bruger der siden er blevet slettet",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Du blev nævnt i \"{file}”, I en kommentar af en bruger der siden er blevet slettet",
"{user} mentioned you in a comment on “{file}”":"{user} nævnte dig i en kommentarer på \"{file}\"",
"Unknown user":"Ukendt bruger",
"A (now) deleted user mentioned you in a comment on “%s”":"En (nu) slettet bruger nævnte dig i en kommentarer på “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"En (nu) slettet bruger nævnte dig i en kommentarer på \"{file}\"",
"%1$s mentioned you in a comment on “%2$s”":"%1$s nævnte dig i en kommentarer på “%2$s”",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Du blev nævnt i \"%s”, I en kommentar af en bruger der er blevet slettet efterfølgende"
"{user} mentioned you in a comment on “{file}”":"{user} nævnte dig i en kommentarer på \"{file}\"",
"A (now) deleted user mentioned you in a comment on “%s”":"En (nu) slettet bruger nævnte dig i en kommentarer på “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"En (nu) slettet bruger nævnte dig i en kommentarer på \"{file}\""
"%1$s commented on %2$s":"%1$s kommentierte %2$s",
"{author} commented on {file}":"{author} hat {file} kommentiert",
"<strong>Comments</strong> for files":"<strong>Kommentare</strong> für Dateien",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Du wurdest in einem Kommentar auf \"%s\" von einem bereits gelöschten Nutzer erwähnt",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Du wurdest in einem Kommentar auf \"{file}\" von einem bereits gelöschten Nutzer erwähnt",
"{user} mentioned you in a comment on “{file}”":"{user} hat Dich in einem Kommentar zu “{file}” erwähnt",
"Files app plugin to add comments to files":"Ein Plugin für die Dateien-App zum Kommentieren von Dateien",
"Unknown user":"Unbekannter Benutzer",
"A (now) deleted user mentioned you in a comment on “%s”":"Ein (nun) gelöschter Benutzer hat Dich in einem Kommentar zu \"%s\" erwähnt",
"A (now) deleted user mentioned you in a comment on “{file}”":"Ein (nun) gelöschter Benutzer hat Dich in einem Kommentar zu “{file}” erwähnt",
"%1$s mentioned you in a comment on “%2$s”":"%1$s hat Dich in einem Kommentar zu “%2$s” erwähnt",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Du wurdest in einem Kommentar auf \"%s\" von einem bereits gelöschten Nutzer erwähnt"
"{user} mentioned you in a comment on “{file}”":"{user} hat Dich in einem Kommentar zu “{file}” erwähnt",
"A (now) deleted user mentioned you in a comment on “%s”":"Ein (nun) gelöschter Benutzer hat Dich in einem Kommentar zu \"%s\" erwähnt",
"A (now) deleted user mentioned you in a comment on “{file}”":"Ein (nun) gelöschter Benutzer hat Dich in einem Kommentar zu “{file}” erwähnt"
"%1$s commented on %2$s":"%1$s kommentierte %2$s",
"{author} commented on {file}":"{author} hat {file} kommentiert",
"<strong>Comments</strong> for files":"<strong>Kommentare</strong> für Dateien",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Du wurdest in einem Kommentar auf \"%s\" von einem bereits gelöschten Nutzer erwähnt",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Du wurdest in einem Kommentar auf \"{file}\" von einem bereits gelöschten Nutzer erwähnt",
"{user} mentioned you in a comment on “{file}”":"{user} hat Dich in einem Kommentar zu “{file}” erwähnt",
"Files app plugin to add comments to files":"Ein Plugin für die Dateien-App zum Kommentieren von Dateien",
"Unknown user":"Unbekannter Benutzer",
"A (now) deleted user mentioned you in a comment on “%s”":"Ein (nun) gelöschter Benutzer hat Dich in einem Kommentar zu \"%s\" erwähnt",
"A (now) deleted user mentioned you in a comment on “{file}”":"Ein (nun) gelöschter Benutzer hat Dich in einem Kommentar zu “{file}” erwähnt",
"%1$s mentioned you in a comment on “%2$s”":"%1$s hat Dich in einem Kommentar zu “%2$s” erwähnt",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Du wurdest in einem Kommentar auf \"%s\" von einem bereits gelöschten Nutzer erwähnt"
"{user} mentioned you in a comment on “{file}”":"{user} hat Dich in einem Kommentar zu “{file}” erwähnt",
"A (now) deleted user mentioned you in a comment on “%s”":"Ein (nun) gelöschter Benutzer hat Dich in einem Kommentar zu \"%s\" erwähnt",
"A (now) deleted user mentioned you in a comment on “{file}”":"Ein (nun) gelöschter Benutzer hat Dich in einem Kommentar zu “{file}” erwähnt"
"%1$s commented on %2$s":"%1$s kommentierte %2$s",
"{author} commented on {file}":"{author} hat {file} kommentiert",
"<strong>Comments</strong> for files":"<strong>Kommentare</strong> für Dateien",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Sie wurden in einem Kommentar auf \"%s\" von einem bereits gelöschten Nutzer erwähnt",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Sie wurden in einem Kommentar auf \"{file}\" von einem bereits gelöschten Nutzer erwähnt",
"{user} mentioned you in a comment on “{file}”":"{user} hat Sie in einem Kommentar zu “{file}” erwähnt",
"Files app plugin to add comments to files":"Ein Plugin für die Dateien-App zum Kommentieren von Dateien",
"Unknown user":"Unbekannter Benutzer",
"A (now) deleted user mentioned you in a comment on “%s”":"Ein (nun) gelöschter Benutzer hat Sie in einem Kommentar zu \"%s\" erwähnt",
"A (now) deleted user mentioned you in a comment on “{file}”":"Ein (nun) gelöschter Benutzer hat Sie in einem Kommentar zu “{file}” erwähnt",
"%1$s mentioned you in a comment on “%2$s”":"%1$s hat Sie in einem Kommentar zu “%2$s” erwähnt.",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Sie wurden in einem Kommentar auf \"%s\" von einem bereits gelöschten Nutzer erwähnt"
"{user} mentioned you in a comment on “{file}”":"{user} hat Sie in einem Kommentar zu “{file}” erwähnt",
"A (now) deleted user mentioned you in a comment on “%s”":"Ein (nun) gelöschter Benutzer hat Sie in einem Kommentar zu \"%s\" erwähnt",
"A (now) deleted user mentioned you in a comment on “{file}”":"Ein (nun) gelöschter Benutzer hat Sie in einem Kommentar zu “{file}” erwähnt"
"%1$s commented on %2$s":"%1$s kommentierte %2$s",
"{author} commented on {file}":"{author} hat {file} kommentiert",
"<strong>Comments</strong> for files":"<strong>Kommentare</strong> für Dateien",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Sie wurden in einem Kommentar auf \"%s\" von einem bereits gelöschten Nutzer erwähnt",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Sie wurden in einem Kommentar auf \"{file}\" von einem bereits gelöschten Nutzer erwähnt",
"{user} mentioned you in a comment on “{file}”":"{user} hat Sie in einem Kommentar zu “{file}” erwähnt",
"Files app plugin to add comments to files":"Ein Plugin für die Dateien-App zum Kommentieren von Dateien",
"Unknown user":"Unbekannter Benutzer",
"A (now) deleted user mentioned you in a comment on “%s”":"Ein (nun) gelöschter Benutzer hat Sie in einem Kommentar zu \"%s\" erwähnt",
"A (now) deleted user mentioned you in a comment on “{file}”":"Ein (nun) gelöschter Benutzer hat Sie in einem Kommentar zu “{file}” erwähnt",
"%1$s mentioned you in a comment on “%2$s”":"%1$s hat Sie in einem Kommentar zu “%2$s” erwähnt.",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Sie wurden in einem Kommentar auf \"%s\" von einem bereits gelöschten Nutzer erwähnt"
"{user} mentioned you in a comment on “{file}”":"{user} hat Sie in einem Kommentar zu “{file}” erwähnt",
"A (now) deleted user mentioned you in a comment on “%s”":"Ein (nun) gelöschter Benutzer hat Sie in einem Kommentar zu \"%s\" erwähnt",
"A (now) deleted user mentioned you in a comment on “{file}”":"Ein (nun) gelöschter Benutzer hat Sie in einem Kommentar zu “{file}” erwähnt"
"%1$s commented on %2$s":"%1$s commented on %2$s",
"{author} commented on {file}":"{author} commented on {file}",
"<strong>Comments</strong> for files":"<strong>Comments</strong> for files",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"You were mentioned on “%s”, in a comment by a user that has since been deleted",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"You were mentioned on “{file}”, in a comment by a user that has since been deleted",
"{user} mentioned you in a comment on “{file}”":"{user} mentioned you in a comment on “{file}”",
"Unknown user":"Unknown user",
"A (now) deleted user mentioned you in a comment on “%s”":"A (now) deleted user mentioned you in a comment on “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"A (now) deleted user mentioned you in a comment on “{file}”",
"%1$s mentioned you in a comment on “%2$s”":"%1$s mentioned you in a comment on “%2$s”",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"You were mentioned on “%s”, in a comment by a user that has since been deleted"
"{user} mentioned you in a comment on “{file}”":"{user} mentioned you in a comment on “{file}”",
"A (now) deleted user mentioned you in a comment on “%s”":"A (now) deleted user mentioned you in a comment on “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"A (now) deleted user mentioned you in a comment on “{file}”"
"%1$s commented on %2$s":"%1$s commented on %2$s",
"{author} commented on {file}":"{author} commented on {file}",
"<strong>Comments</strong> for files":"<strong>Comments</strong> for files",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"You were mentioned on “%s”, in a comment by a user that has since been deleted",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"You were mentioned on “{file}”, in a comment by a user that has since been deleted",
"{user} mentioned you in a comment on “{file}”":"{user} mentioned you in a comment on “{file}”",
"Unknown user":"Unknown user",
"A (now) deleted user mentioned you in a comment on “%s”":"A (now) deleted user mentioned you in a comment on “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"A (now) deleted user mentioned you in a comment on “{file}”",
"%1$s mentioned you in a comment on “%2$s”":"%1$s mentioned you in a comment on “%2$s”",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"You were mentioned on “%s”, in a comment by a user that has since been deleted"
"{user} mentioned you in a comment on “{file}”":"{user} mentioned you in a comment on “{file}”",
"A (now) deleted user mentioned you in a comment on “%s”":"A (now) deleted user mentioned you in a comment on “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"A (now) deleted user mentioned you in a comment on “{file}”"
"No comments yet, start the conversation!":"¡No hay comentarios, empieza la conversación!",
"More comments …":"Más comentarios ...",
"Save":"Guardar",
"Allowed characters {count} of {max}":"Caracteres permitidos {count} de {max}",
"Error occurred while retrieving comment with ID {id}":"Se ha producido un error al obtener el comentario con ID {id}",
"Error occurred while retrieving comment with id {id}":"Se ha producido un error al recuperar el comentario con ID {id}",
"Error occurred while updating comment with id {id}":"Se ha producido un error al actualizar el comentario con ID {id}",
"Error occurred while posting comment":"Se ha producido un error al enviar el comentario",
"_%n unread comment_::_%n unread comments_":["%n comentario sin leer","%nComentarios no leídos"],
@@ -25,13 +26,11 @@ OC.L10N.register(
"%1$s commented on %2$s":"%1$s comentados en %2$s",
"{author} commented on {file}":"{author} comentó en {file}",
"<strong>Comments</strong> for files":"<strong>Comentarios</strong> para archivos",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te han mencionado en \"%s\", en un comentario por un usuario que después ha sido eliminado",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Te han mencionado en \"{file}\", en un comentario de un usuario que después ha sido eliminado",
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"Files app plugin to add comments to files":"Plugin de la app de Archivos para añadir comentarios a archivos.",
"Unknown user":"Usuario desconocido",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) eliminado, te mencionó en un comentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) eliminado, te mencionó en un comentario en “{file}”",
"%1$s mentioned you in a comment on “%2$s”":"%1$s te mencionó en un comentario en “%2$s”",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te han mencionado en \"%s\", en un comentario por un usuario que después ha sido eliminado"
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) eliminado, te mencionó en un comentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) eliminado, te mencionó en un comentario en “{file}”"
"No comments yet, start the conversation!":"¡No hay comentarios, empieza la conversación!",
"More comments …":"Más comentarios ...",
"Save":"Guardar",
"Allowed characters {count} of {max}":"Caracteres permitidos {count} de {max}",
"Error occurred while retrieving comment with ID {id}":"Se ha producido un error al obtener el comentario con ID {id}",
"Error occurred while retrieving comment with id {id}":"Se ha producido un error al recuperar el comentario con ID {id}",
"Error occurred while updating comment with id {id}":"Se ha producido un error al actualizar el comentario con ID {id}",
"Error occurred while posting comment":"Se ha producido un error al enviar el comentario",
"_%n unread comment_::_%n unread comments_":["%n comentario sin leer","%nComentarios no leídos"],
@@ -23,13 +24,11 @@
"%1$s commented on %2$s":"%1$s comentados en %2$s",
"{author} commented on {file}":"{author} comentó en {file}",
"<strong>Comments</strong> for files":"<strong>Comentarios</strong> para archivos",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te han mencionado en \"%s\", en un comentario por un usuario que después ha sido eliminado",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Te han mencionado en \"{file}\", en un comentario de un usuario que después ha sido eliminado",
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"Files app plugin to add comments to files":"Plugin de la app de Archivos para añadir comentarios a archivos.",
"Unknown user":"Usuario desconocido",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) eliminado, te mencionó en un comentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) eliminado, te mencionó en un comentario en “{file}”",
"%1$s mentioned you in a comment on “%2$s”":"%1$s te mencionó en un comentario en “%2$s”",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te han mencionado en \"%s\", en un comentario por un usuario que después ha sido eliminado"
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) eliminado, te mencionó en un comentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) eliminado, te mencionó en un comentario en “{file}”"
"No comments yet, start the conversation!":"¡Aún no hay comentarios, inicia la conversación!",
"More comments …":"Más comentarios ...",
"Save":"Guardar",
"Allowed characters {count} of {max}":"Caracteres permitidos {count} de {max}",
"Error occurred while updating comment with id {id}":"Se presentó un error al actualizar el comentario con Id {id}",
"Error occurred while posting comment":"Se presentó un error al publicar el comentario",
"_%n unread comment_::_%n unread comments_":["%n comentarios sin leer","%n comentarios sin leer"],
"Error occurred while retrieving comment with id {id}":"Se produjo error al recuperar comentario con id {id}",
"Error occurred while updating comment with id {id}":"Se produjo error al actualizar comentario con id {id}",
"Error occurred while posting comment":"Se produjo error al publicar comentario",
"Comment":"Comentario",
"You commented":"Comentaste",
"%1$s commented":"%1$s comentó",
"{author} commented":"{author} comentó",
"You commented on %1$s":"Usted comentó en %1$s",
"You commented on {file}":"Hiciste un comentario de {file}",
"%1$s commented on %2$s":"%1$s comentó en %2$s",
"{author} commented on {file}":"{author} comentó en {file}",
"<strong>Comments</strong> for files":"<strong>Comentarios</strong> de los archivos",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"Unknown user":"Usuario desconocido",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”",
"%1$s mentioned you in a comment on “%2$s”":"%1$s te mencionó en un comentario en “%2$s”",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado"
"You commented":"Has comentado",
"%1$s commented":"%1$s comentado",
"You commented on %2$s":"Has comentado en %2$s",
"%1$s commented on %2$s":"%1$s comentado en %2$s",
"Type in a new comment...":"Escribir un nuevo comentario",
"No other comments available":"No hay mas comentarios",
"More comments...":"Mas comentarios...",
"{count} unread comments":"{count} comentarios no leídos"
"No comments yet, start the conversation!":"¡Aún no hay comentarios, inicia la conversación!",
"More comments …":"Más comentarios ...",
"Save":"Guardar",
"Allowed characters {count} of {max}":"Caracteres permitidos {count} de {max}",
"Error occurred while updating comment with id {id}":"Se presentó un error al actualizar el comentario con Id {id}",
"Error occurred while posting comment":"Se presentó un error al publicar el comentario",
"_%n unread comment_::_%n unread comments_":["%n comentarios sin leer","%n comentarios sin leer"],
"Error occurred while retrieving comment with id {id}":"Se produjo error al recuperar comentario con id {id}",
"Error occurred while updating comment with id {id}":"Se produjo error al actualizar comentario con id {id}",
"Error occurred while posting comment":"Se produjo error al publicar comentario",
"Comment":"Comentario",
"You commented":"Comentaste",
"%1$s commented":"%1$s comentó",
"{author} commented":"{author} comentó",
"You commented on %1$s":"Usted comentó en %1$s",
"You commented on {file}":"Hiciste un comentario de {file}",
"%1$s commented on %2$s":"%1$s comentó en %2$s",
"{author} commented on {file}":"{author} comentó en {file}",
"<strong>Comments</strong> for files":"<strong>Comentarios</strong> de los archivos",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"Unknown user":"Usuario desconocido",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”",
"%1$s mentioned you in a comment on “%2$s”":"%1$s te mencionó en un comentario en “%2$s”",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado"
"You commented":"Has comentado",
"%1$s commented":"%1$s comentado",
"You commented on %2$s":"Has comentado en %2$s",
"%1$s commented on %2$s":"%1$s comentado en %2$s",
"Type in a new comment...":"Escribir un nuevo comentario",
"No other comments available":"No hay mas comentarios",
"More comments...":"Mas comentarios...",
"{count} unread comments":"{count} comentarios no leídos"
"No comments yet, start the conversation!":"¡Aún no hay comentarios, inicia la conversación!",
"More comments …":"Más comentarios ...",
"Save":"Guardar",
"Allowed characters {count} of {max}":"Caracteres permitidos {count} de {max}",
"Error occurred while retrieving comment with ID {id}":"Se presentó un error al recuperar el comentario con ID {id}",
"Error occurred while retrieving comment with id {id}":"Se presentó un error al recuperar el comentario con Id {id}",
"Error occurred while updating comment with id {id}":"Se presentó un error al actualizar el comentario con Id {id}",
"Error occurred while posting comment":"Se presentó un error al publicar el comentario",
"_%n unread comment_::_%n unread comments_":["%n comentarios sin leer","%n comentarios sin leer"],
@@ -25,12 +26,11 @@ OC.L10N.register(
"%1$s commented on %2$s":"%1$s comentó en %2$s",
"{author} commented on {file}":"{author} comentó en {file}",
"<strong>Comments</strong> for files":"<strong>Comentarios</strong> de los archivos",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"Unknown user":"Usuario desconocido",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”",
"%1$s mentioned you in a comment on “%2$s”":"%1$s te mencionó en un comentario en “%2$s”",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado"
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
"No comments yet, start the conversation!":"¡Aún no hay comentarios, inicia la conversación!",
"More comments …":"Más comentarios ...",
"Save":"Guardar",
"Allowed characters {count} of {max}":"Caracteres permitidos {count} de {max}",
"Error occurred while retrieving comment with ID {id}":"Se presentó un error al recuperar el comentario con ID {id}",
"Error occurred while retrieving comment with id {id}":"Se presentó un error al recuperar el comentario con Id {id}",
"Error occurred while updating comment with id {id}":"Se presentó un error al actualizar el comentario con Id {id}",
"Error occurred while posting comment":"Se presentó un error al publicar el comentario",
"_%n unread comment_::_%n unread comments_":["%n comentarios sin leer","%n comentarios sin leer"],
@@ -23,12 +24,11 @@
"%1$s commented on %2$s":"%1$s comentó en %2$s",
"{author} commented on {file}":"{author} comentó en {file}",
"<strong>Comments</strong> for files":"<strong>Comentarios</strong> de los archivos",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"Unknown user":"Usuario desconocido",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”",
"%1$s mentioned you in a comment on “%2$s”":"%1$s te mencionó en un comentario en “%2$s”",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado"
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
"No comments yet, start the conversation!":"¡Aún no hay comentarios, inicia la conversación!",
"More comments …":"Más comentarios ...",
"Save":"Guardar",
"Allowed characters {count} of {max}":"Caracteres permitidos {count} de {max}",
"Error occurred while retrieving comment with ID {id}":"Se presentó un error al recuperar el comentario con ID {id}",
"Error occurred while retrieving comment with id {id}":"Se presentó un error al recuperar el comentario con Id {id}",
"Error occurred while updating comment with id {id}":"Se presentó un error al actualizar el comentario con Id {id}",
"Error occurred while posting comment":"Se presentó un error al publicar el comentario",
"_%n unread comment_::_%n unread comments_":["%n comentarios sin leer","%n comentarios sin leer"],
@@ -25,12 +26,11 @@ OC.L10N.register(
"%1$s commented on %2$s":"%1$s comentó en %2$s",
"{author} commented on {file}":"{author} comentó en {file}",
"<strong>Comments</strong> for files":"<strong>Comentarios</strong> de los archivos",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"Unknown user":"Usuario desconocido",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”",
"%1$s mentioned you in a comment on “%2$s”":"%1$s te mencionó en un comentario en “%2$s”",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado"
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
"No comments yet, start the conversation!":"¡Aún no hay comentarios, inicia la conversación!",
"More comments …":"Más comentarios ...",
"Save":"Guardar",
"Allowed characters {count} of {max}":"Caracteres permitidos {count} de {max}",
"Error occurred while retrieving comment with ID {id}":"Se presentó un error al recuperar el comentario con ID {id}",
"Error occurred while retrieving comment with id {id}":"Se presentó un error al recuperar el comentario con Id {id}",
"Error occurred while updating comment with id {id}":"Se presentó un error al actualizar el comentario con Id {id}",
"Error occurred while posting comment":"Se presentó un error al publicar el comentario",
"_%n unread comment_::_%n unread comments_":["%n comentarios sin leer","%n comentarios sin leer"],
@@ -23,12 +24,11 @@
"%1$s commented on %2$s":"%1$s comentó en %2$s",
"{author} commented on {file}":"{author} comentó en {file}",
"<strong>Comments</strong> for files":"<strong>Comentarios</strong> de los archivos",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"Unknown user":"Usuario desconocido",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”",
"%1$s mentioned you in a comment on “%2$s”":"%1$s te mencionó en un comentario en “%2$s”",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado"
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
"No comments yet, start the conversation!":"¡Aún no hay comentarios, inicia la conversación!",
"More comments …":"Más comentarios ...",
"Save":"Guardar",
"Allowed characters {count} of {max}":"Caracteres permitidos {count} de {max}",
"Error occurred while retrieving comment with ID {id}":"Se presentó un error al recuperar el comentario con ID {id}",
"Error occurred while retrieving comment with id {id}":"Se presentó un error al recuperar el comentario con Id {id}",
"Error occurred while updating comment with id {id}":"Se presentó un error al actualizar el comentario con Id {id}",
"Error occurred while posting comment":"Se presentó un error al publicar el comentario",
"_%n unread comment_::_%n unread comments_":["%n comentarios sin leer","%n comentarios sin leer"],
@@ -25,12 +26,11 @@ OC.L10N.register(
"%1$s commented on %2$s":"%1$s comentó en %2$s",
"{author} commented on {file}":"{author} comentó en {file}",
"<strong>Comments</strong> for files":"<strong>Comentarios</strong> de los archivos",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"Unknown user":"Usuario desconocido",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”",
"%1$s mentioned you in a comment on “%2$s”":"%1$s te mencionó en un comentario en “%2$s”",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado"
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
"No comments yet, start the conversation!":"¡Aún no hay comentarios, inicia la conversación!",
"More comments …":"Más comentarios ...",
"Save":"Guardar",
"Allowed characters {count} of {max}":"Caracteres permitidos {count} de {max}",
"Error occurred while retrieving comment with ID {id}":"Se presentó un error al recuperar el comentario con ID {id}",
"Error occurred while retrieving comment with id {id}":"Se presentó un error al recuperar el comentario con Id {id}",
"Error occurred while updating comment with id {id}":"Se presentó un error al actualizar el comentario con Id {id}",
"Error occurred while posting comment":"Se presentó un error al publicar el comentario",
"_%n unread comment_::_%n unread comments_":["%n comentarios sin leer","%n comentarios sin leer"],
@@ -23,12 +24,11 @@
"%1$s commented on %2$s":"%1$s comentó en %2$s",
"{author} commented on {file}":"{author} comentó en {file}",
"<strong>Comments</strong> for files":"<strong>Comentarios</strong> de los archivos",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"Unknown user":"Usuario desconocido",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”",
"%1$s mentioned you in a comment on “%2$s”":"%1$s te mencionó en un comentario en “%2$s”",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado"
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
"No comments yet, start the conversation!":"¡Aún no hay comentarios, inicia la conversación!",
"More comments …":"Más comentarios ...",
"Save":"Guardar",
"Allowed characters {count} of {max}":"Caracteres permitidos {count} de {max}",
"Error occurred while retrieving comment with ID {id}":"Se presentó un error al recuperar el comentario con ID {id}",
"Error occurred while retrieving comment with id {id}":"Se presentó un error al recuperar el comentario con Id {id}",
"Error occurred while updating comment with id {id}":"Se presentó un error al actualizar el comentario con Id {id}",
"Error occurred while posting comment":"Se presentó un error al publicar el comentario",
"_%n unread comment_::_%n unread comments_":["%n comentarios sin leer","%n comentarios sin leer"],
@@ -25,12 +26,11 @@ OC.L10N.register(
"%1$s commented on %2$s":"%1$s comentó en %2$s",
"{author} commented on {file}":"{author} comentó en {file}",
"<strong>Comments</strong> for files":"<strong>Comentarios</strong> de los archivos",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"Unknown user":"Usuario desconocido",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”",
"%1$s mentioned you in a comment on “%2$s”":"%1$s te mencionó en un comentario en “%2$s”",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado"
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
"No comments yet, start the conversation!":"¡Aún no hay comentarios, inicia la conversación!",
"More comments …":"Más comentarios ...",
"Save":"Guardar",
"Allowed characters {count} of {max}":"Caracteres permitidos {count} de {max}",
"Error occurred while retrieving comment with ID {id}":"Se presentó un error al recuperar el comentario con ID {id}",
"Error occurred while retrieving comment with id {id}":"Se presentó un error al recuperar el comentario con Id {id}",
"Error occurred while updating comment with id {id}":"Se presentó un error al actualizar el comentario con Id {id}",
"Error occurred while posting comment":"Se presentó un error al publicar el comentario",
"_%n unread comment_::_%n unread comments_":["%n comentarios sin leer","%n comentarios sin leer"],
@@ -23,12 +24,11 @@
"%1$s commented on %2$s":"%1$s comentó en %2$s",
"{author} commented on {file}":"{author} comentó en {file}",
"<strong>Comments</strong> for files":"<strong>Comentarios</strong> de los archivos",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"Unknown user":"Usuario desconocido",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”",
"%1$s mentioned you in a comment on “%2$s”":"%1$s te mencionó en un comentario en “%2$s”",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado"
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
"No comments yet, start the conversation!":"¡Aún no hay comentarios, inicia la conversación!",
"More comments …":"Más comentarios ...",
"Save":"Guardar",
"Allowed characters {count} of {max}":"Caracteres permitidos {count} de {max}",
"Error occurred while retrieving comment with ID {id}":"Se presentó un error al recuperar el comentario con ID {id}",
"Error occurred while retrieving comment with id {id}":"Se presentó un error al recuperar el comentario con Id {id}",
"Error occurred while updating comment with id {id}":"Se presentó un error al actualizar el comentario con Id {id}",
"Error occurred while posting comment":"Se presentó un error al publicar el comentario",
"_%n unread comment_::_%n unread comments_":["%n comentarios sin leer","%n comentarios sin leer"],
@@ -25,12 +26,11 @@ OC.L10N.register(
"%1$s commented on %2$s":"%1$s comentó en %2$s",
"{author} commented on {file}":"{author} comentó en {file}",
"<strong>Comments</strong> for files":"<strong>Comentarios</strong> de los archivos",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"Unknown user":"Usuario desconocido",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”",
"%1$s mentioned you in a comment on “%2$s”":"%1$s te mencionó en un comentario en “%2$s”",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado"
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
"No comments yet, start the conversation!":"¡Aún no hay comentarios, inicia la conversación!",
"More comments …":"Más comentarios ...",
"Save":"Guardar",
"Allowed characters {count} of {max}":"Caracteres permitidos {count} de {max}",
"Error occurred while retrieving comment with ID {id}":"Se presentó un error al recuperar el comentario con ID {id}",
"Error occurred while retrieving comment with id {id}":"Se presentó un error al recuperar el comentario con Id {id}",
"Error occurred while updating comment with id {id}":"Se presentó un error al actualizar el comentario con Id {id}",
"Error occurred while posting comment":"Se presentó un error al publicar el comentario",
"_%n unread comment_::_%n unread comments_":["%n comentarios sin leer","%n comentarios sin leer"],
@@ -23,12 +24,11 @@
"%1$s commented on %2$s":"%1$s comentó en %2$s",
"{author} commented on {file}":"{author} comentó en {file}",
"<strong>Comments</strong> for files":"<strong>Comentarios</strong> de los archivos",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"Unknown user":"Usuario desconocido",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”",
"%1$s mentioned you in a comment on “%2$s”":"%1$s te mencionó en un comentario en “%2$s”",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado"
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
"No comments yet, start the conversation!":"¡Aún no hay comentarios, inicia la conversación!",
"More comments …":"Más comentarios ...",
"Save":"Guardar",
"Allowed characters {count} of {max}":"Caracteres permitidos {count} de {max}",
"Error occurred while retrieving comment with ID {id}":"Se presentó un error al recuperar el comentario con ID {id}",
"Error occurred while retrieving comment with id {id}":"Se presentó un error al recuperar el comentario con Id {id}",
"Error occurred while updating comment with id {id}":"Se presentó un error al actualizar el comentario con Id {id}",
"Error occurred while posting comment":"Se presentó un error al publicar el comentario",
"_%n unread comment_::_%n unread comments_":["%n comentarios sin leer","%n comentarios sin leer"],
@@ -25,12 +26,11 @@ OC.L10N.register(
"%1$s commented on %2$s":"%1$s comentó en %2$s",
"{author} commented on {file}":"{author} comentó en {file}",
"<strong>Comments</strong> for files":"<strong>Comentarios</strong> de los archivos",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"Unknown user":"Usuario desconocido",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”",
"%1$s mentioned you in a comment on “%2$s”":"%1$s te mencionó en un comentario en “%2$s”",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado"
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
"No comments yet, start the conversation!":"¡Aún no hay comentarios, inicia la conversación!",
"More comments …":"Más comentarios ...",
"Save":"Guardar",
"Allowed characters {count} of {max}":"Caracteres permitidos {count} de {max}",
"Error occurred while retrieving comment with ID {id}":"Se presentó un error al recuperar el comentario con ID {id}",
"Error occurred while retrieving comment with id {id}":"Se presentó un error al recuperar el comentario con Id {id}",
"Error occurred while updating comment with id {id}":"Se presentó un error al actualizar el comentario con Id {id}",
"Error occurred while posting comment":"Se presentó un error al publicar el comentario",
"_%n unread comment_::_%n unread comments_":["%n comentarios sin leer","%n comentarios sin leer"],
@@ -23,12 +24,11 @@
"%1$s commented on %2$s":"%1$s comentó en %2$s",
"{author} commented on {file}":"{author} comentó en {file}",
"<strong>Comments</strong> for files":"<strong>Comentarios</strong> de los archivos",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"Unknown user":"Usuario desconocido",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”",
"%1$s mentioned you in a comment on “%2$s”":"%1$s te mencionó en un comentario en “%2$s”",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado"
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
"No comments yet, start the conversation!":"¡Aún no hay comentarios, inicia la conversación!",
"More comments …":"Más comentarios ...",
"Save":"Guardar",
"Allowed characters {count} of {max}":"Caracteres permitidos {count} de {max}",
"Error occurred while retrieving comment with id {id}":"Se presentó un error al recuperar el comentario con Id {id}",
"Error occurred while updating comment with id {id}":"Se presentó un error al actualizar el comentario con Id {id}",
"Error occurred while posting comment":"Se presentó un error al publicar el comentario",
"_%n unread comment_::_%n unread comments_":["%n comentarios sin leer","%n comentarios sin leer"],
@@ -24,12 +26,11 @@ OC.L10N.register(
"%1$s commented on %2$s":"%1$s comentó en %2$s",
"{author} commented on {file}":"{author} comentó en {file}",
"<strong>Comments</strong> for files":"<strong>Comentarios</strong> de los archivos",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"Unknown user":"Usuario desconocido",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”",
"%1$s mentioned you in a comment on “%2$s”":"%1$s te mencionó en un comentario en “%2$s”",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado"
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
"No comments yet, start the conversation!":"¡Aún no hay comentarios, inicia la conversación!",
"More comments …":"Más comentarios ...",
"Save":"Guardar",
"Allowed characters {count} of {max}":"Caracteres permitidos {count} de {max}",
"Error occurred while retrieving comment with id {id}":"Se presentó un error al recuperar el comentario con Id {id}",
"Error occurred while updating comment with id {id}":"Se presentó un error al actualizar el comentario con Id {id}",
"Error occurred while posting comment":"Se presentó un error al publicar el comentario",
"_%n unread comment_::_%n unread comments_":["%n comentarios sin leer","%n comentarios sin leer"],
@@ -22,12 +24,11 @@
"%1$s commented on %2$s":"%1$s comentó en %2$s",
"{author} commented on {file}":"{author} comentó en {file}",
"<strong>Comments</strong> for files":"<strong>Comentarios</strong> de los archivos",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"Unknown user":"Usuario desconocido",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”",
"%1$s mentioned you in a comment on “%2$s”":"%1$s te mencionó en un comentario en “%2$s”",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado"
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
"No comments yet, start the conversation!":"¡Aún no hay comentarios, inicia la conversación!",
"More comments …":"Más comentarios ...",
"Save":"Guardar",
"Allowed characters {count} of {max}":"Caracteres permitidos {count} de {max}",
"Error occurred while retrieving comment with ID {id}":"Se presentó un error al recuperar el comentario con ID {id}",
"Error occurred while retrieving comment with id {id}":"Se presentó un error al recuperar el comentario con Id {id}",
"Error occurred while updating comment with id {id}":"Se presentó un error al actualizar el comentario con Id {id}",
"Error occurred while posting comment":"Se presentó un error al publicar el comentario",
"_%n unread comment_::_%n unread comments_":["%n comentarios sin leer","%n comentarios sin leer"],
@@ -25,12 +26,11 @@ OC.L10N.register(
"%1$s commented on %2$s":"%1$s comentó en %2$s",
"{author} commented on {file}":"{author} comentó en {file}",
"<strong>Comments</strong> for files":"<strong>Comentarios</strong> de los archivos",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"Unknown user":"Usuario desconocido",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”",
"%1$s mentioned you in a comment on “%2$s”":"%1$s te mencionó en un comentario en “%2$s”",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado"
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
"No comments yet, start the conversation!":"¡Aún no hay comentarios, inicia la conversación!",
"More comments …":"Más comentarios ...",
"Save":"Guardar",
"Allowed characters {count} of {max}":"Caracteres permitidos {count} de {max}",
"Error occurred while retrieving comment with ID {id}":"Se presentó un error al recuperar el comentario con ID {id}",
"Error occurred while retrieving comment with id {id}":"Se presentó un error al recuperar el comentario con Id {id}",
"Error occurred while updating comment with id {id}":"Se presentó un error al actualizar el comentario con Id {id}",
"Error occurred while posting comment":"Se presentó un error al publicar el comentario",
"_%n unread comment_::_%n unread comments_":["%n comentarios sin leer","%n comentarios sin leer"],
@@ -23,12 +24,11 @@
"%1$s commented on %2$s":"%1$s comentó en %2$s",
"{author} commented on {file}":"{author} comentó en {file}",
"<strong>Comments</strong> for files":"<strong>Comentarios</strong> de los archivos",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted":"Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"Unknown user":"Usuario desconocido",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”",
"%1$s mentioned you in a comment on “%2$s”":"%1$s te mencionó en un comentario en “%2$s”",
"You were mentioned on “%s”, in a comment by a user that has since been deleted":"Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado"
"{user} mentioned you in a comment on “{file}”":"{user} te mencionó en un comentario en “{file}”",
"A (now) deleted user mentioned you in a comment on “%s”":"Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”":"Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
},"pluralForm":"nplurals=2; plural=(n != 1);"
}
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.