]> source.dussan.org Git - nextcloud-server.git/log
nextcloud-server.git
10 years agoadding OC-ETag header
Thomas Müller [Fri, 29 Aug 2014 10:09:33 +0000 (12:09 +0200)]
adding OC-ETag header

10 years agoMerge pull request #10637 from owncloud/fixing-js-issues
Thomas Müller [Fri, 29 Aug 2014 08:16:29 +0000 (10:16 +0200)]
Merge pull request #10637 from owncloud/fixing-js-issues

Init vars with a value if none is provided

10 years agoMerge pull request #10703 from owncloud/sometimes-allow-horizontal-scrollbar
Thomas Müller [Fri, 29 Aug 2014 08:14:13 +0000 (10:14 +0200)]
Merge pull request #10703 from owncloud/sometimes-allow-horizontal-scrollbar

allow horizontal scrollbar for personal and admin settings

10 years ago[tx-robot] updated from transifex
Jenkins for ownCloud [Fri, 29 Aug 2014 05:56:59 +0000 (01:56 -0400)]
[tx-robot] updated from transifex

10 years agoInit vars with a value if none is provided
Clark Tomlinson [Tue, 26 Aug 2014 13:40:56 +0000 (09:40 -0400)]
Init vars with a value if none is provided

10 years agoallow horizontal scrollbar for personal and admin settings
Jan-Christoph Borchardt [Thu, 28 Aug 2014 16:17:50 +0000 (18:17 +0200)]
allow horizontal scrollbar for personal and admin settings

10 years agoMerge pull request #10647 from owncloud/implementing_momentjs
Clark Tomlinson [Thu, 28 Aug 2014 15:47:37 +0000 (11:47 -0400)]
Merge pull request #10647 from owncloud/implementing_momentjs

Implementing momentjs

10 years agoMerge pull request #10658 from owncloud/sftp_prevent_error
Vincent Petry [Thu, 28 Aug 2014 15:09:36 +0000 (17:09 +0200)]
Merge pull request #10658 from owncloud/sftp_prevent_error

Prevent errors on broken SFTP config

10 years agoMerge pull request #10696 from owncloud/inputdate
Bernhard Posselt [Thu, 28 Aug 2014 14:55:51 +0000 (16:55 +0200)]
Merge pull request #10696 from owncloud/inputdate

Enhancement: Adds input styles to input type dates too.

10 years agoEnhancement: Adds input styles to input type dates too.
raghunayyar [Thu, 28 Aug 2014 14:53:19 +0000 (16:53 +0200)]
Enhancement: Adds input styles to input type dates too.

10 years agoImplementing moment.js
Clark Tomlinson [Tue, 26 Aug 2014 18:17:33 +0000 (14:17 -0400)]
Implementing moment.js

Updating Usages

Removing unused method

Adding JS Doc

10 years agoMerge pull request #8507 from owncloud/ajaxify_user_list_for_files_external
blizzz [Thu, 28 Aug 2014 11:39:21 +0000 (13:39 +0200)]
Merge pull request #8507 from owncloud/ajaxify_user_list_for_files_external

Ajaxify user list for files external

10 years agofix wizard test, adjust to changed parameters of the tested method, introduced by...
Arthur Schiwon [Tue, 26 Aug 2014 08:50:00 +0000 (10:50 +0200)]
fix wizard test, adjust to changed parameters of the tested method, introduced by 9caa354cfc1f73159f335646ca89be4db72b125e

10 years agoPort of #8623
Arthur Schiwon [Fri, 16 May 2014 16:03:15 +0000 (18:03 +0200)]
Port of #8623

set result entry identifier earlier, i.e. before a continue for the same level can happen. otherwise  will always get the same value and we end up in an infinite loop

add unit test to make sure the infinite loop never comes back

Conflicts:
apps/user_ldap/tests/wizard.php

10 years agoMerge pull request #10670 from owncloud/encodeExceptions
Lukas Reschke [Thu, 28 Aug 2014 07:36:18 +0000 (09:36 +0200)]
Merge pull request #10670 from owncloud/encodeExceptions

Escape error messages

10 years ago[tx-robot] updated from transifex
Jenkins for ownCloud [Thu, 28 Aug 2014 05:56:36 +0000 (01:56 -0400)]
[tx-robot] updated from transifex

