├── .travis.yml ├── AUTHORS.md ├── CHANGELOG.md ├── COPYING ├── Makefile ├── README.md ├── appinfo ├── app.php ├── application.php ├── info.xml └── routes.php ├── controller ├── completecontroller.php └── movecontroller.php ├── css └── mv.css ├── img └── app.svg ├── js └── move.js ├── l10n ├── .tx │ └── config ├── af_ZA.js ├── af_ZA.json ├── ast.js ├── ast.json ├── bg_BG.js ├── bg_BG.json ├── ca.js ├── ca.json ├── cs_CZ.js ├── cs_CZ.json ├── da.js ├── da.json ├── de.js ├── de.json ├── de_DE.js ├── de_DE.json ├── el.js ├── el.json ├── en_GB.js ├── en_GB.json ├── es.js ├── es.json ├── es_AR.js ├── es_AR.json ├── es_MX.js ├── es_MX.json ├── et_EE.js ├── et_EE.json ├── fa.js ├── fa.json ├── fi_FI.js ├── fi_FI.json ├── fr.js ├── fr.json ├── gl.js ├── gl.json ├── he.js ├── he.json ├── hu_HU.js ├── hu_HU.json ├── id.js ├── id.json ├── is.js ├── is.json ├── it.js ├── it.json ├── ja.js ├── ja.json ├── ko.js ├── ko.json ├── lt_LT.js ├── lt_LT.json ├── nb_NO.js ├── nb_NO.json ├── nl.js ├── nl.json ├── oc.js ├── oc.json ├── pl.js ├── pl.json ├── pt_BR.js ├── pt_BR.json ├── pt_PT.js ├── pt_PT.json ├── ro.js ├── ro.json ├── ru.js ├── ru.json ├── sk_SK.js ├── sk_SK.json ├── sl.js ├── sl.json ├── sq.js ├── sq.json ├── sr.js ├── sr.json ├── sv.js ├── sv.json ├── th_TH.js ├── th_TH.json ├── tr.js ├── tr.json ├── uk.js ├── uk.json ├── zh_CN.js ├── zh_CN.json ├── zh_TW.js └── zh_TW.json ├── phpunit.integration.xml ├── phpunit.xml ├── templates ├── main.php ├── part.content.php ├── part.navigation.php └── part.settings.php └── tests └── unit ├── autoloader.php └── controller ├── CompleteControllerTest.php └── MoveControllerTest.php /.travis.yml: -------------------------------------------------------------------------------- 1 | language: php 2 | php: 3 | - 5.4 4 | - 5.5 5 | - 5.6 6 | - hhvm 7 | 8 | env: 9 | - DB=sqlite BRANCH=master 10 | - DB=postgresql BRANCH=master 11 | - DB=mysql BRANCH=master 12 | 13 | matrix: 14 | allow_failures: 15 | - php: hhvm 16 | 17 | install: 18 | # install ocdev 19 | - sudo apt-get -y install python3-jinja2 python3-setuptools python3-pip 20 | - sudo easy_install3 requests 21 | - sudo easy_install3 ocdev 22 | # set up postgresql 23 | - createuser -U travis -s oc_autotest 24 | # set up mysql 25 | - mysql -e 'create database oc_autotest;' 26 | - mysql -u root -e "CREATE USER 'oc_autotest'@'localhost';" 27 | - mysql -u root -e "grant all on oc_autotest.* to 'oc_autotest'@'localhost';" 28 | # install owncloud 29 | - cd .. 30 | - ocdev setup core --dir owncloud --branch $BRANCH 31 | - cd owncloud 32 | - ocdev ci $DB 33 | # enable filesmv 34 | - mv ../filesmv apps/ 35 | - php -f console.php app:enable filesmv 36 | 37 | before_script: 38 | - cd apps/filesmv 39 | 40 | script: 41 | - phpunit -c phpunit.xml 42 | - phpunit -c phpunit.integration.xml 43 | -------------------------------------------------------------------------------- /AUTHORS.md: -------------------------------------------------------------------------------- 1 | # Authors 2 | 3 | * eotryx: 4 | 5 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | CHANGELOG 2 | ========= 3 | 4 | 0.8.1 5 | ----- 6 | 7 | * fix Translation 8 | * Autocompletion with incomplete directory name 9 | * Fix move multiple files reload page reload bug 10 | 11 | 0.8.0 12 | ----- 13 | 14 | * Licence change to AGPL 15 | * Unit tests for MoveController (CompleteController test is shit) 16 | * translation of various languages 17 | 18 | 0.7.3a 19 | ------ 20 | 21 | * fix xml error in appinfo/info.xml 22 | 23 | 0.7.3 24 | ----- 25 | 26 | * initial OC8 support 27 | 28 | missing features: 29 | 30 | * translation 31 | * unit tests 32 | 33 | -------------------------------------------------------------------------------- /COPYING: -------------------------------------------------------------------------------- 1 | GNU AFFERO GENERAL PUBLIC LICENSE 2 | Version 3, 19 November 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU Affero General Public License is a free, copyleft license for 11 | software and other kinds of works, specifically designed to ensure 12 | cooperation with the community in the case of network server software. 13 | 14 | The licenses for most software and other practical works are designed 15 | to take away your freedom to share and change the works. By contrast, 16 | our General Public Licenses are intended to guarantee your freedom to 17 | share and change all versions of a program--to make sure it remains free 18 | software for all its users. 19 | 20 | When we speak of free software, we are referring to freedom, not 21 | price. Our General Public Licenses are designed to make sure that you 22 | have the freedom to distribute copies of free software (and charge for 23 | them if you wish), that you receive source code or can get it if you 24 | want it, that you can change the software or use pieces of it in new 25 | free programs, and that you know you can do these things. 26 | 27 | Developers that use our General Public Licenses protect your rights 28 | with two steps: (1) assert copyright on the software, and (2) offer 29 | you this License which gives you legal permission to copy, distribute 30 | and/or modify the software. 31 | 32 | A secondary benefit of defending all users' freedom is that 33 | improvements made in alternate versions of the program, if they 34 | receive widespread use, become available for other developers to 35 | incorporate. Many developers of free software are heartened and 36 | encouraged by the resulting cooperation. However, in the case of 37 | software used on network servers, this result may fail to come about. 38 | The GNU General Public License permits making a modified version and 39 | letting the public access it on a server without ever releasing its 40 | source code to the public. 41 | 42 | The GNU Affero General Public License is designed specifically to 43 | ensure that, in such cases, the modified source code becomes available 44 | to the community. It requires the operator of a network server to 45 | provide the source code of the modified version running there to the 46 | users of that server. Therefore, public use of a modified version, on 47 | a publicly accessible server, gives the public access to the source 48 | code of the modified version. 49 | 50 | An older license, called the Affero General Public License and 51 | published by Affero, was designed to accomplish similar goals. This is 52 | a different license, not a version of the Affero GPL, but Affero has 53 | released a new version of the Affero GPL which permits relicensing under 54 | this license. 55 | 56 | The precise terms and conditions for copying, distribution and 57 | modification follow. 58 | 59 | TERMS AND CONDITIONS 60 | 61 | 0. Definitions. 62 | 63 | "This License" refers to version 3 of the GNU Affero General Public License. 64 | 65 | "Copyright" also means copyright-like laws that apply to other kinds of 66 | works, such as semiconductor masks. 67 | 68 | "The Program" refers to any copyrightable work licensed under this 69 | License. Each licensee is addressed as "you". "Licensees" and 70 | "recipients" may be individuals or organizations. 71 | 72 | To "modify" a work means to copy from or adapt all or part of the work 73 | in a fashion requiring copyright permission, other than the making of an 74 | exact copy. The resulting work is called a "modified version" of the 75 | earlier work or a work "based on" the earlier work. 76 | 77 | A "covered work" means either the unmodified Program or a work based 78 | on the Program. 79 | 80 | To "propagate" a work means to do anything with it that, without 81 | permission, would make you directly or secondarily liable for 82 | infringement under applicable copyright law, except executing it on a 83 | computer or modifying a private copy. Propagation includes copying, 84 | distribution (with or without modification), making available to the 85 | public, and in some countries other activities as well. 86 | 87 | To "convey" a work means any kind of propagation that enables other 88 | parties to make or receive copies. Mere interaction with a user through 89 | a computer network, with no transfer of a copy, is not conveying. 90 | 91 | An interactive user interface displays "Appropriate Legal Notices" 92 | to the extent that it includes a convenient and prominently visible 93 | feature that (1) displays an appropriate copyright notice, and (2) 94 | tells the user that there is no warranty for the work (except to the 95 | extent that warranties are provided), that licensees may convey the 96 | work under this License, and how to view a copy of this License. If 97 | the interface presents a list of user commands or options, such as a 98 | menu, a prominent item in the list meets this criterion. 99 | 100 | 1. Source Code. 101 | 102 | The "source code" for a work means the preferred form of the work 103 | for making modifications to it. "Object code" means any non-source 104 | form of a work. 105 | 106 | A "Standard Interface" means an interface that either is an official 107 | standard defined by a recognized standards body, or, in the case of 108 | interfaces specified for a particular programming language, one that 109 | is widely used among developers working in that language. 110 | 111 | The "System Libraries" of an executable work include anything, other 112 | than the work as a whole, that (a) is included in the normal form of 113 | packaging a Major Component, but which is not part of that Major 114 | Component, and (b) serves only to enable use of the work with that 115 | Major Component, or to implement a Standard Interface for which an 116 | implementation is available to the public in source code form. A 117 | "Major Component", in this context, means a major essential component 118 | (kernel, window system, and so on) of the specific operating system 119 | (if any) on which the executable work runs, or a compiler used to 120 | produce the work, or an object code interpreter used to run it. 121 | 122 | The "Corresponding Source" for a work in object code form means all 123 | the source code needed to generate, install, and (for an executable 124 | work) run the object code and to modify the work, including scripts to 125 | control those activities. However, it does not include the work's 126 | System Libraries, or general-purpose tools or generally available free 127 | programs which are used unmodified in performing those activities but 128 | which are not part of the work. For example, Corresponding Source 129 | includes interface definition files associated with source files for 130 | the work, and the source code for shared libraries and dynamically 131 | linked subprograms that the work is specifically designed to require, 132 | such as by intimate data communication or control flow between those 133 | subprograms and other parts of the work. 134 | 135 | The Corresponding Source need not include anything that users 136 | can regenerate automatically from other parts of the Corresponding 137 | Source. 138 | 139 | The Corresponding Source for a work in source code form is that 140 | same work. 141 | 142 | 2. Basic Permissions. 143 | 144 | All rights granted under this License are granted for the term of 145 | copyright on the Program, and are irrevocable provided the stated 146 | conditions are met. This License explicitly affirms your unlimited 147 | permission to run the unmodified Program. The output from running a 148 | covered work is covered by this License only if the output, given its 149 | content, constitutes a covered work. This License acknowledges your 150 | rights of fair use or other equivalent, as provided by copyright law. 151 | 152 | You may make, run and propagate covered works that you do not 153 | convey, without conditions so long as your license otherwise remains 154 | in force. You may convey covered works to others for the sole purpose 155 | of having them make modifications exclusively for you, or provide you 156 | with facilities for running those works, provided that you comply with 157 | the terms of this License in conveying all material for which you do 158 | not control copyright. Those thus making or running the covered works 159 | for you must do so exclusively on your behalf, under your direction 160 | and control, on terms that prohibit them from making any copies of 161 | your copyrighted material outside their relationship with you. 162 | 163 | Conveying under any other circumstances is permitted solely under 164 | the conditions stated below. Sublicensing is not allowed; section 10 165 | makes it unnecessary. 166 | 167 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 168 | 169 | No covered work shall be deemed part of an effective technological 170 | measure under any applicable law fulfilling obligations under article 171 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 172 | similar laws prohibiting or restricting circumvention of such 173 | measures. 174 | 175 | When you convey a covered work, you waive any legal power to forbid 176 | circumvention of technological measures to the extent such circumvention 177 | is effected by exercising rights under this License with respect to 178 | the covered work, and you disclaim any intention to limit operation or 179 | modification of the work as a means of enforcing, against the work's 180 | users, your or third parties' legal rights to forbid circumvention of 181 | technological measures. 182 | 183 | 4. Conveying Verbatim Copies. 184 | 185 | You may convey verbatim copies of the Program's source code as you 186 | receive it, in any medium, provided that you conspicuously and 187 | appropriately publish on each copy an appropriate copyright notice; 188 | keep intact all notices stating that this License and any 189 | non-permissive terms added in accord with section 7 apply to the code; 190 | keep intact all notices of the absence of any warranty; and give all 191 | recipients a copy of this License along with the Program. 192 | 193 | You may charge any price or no price for each copy that you convey, 194 | and you may offer support or warranty protection for a fee. 195 | 196 | 5. Conveying Modified Source Versions. 197 | 198 | You may convey a work based on the Program, or the modifications to 199 | produce it from the Program, in the form of source code under the 200 | terms of section 4, provided that you also meet all of these conditions: 201 | 202 | a) The work must carry prominent notices stating that you modified 203 | it, and giving a relevant date. 204 | 205 | b) The work must carry prominent notices stating that it is 206 | released under this License and any conditions added under section 207 | 7. This requirement modifies the requirement in section 4 to 208 | "keep intact all notices". 209 | 210 | c) You must license the entire work, as a whole, under this 211 | License to anyone who comes into possession of a copy. This 212 | License will therefore apply, along with any applicable section 7 213 | additional terms, to the whole of the work, and all its parts, 214 | regardless of how they are packaged. This License gives no 215 | permission to license the work in any other way, but it does not 216 | invalidate such permission if you have separately received it. 217 | 218 | d) If the work has interactive user interfaces, each must display 219 | Appropriate Legal Notices; however, if the Program has interactive 220 | interfaces that do not display Appropriate Legal Notices, your 221 | work need not make them do so. 222 | 223 | A compilation of a covered work with other separate and independent 224 | works, which are not by their nature extensions of the covered work, 225 | and which are not combined with it such as to form a larger program, 226 | in or on a volume of a storage or distribution medium, is called an 227 | "aggregate" if the compilation and its resulting copyright are not 228 | used to limit the access or legal rights of the compilation's users 229 | beyond what the individual works permit. Inclusion of a covered work 230 | in an aggregate does not cause this License to apply to the other 231 | parts of the aggregate. 232 | 233 | 6. Conveying Non-Source Forms. 234 | 235 | You may convey a covered work in object code form under the terms 236 | of sections 4 and 5, provided that you also convey the 237 | machine-readable Corresponding Source under the terms of this License, 238 | in one of these ways: 239 | 240 | a) Convey the object code in, or embodied in, a physical product 241 | (including a physical distribution medium), accompanied by the 242 | Corresponding Source fixed on a durable physical medium 243 | customarily used for software interchange. 244 | 245 | b) Convey the object code in, or embodied in, a physical product 246 | (including a physical distribution medium), accompanied by a 247 | written offer, valid for at least three years and valid for as 248 | long as you offer spare parts or customer support for that product 249 | model, to give anyone who possesses the object code either (1) a 250 | copy of the Corresponding Source for all the software in the 251 | product that is covered by this License, on a durable physical 252 | medium customarily used for software interchange, for a price no 253 | more than your reasonable cost of physically performing this 254 | conveying of source, or (2) access to copy the 255 | Corresponding Source from a network server at no charge. 256 | 257 | c) Convey individual copies of the object code with a copy of the 258 | written offer to provide the Corresponding Source. This 259 | alternative is allowed only occasionally and noncommercially, and 260 | only if you received the object code with such an offer, in accord 261 | with subsection 6b. 262 | 263 | d) Convey the object code by offering access from a designated 264 | place (gratis or for a charge), and offer equivalent access to the 265 | Corresponding Source in the same way through the same place at no 266 | further charge. You need not require recipients to copy the 267 | Corresponding Source along with the object code. If the place to 268 | copy the object code is a network server, the Corresponding Source 269 | may be on a different server (operated by you or a third party) 270 | that supports equivalent copying facilities, provided you maintain 271 | clear directions next to the object code saying where to find the 272 | Corresponding Source. Regardless of what server hosts the 273 | Corresponding Source, you remain obligated to ensure that it is 274 | available for as long as needed to satisfy these requirements. 275 | 276 | e) Convey the object code using peer-to-peer transmission, provided 277 | you inform other peers where the object code and Corresponding 278 | Source of the work are being offered to the general public at no 279 | charge under subsection 6d. 280 | 281 | A separable portion of the object code, whose source code is excluded 282 | from the Corresponding Source as a System Library, need not be 283 | included in conveying the object code work. 284 | 285 | A "User Product" is either (1) a "consumer product", which means any 286 | tangible personal property which is normally used for personal, family, 287 | or household purposes, or (2) anything designed or sold for incorporation 288 | into a dwelling. In determining whether a product is a consumer product, 289 | doubtful cases shall be resolved in favor of coverage. For a particular 290 | product received by a particular user, "normally used" refers to a 291 | typical or common use of that class of product, regardless of the status 292 | of the particular user or of the way in which the particular user 293 | actually uses, or expects or is expected to use, the product. A product 294 | is a consumer product regardless of whether the product has substantial 295 | commercial, industrial or non-consumer uses, unless such uses represent 296 | the only significant mode of use of the product. 297 | 298 | "Installation Information" for a User Product means any methods, 299 | procedures, authorization keys, or other information required to install 300 | and execute modified versions of a covered work in that User Product from 301 | a modified version of its Corresponding Source. The information must 302 | suffice to ensure that the continued functioning of the modified object 303 | code is in no case prevented or interfered with solely because 304 | modification has been made. 305 | 306 | If you convey an object code work under this section in, or with, or 307 | specifically for use in, a User Product, and the conveying occurs as 308 | part of a transaction in which the right of possession and use of the 309 | User Product is transferred to the recipient in perpetuity or for a 310 | fixed term (regardless of how the transaction is characterized), the 311 | Corresponding Source conveyed under this section must be accompanied 312 | by the Installation Information. But this requirement does not apply 313 | if neither you nor any third party retains the ability to install 314 | modified object code on the User Product (for example, the work has 315 | been installed in ROM). 316 | 317 | The requirement to provide Installation Information does not include a 318 | requirement to continue to provide support service, warranty, or updates 319 | for a work that has been modified or installed by the recipient, or for 320 | the User Product in which it has been modified or installed. Access to a 321 | network may be denied when the modification itself materially and 322 | adversely affects the operation of the network or violates the rules and 323 | protocols for communication across the network. 324 | 325 | Corresponding Source conveyed, and Installation Information provided, 326 | in accord with this section must be in a format that is publicly 327 | documented (and with an implementation available to the public in 328 | source code form), and must require no special password or key for 329 | unpacking, reading or copying. 330 | 331 | 7. Additional Terms. 332 | 333 | "Additional permissions" are terms that supplement the terms of this 334 | License by making exceptions from one or more of its conditions. 335 | Additional permissions that are applicable to the entire Program shall 336 | be treated as though they were included in this License, to the extent 337 | that they are valid under applicable law. If additional permissions 338 | apply only to part of the Program, that part may be used separately 339 | under those permissions, but the entire Program remains governed by 340 | this License without regard to the additional permissions. 341 | 342 | When you convey a copy of a covered work, you may at your option 343 | remove any additional permissions from that copy, or from any part of 344 | it. (Additional permissions may be written to require their own 345 | removal in certain cases when you modify the work.) You may place 346 | additional permissions on material, added by you to a covered work, 347 | for which you have or can give appropriate copyright permission. 348 | 349 | Notwithstanding any other provision of this License, for material you 350 | add to a covered work, you may (if authorized by the copyright holders of 351 | that material) supplement the terms of this License with terms: 352 | 353 | a) Disclaiming warranty or limiting liability differently from the 354 | terms of sections 15 and 16 of this License; or 355 | 356 | b) Requiring preservation of specified reasonable legal notices or 357 | author attributions in that material or in the Appropriate Legal 358 | Notices displayed by works containing it; or 359 | 360 | c) Prohibiting misrepresentation of the origin of that material, or 361 | requiring that modified versions of such material be marked in 362 | reasonable ways as different from the original version; or 363 | 364 | d) Limiting the use for publicity purposes of names of licensors or 365 | authors of the material; or 366 | 367 | e) Declining to grant rights under trademark law for use of some 368 | trade names, trademarks, or service marks; or 369 | 370 | f) Requiring indemnification of licensors and authors of that 371 | material by anyone who conveys the material (or modified versions of 372 | it) with contractual assumptions of liability to the recipient, for 373 | any liability that these contractual assumptions directly impose on 374 | those licensors and authors. 375 | 376 | All other non-permissive additional terms are considered "further 377 | restrictions" within the meaning of section 10. If the Program as you 378 | received it, or any part of it, contains a notice stating that it is 379 | governed by this License along with a term that is a further 380 | restriction, you may remove that term. If a license document contains 381 | a further restriction but permits relicensing or conveying under this 382 | License, you may add to a covered work material governed by the terms 383 | of that license document, provided that the further restriction does 384 | not survive such relicensing or conveying. 385 | 386 | If you add terms to a covered work in accord with this section, you 387 | must place, in the relevant source files, a statement of the 388 | additional terms that apply to those files, or a notice indicating 389 | where to find the applicable terms. 390 | 391 | Additional terms, permissive or non-permissive, may be stated in the 392 | form of a separately written license, or stated as exceptions; 393 | the above requirements apply either way. 394 | 395 | 8. Termination. 396 | 397 | You may not propagate or modify a covered work except as expressly 398 | provided under this License. Any attempt otherwise to propagate or 399 | modify it is void, and will automatically terminate your rights under 400 | this License (including any patent licenses granted under the third 401 | paragraph of section 11). 402 | 403 | However, if you cease all violation of this License, then your 404 | license from a particular copyright holder is reinstated (a) 405 | provisionally, unless and until the copyright holder explicitly and 406 | finally terminates your license, and (b) permanently, if the copyright 407 | holder fails to notify you of the violation by some reasonable means 408 | prior to 60 days after the cessation. 409 | 410 | Moreover, your license from a particular copyright holder is 411 | reinstated permanently if the copyright holder notifies you of the 412 | violation by some reasonable means, this is the first time you have 413 | received notice of violation of this License (for any work) from that 414 | copyright holder, and you cure the violation prior to 30 days after 415 | your receipt of the notice. 416 | 417 | Termination of your rights under this section does not terminate the 418 | licenses of parties who have received copies or rights from you under 419 | this License. If your rights have been terminated and not permanently 420 | reinstated, you do not qualify to receive new licenses for the same 421 | material under section 10. 422 | 423 | 9. Acceptance Not Required for Having Copies. 424 | 425 | You are not required to accept this License in order to receive or 426 | run a copy of the Program. Ancillary propagation of a covered work 427 | occurring solely as a consequence of using peer-to-peer transmission 428 | to receive a copy likewise does not require acceptance. However, 429 | nothing other than this License grants you permission to propagate or 430 | modify any covered work. These actions infringe copyright if you do 431 | not accept this License. Therefore, by modifying or propagating a 432 | covered work, you indicate your acceptance of this License to do so. 433 | 434 | 10. Automatic Licensing of Downstream Recipients. 435 | 436 | Each time you convey a covered work, the recipient automatically 437 | receives a license from the original licensors, to run, modify and 438 | propagate that work, subject to this License. You are not responsible 439 | for enforcing compliance by third parties with this License. 440 | 441 | An "entity transaction" is a transaction transferring control of an 442 | organization, or substantially all assets of one, or subdividing an 443 | organization, or merging organizations. If propagation of a covered 444 | work results from an entity transaction, each party to that 445 | transaction who receives a copy of the work also receives whatever 446 | licenses to the work the party's predecessor in interest had or could 447 | give under the previous paragraph, plus a right to possession of the 448 | Corresponding Source of the work from the predecessor in interest, if 449 | the predecessor has it or can get it with reasonable efforts. 450 | 451 | You may not impose any further restrictions on the exercise of the 452 | rights granted or affirmed under this License. For example, you may 453 | not impose a license fee, royalty, or other charge for exercise of 454 | rights granted under this License, and you may not initiate litigation 455 | (including a cross-claim or counterclaim in a lawsuit) alleging that 456 | any patent claim is infringed by making, using, selling, offering for 457 | sale, or importing the Program or any portion of it. 458 | 459 | 11. Patents. 460 | 461 | A "contributor" is a copyright holder who authorizes use under this 462 | License of the Program or a work on which the Program is based. The 463 | work thus licensed is called the contributor's "contributor version". 464 | 465 | A contributor's "essential patent claims" are all patent claims 466 | owned or controlled by the contributor, whether already acquired or 467 | hereafter acquired, that would be infringed by some manner, permitted 468 | by this License, of making, using, or selling its contributor version, 469 | but do not include claims that would be infringed only as a 470 | consequence of further modification of the contributor version. For 471 | purposes of this definition, "control" includes the right to grant 472 | patent sublicenses in a manner consistent with the requirements of 473 | this License. 474 | 475 | Each contributor grants you a non-exclusive, worldwide, royalty-free 476 | patent license under the contributor's essential patent claims, to 477 | make, use, sell, offer for sale, import and otherwise run, modify and 478 | propagate the contents of its contributor version. 479 | 480 | In the following three paragraphs, a "patent license" is any express 481 | agreement or commitment, however denominated, not to enforce a patent 482 | (such as an express permission to practice a patent or covenant not to 483 | sue for patent infringement). To "grant" such a patent license to a 484 | party means to make such an agreement or commitment not to enforce a 485 | patent against the party. 486 | 487 | If you convey a covered work, knowingly relying on a patent license, 488 | and the Corresponding Source of the work is not available for anyone 489 | to copy, free of charge and under the terms of this License, through a 490 | publicly available network server or other readily accessible means, 491 | then you must either (1) cause the Corresponding Source to be so 492 | available, or (2) arrange to deprive yourself of the benefit of the 493 | patent license for this particular work, or (3) arrange, in a manner 494 | consistent with the requirements of this License, to extend the patent 495 | license to downstream recipients. "Knowingly relying" means you have 496 | actual knowledge that, but for the patent license, your conveying the 497 | covered work in a country, or your recipient's use of the covered work 498 | in a country, would infringe one or more identifiable patents in that 499 | country that you have reason to believe are valid. 500 | 501 | If, pursuant to or in connection with a single transaction or 502 | arrangement, you convey, or propagate by procuring conveyance of, a 503 | covered work, and grant a patent license to some of the parties 504 | receiving the covered work authorizing them to use, propagate, modify 505 | or convey a specific copy of the covered work, then the patent license 506 | you grant is automatically extended to all recipients of the covered 507 | work and works based on it. 508 | 509 | A patent license is "discriminatory" if it does not include within 510 | the scope of its coverage, prohibits the exercise of, or is 511 | conditioned on the non-exercise of one or more of the rights that are 512 | specifically granted under this License. You may not convey a covered 513 | work if you are a party to an arrangement with a third party that is 514 | in the business of distributing software, under which you make payment 515 | to the third party based on the extent of your activity of conveying 516 | the work, and under which the third party grants, to any of the 517 | parties who would receive the covered work from you, a discriminatory 518 | patent license (a) in connection with copies of the covered work 519 | conveyed by you (or copies made from those copies), or (b) primarily 520 | for and in connection with specific products or compilations that 521 | contain the covered work, unless you entered into that arrangement, 522 | or that patent license was granted, prior to 28 March 2007. 523 | 524 | Nothing in this License shall be construed as excluding or limiting 525 | any implied license or other defenses to infringement that may 526 | otherwise be available to you under applicable patent law. 527 | 528 | 12. No Surrender of Others' Freedom. 529 | 530 | If conditions are imposed on you (whether by court order, agreement or 531 | otherwise) that contradict the conditions of this License, they do not 532 | excuse you from the conditions of this License. If you cannot convey a 533 | covered work so as to satisfy simultaneously your obligations under this 534 | License and any other pertinent obligations, then as a consequence you may 535 | not convey it at all. For example, if you agree to terms that obligate you 536 | to collect a royalty for further conveying from those to whom you convey 537 | the Program, the only way you could satisfy both those terms and this 538 | License would be to refrain entirely from conveying the Program. 539 | 540 | 13. Remote Network Interaction; Use with the GNU General Public License. 541 | 542 | Notwithstanding any other provision of this License, if you modify the 543 | Program, your modified version must prominently offer all users 544 | interacting with it remotely through a computer network (if your version 545 | supports such interaction) an opportunity to receive the Corresponding 546 | Source of your version by providing access to the Corresponding Source 547 | from a network server at no charge, through some standard or customary 548 | means of facilitating copying of software. This Corresponding Source 549 | shall include the Corresponding Source for any work covered by version 3 550 | of the GNU General Public License that is incorporated pursuant to the 551 | following paragraph. 552 | 553 | Notwithstanding any other provision of this License, you have 554 | permission to link or combine any covered work with a work licensed 555 | under version 3 of the GNU General Public License into a single 556 | combined work, and to convey the resulting work. The terms of this 557 | License will continue to apply to the part which is the covered work, 558 | but the work with which it is combined will remain governed by version 559 | 3 of the GNU General Public License. 560 | 561 | 14. Revised Versions of this License. 562 | 563 | The Free Software Foundation may publish revised and/or new versions of 564 | the GNU Affero General Public License from time to time. Such new versions 565 | will be similar in spirit to the present version, but may differ in detail to 566 | address new problems or concerns. 567 | 568 | Each version is given a distinguishing version number. If the 569 | Program specifies that a certain numbered version of the GNU Affero General 570 | Public License "or any later version" applies to it, you have the 571 | option of following the terms and conditions either of that numbered 572 | version or of any later version published by the Free Software 573 | Foundation. If the Program does not specify a version number of the 574 | GNU Affero General Public License, you may choose any version ever published 575 | by the Free Software Foundation. 576 | 577 | If the Program specifies that a proxy can decide which future 578 | versions of the GNU Affero General Public License can be used, that proxy's 579 | public statement of acceptance of a version permanently authorizes you 580 | to choose that version for the Program. 581 | 582 | Later license versions may give you additional or different 583 | permissions. However, no additional obligations are imposed on any 584 | author or copyright holder as a result of your choosing to follow a 585 | later version. 586 | 587 | 15. Disclaimer of Warranty. 588 | 589 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 590 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 591 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 592 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 593 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 594 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 595 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 596 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 597 | 598 | 16. Limitation of Liability. 599 | 600 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 601 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 602 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 603 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 604 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 605 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 606 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 607 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 608 | SUCH DAMAGES. 609 | 610 | 17. Interpretation of Sections 15 and 16. 611 | 612 | If the disclaimer of warranty and limitation of liability provided 613 | above cannot be given local legal effect according to their terms, 614 | reviewing courts shall apply local law that most closely approximates 615 | an absolute waiver of all civil liability in connection with the 616 | Program, unless a warranty or assumption of liability accompanies a 617 | copy of the Program in return for a fee. 618 | 619 | END OF TERMS AND CONDITIONS 620 | 621 | How to Apply These Terms to Your New Programs 622 | 623 | If you develop a new program, and you want it to be of the greatest 624 | possible use to the public, the best way to achieve this is to make it 625 | free software which everyone can redistribute and change under these terms. 626 | 627 | To do so, attach the following notices to the program. It is safest 628 | to attach them to the start of each source file to most effectively 629 | state the exclusion of warranty; and each file should have at least 630 | the "copyright" line and a pointer to where the full notice is found. 631 | 632 | 633 | Copyright (C) 634 | 635 | This program is free software: you can redistribute it and/or modify 636 | it under the terms of the GNU Affero General Public License as published by 637 | the Free Software Foundation, either version 3 of the License, or 638 | (at your option) any later version. 639 | 640 | This program is distributed in the hope that it will be useful, 641 | but WITHOUT ANY WARRANTY; without even the implied warranty of 642 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 643 | GNU Affero General Public License for more details. 644 | 645 | You should have received a copy of the GNU Affero General Public License 646 | along with this program. If not, see . 647 | 648 | Also add information on how to contact you by electronic and paper mail. 649 | 650 | If your software can interact with users remotely through a computer 651 | network, you should also make sure that it provides a way for users to 652 | get its source. For example, if your program is a web application, its 653 | interface could display a "Source" link that leads users to an archive 654 | of the code. There are many ways you could offer source, and different 655 | solutions will be better for different programs; see section 13 for the 656 | specific requirements. 657 | 658 | You should also get your employer (if you work as a programmer) or school, 659 | if any, to sign a "copyright disclaimer" for the program, if necessary. 660 | For more information on this, and how to apply and follow the GNU AGPL, see 661 | . -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # Makefile for building the project 2 | 3 | app_name=files_mv 4 | project_dir=$(CURDIR)/../$(app_name) 5 | build_dir=$(CURDIR)/build/artifacts 6 | appstore_dir=$(build_dir)/appstore 7 | source_dir=$(build_dir)/source 8 | package_name=$(app_name) 9 | 10 | all: dist 11 | 12 | clean: 13 | rm -rf $(build_dir) 14 | 15 | dist: clean 16 | mkdir -p $(source_dir) 17 | tar cvzf $(source_dir)/$(package_name).tar.gz $(project_dir) \ 18 | --exclude-vcs \ 19 | --exclude=$(project_dir)/build/artifacts \ 20 | --exclude=$(project_dir)/js/node_modules \ 21 | --exclude=$(project_dir)/js/coverage 22 | 23 | appstore: appstore_package 24 | ocdev appstore release build/artifacts/appstore/$(package_name).tar.gz 25 | 26 | appstore_package: clean 27 | mkdir -p $(appstore_dir) 28 | tar cvzf $(appstore_dir)/$(package_name).tar.gz $(project_dir) \ 29 | --exclude-vcs \ 30 | --exclude=$(project_dir)/build \ 31 | --exclude=$(project_dir)/js/node_modules \ 32 | --exclude=$(project_dir)/js/.bowerrc \ 33 | --exclude=$(project_dir)/js/.jshintrc \ 34 | --exclude=$(project_dir)/js/Gruntfile.js \ 35 | --exclude=$(project_dir)/js/*.json \ 36 | --exclude=$(project_dir)/js/*.conf.js \ 37 | --exclude=$(project_dir)/js/*.log \ 38 | --exclude=$(project_dir)/js/README.md \ 39 | --exclude=$(project_dir)/js/.bowerrc \ 40 | --exclude=$(project_dir)/.travis.yml \ 41 | --exclude=$(project_dir)/phpunit*xml \ 42 | --exclude=$(project_dir)/Makefile \ 43 | --exclude=$(project_dir)/tests 44 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Files Mv 2 | Place this app in **owncloud/apps/** and rename it to **files_mv** 3 | 4 | ## Install from github 5 | Download the version from github and run the following command in the folder: 6 | 7 | make appstore_package 8 | 9 | Extract the archive *build/artifacts/appstore/files_mv.tar.gz* to your owncloud app folder. 10 | 11 | ## Publish to App Store 12 | 13 | First get an account for the [App Store](http://apps.owncloud.com/) then run: 14 | 15 | make appstore 16 | 17 | **ocdev** will ask for your App Store credentials and save them to ~/.ocdevrc which is created afterwards for reuse. 18 | 19 | If the field in **appinfo/info.xml** is not present, a new app will be created on the appstore instead of updated. You can look up the ocsid in the app page URL, e.g.: **http://apps.owncloud.com/content/show.php/News?content=168040** would use the ocsid **168040** 20 | 21 | ## Running tests 22 | After [Installing PHPUnit](http://phpunit.de/getting-started.html) run: 23 | 24 | phpunit -c phpunit.xml 25 | -------------------------------------------------------------------------------- /appinfo/app.php: -------------------------------------------------------------------------------- 1 | 9 | * @copyright eotryx 2015 10 | */ 11 | 12 | namespace OCA\Files_Mv\AppInfo; 13 | 14 | \OCP\Util::addScript( 'files_mv', "move" ); 15 | \OCP\Util::addStyle('files_mv', 'mv'); 16 | 17 | -------------------------------------------------------------------------------- /appinfo/application.php: -------------------------------------------------------------------------------- 1 | 9 | * @copyright eotryx 2015 10 | */ 11 | 12 | 13 | namespace OCA\Files_mv\Appinfo; 14 | 15 | use OC\AppFramework\Utility\SimpleContainer; 16 | use OCA\Files\Controller\ApiController; 17 | use OCP\AppFramework\App; 18 | use \OCA\Files\Service\TagService; 19 | use \OCP\IContainer; 20 | 21 | class Application extends App { 22 | public function __construct(array $urlParams=array()) { 23 | parent::__construct('files_mv', $urlParams); 24 | $container = $this->getContainer(); 25 | 26 | /** 27 | * UserFolder 28 | */ 29 | $container->registerService('UserFolder', function (IContainer $c) { 30 | return $c->query('ServerContainer')->getUserFolder(); 31 | }); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /appinfo/info.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | files_mv 4 | Files Move 5 | Move functionality within the files interface 6 | AGPL 7 | eotryx 8 | 0.8.2 9 | Files_Mv 10 | productivity 11 | https://github.com/eotryx/oc_files_mv/ 12 | 13 | 14 | 15 | 16 | 17 | 18 | 150271 19 | 20 | -------------------------------------------------------------------------------- /appinfo/routes.php: -------------------------------------------------------------------------------- 1 | 9 | * @copyright eotryx 2015 10 | */ 11 | 12 | /** 13 | * Create your routes in here. The name is the lowercase name of the controller 14 | * without the controller part, the stuff after the hash is the method. 15 | * e.g. page#index -> OCA\Files_Mv\\Controller\PageController->index() 16 | * 17 | * The controller class has to be registered in the application.php file since 18 | * it's instantiated in there 19 | */ 20 | return [ 21 | 'routes' => [ 22 | ['name' => 'complete#index', 'url' => '/complete', 'verb' => 'POST'], 23 | ['name' => 'move#index', 'url' => '/move', 'verb' => 'POST'], 24 | ] 25 | ]; 26 | -------------------------------------------------------------------------------- /controller/completecontroller.php: -------------------------------------------------------------------------------- 1 | 9 | * @copyright eotryx 2015 10 | */ 11 | 12 | namespace OCA\Files_Mv\Controller; 13 | 14 | use OCP\IRequest; 15 | use OCP\AppFramework\Http\TemplateResponse; 16 | use OCP\AppFramework\Http\DataResponse; 17 | use OCP\AppFramework\Controller; 18 | use OCP\IServerContainer; 19 | use OCP\IL10N; 20 | 21 | class CompleteController extends Controller { 22 | /** @var \OC\IL10N */ 23 | private $l; 24 | private $storage; 25 | private $showLayers = 2; // TODO: Move to settings, default value 26 | 27 | public function __construct($AppName, 28 | IRequest $request, 29 | IL10N $l, 30 | $UserFolder){ 31 | parent::__construct($AppName, $request); 32 | $this->storage = $UserFolder; 33 | $this->l = $l; 34 | } 35 | /** 36 | * provide a list of directories based on the $startDir excluding all directories listed in $file(;sv) 37 | * @param string $file - semicolon separated filenames 38 | * @param string $startDir - Dir where to start with the autocompletion 39 | * @return JSON list with all directories matching 40 | * 41 | * @NoAdminRequired 42 | */ 43 | public function index($file, $StartDir){ 44 | $curDir = $StartDir; 45 | $files = $this->fixInputFiles($file); 46 | $dirs = array(); 47 | $filePrefix = ""; 48 | 49 | // fix curDir, so it always start with leading / 50 | if(empty($curDir)) $curDir = '/'; 51 | else { 52 | if(strlen($curDir)>1 && substr($curDir,0,1)!=='/'){ 53 | $curDir = '/'.$curDir; 54 | } 55 | } 56 | if(!$this->storage->nodeExists($curDir)){ 57 | // user is writing a longer directory name, so assume the base directory instead and set directory starting letters 58 | $pathinfo = pathinfo($curDir); 59 | $curDir = $pathinfo['dirname']; 60 | if($curDir == ".") $curDir = ""; 61 | $filePrefix = $pathinfo['basename']; 62 | } 63 | if(!($this->storage->nodeExists($curDir) 64 | && $this->storage->get($curDir)->getType()===\OCP\Files\FileInfo::TYPE_FOLDER 65 | ) 66 | ){ // node should exist and be a directory, otherwise something terrible happened 67 | return array("status"=>"error","message"=>$this->l->t('No filesystem found')); 68 | } 69 | if(dirname($files[0])!=="/" && dirname($files[0])!==""){ 70 | $dirs[] = '/'; 71 | } 72 | $patternFile = '!('. implode(')|(',$files) .')!'; 73 | if($curDir!="/" && !preg_match($patternFile,$curDir)) $dirs[] = $curDir; 74 | $tmp = $this->getDirList( 75 | $curDir, 76 | $files, 77 | $filePrefix, 78 | $this->showLayers); 79 | $dirs = array_merge($dirs,$tmp); 80 | 81 | return $dirs; 82 | } 83 | 84 | /** 85 | * clean Input param $files so that it is returned as an array where each file has a full path 86 | * @param String $files 87 | * @return array 88 | */ 89 | private function fixInputFiles($files){ 90 | $files = explode(';',$files); 91 | if(!is_array($files)) $files = array($files); // files can be one or many 92 | $rootDir = dirname($files[0]).'/';//first file has full path 93 | // expand each file in $files to full path to the user root directory 94 | for($i=0,$len=count($files); $i<$len; $i++){ 95 | if($i>0) $files[$i] = $rootDir.$files[$i]; 96 | if(strpos($files[$i],'//')!==false){ 97 | $files[$i] = substr($files[$i],1); // drop leading slash, because there are two slashes 98 | } 99 | } 100 | return $files; 101 | } 102 | 103 | /** 104 | * Recursively create a directory listing for the current directory $dir, ignoring $actFile with the depth $depth 105 | * 106 | * @param string $dir - current directory 107 | * @param string $actFile - file to be ignored 108 | * @param string filePrefix - prefix with which the folder name should start 109 | * @param int $depth - which depth, -1=all (sub-)levels, 0=finish 110 | */ 111 | private function getDirList($dir, $actFile, $filePrefix, $depth=-1){ 112 | if($depth == 0) return array(); // Abbruch wenn depth = 0 113 | $ret = array(); 114 | $patternFile = '!(('.implode(')|(',$actFile).'))$!'; 115 | $folder = $this->storage->get($dir)->getDirectoryListing(); 116 | $actFileDir = dirname($actFile[0]); // ignore exactly this path 117 | if(substr($dir,-1)=='/') $dir = substr($dir,0,-1); //remove ending '/' 118 | foreach($folder as $i ){ 119 | // ignore files other than directories 120 | if($i->getType()!==\OCP\Files\FileInfo::TYPE_FOLDER) continue; 121 | if(!empty($filePrefix) && !(stripos($i->getName(), $filePrefix)===0)) continue; // continue when file-prefix is given and the prefix doesn't match 122 | 123 | $path = $dir.'/'.$i->getName(); 124 | 125 | // ignore directories that are within the files to be moved 126 | if(preg_match($patternFile,$path)) continue; 127 | 128 | // only list paths, that are writable and are not the files own directory 129 | if($i->isUpdateable() && $path != $actFileDir){ 130 | $ret[] = $path; 131 | } 132 | //recursion for all sub directories 133 | $ret = array_merge($ret,$this->getDirList($path,$actFile,$filePrefix, $depth-1)); 134 | } 135 | return $ret; 136 | } 137 | } 138 | -------------------------------------------------------------------------------- /controller/movecontroller.php: -------------------------------------------------------------------------------- 1 | 9 | * @copyright eotryx 2015 10 | */ 11 | 12 | namespace OCA\Files_Mv\Controller; 13 | 14 | use \OCP\IRequest; 15 | use \OCP\AppFramework\Http\TemplateResponse; 16 | use \OCP\AppFramework\Http\DataResponse; 17 | use \OCP\AppFramework\Controller; 18 | use \OCP\IServerContainer; 19 | use \OCP\IL10N; 20 | 21 | class MoveController extends Controller { 22 | //private $userId; 23 | private $l; 24 | private $storage; 25 | 26 | public function __construct($AppName, IRequest $request, IL10N $l, $UserFolder){ 27 | parent::__construct($AppName, $request); 28 | $this->storage = $UserFolder; 29 | $this->l = $l; 30 | } 31 | /** 32 | * move/copy $file from $srcDir to $dest 33 | * @param string $srcDir 34 | * @param string $file - semicolon separated filenames 35 | * @param string $dest - destination Directory 36 | * @param bool $copy - true=copy, false=move 37 | * @NoAdminRequired 38 | */ 39 | public function index($srcDir, $srcFile, $dest, $copy=false){ 40 | if(empty($srcFile) || empty($dest)){ 41 | return array("status"=>"error","message"=>$this->l->t('No data supplied.')); 42 | } 43 | 44 | // prepare file names 45 | $files = explode(';', $srcFile); 46 | if(!is_array($files)) $files = array($files); 47 | $files = array_filter($files); // remove empty elements 48 | 49 | //TODO: use OCP instead of OC 50 | $srcDir = \OC\Files\Filesystem::normalizePath($srcDir).'/'; 51 | $dest = \OC\Files\Filesystem::normalizePath($dest).'/'; 52 | if($srcDir==$dest){ 53 | return array("status"=>"error","message"=>$this->l->t('Src and Dest are not allowed to be the same location!')); 54 | } 55 | 56 | $error = 0; 57 | $err = array(); 58 | $filesMoved = array(); 59 | $msg =array(); 60 | foreach($files as $file){ 61 | $toPath = ($dest.$file); 62 | $fromPath = ($srcDir.$file); 63 | // API: folder-obj->move/copy($to) not working 64 | $from = $this->storage->get($fromPath); 65 | $to = $this->storage->getFullPath($toPath); 66 | if($this->storage->nodeExists($toPath)){ 67 | $err['exists'][] = $file; 68 | } 69 | else{ 70 | try{ 71 | if($copy){ 72 | // when copying files, DO NOT ADD to $filesMoved, as the gui removes them then from the view 73 | //$this->copyRec($fromPath, $toPath); 74 | $from->copy($to); 75 | } 76 | else{ 77 | /* 78 | if(\OC\Files\Filesystem::rename($fromPath, $toPath)){ 79 | $filesMoved[] = $file; 80 | } 81 | else{ 82 | $err['failed'][] = $file; 83 | } 84 | */ 85 | $from->move($to); 86 | $filesMoved[] = $file; 87 | 88 | } 89 | } 90 | catch(\OCP\Files\NotPermittedException $e){ 91 | $err['failed'] = $file; 92 | $msg[] = $e->getMessage(); 93 | } 94 | catch(\Exception $e){ 95 | $msg[] = $file.": ".$e->getMessage(); 96 | } 97 | } 98 | } 99 | if(!empty($err['exists'])){ 100 | $msg[] = $this->l->t("Could not move %s - File with this name already exists", array(implode(", ",$err['exists']))); 101 | } 102 | if(!empty($err['failed'])){ 103 | $msg[] = $this->l->t("Could not move %s", array(implode(", ",$err['failed']))); 104 | } 105 | $msg = implode("
\n",$msg); 106 | $status = (empty($msg)?'success':'error'); 107 | $result = array('status'=>$status,'action'=>'mv','name'=>$filesMoved,'message'=>$msg); 108 | return $result; 109 | 110 | } 111 | 112 | 113 | /** 114 | * copy object recursively, $src can be either file or folder, it doesn't matter 115 | * @param string $src - sourcefile 116 | * @param string $dest - destination file 117 | * @deprecated supported natively now by OC8 118 | */ 119 | /* 120 | private function copyRec($src,$dest){ 121 | if(\OC\Files\Filesystem::is_dir($src)){ // copy dir 122 | if($dh = \OC\Files\Filesystem::opendir($src)){ 123 | \OC\Files\Filesystem::mkdir($dest); 124 | while(($file = readdir($dh)) !== false){ 125 | if(in_array($file,array('.','..'))) continue; // skip links to self or upper folder 126 | if(\OC\Files\Filesystem::is_dir($src.'/'.$file)) $this->copyRec($src.'/'.$file,$dest.'/'.$file); 127 | else \OC\Files\Filesystem::copy($src.'/'.$file, $dest.'/'.$file); 128 | } 129 | } 130 | } 131 | else{ // copy file 132 | \OC\Files\Filesystem::copy($src, $dest); 133 | } 134 | return true; 135 | } 136 | */ 137 | } 138 | 139 | -------------------------------------------------------------------------------- /css/mv.css: -------------------------------------------------------------------------------- 1 | #mvDrop{ 2 | display:block; 3 | position:absolute; 4 | right:0; 5 | margin-right:7em; 6 | padding:0.5em; 7 | background:#eee; 8 | border-left:1px solid #ccc; 9 | border-right:1px solid #ccc; 10 | border-bottom:1px solid #ccc; 11 | border-bottom-right-radius:1em; 12 | border-bottom-left-radius:1em; 13 | z-index:100; 14 | } 15 | .action, .selectedActions a, #logout { opacity:1; -webkit-transition:0; -moz-transition:0; -o-transition:0; transition:0; } 16 | .mv{ 17 | margin-top:1.5em; 18 | margin-right:9em; 19 | top:1em; 20 | } 21 | #mvDrop label{ font-weight:normal; } 22 | #mvForm { 23 | margin: 0; 24 | padding: 0; 25 | } 26 | -------------------------------------------------------------------------------- /img/app.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /js/move.js: -------------------------------------------------------------------------------- 1 | /** 2 | * ownCloud - files_mv 3 | * 4 | * This file is licensed under the Affero General Public License version 3 or 5 | * later. See the COPYING file. 6 | * 7 | * @author eotryx 8 | * @copyright eotryx 2015 9 | */ 10 | 11 | if(!OCA.Files_mv){ 12 | /** 13 | * Namespace for the files_mv app 14 | * @namespace OCA.Files_mv 15 | */ 16 | OCA.Files_mv = {}; 17 | } 18 | /** 19 | * @namespace OCA.Files_mv.move 20 | */ 21 | OCA.Files_mv.Move = { 22 | /** 23 | * @var string appName used for translation file 24 | * as transifex uses the github project name, use this instead of the appName 25 | */ 26 | appName: 'oc_files_mv', 27 | registerFileAction: function(){ 28 | var img = OC.imagePath('core','actions/play'); 29 | OCA.Files.fileActions.register( 30 | 'all', 31 | t(this.appName,'Move'), 32 | OC.PERMISSION_READ, 33 | OC.imagePath('core','actions/play'), 34 | function(file) { 35 | if (($('#mvDrop').length > 0)) { 36 | $('#mvDrop').detach(); 37 | } 38 | else{ 39 | OCA.Files_mv.Move.createUI(true,file,false); 40 | } 41 | } 42 | ); 43 | //TODO: what? 44 | var el = $('#headerName .selectedActions'); 45 | $(''+t(this.appName,'Move')+''+t(this.appName,'Move')+'').appendTo(el); 46 | el.find('.move').click(this.keks) 47 | }, 48 | 49 | initialize: function(){ 50 | this.registerFileAction(); 51 | 52 | //TODO: wtf does this? 53 | $(this).click(function(event){ 54 | if( 55 | (! 56 | ($(event.target).hasClass('ui-corner-all')) 57 | && $(event.target).parents().index($('.ui-menu'))==-1 58 | ) 59 | && (! 60 | ($(event.target).hasClass('mvUI')) 61 | && $(event.target).parents().index($('#mvDrop'))==-1 62 | ) 63 | ){ 64 | $('#mvDrop').detach(); 65 | } 66 | }); 67 | 68 | $('#mvForm').live('submit',this.submit); 69 | }, 70 | 71 | submit: function(){ 72 | var dest = $('#dirList').val(); 73 | var file = $('#dirFile').val(); 74 | var dir = $('#dir').val(); 75 | var copy = $('#dirCopy').attr('checked')=='checked'; 76 | $.ajax({ 77 | type: 'POST', 78 | url: OC.generateUrl('/apps/files_mv/move'), 79 | cache: false, 80 | data: {srcDir: dir, srcFile: file, dest: dest, copy: copy}, 81 | success: function(data){ 82 | //remove each moved file 83 | console.log(data.name, data); 84 | $.each(data.name,function(index,value){ 85 | console.log("each",index,value) 86 | FileList.remove(value); 87 | //procesSelection(); 88 | }); 89 | // show error messages when caught some 90 | if(data.status=="error"){ 91 | OC.Notification.showTemporary(data.message); 92 | } 93 | console.log(data) 94 | } 95 | }); 96 | $('#dirList').autocomplete("close"); 97 | $('#mvDrop').detach(); 98 | return false; 99 | }, 100 | 101 | /** 102 | * TODO: why is this called keks? And what does it do? 103 | */ 104 | keks: function(event){ 105 | // move multiple files 106 | event.stopPropagation(); 107 | event.preventDefault(); 108 | if($('#mvDrop').length>0){ 109 | $('#mvDrop').detach(); 110 | return; 111 | } 112 | var files = FileList.getSelectedFiles(); 113 | var file=''; 114 | for( var i=0;i
'; 148 | 149 | html += '
'; 150 | html += ''; 151 | html += ''; 152 | html += ''; 153 | html += ''; 154 | if(local){ 155 | $(html).appendTo($('tr').filterAttr('data-file',file).find('td.filename')); 156 | } 157 | else{ 158 | $(html).addClass('mv').appendTo('#headerName .selectedActions'); 159 | } 160 | $('#dirList').focus(function(){ 161 | $('#dirList').autocomplete("search","/") 162 | }); 163 | // get autocompletion names 164 | $('#dirList').autocomplete({minLength:0, 165 | source: function(request, response) { 166 | $.post( 167 | OC.generateUrl('/apps/files_mv/complete'), 168 | { 169 | file: $('#dir').val()+'/'+file, 170 | StartDir: $('#dirList').val(), // using current input to allow access to more than n levels depth 171 | }, 172 | function(dir){ 173 | $('#dirList').autocomplete('option','autoFocus', true); 174 | if(dir['status'] && dir['status']=='error'){ 175 | response(dir['message']); 176 | } 177 | else{ 178 | response(dir); 179 | } 180 | }, 181 | 'json' 182 | ); 183 | }, 184 | }); 185 | $('#dirList').focus(); 186 | }, 187 | } 188 | $(document).ready(function() { 189 | /** 190 | * check whether we are in files-app and we are not in a public-shared folder 191 | */ 192 | if(!OCA.Files){ // we don't have the files app, so ignore anything 193 | return; 194 | } 195 | if(/(public)\.php/i.exec(window.location.href)!=null){ 196 | return; // escape when the requested file is public.php 197 | } 198 | 199 | /** 200 | * Init Files_mv 201 | */ 202 | OCA.Files_mv.Move.initialize(); 203 | }); 204 | -------------------------------------------------------------------------------- /l10n/.tx/config: -------------------------------------------------------------------------------- 1 | [main] 2 | host = https://www.transifex.com 3 | lang_map = ja_JP: ja 4 | 5 | [owncloud.oc_files_mv] 6 | file_filter = /oc_files_mv.po 7 | source_file = templates/oc_files_mv.pot 8 | source_lang = en 9 | type = PO 10 | -------------------------------------------------------------------------------- /l10n/af_ZA.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Geen lêerstelsel gevind", 5 | "No data supplied." : "Geen data verskaf.", 6 | "Src and Dest are not allowed to be the same location!" : "Bron en Bestemming mag nie dieselfde plek wees nie!", 7 | "Could not move %s - File with this name already exists" : "Kon nie %s skuif nie - Lêer met hierdie naam bestaan reeds", 8 | "Could not move %s" : "Kon nie %s skuif nie", 9 | "Move" : "Skuif", 10 | "Copy" : "Kopieer", 11 | "Destination directory" : "Bestemmingsgids" 12 | }, 13 | "nplurals=2; plural=(n != 1);"); 14 | -------------------------------------------------------------------------------- /l10n/af_ZA.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Geen lêerstelsel gevind", 3 | "No data supplied." : "Geen data verskaf.", 4 | "Src and Dest are not allowed to be the same location!" : "Bron en Bestemming mag nie dieselfde plek wees nie!", 5 | "Could not move %s - File with this name already exists" : "Kon nie %s skuif nie - Lêer met hierdie naam bestaan reeds", 6 | "Could not move %s" : "Kon nie %s skuif nie", 7 | "Move" : "Skuif", 8 | "Copy" : "Kopieer", 9 | "Destination directory" : "Bestemmingsgids" 10 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 11 | } -------------------------------------------------------------------------------- /l10n/ast.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Nun s'atoparon ficheros de sistema", 5 | "No data supplied." : "Nun s'especificaron los datos.", 6 | "Src and Dest are not allowed to be the same location!" : "Src y Dest nun s'almiten na mesmu allugamientu", 7 | "Could not move %s - File with this name already exists" : "Nun pudo movese %s - Yá existe un ficheru con esi nome.", 8 | "Could not move %s" : "Nun pudo movese %s", 9 | "Move" : "Mover", 10 | "Copy" : "Copiar", 11 | "Destination directory" : "Direutoriu de destín" 12 | }, 13 | "nplurals=2; plural=(n != 1);"); 14 | -------------------------------------------------------------------------------- /l10n/ast.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Nun s'atoparon ficheros de sistema", 3 | "No data supplied." : "Nun s'especificaron los datos.", 4 | "Src and Dest are not allowed to be the same location!" : "Src y Dest nun s'almiten na mesmu allugamientu", 5 | "Could not move %s - File with this name already exists" : "Nun pudo movese %s - Yá existe un ficheru con esi nome.", 6 | "Could not move %s" : "Nun pudo movese %s", 7 | "Move" : "Mover", 8 | "Copy" : "Copiar", 9 | "Destination directory" : "Direutoriu de destín" 10 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 11 | } -------------------------------------------------------------------------------- /l10n/bg_BG.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Не е открита файлова система", 5 | "No data supplied." : "Не са посочени данни", 6 | "Src and Dest are not allowed to be the same location!" : "Src и Dest не може да бъдат същото местоположение!", 7 | "Could not move %s - File with this name already exists" : "Неуспешно преместване на %s - Файл със същото име вече съществува.", 8 | "Could not move %s" : "Неуспешно преместване на %s.", 9 | "Move" : "Премести", 10 | "Copy" : "Копирай", 11 | "Destination directory" : "Крайна папка" 12 | }, 13 | "nplurals=2; plural=(n != 1);"); 14 | -------------------------------------------------------------------------------- /l10n/bg_BG.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Не е открита файлова система", 3 | "No data supplied." : "Не са посочени данни", 4 | "Src and Dest are not allowed to be the same location!" : "Src и Dest не може да бъдат същото местоположение!", 5 | "Could not move %s - File with this name already exists" : "Неуспешно преместване на %s - Файл със същото име вече съществува.", 6 | "Could not move %s" : "Неуспешно преместване на %s.", 7 | "Move" : "Премести", 8 | "Copy" : "Копирай", 9 | "Destination directory" : "Крайна папка" 10 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 11 | } -------------------------------------------------------------------------------- /l10n/ca.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "No s'ha trobat cap arxiu del sistema", 5 | "No data supplied." : "No s'han subministrat les dades.", 6 | "Src and Dest are not allowed to be the same location!" : "Origen i Destinació no poden tenir la mateixa ubicació!", 7 | "Could not move %s - File with this name already exists" : "No s'ha pogut moure %s - Ja hi ha un fitxer amb aquest nom", 8 | "Could not move %s" : " No s'ha pogut moure %s", 9 | "Move" : "Moure", 10 | "Copy" : "Còpia", 11 | "Destination directory" : "Directori de destinació" 12 | }, 13 | "nplurals=2; plural=(n != 1);"); 14 | -------------------------------------------------------------------------------- /l10n/ca.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "No s'ha trobat cap arxiu del sistema", 3 | "No data supplied." : "No s'han subministrat les dades.", 4 | "Src and Dest are not allowed to be the same location!" : "Origen i Destinació no poden tenir la mateixa ubicació!", 5 | "Could not move %s - File with this name already exists" : "No s'ha pogut moure %s - Ja hi ha un fitxer amb aquest nom", 6 | "Could not move %s" : " No s'ha pogut moure %s", 7 | "Move" : "Moure", 8 | "Copy" : "Còpia", 9 | "Destination directory" : "Directori de destinació" 10 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 11 | } -------------------------------------------------------------------------------- /l10n/cs_CZ.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Souborový systém nenalezen", 5 | "No data supplied." : "Nebyla dodána žádná data.", 6 | "Src and Dest are not allowed to be the same location!" : "Src a Dest nelze cílit do stejného umístění!", 7 | "Could not move %s - File with this name already exists" : "Nelze přesunout %s - již existuje soubor se stejným názvem", 8 | "Could not move %s" : "Nelze přesunout %s", 9 | "Move" : "Přesunout", 10 | "Copy" : "Kopie", 11 | "Destination directory" : "Cílový adresář" 12 | }, 13 | "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); 14 | -------------------------------------------------------------------------------- /l10n/cs_CZ.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Souborový systém nenalezen", 3 | "No data supplied." : "Nebyla dodána žádná data.", 4 | "Src and Dest are not allowed to be the same location!" : "Src a Dest nelze cílit do stejného umístění!", 5 | "Could not move %s - File with this name already exists" : "Nelze přesunout %s - již existuje soubor se stejným názvem", 6 | "Could not move %s" : "Nelze přesunout %s", 7 | "Move" : "Přesunout", 8 | "Copy" : "Kopie", 9 | "Destination directory" : "Cílový adresář" 10 | },"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" 11 | } -------------------------------------------------------------------------------- /l10n/da.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Fandt ikke et filsystem", 5 | "No data supplied." : "Der medfulgte ingen data.", 6 | "Src and Dest are not allowed to be the same location!" : "Kilde og destination må ikke have samme placering!", 7 | "Could not move %s - File with this name already exists" : "Kunne ikke flytte %s - der findes allerede en fil med dette navn", 8 | "Could not move %s" : "Kunne ikke flytte %s", 9 | "Move" : "Flyt", 10 | "Copy" : "Kopiér", 11 | "Destination directory" : "Destinationsmappe" 12 | }, 13 | "nplurals=2; plural=(n != 1);"); 14 | -------------------------------------------------------------------------------- /l10n/da.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Fandt ikke et filsystem", 3 | "No data supplied." : "Der medfulgte ingen data.", 4 | "Src and Dest are not allowed to be the same location!" : "Kilde og destination må ikke have samme placering!", 5 | "Could not move %s - File with this name already exists" : "Kunne ikke flytte %s - der findes allerede en fil med dette navn", 6 | "Could not move %s" : "Kunne ikke flytte %s", 7 | "Move" : "Flyt", 8 | "Copy" : "Kopiér", 9 | "Destination directory" : "Destinationsmappe" 10 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 11 | } -------------------------------------------------------------------------------- /l10n/de.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Kein Dateisystem gefunden", 5 | "No data supplied." : "Keine Daten angegeben.", 6 | "Src and Dest are not allowed to be the same location!" : "Quelle und Ziel dürfen nicht derselbe Ort sein!", 7 | "Could not move %s - File with this name already exists" : "Konnte %s nicht verschieben. Eine Datei mit diesem Namen existiert bereits", 8 | "Could not move %s" : "Konnte %s nicht verschieben", 9 | "Move" : "Verschieben", 10 | "Copy" : "Kopieren", 11 | "Destination directory" : "Zielordner" 12 | }, 13 | "nplurals=2; plural=(n != 1);"); 14 | -------------------------------------------------------------------------------- /l10n/de.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Kein Dateisystem gefunden", 3 | "No data supplied." : "Keine Daten angegeben.", 4 | "Src and Dest are not allowed to be the same location!" : "Quelle und Ziel dürfen nicht derselbe Ort sein!", 5 | "Could not move %s - File with this name already exists" : "Konnte %s nicht verschieben. Eine Datei mit diesem Namen existiert bereits", 6 | "Could not move %s" : "Konnte %s nicht verschieben", 7 | "Move" : "Verschieben", 8 | "Copy" : "Kopieren", 9 | "Destination directory" : "Zielordner" 10 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 11 | } -------------------------------------------------------------------------------- /l10n/de_DE.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Kein Dateisystem gefunden", 5 | "No data supplied." : "Keine Daten angegeben.", 6 | "Src and Dest are not allowed to be the same location!" : "Quelle und Ziel dürfen nicht derselbe Ort sein!", 7 | "Could not move %s - File with this name already exists" : "%s konnte nicht verschoben werden. Eine Datei mit diesem Namen existiert bereits.", 8 | "Could not move %s" : "Konnte %s nicht verschieben", 9 | "Move" : "Verschieben", 10 | "Copy" : "Kopieren", 11 | "Destination directory" : "Zielordner" 12 | }, 13 | "nplurals=2; plural=(n != 1);"); 14 | -------------------------------------------------------------------------------- /l10n/de_DE.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Kein Dateisystem gefunden", 3 | "No data supplied." : "Keine Daten angegeben.", 4 | "Src and Dest are not allowed to be the same location!" : "Quelle und Ziel dürfen nicht derselbe Ort sein!", 5 | "Could not move %s - File with this name already exists" : "%s konnte nicht verschoben werden. Eine Datei mit diesem Namen existiert bereits.", 6 | "Could not move %s" : "Konnte %s nicht verschieben", 7 | "Move" : "Verschieben", 8 | "Copy" : "Kopieren", 9 | "Destination directory" : "Zielordner" 10 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 11 | } -------------------------------------------------------------------------------- /l10n/el.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Δεν βρέθηκε σύστημα αρχείων", 5 | "No data supplied." : "Δεν έχουν δοθεί δεδομένα", 6 | "Src and Dest are not allowed to be the same location!" : "Τα Scr και Dest δεν επιτρέπεται να βρίσκονται στην ίδια τοποθεσία!", 7 | "Could not move %s - File with this name already exists" : "Αδυναμία μετακίνησης του %s - υπάρχει ήδη αρχείο με αυτό το όνομα", 8 | "Could not move %s" : "Αδυναμία μετακίνησης του %s", 9 | "Move" : "Μετακίνηση", 10 | "Copy" : "Αντιγραφή", 11 | "Destination directory" : "Φάκελος προορισμού" 12 | }, 13 | "nplurals=2; plural=(n != 1);"); 14 | -------------------------------------------------------------------------------- /l10n/el.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Δεν βρέθηκε σύστημα αρχείων", 3 | "No data supplied." : "Δεν έχουν δοθεί δεδομένα", 4 | "Src and Dest are not allowed to be the same location!" : "Τα Scr και Dest δεν επιτρέπεται να βρίσκονται στην ίδια τοποθεσία!", 5 | "Could not move %s - File with this name already exists" : "Αδυναμία μετακίνησης του %s - υπάρχει ήδη αρχείο με αυτό το όνομα", 6 | "Could not move %s" : "Αδυναμία μετακίνησης του %s", 7 | "Move" : "Μετακίνηση", 8 | "Copy" : "Αντιγραφή", 9 | "Destination directory" : "Φάκελος προορισμού" 10 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 11 | } -------------------------------------------------------------------------------- /l10n/en_GB.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "No filesystem found", 5 | "No data supplied." : "No data supplied.", 6 | "Src and Dest are not allowed to be the same location!" : "Src and Dest are not allowed to be the same location!", 7 | "Could not move %s - File with this name already exists" : "Could not move %s - File with this name already exists", 8 | "Could not move %s" : "Could not move %s", 9 | "Move" : "Move", 10 | "Copy" : "Copy", 11 | "Destination directory" : "Destination directory" 12 | }, 13 | "nplurals=2; plural=(n != 1);"); 14 | -------------------------------------------------------------------------------- /l10n/en_GB.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "No filesystem found", 3 | "No data supplied." : "No data supplied.", 4 | "Src and Dest are not allowed to be the same location!" : "Src and Dest are not allowed to be the same location!", 5 | "Could not move %s - File with this name already exists" : "Could not move %s - File with this name already exists", 6 | "Could not move %s" : "Could not move %s", 7 | "Move" : "Move", 8 | "Copy" : "Copy", 9 | "Destination directory" : "Destination directory" 10 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 11 | } -------------------------------------------------------------------------------- /l10n/es.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Ningún archivo de sistema encontrado", 5 | "No data supplied." : "No se ha especificado los datos", 6 | "Src and Dest are not allowed to be the same location!" : "¡Origen y destino no pueden estar en la misma localización!", 7 | "Could not move %s - File with this name already exists" : "No se pudo mover %s - Ya existe un archivo con ese nombre.", 8 | "Could not move %s" : "No se pudo mover %s", 9 | "Move" : "Mover", 10 | "Copy" : "Copiar", 11 | "Destination directory" : "Directorio de destino" 12 | }, 13 | "nplurals=2; plural=(n != 1);"); 14 | -------------------------------------------------------------------------------- /l10n/es.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Ningún archivo de sistema encontrado", 3 | "No data supplied." : "No se ha especificado los datos", 4 | "Src and Dest are not allowed to be the same location!" : "¡Origen y destino no pueden estar en la misma localización!", 5 | "Could not move %s - File with this name already exists" : "No se pudo mover %s - Ya existe un archivo con ese nombre.", 6 | "Could not move %s" : "No se pudo mover %s", 7 | "Move" : "Mover", 8 | "Copy" : "Copiar", 9 | "Destination directory" : "Directorio de destino" 10 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 11 | } -------------------------------------------------------------------------------- /l10n/es_AR.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Ningún sistema de archivos encontrado", 5 | "Src and Dest are not allowed to be the same location!" : "El orígen y destino no ser la misma ubicación!", 6 | "Could not move %s - File with this name already exists" : "No se pudo mover %s - Un archivo con este nombre ya existe", 7 | "Could not move %s" : "No se pudo mover %s ", 8 | "Move" : "Mover", 9 | "Copy" : "Copiar" 10 | }, 11 | "nplurals=2; plural=(n != 1);"); 12 | -------------------------------------------------------------------------------- /l10n/es_AR.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Ningún sistema de archivos encontrado", 3 | "Src and Dest are not allowed to be the same location!" : "El orígen y destino no ser la misma ubicación!", 4 | "Could not move %s - File with this name already exists" : "No se pudo mover %s - Un archivo con este nombre ya existe", 5 | "Could not move %s" : "No se pudo mover %s ", 6 | "Move" : "Mover", 7 | "Copy" : "Copiar" 8 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 9 | } -------------------------------------------------------------------------------- /l10n/es_MX.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "No se encontró ningún sistema de archivos", 5 | "No data supplied." : "No se suministraron datos.", 6 | "Src and Dest are not allowed to be the same location!" : "¡Origen y Destino no pueden estar en la misma ubicación!", 7 | "Could not move %s - File with this name already exists" : "No se pudo mover %s - Ya existe un archivo con ese nombre.", 8 | "Could not move %s" : "No se pudo mover %s", 9 | "Move" : "Mover", 10 | "Copy" : "Copiar", 11 | "Destination directory" : "Directorio destino" 12 | }, 13 | "nplurals=2; plural=(n != 1);"); 14 | -------------------------------------------------------------------------------- /l10n/es_MX.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "No se encontró ningún sistema de archivos", 3 | "No data supplied." : "No se suministraron datos.", 4 | "Src and Dest are not allowed to be the same location!" : "¡Origen y Destino no pueden estar en la misma ubicación!", 5 | "Could not move %s - File with this name already exists" : "No se pudo mover %s - Ya existe un archivo con ese nombre.", 6 | "Could not move %s" : "No se pudo mover %s", 7 | "Move" : "Mover", 8 | "Copy" : "Copiar", 9 | "Destination directory" : "Directorio destino" 10 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 11 | } -------------------------------------------------------------------------------- /l10n/et_EE.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Failisüsteemi ei leitud", 5 | "No data supplied." : "Andmeid pole.", 6 | "Src and Dest are not allowed to be the same location!" : "Lähte- ja sihtkohad ei tohi olla samad!", 7 | "Could not move %s - File with this name already exists" : "Ei saa liigutada faili %s - samanimeline fail on juba olemas", 8 | "Could not move %s" : "%s liigutamine ebaõnnestus", 9 | "Move" : "Liiguta", 10 | "Copy" : "Kopeeri", 11 | "Destination directory" : "Sihtkaust" 12 | }, 13 | "nplurals=2; plural=(n != 1);"); 14 | -------------------------------------------------------------------------------- /l10n/et_EE.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Failisüsteemi ei leitud", 3 | "No data supplied." : "Andmeid pole.", 4 | "Src and Dest are not allowed to be the same location!" : "Lähte- ja sihtkohad ei tohi olla samad!", 5 | "Could not move %s - File with this name already exists" : "Ei saa liigutada faili %s - samanimeline fail on juba olemas", 6 | "Could not move %s" : "%s liigutamine ebaõnnestus", 7 | "Move" : "Liiguta", 8 | "Copy" : "Kopeeri", 9 | "Destination directory" : "Sihtkaust" 10 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 11 | } -------------------------------------------------------------------------------- /l10n/fa.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "هیچ فایل‌سیستمی‌ای یافت نشد", 5 | "No data supplied." : "هیچ داده‌ای داده نشده است.", 6 | "Src and Dest are not allowed to be the same location!" : "مبدا و مقصد نمی‌توانند مشابه باشند!", 7 | "Could not move %s - File with this name already exists" : "%s نمی توان جابجا کرد - در حال حاضر پرونده با این نام وجود دارد. ", 8 | "Could not move %s" : "%s نمی تواند حرکت کند ", 9 | "Move" : "انتقال", 10 | "Copy" : "کپی کردن", 11 | "Destination directory" : "پوشه مقصد" 12 | }, 13 | "nplurals=1; plural=0;"); 14 | -------------------------------------------------------------------------------- /l10n/fa.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "هیچ فایل‌سیستمی‌ای یافت نشد", 3 | "No data supplied." : "هیچ داده‌ای داده نشده است.", 4 | "Src and Dest are not allowed to be the same location!" : "مبدا و مقصد نمی‌توانند مشابه باشند!", 5 | "Could not move %s - File with this name already exists" : "%s نمی توان جابجا کرد - در حال حاضر پرونده با این نام وجود دارد. ", 6 | "Could not move %s" : "%s نمی تواند حرکت کند ", 7 | "Move" : "انتقال", 8 | "Copy" : "کپی کردن", 9 | "Destination directory" : "پوشه مقصد" 10 | },"pluralForm" :"nplurals=1; plural=0;" 11 | } -------------------------------------------------------------------------------- /l10n/fi_FI.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Tiedostojärjestelmää ei löytynyt", 5 | "No data supplied." : "Dataa ei toimitettu.", 6 | "Src and Dest are not allowed to be the same location!" : "Src ja Dest eivät voi olla sama sijainti!", 7 | "Could not move %s - File with this name already exists" : "Kohteen %s siirto ei onnistunut - Tiedosto samalla nimellä on jo olemassa", 8 | "Could not move %s" : "Kohteen %s siirto ei onnistunut", 9 | "Move" : "Siirrä", 10 | "Copy" : "Kopioi", 11 | "Destination directory" : "Kohdehakemisto" 12 | }, 13 | "nplurals=2; plural=(n != 1);"); 14 | -------------------------------------------------------------------------------- /l10n/fi_FI.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Tiedostojärjestelmää ei löytynyt", 3 | "No data supplied." : "Dataa ei toimitettu.", 4 | "Src and Dest are not allowed to be the same location!" : "Src ja Dest eivät voi olla sama sijainti!", 5 | "Could not move %s - File with this name already exists" : "Kohteen %s siirto ei onnistunut - Tiedosto samalla nimellä on jo olemassa", 6 | "Could not move %s" : "Kohteen %s siirto ei onnistunut", 7 | "Move" : "Siirrä", 8 | "Copy" : "Kopioi", 9 | "Destination directory" : "Kohdehakemisto" 10 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 11 | } -------------------------------------------------------------------------------- /l10n/fr.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Pas de système de fichier", 5 | "No data supplied." : "Aucune donnée fournie", 6 | "Src and Dest are not allowed to be the same location!" : "Src et Dest ne peuvent pas être le même emplacement!", 7 | "Could not move %s - File with this name already exists" : "Impossible de déplacer %s - Un fichier portant ce nom existe déjà", 8 | "Could not move %s" : "Impossible de déplacer %s", 9 | "Move" : "Déplacer", 10 | "Copy" : "Copier", 11 | "Destination directory" : "Dossier de destination" 12 | }, 13 | "nplurals=2; plural=(n > 1);"); 14 | -------------------------------------------------------------------------------- /l10n/fr.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Pas de système de fichier", 3 | "No data supplied." : "Aucune donnée fournie", 4 | "Src and Dest are not allowed to be the same location!" : "Src et Dest ne peuvent pas être le même emplacement!", 5 | "Could not move %s - File with this name already exists" : "Impossible de déplacer %s - Un fichier portant ce nom existe déjà", 6 | "Could not move %s" : "Impossible de déplacer %s", 7 | "Move" : "Déplacer", 8 | "Copy" : "Copier", 9 | "Destination directory" : "Dossier de destination" 10 | },"pluralForm" :"nplurals=2; plural=(n > 1);" 11 | } -------------------------------------------------------------------------------- /l10n/gl.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Non se atopou un sistema de ficheiros", 5 | "No data supplied." : "Non se forneceron datos.", 6 | "Src and Dest are not allowed to be the same location!" : "Orixe e destino non poden ser a mesma localización!", 7 | "Could not move %s - File with this name already exists" : "Non foi posíbel mover %s; Xa existe un ficheiro con ese nome.", 8 | "Could not move %s" : "Non foi posíbel mover %s", 9 | "Move" : "Mover", 10 | "Copy" : "Copiar", 11 | "Destination directory" : "Directorio de destino" 12 | }, 13 | "nplurals=2; plural=(n != 1);"); 14 | -------------------------------------------------------------------------------- /l10n/gl.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Non se atopou un sistema de ficheiros", 3 | "No data supplied." : "Non se forneceron datos.", 4 | "Src and Dest are not allowed to be the same location!" : "Orixe e destino non poden ser a mesma localización!", 5 | "Could not move %s - File with this name already exists" : "Non foi posíbel mover %s; Xa existe un ficheiro con ese nome.", 6 | "Could not move %s" : "Non foi posíbel mover %s", 7 | "Move" : "Mover", 8 | "Copy" : "Copiar", 9 | "Destination directory" : "Directorio de destino" 10 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 11 | } -------------------------------------------------------------------------------- /l10n/he.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "לא נמצאו קובצי מערכת", 5 | "No data supplied." : "לא סופק מידע.", 6 | "Src and Dest are not allowed to be the same location!" : "מקור ויעד לא יכולים להיות באותו מיקום!", 7 | "Could not move %s - File with this name already exists" : "לא ניתן להעביר את %s - קובץ בשם הזה כבר קיים", 8 | "Could not move %s" : "לא ניתן להעביר את %s", 9 | "Move" : "העברה", 10 | "Copy" : "העתקה", 11 | "Destination directory" : "תיקיית יעד" 12 | }, 13 | "nplurals=2; plural=(n != 1);"); 14 | -------------------------------------------------------------------------------- /l10n/he.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "לא נמצאו קובצי מערכת", 3 | "No data supplied." : "לא סופק מידע.", 4 | "Src and Dest are not allowed to be the same location!" : "מקור ויעד לא יכולים להיות באותו מיקום!", 5 | "Could not move %s - File with this name already exists" : "לא ניתן להעביר את %s - קובץ בשם הזה כבר קיים", 6 | "Could not move %s" : "לא ניתן להעביר את %s", 7 | "Move" : "העברה", 8 | "Copy" : "העתקה", 9 | "Destination directory" : "תיקיית יעד" 10 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 11 | } -------------------------------------------------------------------------------- /l10n/hu_HU.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Nem található fájlrendszer", 5 | "No data supplied." : "Nincs adat megadva.", 6 | "Src and Dest are not allowed to be the same location!" : "Src és Dest nem lehet ugyanazon a helyen!", 7 | "Could not move %s - File with this name already exists" : "%s áthelyezése nem sikerült - már létezik másik fájl ezzel a névvel", 8 | "Could not move %s" : "Nem sikerült %s áthelyezése", 9 | "Move" : "Mozgatás", 10 | "Copy" : "Másolás", 11 | "Destination directory" : "Cél könyvtár" 12 | }, 13 | "nplurals=2; plural=(n != 1);"); 14 | -------------------------------------------------------------------------------- /l10n/hu_HU.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Nem található fájlrendszer", 3 | "No data supplied." : "Nincs adat megadva.", 4 | "Src and Dest are not allowed to be the same location!" : "Src és Dest nem lehet ugyanazon a helyen!", 5 | "Could not move %s - File with this name already exists" : "%s áthelyezése nem sikerült - már létezik másik fájl ezzel a névvel", 6 | "Could not move %s" : "Nem sikerült %s áthelyezése", 7 | "Move" : "Mozgatás", 8 | "Copy" : "Másolás", 9 | "Destination directory" : "Cél könyvtár" 10 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 11 | } -------------------------------------------------------------------------------- /l10n/id.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Tidak ada sistem berkas yang ditemukan", 5 | "No data supplied." : "Tidak ada data yang diberikan.", 6 | "Src and Dest are not allowed to be the same location!" : "Sumber dan Tujuan tidak boleh pada lokasi yang sama!", 7 | "Could not move %s - File with this name already exists" : "Tidak dapat memindahkan %s - Berkas dengan nama ini sudah ada", 8 | "Could not move %s" : "Tidak dapat memindahkan %s", 9 | "Move" : "Pindah", 10 | "Copy" : "Salin", 11 | "Destination directory" : "Direktori tujuan" 12 | }, 13 | "nplurals=1; plural=0;"); 14 | -------------------------------------------------------------------------------- /l10n/id.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Tidak ada sistem berkas yang ditemukan", 3 | "No data supplied." : "Tidak ada data yang diberikan.", 4 | "Src and Dest are not allowed to be the same location!" : "Sumber dan Tujuan tidak boleh pada lokasi yang sama!", 5 | "Could not move %s - File with this name already exists" : "Tidak dapat memindahkan %s - Berkas dengan nama ini sudah ada", 6 | "Could not move %s" : "Tidak dapat memindahkan %s", 7 | "Move" : "Pindah", 8 | "Copy" : "Salin", 9 | "Destination directory" : "Direktori tujuan" 10 | },"pluralForm" :"nplurals=1; plural=0;" 11 | } -------------------------------------------------------------------------------- /l10n/is.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Ekkert skráakerfi fannst", 5 | "No data supplied." : "Engar upplýsingar fylgja.", 6 | "Src and Dest are not allowed to be the same location!" : "Upphafs- og áfangastaður geta ekki verið sama staðsetningin!", 7 | "Could not move %s - File with this name already exists" : "Gat ekki fært %s - Skrá með þessu nafni er þegar til", 8 | "Could not move %s" : "Gat ekki fært %s", 9 | "Move" : "Færa", 10 | "Copy" : "Afrita", 11 | "Destination directory" : "Áfangastaðarmappa" 12 | }, 13 | "nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"); 14 | -------------------------------------------------------------------------------- /l10n/is.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Ekkert skráakerfi fannst", 3 | "No data supplied." : "Engar upplýsingar fylgja.", 4 | "Src and Dest are not allowed to be the same location!" : "Upphafs- og áfangastaður geta ekki verið sama staðsetningin!", 5 | "Could not move %s - File with this name already exists" : "Gat ekki fært %s - Skrá með þessu nafni er þegar til", 6 | "Could not move %s" : "Gat ekki fært %s", 7 | "Move" : "Færa", 8 | "Copy" : "Afrita", 9 | "Destination directory" : "Áfangastaðarmappa" 10 | },"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);" 11 | } -------------------------------------------------------------------------------- /l10n/it.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Nessun filesystem trovato", 5 | "No data supplied." : "Nessun dato fornito.", 6 | "Src and Dest are not allowed to be the same location!" : "Origine e destinazione non possono essere la stessa posizione!", 7 | "Could not move %s - File with this name already exists" : "Impossibile spostare %s - un file con questo nome esiste già", 8 | "Could not move %s" : "Impossibile spostare %s", 9 | "Move" : "Sposta", 10 | "Copy" : "Copia", 11 | "Destination directory" : "Cartella di destinazione" 12 | }, 13 | "nplurals=2; plural=(n != 1);"); 14 | -------------------------------------------------------------------------------- /l10n/it.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Nessun filesystem trovato", 3 | "No data supplied." : "Nessun dato fornito.", 4 | "Src and Dest are not allowed to be the same location!" : "Origine e destinazione non possono essere la stessa posizione!", 5 | "Could not move %s - File with this name already exists" : "Impossibile spostare %s - un file con questo nome esiste già", 6 | "Could not move %s" : "Impossibile spostare %s", 7 | "Move" : "Sposta", 8 | "Copy" : "Copia", 9 | "Destination directory" : "Cartella di destinazione" 10 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 11 | } -------------------------------------------------------------------------------- /l10n/ja.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "ファイルシステムが見つかりません", 5 | "No data supplied." : "データが指定されていません。", 6 | "Src and Dest are not allowed to be the same location!" : "移動元と移動先を同じ場所にすることはできません!", 7 | "Could not move %s - File with this name already exists" : "%s を移動できませんでした ― この名前のファイルはすでに存在します", 8 | "Could not move %s" : "%s を移動できませんでした", 9 | "Move" : "移動", 10 | "Copy" : "コピー", 11 | "Destination directory" : "移動先ディレクトリ" 12 | }, 13 | "nplurals=1; plural=0;"); 14 | -------------------------------------------------------------------------------- /l10n/ja.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "ファイルシステムが見つかりません", 3 | "No data supplied." : "データが指定されていません。", 4 | "Src and Dest are not allowed to be the same location!" : "移動元と移動先を同じ場所にすることはできません!", 5 | "Could not move %s - File with this name already exists" : "%s を移動できませんでした ― この名前のファイルはすでに存在します", 6 | "Could not move %s" : "%s を移動できませんでした", 7 | "Move" : "移動", 8 | "Copy" : "コピー", 9 | "Destination directory" : "移動先ディレクトリ" 10 | },"pluralForm" :"nplurals=1; plural=0;" 11 | } -------------------------------------------------------------------------------- /l10n/ko.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "파일 시스템을 찾을 수 없음", 5 | "No data supplied." : "데이터를 제공하지 않았습니다.", 6 | "Src and Dest are not allowed to be the same location!" : "원본과 대상 위치가 같을 수 없습니다!", 7 | "Could not move %s - File with this name already exists" : "항목 %s을(를) 이동시킬 수 없음 - 같은 이름의 파일이 이미 존재함", 8 | "Could not move %s" : "항목 %s을(를) 이동시킬 수 없음", 9 | "Move" : "이동", 10 | "Copy" : "복사", 11 | "Destination directory" : "대상 디렉터리" 12 | }, 13 | "nplurals=1; plural=0;"); 14 | -------------------------------------------------------------------------------- /l10n/ko.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "파일 시스템을 찾을 수 없음", 3 | "No data supplied." : "데이터를 제공하지 않았습니다.", 4 | "Src and Dest are not allowed to be the same location!" : "원본과 대상 위치가 같을 수 없습니다!", 5 | "Could not move %s - File with this name already exists" : "항목 %s을(를) 이동시킬 수 없음 - 같은 이름의 파일이 이미 존재함", 6 | "Could not move %s" : "항목 %s을(를) 이동시킬 수 없음", 7 | "Move" : "이동", 8 | "Copy" : "복사", 9 | "Destination directory" : "대상 디렉터리" 10 | },"pluralForm" :"nplurals=1; plural=0;" 11 | } -------------------------------------------------------------------------------- /l10n/lt_LT.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Failų sistema nerasta", 5 | "No data supplied." : "Nepateikti duomenys", 6 | "Src and Dest are not allowed to be the same location!" : "Šaltinis ir paskirtis negali būti vienodi!", 7 | "Could not move %s - File with this name already exists" : "Nepavyko perkelti %s - failas su tokiu pavadinimu jau egzistuoja", 8 | "Could not move %s" : "Nepavyko perkelti %s", 9 | "Move" : "perkelti", 10 | "Copy" : "Kopijuoti", 11 | "Destination directory" : "Paskirties aplankas" 12 | }, 13 | "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); 14 | -------------------------------------------------------------------------------- /l10n/lt_LT.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Failų sistema nerasta", 3 | "No data supplied." : "Nepateikti duomenys", 4 | "Src and Dest are not allowed to be the same location!" : "Šaltinis ir paskirtis negali būti vienodi!", 5 | "Could not move %s - File with this name already exists" : "Nepavyko perkelti %s - failas su tokiu pavadinimu jau egzistuoja", 6 | "Could not move %s" : "Nepavyko perkelti %s", 7 | "Move" : "perkelti", 8 | "Copy" : "Kopijuoti", 9 | "Destination directory" : "Paskirties aplankas" 10 | },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" 11 | } -------------------------------------------------------------------------------- /l10n/nb_NO.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Filsystem ikke funnet", 5 | "No data supplied." : "Ingen data angitt.", 6 | "Src and Dest are not allowed to be the same location!" : "Kilde og destinasjon kan ikke være like!", 7 | "Could not move %s - File with this name already exists" : "Kan ikke flytte %s - En fil med samme navn finnes allerede", 8 | "Could not move %s" : "Kunne ikke flytte %s", 9 | "Move" : "Flytt", 10 | "Copy" : "Kopier", 11 | "Destination directory" : "Målkatalog" 12 | }, 13 | "nplurals=2; plural=(n != 1);"); 14 | -------------------------------------------------------------------------------- /l10n/nb_NO.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Filsystem ikke funnet", 3 | "No data supplied." : "Ingen data angitt.", 4 | "Src and Dest are not allowed to be the same location!" : "Kilde og destinasjon kan ikke være like!", 5 | "Could not move %s - File with this name already exists" : "Kan ikke flytte %s - En fil med samme navn finnes allerede", 6 | "Could not move %s" : "Kunne ikke flytte %s", 7 | "Move" : "Flytt", 8 | "Copy" : "Kopier", 9 | "Destination directory" : "Målkatalog" 10 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 11 | } -------------------------------------------------------------------------------- /l10n/nl.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Geen bestandssysteem gevonden", 5 | "No data supplied." : "Geen gegevens aangeleverd.", 6 | "Src and Dest are not allowed to be the same location!" : "Bron en Doel mogen niet dezelfde locatie zijn!", 7 | "Could not move %s - File with this name already exists" : "Kon %s niet verplaatsen - Er bestaat al een bestand met deze naam", 8 | "Could not move %s" : "Kon %s niet verplaatsen", 9 | "Move" : "verplaatsen", 10 | "Copy" : "Kopiëren", 11 | "Destination directory" : "Doelmap" 12 | }, 13 | "nplurals=2; plural=(n != 1);"); 14 | -------------------------------------------------------------------------------- /l10n/nl.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Geen bestandssysteem gevonden", 3 | "No data supplied." : "Geen gegevens aangeleverd.", 4 | "Src and Dest are not allowed to be the same location!" : "Bron en Doel mogen niet dezelfde locatie zijn!", 5 | "Could not move %s - File with this name already exists" : "Kon %s niet verplaatsen - Er bestaat al een bestand met deze naam", 6 | "Could not move %s" : "Kon %s niet verplaatsen", 7 | "Move" : "verplaatsen", 8 | "Copy" : "Kopiëren", 9 | "Destination directory" : "Doelmap" 10 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 11 | } -------------------------------------------------------------------------------- /l10n/oc.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Pas de sistèma de fichièr", 5 | "No data supplied." : "Cap de donada pas provesida", 6 | "Src and Dest are not allowed to be the same location!" : "Src e Dest pòdon pas èsser lo meteis emplaçament!", 7 | "Could not move %s - File with this name already exists" : "Impossible de desplaçar %s - Un fichièr que pòrta aqueste nom existís ja", 8 | "Could not move %s" : "Impossible de desplaçar %s", 9 | "Move" : "Desplaçar", 10 | "Copy" : "Copiar", 11 | "Destination directory" : "Dorsièr de destinacion" 12 | }, 13 | "nplurals=2; plural=(n > 1);"); 14 | -------------------------------------------------------------------------------- /l10n/oc.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Pas de sistèma de fichièr", 3 | "No data supplied." : "Cap de donada pas provesida", 4 | "Src and Dest are not allowed to be the same location!" : "Src e Dest pòdon pas èsser lo meteis emplaçament!", 5 | "Could not move %s - File with this name already exists" : "Impossible de desplaçar %s - Un fichièr que pòrta aqueste nom existís ja", 6 | "Could not move %s" : "Impossible de desplaçar %s", 7 | "Move" : "Desplaçar", 8 | "Copy" : "Copiar", 9 | "Destination directory" : "Dorsièr de destinacion" 10 | },"pluralForm" :"nplurals=2; plural=(n > 1);" 11 | } -------------------------------------------------------------------------------- /l10n/pl.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Brak systemu plików", 5 | "No data supplied." : "Brak danych", 6 | "Src and Dest are not allowed to be the same location!" : "Folder źródłowy i docelowy nie mogą być w tej samej lokalizacji", 7 | "Could not move %s - File with this name already exists" : "Nie można było przenieść %s - Plik o takiej nazwie już istnieje", 8 | "Could not move %s" : "Nie można było przenieść %s", 9 | "Move" : "Przenieś", 10 | "Copy" : "Kopiuj", 11 | "Destination directory" : "Folder docelowy" 12 | }, 13 | "nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"); 14 | -------------------------------------------------------------------------------- /l10n/pl.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Brak systemu plików", 3 | "No data supplied." : "Brak danych", 4 | "Src and Dest are not allowed to be the same location!" : "Folder źródłowy i docelowy nie mogą być w tej samej lokalizacji", 5 | "Could not move %s - File with this name already exists" : "Nie można było przenieść %s - Plik o takiej nazwie już istnieje", 6 | "Could not move %s" : "Nie można było przenieść %s", 7 | "Move" : "Przenieś", 8 | "Copy" : "Kopiuj", 9 | "Destination directory" : "Folder docelowy" 10 | },"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);" 11 | } -------------------------------------------------------------------------------- /l10n/pt_BR.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Nenhum arquivo de sistema encontrado", 5 | "No data supplied." : "Nenhum dado fornecido.", 6 | "Src and Dest are not allowed to be the same location!" : "Não é permitido Fonte e Destino serem a mesma localização!", 7 | "Could not move %s - File with this name already exists" : "Impossível mover %s - Já existe um arquivo com esse nome", 8 | "Could not move %s" : "Impossível mover %s", 9 | "Move" : "Mover", 10 | "Copy" : "Copiar", 11 | "Destination directory" : "Diretório de destino" 12 | }, 13 | "nplurals=2; plural=(n > 1);"); 14 | -------------------------------------------------------------------------------- /l10n/pt_BR.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Nenhum arquivo de sistema encontrado", 3 | "No data supplied." : "Nenhum dado fornecido.", 4 | "Src and Dest are not allowed to be the same location!" : "Não é permitido Fonte e Destino serem a mesma localização!", 5 | "Could not move %s - File with this name already exists" : "Impossível mover %s - Já existe um arquivo com esse nome", 6 | "Could not move %s" : "Impossível mover %s", 7 | "Move" : "Mover", 8 | "Copy" : "Copiar", 9 | "Destination directory" : "Diretório de destino" 10 | },"pluralForm" :"nplurals=2; plural=(n > 1);" 11 | } -------------------------------------------------------------------------------- /l10n/pt_PT.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Nenhum sistema de ficheiros encontrado", 5 | "No data supplied." : "Nenhuns dados especificados.", 6 | "Src and Dest are not allowed to be the same location!" : "Src e Dest não podem ter a mesma localização!", 7 | "Could not move %s - File with this name already exists" : "Não foi possível mover %s - Já existe um ficheiro com este nome", 8 | "Could not move %s" : "Não foi possível mover %s", 9 | "Move" : "Mover", 10 | "Copy" : "Copiar", 11 | "Destination directory" : "Diretoria de destino" 12 | }, 13 | "nplurals=2; plural=(n != 1);"); 14 | -------------------------------------------------------------------------------- /l10n/pt_PT.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Nenhum sistema de ficheiros encontrado", 3 | "No data supplied." : "Nenhuns dados especificados.", 4 | "Src and Dest are not allowed to be the same location!" : "Src e Dest não podem ter a mesma localização!", 5 | "Could not move %s - File with this name already exists" : "Não foi possível mover %s - Já existe um ficheiro com este nome", 6 | "Could not move %s" : "Não foi possível mover %s", 7 | "Move" : "Mover", 8 | "Copy" : "Copiar", 9 | "Destination directory" : "Diretoria de destino" 10 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 11 | } -------------------------------------------------------------------------------- /l10n/ro.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Nu s-a găsit niciun sistem de fișiere", 5 | "No data supplied." : "Nicio dată introdusă.", 6 | "Src and Dest are not allowed to be the same location!" : "Sursa și destinația nu pot fi în aceeași locație!", 7 | "Could not move %s - File with this name already exists" : "Nu se poate muta %s - Există deja un fișier cu acest nume", 8 | "Could not move %s" : "Nu se poate muta %s", 9 | "Move" : "Mutare", 10 | "Copy" : "Copiază", 11 | "Destination directory" : "Directorul destinație" 12 | }, 13 | "nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"); 14 | -------------------------------------------------------------------------------- /l10n/ro.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Nu s-a găsit niciun sistem de fișiere", 3 | "No data supplied." : "Nicio dată introdusă.", 4 | "Src and Dest are not allowed to be the same location!" : "Sursa și destinația nu pot fi în aceeași locație!", 5 | "Could not move %s - File with this name already exists" : "Nu se poate muta %s - Există deja un fișier cu acest nume", 6 | "Could not move %s" : "Nu se poate muta %s", 7 | "Move" : "Mutare", 8 | "Copy" : "Copiază", 9 | "Destination directory" : "Directorul destinație" 10 | },"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));" 11 | } -------------------------------------------------------------------------------- /l10n/ru.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Файловая система не найдена", 5 | "No data supplied." : "Данные не указаны.", 6 | "Src and Dest are not allowed to be the same location!" : "Источник и назначение не могут быть одним и тем же размещением!", 7 | "Could not move %s - File with this name already exists" : "Невозможно переместить %s - файл с таким именем уже существует", 8 | "Could not move %s" : "Невозможно переместить %s", 9 | "Move" : "Переместить", 10 | "Copy" : "Копировать", 11 | "Destination directory" : "Конечный каталог" 12 | }, 13 | "nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"); 14 | -------------------------------------------------------------------------------- /l10n/ru.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Файловая система не найдена", 3 | "No data supplied." : "Данные не указаны.", 4 | "Src and Dest are not allowed to be the same location!" : "Источник и назначение не могут быть одним и тем же размещением!", 5 | "Could not move %s - File with this name already exists" : "Невозможно переместить %s - файл с таким именем уже существует", 6 | "Could not move %s" : "Невозможно переместить %s", 7 | "Move" : "Переместить", 8 | "Copy" : "Копировать", 9 | "Destination directory" : "Конечный каталог" 10 | },"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);" 11 | } -------------------------------------------------------------------------------- /l10n/sk_SK.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Súborový systém nenájdený", 5 | "No data supplied." : "Dáte neboli dodané.", 6 | "Src and Dest are not allowed to be the same location!" : "Zdroj a cieľ nemôžu byť rovnaké miesto!", 7 | "Could not move %s - File with this name already exists" : "Nie je možné presunúť %s - súbor s týmto menom už existuje", 8 | "Could not move %s" : "Nie je možné presunúť %s", 9 | "Move" : "Presunúť", 10 | "Copy" : "Kopírovať", 11 | "Destination directory" : "Umiestnenie priečinka" 12 | }, 13 | "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); 14 | -------------------------------------------------------------------------------- /l10n/sk_SK.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Súborový systém nenájdený", 3 | "No data supplied." : "Dáte neboli dodané.", 4 | "Src and Dest are not allowed to be the same location!" : "Zdroj a cieľ nemôžu byť rovnaké miesto!", 5 | "Could not move %s - File with this name already exists" : "Nie je možné presunúť %s - súbor s týmto menom už existuje", 6 | "Could not move %s" : "Nie je možné presunúť %s", 7 | "Move" : "Presunúť", 8 | "Copy" : "Kopírovať", 9 | "Destination directory" : "Umiestnenie priečinka" 10 | },"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" 11 | } -------------------------------------------------------------------------------- /l10n/sl.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Ni najdenega datotečnega sistema", 5 | "No data supplied." : "Ni podanih podatkov.", 6 | "Src and Dest are not allowed to be the same location!" : "Izvorna in ciljna mapa ne moreta biti na istem mestu.", 7 | "Could not move %s - File with this name already exists" : "Datoteke %s ni mogoče premakniti - datoteka s tem imenom že obstaja.", 8 | "Could not move %s" : "Datoteke %s ni mogoče premakniti", 9 | "Move" : "Premakni", 10 | "Copy" : "Kopiraj", 11 | "Destination directory" : "Ciljna mapa" 12 | }, 13 | "nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"); 14 | -------------------------------------------------------------------------------- /l10n/sl.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Ni najdenega datotečnega sistema", 3 | "No data supplied." : "Ni podanih podatkov.", 4 | "Src and Dest are not allowed to be the same location!" : "Izvorna in ciljna mapa ne moreta biti na istem mestu.", 5 | "Could not move %s - File with this name already exists" : "Datoteke %s ni mogoče premakniti - datoteka s tem imenom že obstaja.", 6 | "Could not move %s" : "Datoteke %s ni mogoče premakniti", 7 | "Move" : "Premakni", 8 | "Copy" : "Kopiraj", 9 | "Destination directory" : "Ciljna mapa" 10 | },"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);" 11 | } -------------------------------------------------------------------------------- /l10n/sq.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "S’u gjet sistem kartelash", 5 | "No data supplied." : "S’u dhanë të dhëna.", 6 | "Src and Dest are not allowed to be the same location!" : "Burimi dhe Vendmbërritja nuk lejohet të jenë i njëjti vend!", 7 | "Could not move %s - File with this name already exists" : "S’u zhvendos dot %s - Ka tashmë një kartelë me të njëjtin emër", 8 | "Could not move %s" : "S’u zhvendos dot %s", 9 | "Move" : "Zhvendose", 10 | "Copy" : "Kopjoje", 11 | "Destination directory" : "Drejtori vendmbërritje" 12 | }, 13 | "nplurals=2; plural=(n != 1);"); 14 | -------------------------------------------------------------------------------- /l10n/sq.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "S’u gjet sistem kartelash", 3 | "No data supplied." : "S’u dhanë të dhëna.", 4 | "Src and Dest are not allowed to be the same location!" : "Burimi dhe Vendmbërritja nuk lejohet të jenë i njëjti vend!", 5 | "Could not move %s - File with this name already exists" : "S’u zhvendos dot %s - Ka tashmë një kartelë me të njëjtin emër", 6 | "Could not move %s" : "S’u zhvendos dot %s", 7 | "Move" : "Zhvendose", 8 | "Copy" : "Kopjoje", 9 | "Destination directory" : "Drejtori vendmbërritje" 10 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 11 | } -------------------------------------------------------------------------------- /l10n/sr.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Нема фајл-система", 5 | "No data supplied." : "Нема података.", 6 | "Src and Dest are not allowed to be the same location!" : "Извор и одредиште не могу бити исти!", 7 | "Could not move %s - File with this name already exists" : "Не могу да преместим %s – фајл са овим називом већ постоји", 8 | "Could not move %s" : "Не могу да преместим %s", 9 | "Move" : "Премести", 10 | "Copy" : "Копирај", 11 | "Destination directory" : "Одредишни директоријум" 12 | }, 13 | "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); 14 | -------------------------------------------------------------------------------- /l10n/sr.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Нема фајл-система", 3 | "No data supplied." : "Нема података.", 4 | "Src and Dest are not allowed to be the same location!" : "Извор и одредиште не могу бити исти!", 5 | "Could not move %s - File with this name already exists" : "Не могу да преместим %s – фајл са овим називом већ постоји", 6 | "Could not move %s" : "Не могу да преместим %s", 7 | "Move" : "Премести", 8 | "Copy" : "Копирај", 9 | "Destination directory" : "Одредишни директоријум" 10 | },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" 11 | } -------------------------------------------------------------------------------- /l10n/sv.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Kunde inte hitta något filsystem", 5 | "No data supplied." : "Ingen data levererades.", 6 | "Src and Dest are not allowed to be the same location!" : "Källa och destination kan inte vara samma plats!", 7 | "Could not move %s - File with this name already exists" : "Kunde inte flytta %s - Det finns redan en fil med detta namn", 8 | "Could not move %s" : "Kan inte flytta %s", 9 | "Move" : "Flytta", 10 | "Copy" : "Kopiera", 11 | "Destination directory" : "Destinationsmapp" 12 | }, 13 | "nplurals=2; plural=(n != 1);"); 14 | -------------------------------------------------------------------------------- /l10n/sv.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Kunde inte hitta något filsystem", 3 | "No data supplied." : "Ingen data levererades.", 4 | "Src and Dest are not allowed to be the same location!" : "Källa och destination kan inte vara samma plats!", 5 | "Could not move %s - File with this name already exists" : "Kunde inte flytta %s - Det finns redan en fil med detta namn", 6 | "Could not move %s" : "Kan inte flytta %s", 7 | "Move" : "Flytta", 8 | "Copy" : "Kopiera", 9 | "Destination directory" : "Destinationsmapp" 10 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 11 | } -------------------------------------------------------------------------------- /l10n/th_TH.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "ไม่พบแฟ้มระบบ", 5 | "No data supplied." : "ไม่มีข้อมูลที่ให้มา", 6 | "Src and Dest are not allowed to be the same location!" : "Src และ Dest ไม่ได้รับอนุญาตให้อยู่ที่เดียวกัน!", 7 | "Could not move %s - File with this name already exists" : "ไม่สามารถย้าย %s ได้ - ไฟล์ที่ใช้ชื่อนี้มีอยู่แล้ว", 8 | "Could not move %s" : "ไม่สามารถย้าย %s ได้", 9 | "Move" : "ย้าย", 10 | "Copy" : "คัดลอก", 11 | "Destination directory" : "ไดเรกทอรีปลายทาง" 12 | }, 13 | "nplurals=1; plural=0;"); 14 | -------------------------------------------------------------------------------- /l10n/th_TH.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "ไม่พบแฟ้มระบบ", 3 | "No data supplied." : "ไม่มีข้อมูลที่ให้มา", 4 | "Src and Dest are not allowed to be the same location!" : "Src และ Dest ไม่ได้รับอนุญาตให้อยู่ที่เดียวกัน!", 5 | "Could not move %s - File with this name already exists" : "ไม่สามารถย้าย %s ได้ - ไฟล์ที่ใช้ชื่อนี้มีอยู่แล้ว", 6 | "Could not move %s" : "ไม่สามารถย้าย %s ได้", 7 | "Move" : "ย้าย", 8 | "Copy" : "คัดลอก", 9 | "Destination directory" : "ไดเรกทอรีปลายทาง" 10 | },"pluralForm" :"nplurals=1; plural=0;" 11 | } -------------------------------------------------------------------------------- /l10n/tr.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Dosya sistemi bulunamadı", 5 | "No data supplied." : "Hiçbir veri sağlanmadı", 6 | "Src and Dest are not allowed to be the same location!" : "Kaynak ve Hedefin aynı olmasına izin verilmiyor!", 7 | "Could not move %s - File with this name already exists" : "%s taşınamadı. Bu isimde dosya zaten mevcut", 8 | "Could not move %s" : "%s taşınamadı", 9 | "Move" : "Taşı", 10 | "Copy" : "Kopyala", 11 | "Destination directory" : "Hedef dizini" 12 | }, 13 | "nplurals=2; plural=(n > 1);"); 14 | -------------------------------------------------------------------------------- /l10n/tr.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Dosya sistemi bulunamadı", 3 | "No data supplied." : "Hiçbir veri sağlanmadı", 4 | "Src and Dest are not allowed to be the same location!" : "Kaynak ve Hedefin aynı olmasına izin verilmiyor!", 5 | "Could not move %s - File with this name already exists" : "%s taşınamadı. Bu isimde dosya zaten mevcut", 6 | "Could not move %s" : "%s taşınamadı", 7 | "Move" : "Taşı", 8 | "Copy" : "Kopyala", 9 | "Destination directory" : "Hedef dizini" 10 | },"pluralForm" :"nplurals=2; plural=(n > 1);" 11 | } -------------------------------------------------------------------------------- /l10n/uk.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "Не знайдено жодної файлової системи", 5 | "No data supplied." : "Немає даних", 6 | "Src and Dest are not allowed to be the same location!" : "Джерело та призначення не можуть бути одним й тим самим!", 7 | "Could not move %s - File with this name already exists" : "Не вдалося перемістити %s - Файл з таким ім'ям вже існує", 8 | "Could not move %s" : "Не вдалося перемістити %s", 9 | "Move" : "Перемістити", 10 | "Copy" : "Копіювати", 11 | "Destination directory" : "Тека призначення" 12 | }, 13 | "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); 14 | -------------------------------------------------------------------------------- /l10n/uk.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "Не знайдено жодної файлової системи", 3 | "No data supplied." : "Немає даних", 4 | "Src and Dest are not allowed to be the same location!" : "Джерело та призначення не можуть бути одним й тим самим!", 5 | "Could not move %s - File with this name already exists" : "Не вдалося перемістити %s - Файл з таким ім'ям вже існує", 6 | "Could not move %s" : "Не вдалося перемістити %s", 7 | "Move" : "Перемістити", 8 | "Copy" : "Копіювати", 9 | "Destination directory" : "Тека призначення" 10 | },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" 11 | } -------------------------------------------------------------------------------- /l10n/zh_CN.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "未找到文件系统", 5 | "No data supplied." : "无提供数据。", 6 | "Src and Dest are not allowed to be the same location!" : "源目录与目标目录无能相同!", 7 | "Could not move %s - File with this name already exists" : "无法移动 %s - 同名文件已存在", 8 | "Could not move %s" : "无法移动 %s", 9 | "Move" : "移动", 10 | "Copy" : "复制", 11 | "Destination directory" : "目标目录" 12 | }, 13 | "nplurals=1; plural=0;"); 14 | -------------------------------------------------------------------------------- /l10n/zh_CN.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "未找到文件系统", 3 | "No data supplied." : "无提供数据。", 4 | "Src and Dest are not allowed to be the same location!" : "源目录与目标目录无能相同!", 5 | "Could not move %s - File with this name already exists" : "无法移动 %s - 同名文件已存在", 6 | "Could not move %s" : "无法移动 %s", 7 | "Move" : "移动", 8 | "Copy" : "复制", 9 | "Destination directory" : "目标目录" 10 | },"pluralForm" :"nplurals=1; plural=0;" 11 | } -------------------------------------------------------------------------------- /l10n/zh_TW.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "oc_files_mv", 3 | { 4 | "No filesystem found" : "未找到檔案系統", 5 | "No data supplied." : "未提供資料。", 6 | "Src and Dest are not allowed to be the same location!" : "來源端與目的端不能是相同的位置!", 7 | "Could not move %s - File with this name already exists" : "無法移動 %s ,同名的檔案已經存在", 8 | "Could not move %s" : "無法移動 %s", 9 | "Move" : "移動", 10 | "Copy" : "複製", 11 | "Destination directory" : "目的端資料夾" 12 | }, 13 | "nplurals=1; plural=0;"); 14 | -------------------------------------------------------------------------------- /l10n/zh_TW.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "No filesystem found" : "未找到檔案系統", 3 | "No data supplied." : "未提供資料。", 4 | "Src and Dest are not allowed to be the same location!" : "來源端與目的端不能是相同的位置!", 5 | "Could not move %s - File with this name already exists" : "無法移動 %s ,同名的檔案已經存在", 6 | "Could not move %s" : "無法移動 %s", 7 | "Move" : "移動", 8 | "Copy" : "複製", 9 | "Destination directory" : "目的端資料夾" 10 | },"pluralForm" :"nplurals=1; plural=0;" 11 | } -------------------------------------------------------------------------------- /phpunit.integration.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ./tests/integration 5 | 6 | 7 | -------------------------------------------------------------------------------- /phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ./tests/unit 5 | 6 | 7 | -------------------------------------------------------------------------------- /templates/main.php: -------------------------------------------------------------------------------- 1 | 5 | 6 |
7 |
8 | inc('part.navigation')); ?> 9 | inc('part.settings')); ?> 10 |
11 | 12 |
13 |
14 | inc('part.content')); ?> 15 |
16 |
17 |
18 | -------------------------------------------------------------------------------- /templates/part.content.php: -------------------------------------------------------------------------------- 1 |