10 years agoEscape error messages
Lukas Reschke [Wed, 27 Aug 2014 15:01:51 +0000 (17:01 +0200)]
Escape error messages

10 years agoMerge pull request #10653 from owncloud/x-forwarded-for
Clark Tomlinson [Wed, 27 Aug 2014 14:32:34 +0000 (10:32 -0400)]
Merge pull request #10653 from owncloud/x-forwarded-for

Add support for getting the real client IP behind proxies

10 years agoMerge pull request #10666 from ogasser/appframework_db_tests
Lukas Reschke [Wed, 27 Aug 2014 13:28:22 +0000 (15:28 +0200)]
Merge pull request #10666 from ogasser/appframework_db_tests

Make Entity properties ```protected``` as in docs

10 years agoMake Entity properties ```protected``` as in docs
Oliver Gasser [Wed, 27 Aug 2014 11:28:04 +0000 (13:28 +0200)]
Make Entity properties ```protected``` as in docs

Entity properties are marked as ```protected``` to correctly reflect the
documentation.

See also owncloud/documentation@644f2eedac8e912c3019366b29ecdfbd9a15c5d9

10 years agoMerge pull request #9915 from suraia/unsharefromself-source
Björn Schießle [Wed, 27 Aug 2014 08:31:35 +0000 (10:31 +0200)]
Merge pull request #9915 from suraia/unsharefromself-source

Allow specifying the item source in unshareFromSelf().

10 years agoPrevent errors on broken SFTP config
Robin McCorkell [Wed, 27 Aug 2014 08:02:14 +0000 (09:02 +0100)]
Prevent errors on broken SFTP config

10 years ago[tx-robot] updated from transifex
Jenkins for ownCloud [Wed, 27 Aug 2014 05:54:40 +0000 (01:54 -0400)]
[tx-robot] updated from transifex

10 years agoAdd support for getting the real client IP behind proxies
Lukas Reschke [Tue, 26 Aug 2014 21:58:13 +0000 (23:58 +0200)]
Add support for getting the real client IP behind proxies

Fixes https://github.com/owncloud/core/issues/10624

Fix copy paste fail

Add unittest for comma separated headers

Revert 3rdparty

10 years agoMerge pull request #10641 from callahad/email-input-type
Lukas Reschke [Tue, 26 Aug 2014 20:09:50 +0000 (22:09 +0200)]
Merge pull request #10641 from callahad/email-input-type

Set email input field to type=email for better UX

10 years agoMerge pull request #10640 from owncloud/add_moment_js
Clark Tomlinson [Tue, 26 Aug 2014 17:32:47 +0000 (13:32 -0400)]
Merge pull request #10640 from owncloud/add_moment_js

add moment.js

10 years agoSet email input field to type=email for better UX
Dan Callahan [Tue, 26 Aug 2014 16:14:30 +0000 (11:14 -0500)]
Set email input field to type=email for better UX

10 years agoadd moment.js
Georg Ehrke [Tue, 26 Aug 2014 15:39:15 +0000 (17:39 +0200)]
add moment.js

10 years agoMerge pull request #10604 from owncloud/fixing-favicon
Thomas Müller [Tue, 26 Aug 2014 15:35:50 +0000 (17:35 +0200)]
Merge pull request #10604 from owncloud/fixing-favicon

Adding type to favicon

10 years agoMerge pull request #9844 from OliverKohlDSc/patch-1
Thomas Müller [Tue, 26 Aug 2014 12:42:07 +0000 (14:42 +0200)]
Merge pull request #9844 from OliverKohlDSc/patch-1

CRON call ends in null exception

10 years agoMerge pull request #10619 from owncloud/issue/6722
Thomas Müller [Tue, 26 Aug 2014 08:33:18 +0000 (10:33 +0200)]
Merge pull request #10619 from owncloud/issue/6722

Add a test to break the slugifyPath() with folder and file afterwards

10 years ago[tx-robot] updated from transifex
Jenkins for ownCloud [Tue, 26 Aug 2014 05:56:33 +0000 (01:56 -0400)]
[tx-robot] updated from transifex

10 years agoMerge pull request #10623 from owncloud/not-a-valid-resource-log-entries
Clark Tomlinson [Mon, 25 Aug 2014 16:52:06 +0000 (12:52 -0400)]
Merge pull request #10623 from owncloud/not-a-valid-resource-log-entries

Do not try to close the same resource multiple times

10 years agoMerge pull request #10421 from owncloud/share-external-delete
Clark Tomlinson [Mon, 25 Aug 2014 15:28:50 +0000 (11:28 -0400)]
Merge pull request #10421 from owncloud/share-external-delete

Remove no longer existing files from the cache when scanning external storage

10 years agoMerge pull request #10023 from owncloud/tmp-file-created-status
Vincent Petry [Mon, 25 Aug 2014 15:24:46 +0000 (17:24 +0200)]
Merge pull request #10023 from owncloud/tmp-file-created-status

Log unsuccessful temp file creation and return false

10 years agoMerge pull request #10108 from owncloud/files_external-allowed-backend
Vincent Petry [Mon, 25 Aug 2014 15:07:35 +0000 (17:07 +0200)]
Merge pull request #10108 from owncloud/files_external-allowed-backend

Only load personal external storages for allowed backends

10 years agoDo not try to close the same resource multiple times
Joas Schilling [Mon, 25 Aug 2014 13:31:43 +0000 (15:31 +0200)]
Do not try to close the same resource multiple times

10 years agoUse md5() of the original name instead of uniqid() for slugifying
Joas Schilling [Mon, 25 Aug 2014 12:29:07 +0000 (14:29 +0200)]
Use md5() of the original name instead of uniqid() for slugifying

Previously we used uniqid() here.
However this means that the behaviour is not reproducable, so
when uploading files into a "empty" folder, the folders name is
different.

If there would be a md5() hash collition, the deduplicate check
will spot this and append an index later, so this should not be
a problem.

Fix #6722

10 years agoFix code layout before fixing the function
Joas Schilling [Mon, 25 Aug 2014 10:48:26 +0000 (12:48 +0200)]
Fix code layout before fixing the function

10 years agoUse a data provider instead of calling the function manually everytime
Joas Schilling [Mon, 25 Aug 2014 12:44:51 +0000 (14:44 +0200)]
Use a data provider instead of calling the function manually everytime

10 years agoAdd a test to break the slugifyPath() with folder and file afterwards
Joas Schilling [Mon, 25 Aug 2014 10:21:19 +0000 (12:21 +0200)]
Add a test to break the slugifyPath() with folder and file afterwards

10 years agoMerge pull request #10598 from owncloud/warn_on_encryption_occ_pwreset
Lukas Reschke [Mon, 25 Aug 2014 12:23:28 +0000 (14:23 +0200)]
Merge pull request #10598 from owncloud/warn_on_encryption_occ_pwreset

Warn user on resetting passwords via occ when encryption is enabled

10 years agoUse AppFramework instead of custom controller
Lukas Reschke [Fri, 22 Aug 2014 16:16:55 +0000 (18:16 +0200)]
Use AppFramework instead of custom controller

10 years agouse displayname lookup route in files_external settings
Jörn Friedrich Dreyer [Fri, 22 Aug 2014 14:07:48 +0000 (16:07 +0200)]
use displayname lookup route in files_external settings

10 years agoadd lookup route for displaynames
Jörn Friedrich Dreyer [Fri, 22 Aug 2014 14:06:46 +0000 (16:06 +0200)]
add lookup route for displaynames

10 years agono need to load user display names
Jörn Friedrich Dreyer [Fri, 22 Aug 2014 09:32:37 +0000 (11:32 +0200)]
no need to load user display names

10 years agofix deletion of shares
Jörn Friedrich Dreyer [Thu, 21 Aug 2014 13:11:21 +0000 (15:11 +0200)]
fix deletion of shares

10 years agoreplace chosen with select2 to provide ajaxified user and group selection for files_e...
Jörn Friedrich Dreyer [Thu, 8 May 2014 13:25:46 +0000 (15:25 +0200)]
replace chosen with select2 to provide ajaxified user and group selection for files_external, fixes #7499

remove minified select2 js

show avatars for users, simpler results

remove unneeded users and groups from settings template

fix css, escape user and group names

10 years agoadd select2 to app specific thirdparty
Jörn Friedrich Dreyer [Thu, 8 May 2014 13:23:06 +0000 (15:23 +0200)]
add select2 to app specific thirdparty