Hello World

2 | 3 |

4 | 5 |

8 |

9 | 10 | Ajax response:
-------------------------------------------------------------------------------- /templates/part.navigation.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /templates/part.settings.php: -------------------------------------------------------------------------------- 1 |
2 |
3 | 6 |
7 |
8 | 9 |
10 |
-------------------------------------------------------------------------------- /tests/unit/autoloader.php: -------------------------------------------------------------------------------- 1 | 9 | * @copyright eotryx 2015 10 | */ 11 | 12 | require_once __DIR__ . '/../../../../3rdparty/autoload.php'; 13 | 14 | 15 | class OC { 16 | public static $server; 17 | public static $session; 18 | } 19 | 20 | // to execute without owncloud, we need to create our own classloader 21 | spl_autoload_register(function ($className){ 22 | if (strpos($className, 'OCA\\') === 0) { 23 | 24 | $path = strtolower(str_replace('\\', '/', substr($className, 3)) . '.php'); 25 | $relPath = __DIR__ . '/../../..' . $path; 26 | 27 | if(file_exists($relPath)){ 28 | require_once $relPath; 29 | } 30 | } else if(strpos($className, 'OCP\\') === 0) { 31 | $path = strtolower(str_replace('\\', '/', substr($className, 3)) . '.php'); 32 | $relPath = __DIR__ . '/../../../../lib/public' . $path; 33 | 34 | if(file_exists($relPath)){ 35 | require_once $relPath; 36 | } 37 | } else if(strpos($className, 'OC_') === 0) { 38 | $path = strtolower(str_replace('\\', '/', substr($className, 3)) . '.php'); 39 | $relPath = __DIR__ . '/../../../../lib/private/' . $path; 40 | 41 | if(file_exists($relPath)){ 42 | require_once $relPath; 43 | } 44 | } else if(strpos($className, 'Test\\') === 0) { 45 | $path = strtolower(str_replace('\\', '/', substr($className, 4)) . '.php'); 46 | $relPath = __DIR__ . '/../../../../tests/lib/' . $path; 47 | 48 | if(file_exists($relPath)){ 49 | require_once $relPath; 50 | } 51 | } else if(strpos($className, 'OC\\') === 0) { 52 | $path = strtolower(str_replace('\\', '/', substr($className, 2)) . '.php'); 53 | $relPath = __DIR__ . '/../../../../lib/private' . $path; 54 | 55 | if(file_exists($relPath)){ 56 | require_once $relPath; 57 | } 58 | } 59 | }); 60 | 61 | // create a new server instance 62 | OC::$server = new \OC\Server(''); -------------------------------------------------------------------------------- /tests/unit/controller/CompleteControllerTest.php: -------------------------------------------------------------------------------- 1 | 9 | * @copyright eotryx 2015 10 | */ 11 | 12 | namespace OCA\Files_mv\Controller; 13 | 14 | use PHPUnit_Framework_TestCase; 15 | 16 | use OCP\AppFramework\Http\TemplateResponse; 17 | 18 | 19 | class CompleteControllerTest extends PHPUnit_Framework_TestCase { 20 | private $appName = 'files_mv'; 21 | 22 | private $controller; 23 | 24 | private $storage; 25 | private $l; 26 | private $folder; 27 | private $request; 28 | private $map; 29 | 30 | /** 31 | * generate a mock folder 32 | * @param string $name 33 | * @param bool $updateAble 34 | * @param array $map array(array($name, $ret_obj), ...) 35 | * @param array $dirList array($folder, $file, $folder, ...) 36 | * 37 | */ 38 | private function getMockFolder($name, $updateAble, $map, $dirList){ 39 | $obj = $this->getMock('\OCP\Files\Folder',array(),array(),'',false); 40 | 41 | $obj->expects($this->any()) 42 | ->method('getType') 43 | ->will($this->returnValue(\OCP\Files\FileInfo::TYPE_FOLDER)); 44 | $obj->expects($this->any()) 45 | ->method('get') 46 | ->will($this->returnValueMap($map)); 47 | $obj->expects($this->any()) 48 | ->method('getName') 49 | ->will($this->returnValue($name)); 50 | $obj->expects($this->any()) 51 | ->method('isUpdateable') 52 | ->will($this->returnValue($updateAble)); 53 | $obj->expects($this->any()) 54 | ->method('getDirectoryListing') 55 | ->will($this->returnValue($dirList)); 56 | //TODO: maybe modify this method to something more realistic? 57 | $obj->expects($this->any()) 58 | ->method('nodeExists') 59 | ->will($this->returnValue(true)); 60 | 61 | $this->map[] = array($name, $obj); 62 | return $obj; 63 | } 64 | private function getMockFolders($names, $updateAble, $mapIn, $dirList){ 65 | $list = $map = array(); 66 | foreach(explode(',',$names) as $k=>$name){ 67 | $obj = $this->getMockFolder($name, $updateAble[$k], $mapIn[$k],$dirList[$k]); 68 | $list[] = $obj; 69 | $map[] = array($name, $obj); 70 | } 71 | return array($list,$map); 72 | } 73 | /** 74 | * generate a mock file 75 | * @param string $name 76 | */ 77 | private function getMockFiles($names){ 78 | $list = $map = array(); 79 | foreach(explode(',',$names) as $name){ 80 | $obj = $this->getMock('\OCP\Files\File',array(),array(),'',false); 81 | 82 | $obj->expects($this->any()) 83 | ->method('getType') 84 | ->will($this->returnValue(\OCP\Files\FileInfo::TYPE_FILE)); 85 | $list[] = $obj; 86 | $map[] = array($name,$obj); 87 | } 88 | return array($list,$map); 89 | } 90 | 91 | public function setUp() { 92 | $this->request = $this->getMockBuilder('OCP\IRequest')->getMock(); 93 | $this->l = $this->getMock('\OC_L10N', array('t'),array(),'',false); 94 | $this->l->expects($this->any()) 95 | ->method('t') 96 | ->will($this->returnArgument(0)); 97 | $this->storage = null; 98 | } 99 | 100 | /** 101 | * create the controller and storage 102 | */ 103 | private function setController($map, $list){ 104 | $folder = $this->getMockFolder('/',true,$map,$list); 105 | $this->storage = $this->getMockFolder('/', true, $this->map, array($folder)); 106 | 107 | $this->controller = new CompleteController( 108 | $this->appName, 109 | $this->request, 110 | $this->l, 111 | $this->storage 112 | ); 113 | } 114 | 115 | 116 | public function testNoDir(){ 117 | // test with no directories existing 118 | list($list,$map) = $this->getMockFiles('test.txt,keks.odt'); 119 | 120 | $this->setController($map,$list); 121 | 122 | $result = $this->controller->index('/test.txt',''); 123 | $this->assertEmpty($result); 124 | 125 | // should produce the same output, as the directory can start with or without a slash 126 | $result = $this->controller->index('/test.txt','/'); 127 | $this->assertEmpty($result); 128 | } 129 | 130 | //TODO: figure out how to do this test for one layer listing and for multiple layers of listing 131 | public function testOneLayerDir(){ 132 | list($list, $map) = $this->getMockFolders( 133 | '/testA,/testB,/testC', 134 | array(true,true,true), 135 | array( 136 | array(), 137 | array(), 138 | array() 139 | ), 140 | array( 141 | null, 142 | null, 143 | null 144 | ) 145 | ); 146 | $this->setController($map,$list); 147 | //$result = $this->controller->index('/file.txt',''); 148 | 149 | } 150 | } 151 | -------------------------------------------------------------------------------- /tests/unit/controller/MoveControllerTest.php: -------------------------------------------------------------------------------- 1 | 9 | * @copyright eotryx 2015 10 | */ 11 | 12 | namespace OCA\Files_mv\Controller; 13 | 14 | use PHPUnit_Framework_TestCase; 15 | 16 | use OCP\AppFramework\Http\TemplateResponse; 17 | 18 | 19 | class MoveControllerTest extends PHPUnit_Framework_TestCase { 20 | private $appName = 'files_mv'; 21 | 22 | private $controller; 23 | private $userId = 'john'; 24 | 25 | private $storage; 26 | private $l; 27 | 28 | private function setL(){ 29 | $this->l->expects($this->any()) 30 | ->method('t') 31 | ->will($this->returnArgument(0)); 32 | } 33 | 34 | public function setUp() { 35 | $request = $this->getMockBuilder('OCP\IRequest')->getMock(); 36 | $this->l = $this->getMock('\OC_L10N', array('t'),array(),'',false); 37 | $this->setL(); 38 | $this->storage = $this->getMock('\OCP\Files\Folder',array(),array(),'',false); 39 | $this->storage->expects($this->any()) 40 | ->method('get') 41 | ->will($this->returnValue($this->storage)); 42 | $this->storage->expects($this->any()) 43 | ->method('getFullPath') 44 | ->will($this->returnArgument(0)); 45 | 46 | $this->controller = new MoveController( 47 | $this->appName, 48 | $request, 49 | $this->l, 50 | $this->storage 51 | ); 52 | } 53 | 54 | 55 | public function testErrorParams(){ 56 | //test trivial error with no content 57 | $result = $this->controller->index(null,null,null); 58 | $this->assertEquals($result,array('status'=>'error','message'=>'No data supplied.')); 59 | 60 | //test move to same location 61 | $path = '/test'; 62 | $result = $this->controller->index($path, 'asdf', $path); 63 | $this->assertEquals($result, array('status'=>'error','message'=>'Src and Dest are not allowed to be the same location!')); 64 | } 65 | 66 | public function testFileExists(){ 67 | //File already exists 68 | $file = 'Keks.txt'; 69 | $errStr = 'Could not move %s - File with this name already exists'; 70 | 71 | $this->storage->expects($this->any()) 72 | ->method('nodeExists') 73 | ->will($this->returnValue(true)); 74 | 75 | $this->l->expects($this->once()) 76 | ->method('t') 77 | ->with( 78 | $this->equalTo($errStr), 79 | $this->equalTo(array($file)) 80 | ); 81 | 82 | $result = $this->controller->index('/', $file, '/test'); 83 | $this->assertEquals($result, array( 84 | 'action'=>'mv', 85 | 'status'=>'error', 86 | 'message'=>$errStr, 87 | 'name'=>array() 88 | ) 89 | ); 90 | $this->setL(); 91 | } 92 | 93 | public function testSingleFileMove() { 94 | //File can be moved 95 | $file = 'Keks.txt'; 96 | $this->doMove( 97 | $file, 98 | 1, 99 | 0, 100 | array($file), 101 | false 102 | ); 103 | } 104 | public function testMultiFileMove() { 105 | //File can be moved 106 | $file = 'Keks.txt;Keks2.txt'; 107 | $this->doMove( 108 | $file, 109 | 2, 110 | 0, 111 | explode(';', $file), 112 | false 113 | ); 114 | } 115 | 116 | public function testSingleFileCopy(){ 117 | $file = 'Test.txt'; 118 | $this->doMove( 119 | $file, 120 | 0, 121 | 1, 122 | array(), 123 | true); 124 | } 125 | 126 | public function testMultiFileCopy(){ 127 | $file = 'Test.txt;Keks.docx'; 128 | $this->doMove( 129 | $file, 130 | 0, 131 | 2, 132 | array(), 133 | true); 134 | } 135 | 136 | private function doMove($file,$countMove,$countCopy,$resFile,$copy){ 137 | $from = '/'; 138 | $to = '/test/'; 139 | $this->storage->expects($this->any()) 140 | ->method('nodeExists') 141 | ->will($this->returnValue(false)); 142 | $this->storage->expects($this->exactly($countMove)) 143 | ->method('move'); 144 | $this->storage->expects($this->exactly($countCopy)) 145 | ->method('copy'); 146 | $result = $this->controller->index($from, $file, $to, $copy); 147 | $this->assertEquals($result, array( 148 | 'action'=>'mv', 149 | 'status'=>'success', 150 | 'message'=>'', 151 | 'name'=>$resFile 152 | ) 153 | ); 154 | } 155 | 156 | } 157 | --------------------------------------------------------------------------------