10 years agoMerge pull request #10591 from owncloud/routes_for_files_external
Vincent Petry [Mon, 25 Aug 2014 09:45:41 +0000 (11:45 +0200)]
Merge pull request #10591 from owncloud/routes_for_files_external

explicit routes for files_external

10 years agoMerge pull request #10595 from owncloud/swift-stream
Jörn Friedrich Dreyer [Mon, 25 Aug 2014 09:26:39 +0000 (11:26 +0200)]
Merge pull request #10595 from owncloud/swift-stream

Stream downloads from Swift object stores without downloading it first

10 years ago[tx-robot] updated from transifex
Jenkins for ownCloud [Mon, 25 Aug 2014 05:56:07 +0000 (01:56 -0400)]
[tx-robot] updated from transifex

10 years agoMerge pull request #10528 from owncloud/fix-htaccess-check-error
Lukas Reschke [Sun, 24 Aug 2014 18:40:06 +0000 (20:40 +0200)]
Merge pull request #10528 from owncloud/fix-htaccess-check-error

Fix htaccess check error

10 years agoMerge pull request #9818 from owncloud/fix-mount-file-config
Robin McCorkell [Sun, 24 Aug 2014 16:32:24 +0000 (17:32 +0100)]
Merge pull request #9818 from owncloud/fix-mount-file-config

Comment out mount_file config option

10 years ago[tx-robot] updated from transifex
Jenkins for ownCloud [Sun, 24 Aug 2014 05:56:10 +0000 (01:56 -0400)]
[tx-robot] updated from transifex

10 years agoAdd unit tests for new unshareFromSelf() functionality.
Michael Kuhn [Sat, 23 Aug 2014 10:05:19 +0000 (12:05 +0200)]
Add unit tests for new unshareFromSelf() functionality.

10 years ago[tx-robot] updated from transifex
Jenkins for ownCloud [Sat, 23 Aug 2014 05:57:00 +0000 (01:57 -0400)]
[tx-robot] updated from transifex

10 years agoThrow exception if file cannot be accessed via http
Clark Tomlinson [Tue, 19 Aug 2014 16:01:26 +0000 (12:01 -0400)]
Throw exception if file cannot be accessed via http

Format file

Removing calls to deprecated classes and using internal method to get via http

Missed a character

Fix inverted logic

10 years agoAdding type to favicon
Clark Tomlinson [Fri, 22 Aug 2014 20:26:39 +0000 (16:26 -0400)]
Adding type to favicon

10 years agoMerge pull request #10584 from owncloud/simple-wizard-trusted-domains
Thomas Müller [Fri, 22 Aug 2014 15:12:17 +0000 (17:12 +0200)]
Merge pull request #10584 from owncloud/simple-wizard-trusted-domains

Add a trusted domain wizard

10 years agoWarn user on resetting passwords via occ when encryption is enabled
kondou [Fri, 22 Aug 2014 14:11:54 +0000 (16:11 +0200)]
Warn user on resetting passwords via occ when encryption is enabled

10 years agoRedirect user after clicking on link
Lukas Reschke [Fri, 22 Aug 2014 14:01:03 +0000 (16:01 +0200)]
Redirect user after clicking on link
Use DI

10 years agoExpose setSystemValue
Lukas Reschke [Fri, 22 Aug 2014 13:53:23 +0000 (15:53 +0200)]
Expose setSystemValue

10 years agoMerge pull request #10590 from owncloud/fix-10585
Clark Tomlinson [Fri, 22 Aug 2014 13:06:03 +0000 (09:06 -0400)]
Merge pull request #10590 from owncloud/fix-10585

Add require_once to update.php due to routing

10 years agoMerge pull request #7539 from owncloud/repair-legacystorageid
Thomas Müller [Fri, 22 Aug 2014 12:22:39 +0000 (14:22 +0200)]
Merge pull request #7539 from owncloud/repair-legacystorageid

Added repair script to upgrade the legacy home storage ids

10 years agoStream downloads from Swift object stores without downloading it first
Robin Appelman [Fri, 22 Aug 2014 12:11:21 +0000 (14:11 +0200)]
Stream downloads from Swift object stores without downloading it first

10 years agono statement caching for Oracle
Thomas Müller [Fri, 22 Aug 2014 10:06:36 +0000 (12:06 +0200)]
no statement caching for Oracle

10 years agoexplicit routes for files_external
Jörn Friedrich Dreyer [Fri, 22 Aug 2014 09:51:39 +0000 (11:51 +0200)]
explicit routes for files_external

10 years agoAdd require_once to update.php due to routing
Lukas Reschke [Fri, 22 Aug 2014 09:39:05 +0000 (11:39 +0200)]
Add require_once to update.php due to routing

Fixes https://github.com/owncloud/core/issues/10585
Partially reverts 52d5429768acdb87b2dc2efedc89eb4ad0d29139

10 years agono external files on windows for now
Thomas Müller [Fri, 22 Aug 2014 08:01:33 +0000 (10:01 +0200)]
no external files on windows for now

10 years ago[tx-robot] updated from transifex
Jenkins for ownCloud [Fri, 22 Aug 2014 05:56:25 +0000 (01:56 -0400)]
[tx-robot] updated from transifex

10 years agoAdd a trusted domain wizard
Lukas Reschke [Thu, 21 Aug 2014 20:22:35 +0000 (22:22 +0200)]
Add a trusted domain wizard

Adds a little button to the trusted domain warning, if an admin clicks on the warning he will be redirected to ownCloud and asked whether he want to trust this domain.

By far not the cleanest code, or clean at all, but does the job and I don't see a reason to make a lot of changes for this little improvement.

10 years agoMerge pull request #10522 from owncloud/removeLoadAppScript
blizzz [Thu, 21 Aug 2014 17:59:31 +0000 (19:59 +0200)]
Merge pull request #10522 from owncloud/removeLoadAppScript

Remove loadAppScriptFile

10 years agoMerge pull request #10573 from owncloud/share-dropdownfixwhenlinkdisallowed
Vincent Petry [Thu, 21 Aug 2014 13:32:11 +0000 (15:32 +0200)]
Merge pull request #10573 from owncloud/share-dropdownfixwhenlinkdisallowed

Fix share dropdown when links are not allowed

10 years agoFix share dropdown when links are not allowed
Vincent Petry [Thu, 21 Aug 2014 11:49:02 +0000 (13:49 +0200)]
Fix share dropdown when links are not allowed

When links are not allowed, the email field does not exist and
autocomplete returns null. This causes Javascript errors.

The fix prevents entering the bogus block when links aren't allowed, as
it doesn't make sense to enter it in such cases anyway.

10 years agoMerge pull request #10548 from owncloud/encryption-app-description
Morris Jobke [Thu, 21 Aug 2014 11:01:18 +0000 (13:01 +0200)]
Merge pull request #10548 from owncloud/encryption-app-description

Better description to prevent people from misunderstanding the use case of encryption app

10 years agoBetter description to prevent people from misunderstanding the use case
Bernhard Posselt [Wed, 20 Aug 2014 13:37:23 +0000 (15:37 +0200)]
Better description to prevent people from misunderstanding the use case

10 years agono external files on windows for now
Thomas Müller [Thu, 21 Aug 2014 09:49:53 +0000 (11:49 +0200)]
no external files on windows for now

10 years agono external files on windows for now
Thomas Müller [Thu, 21 Aug 2014 09:32:51 +0000 (11:32 +0200)]
no external files on windows for now

10 years agoMerge pull request #10458 from owncloud/fix-tar-tests
Lukas Reschke [Thu, 21 Aug 2014 08:07:05 +0000 (10:07 +0200)]
Merge pull request #10458 from owncloud/fix-tar-tests

temporarily disable TAR tests on travis

10 years agoFix windows tests skipping
Morris Jobke [Sat, 16 Aug 2014 08:26:26 +0000 (10:26 +0200)]
Fix windows tests skipping

* add call to setUp from inherited test class

10 years agoAdd files as string to tar archives
Robin Appelman [Sat, 16 Aug 2014 20:19:01 +0000 (22:19 +0200)]
Add files as string to tar archives

10 years agoreformat
Robin Appelman [Sat, 16 Aug 2014 20:13:53 +0000 (22:13 +0200)]
reformat

10 years ago[tx-robot] updated from transifex
Jenkins for ownCloud [Thu, 21 Aug 2014 05:56:31 +0000 (01:56 -0400)]
[tx-robot] updated from transifex

10 years agoExplicily close the statement cursors
Vincent Petry [Wed, 20 Aug 2014 21:49:04 +0000 (23:49 +0200)]
Explicily close the statement cursors

Fixes the issue that makes SQLite freeze on later tests.

10 years agoMerge pull request #10562 from Volker-E/master
Clark Tomlinson [Wed, 20 Aug 2014 21:27:25 +0000 (17:27 -0400)]
Merge pull request #10562 from Volker-E/master

fixing #10561 & HTML structure

10 years agoMerge pull request #10518 from owncloud/fix_storage_const_autoload
Lukas Reschke [Wed, 20 Aug 2014 21:23:42 +0000 (23:23 +0200)]
Merge pull request #10518 from owncloud/fix_storage_const_autoload

Fix storage const autoload

10 years agoFix unit test messing up the transaction on Oracle
Vincent Petry [Wed, 20 Aug 2014 13:57:30 +0000 (15:57 +0200)]
Fix unit test messing up the transaction on Oracle

Since the unit test is skipped anyway for Oracle, the dropTable() call
should be skipped as well to avoid having a leftover transaction and
cause further transactions to be nested and break the next test suites
requiring transactions.

10 years agoAdded repair step for legacy storages
Vincent Petry [Tue, 25 Mar 2014 11:52:32 +0000 (12:52 +0100)]
Added repair step for legacy storages

10 years agoRemoving `x-webkit-speech` attribute #10561
Volker E. [Wed, 20 Aug 2014 20:59:55 +0000 (22:59 +0200)]
Removing `x-webkit-speech` attribute #10561

Remove obsolete (from Google Chrome 36 on) attribute due to security vulnerability

10 years agofix HTML structure by rmv. obsolete input end tag
Volker E. [Wed, 20 Aug 2014 20:36:58 +0000 (22:36 +0200)]
fix HTML structure by rmv. obsolete input end tag

10 years agoMerge pull request #10557 from owncloud/better-hover-apps
Morris Jobke [Wed, 20 Aug 2014 20:26:38 +0000 (22:26 +0200)]
Merge pull request #10557 from owncloud/better-hover-apps

full opacity for the hovered/focused app as well for better contrast

10 years agoComment out mount_file config option
Robin McCorkell [Wed, 23 Jul 2014 20:53:04 +0000 (21:53 +0100)]
Comment out mount_file config option

Prevents sample config issues with external storages. Fixes #9734

10 years agofull opacity for the hovered/focused app as well for better contrast
Jan-Christoph Borchardt [Wed, 20 Aug 2014 17:34:02 +0000 (19:34 +0200)]
full opacity for the hovered/focused app as well for better contrast

10 years agoMerge pull request #10422 from owncloud/dav-disablerangerequestwhennotsupported
Vincent Petry [Wed, 20 Aug 2014 16:14:09 +0000 (18:14 +0200)]
Merge pull request #10422 from owncloud/dav-disablerangerequestwhennotsupported

Return whole file if range request cannot be granted due to encryption

10 years agoMerge pull request #10546 from owncloud/add-note-about-cheers
Thomas Müller [Wed, 20 Aug 2014 14:42:08 +0000 (16:42 +0200)]
Merge pull request #10546 from owncloud/add-note-about-cheers

Add note about the term "Cheers" at end of mail

10 years agoMerge pull request #10423 from owncloud/urlencode_s3_copyobject_copysource
Jörn Friedrich Dreyer [Wed, 20 Aug 2014 13:48:51 +0000 (15:48 +0200)]
Merge pull request #10423 from owncloud/urlencode_s3_copyobject_copysource

urlencode s3 copyObject() copysource

10 years agoAdd note about the term "Cheers" at end of mail
Morris Jobke [Wed, 20 Aug 2014 13:14:07 +0000 (15:14 +0200)]
Add note about the term "Cheers" at end of mail

* for translators
* fixes #8689

10 years agoUpdate music repo
Morris Jobke [Wed, 20 Aug 2014 07:50:00 +0000 (09:50 +0200)]
Update music repo

10 years agoMerge pull request #10534 from owncloud/autotest-cleanuponinterrupt
Morris Jobke [Wed, 20 Aug 2014 07:45:07 +0000 (09:45 +0200)]
Merge pull request #10534 from owncloud/autotest-cleanuponinterrupt

Restore autotest config on SIGINT or SIGTERM