diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/ajax/share.php | 108 | ||||
-rw-r--r-- | core/css/share.css | 136 | ||||
-rw-r--r-- | core/css/styles.css | 67 | ||||
-rw-r--r-- | core/img/breadcrumb-start.png | bin | 311 -> 0 bytes | |||
-rw-r--r-- | core/img/breadcrumb-start.svg | 6 | ||||
-rw-r--r-- | core/img/breadcrumb.png | bin | 320 -> 594 bytes | |||
-rw-r--r-- | core/img/breadcrumb.svg | 16 | ||||
-rw-r--r-- | core/img/places/link.png | bin | 0 -> 1093 bytes | |||
-rw-r--r-- | core/img/places/link.svg | 12 | ||||
-rw-r--r-- | core/js/avatar.js | 2 | ||||
-rw-r--r-- | core/js/jquery.avatar.js | 20 | ||||
-rw-r--r-- | core/js/share.js | 37 | ||||
-rw-r--r-- | core/l10n/cs_CZ.php | 2 | ||||
-rw-r--r-- | core/l10n/hu_HU.php | 21 | ||||
-rw-r--r-- | core/l10n/ja_JP.php | 10 | ||||
-rw-r--r-- | core/l10n/lt_LT.php | 9 | ||||
-rw-r--r-- | core/l10n/pl.php | 8 | ||||
-rw-r--r-- | core/skeleton/welcome.txt | 5 | ||||
-rw-r--r-- | core/templates/altmail.php | 6 | ||||
-rw-r--r-- | core/templates/login.php | 3 | ||||
-rw-r--r-- | core/templates/mail.php | 9 |
21 files changed, 364 insertions, 113 deletions
diff --git a/core/ajax/share.php b/core/ajax/share.php index 648f0a71bd4..ed9cbfd109a 100644 --- a/core/ajax/share.php +++ b/core/ajax/share.php @@ -23,6 +23,8 @@ OC_JSON::checkLoggedIn(); OCP\JSON::callCheck(); OC_App::loadApps(); +$defaults = new \OCP\Defaults(); + if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSource'])) { switch ($_POST['action']) { case 'share': @@ -33,7 +35,7 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo if ($shareType === OCP\Share::SHARE_TYPE_LINK && $shareWith == '') { $shareWith = null; } - + $token = OCP\Share::shareItem( $_POST['itemType'], $_POST['itemSource'], @@ -41,7 +43,7 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo $shareWith, $_POST['permissions'] ); - + if (is_string($token)) { OC_JSON::success(array('data' => array('token' => $token))); } else { @@ -81,6 +83,104 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo ($return) ? OC_JSON::success() : OC_JSON::error(); } break; + case 'informRecipients': + + $l = OC_L10N::get('core'); + + $shareType = (int) $_POST['shareType']; + $itemType = $_POST['itemType']; + $itemSource = $_POST['itemSource']; + $recipient = $_POST['recipient']; + $ownerDisplayName = \OCP\User::getDisplayName(); + $from = \OCP\Util::getDefaultEmailAddress('sharing-noreply'); + + $noMail = array(); + $recipientList = array(); + + if($shareType === \OCP\Share::SHARE_TYPE_USER) { + $recipientList[] = $recipient; + } elseif ($shareType === \OCP\Share::SHARE_TYPE_GROUP) { + $recipientList = \OC_Group::usersInGroup($recipient); + } + + // don't send a mail to the user who shared the file + $recipientList = array_diff($recipientList, [\OCP\User::getUser()]); + + // send mail to all recipients with an email address + foreach ($recipientList as $recipient) { + //get correct target folder name + $email = OC_Preferences::getValue($recipient, 'settings', 'email', ''); + + if ($email !== '') { + $displayName = \OCP\User::getDisplayName($recipient); + $items = \OCP\Share::getItemSharedWithUser($itemType, $itemSource, $recipient); + $filename = trim($items[0]['file_target'], '/'); + $subject = (string)$l->t('%s shared »%s« with you', array($ownerDisplayName, $filename)); + $expiration = null; + if (isset($items[0]['expiration'])) { + $date = new DateTime($items[0]['expiration']); + $expiration = $date->format('Y-m-d'); + } + + if ($itemType === 'folder') { + $foldername = "/Shared/" . $filename; + } else { + // if it is a file we can just link to the Shared folder, + // that's the place where the user will find the file + $foldername = "/Shared"; + } + + $link = \OCP\Util::linkToAbsolute('files', 'index.php', array("dir" => $foldername)); + + $content = new OC_Template("core", "mail", ""); + $content->assign('link', $link); + $content->assign('user_displayname', $ownerDisplayName); + $content->assign('filename', $filename); + $content->assign('expiration', $expiration); + $text = $content->fetchPage(); + + $content = new OC_Template("core", "altmail", ""); + $content->assign('link', $link); + $content->assign('user_displayname', $ownerDisplayName); + $content->assign('filename', $filename); + $content->assign('expiration', $expiration); + $alttext = $content->fetchPage(); + + $default_from = OCP\Util::getDefaultEmailAddress('sharing-noreply'); + $from = OCP\Config::getUserValue(\OCP\User::getUser(), 'settings', 'email', $default_from); + + // send it out now + try { + OCP\Util::sendMail($email, $displayName, $subject, $text, $from, $ownerDisplayName, 1, $alttext); + } catch (Exception $exception) { + $noMail[] = \OCP\User::getDisplayName($recipient); + } + } + } + + \OCP\Share::setSendMailStatus($itemType, $itemSource, $shareType, true); + + if (empty($noMail)) { + OCP\JSON::success(); + } else { + OCP\JSON::error(array( + 'data' => array( + 'message' => $l->t("Couldn't send mail to following users: %s ", + implode(', ', $noMail) + ) + ) + )); + } + break; + case 'informRecipientsDisabled': + $itemSource = $_POST['itemSource']; + $shareType = $_POST['shareType']; + $itemType = $_POST['itemType']; + $recipient = $_POST['recipient']; + \OCP\Share::setSendMailStatus($itemType, $itemSource, $shareType, false); + OCP\JSON::success(); + break; + case 'email': // read post variables $user = OCP\USER::getUser(); @@ -213,10 +313,10 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo } } $count = 0; - + // enable l10n support $l = OC_L10N::get('core'); - + foreach ($groups as $group) { if ($count < 15) { if (!isset($_GET['itemShares']) diff --git a/core/css/share.css b/core/css/share.css index 2d6849b4bb1..2a21dc6edf6 100644 --- a/core/css/share.css +++ b/core/css/share.css @@ -2,95 +2,97 @@ This file is licensed under the Affero General Public License version 3 or later. See the COPYING-README file. */ - #dropdown { - background:#eee; - border-bottom-left-radius:1em; - border-bottom-right-radius:1em; - box-shadow:0 1px 1px #777; - display:block; - margin-right:7em; - position:absolute; - right:0; - width:19em; - z-index:500; - padding:1em; - } - - #shareWithList { - list-style-type:none; - padding:.5em; - } - - #shareWithList li { - padding-top:.1em; - } - - #shareWithList li:first-child { - white-space:normal; - } - - #shareWithList .cruds { - margin-left:-10px; - } +#dropdown { + background:#eee; + border-bottom-left-radius: 5px; + border-bottom-right-radius: 5px; + box-shadow:0 1px 1px #777; + display:block; + margin-right:7em; + position:absolute; + right:0; + width:25em; + z-index:500; + padding:1em; +} + +#shareWithList { + list-style-type:none; + padding:.5em; +} + +#shareWithList li { + padding-top:.1em; +} + +#shareWithList li:first-child { + white-space:normal; +} + +#shareWithList .cruds { + margin-left:-10px; +} #shareWithList .unshare img, #shareWithList .showCruds img { vertical-align:text-bottom; /* properly align icons */ } - #dropdown label { - font-weight:400; - } +#dropdown label { + font-weight:400; +} - #dropdown input[type="checkbox"] { - margin:0 .2em 0 .5em; - } +#dropdown input[type="checkbox"] { + margin:0 .2em 0 .5em; +} - a.showCruds { - display:inline; - opacity:.5; - } +a.showCruds { + display:inline; + opacity:.5; +} - a.unshare { - display:inline; - float:right; - opacity:.5; - padding:.3em 0 0 .3em !important; +a.unshare { + display:inline; + float:right; + opacity:.5; + padding:.3em 0 0 .3em !important; margin-top:-5px; - } +} - #link { - border-top:1px solid #ddd; - padding-top:.5em; - } +#link { + border-top:1px solid #ddd; + padding-top:.5em; +} #dropdown input[type="text"],#dropdown input[type="password"] { - width:90%; + width:90%; } #dropdown form { - font-size: 100%; - margin-left: 0; - margin-right: 0; + font-size: 100%; + margin-left: 0; + margin-right: 0; } #linkText,#linkPass,#expiration { - display:none; - } + display:none; +} - #link #showPassword img { - padding-left:.3em; - width:12px; - } +#link #showPassword img { + padding-left:.3em; + width:12px; +} - .reshare,#link label,#expiration label { - padding-left:.5em; - } +.reshare,#link label,#expiration label { + padding-left:.5em; +} - a.showCruds:hover,a.unshare:hover { - opacity:1; - } +a.showCruds:hover,a.unshare:hover { + opacity:1; +} -.reshare { white-space:normal; } /* fix shared by text going out of box */ +.reshare { /* fix shared by text going out of box */ + white-space:normal; +} .ui-autocomplete { /* limit dropdown height to 4 1/2 entries */ max-height:103px; diff --git a/core/css/styles.css b/core/css/styles.css index dcdeda8a9c9..481fb6d5f39 100644 --- a/core/css/styles.css +++ b/core/css/styles.css @@ -19,9 +19,6 @@ body { background:#fefefe; font:normal .8em/1.6em "Helvetica Neue",Helvetica,Ari #body-user #header, #body-settings #header { position:fixed; top:0; left:0; right:0; z-index:100; height:45px; line-height:2.5em; background:#1d2d44 url('../img/noise.png') repeat; - -moz-box-shadow:0 0 10px rgba(0, 0, 0, .5); - -webkit-box-shadow:0 0 10px rgba(0, 0, 0, .5); - box-shadow:0 0 10px rgba(0, 0, 0, .5); } #body-login { @@ -46,6 +43,10 @@ body { background:#fefefe; font:normal .8em/1.6em "Helvetica Neue",Helvetica,Ari display: inline-block; } +#header .avatardiv img { + opacity: 1; +} + /* INPUTS */ input[type="text"], input[type="password"], input[type="search"], input[type="number"], input[type="email"], input[type="url"], textarea, select, @@ -155,23 +156,37 @@ input[type="submit"].enabled { background:#66f866; border:1px solid #5e5; -moz-b /* CONTENT ------------------------------------------------------------------ */ #controls { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; position: fixed; - height: 36px; + height: 44px; width: 100%; - padding: 0 75px 0 6px; + padding-right: 75px; margin: 0; background: #eee; border-bottom: 1px solid #e7e7e7; z-index: 50; - -moz-box-sizing: border-box; box-sizing: border-box; - -moz-box-shadow: 0 -3px 7px #000; -webkit-box-shadow: 0 -3px 7px #000; box-shadow: 0 -3px 7px #000; } -#controls .button { +#controls .button, +#controls button, +#controls input[type='submit'], +#controls input[type='text'], +#controls input[type='password'], +#controls select { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; display: inline-block; + height: 36px; + padding: 7px 10px } #content { position:relative; height:100%; width:100%; } -#content .hascontrols { position: relative; top: 2.9em; } +#content .hascontrols { + position: relative; + top: 45px; +} #content-wrapper { position:absolute; height:100%; width:100%; padding-top:3.5em; padding-left:80px; -moz-box-sizing:border-box; box-sizing:border-box; @@ -512,7 +527,6 @@ label.infield { cursor:text !important; top:1.05em; left:.85em; } z-index: 75; height: 100%; background:#383c43 url('../img/noise.png') repeat; - -moz-box-shadow:0 0 7px #000; -webkit-box-shadow:0 0 7px #000; box-shadow:0 0 7px #000; overflow:hidden; box-sizing:border-box; -moz-box-sizing:border-box; /* prevent ugly selection effect on accidental selection */ -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; @@ -751,15 +765,38 @@ span.ui-icon {float: left; margin: 3px 7px 30px 0;} .arrow.left { left:-13px; bottom:1.2em; -webkit-transform:rotate(270deg); -moz-transform:rotate(270deg); -o-transform:rotate(270deg); -ms-transform:rotate(270deg); transform:rotate(270deg); } .arrow.up { top:-8px; right:2em; } .arrow.down { -webkit-transform:rotate(180deg); -moz-transform:rotate(180deg); -o-transform:rotate(180deg); -ms-transform:rotate(180deg); transform:rotate(180deg); } -.help-includes {overflow: hidden; width: 100%; height: 100%; -moz-box-sizing: border-box; box-sizing: border-box; padding-top: 2.8em; } +.help-includes { + overflow: hidden; + width: 100%; + height: 100%; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding-top: 44px; +} .help-iframe {width: 100%; height: 100%; margin: 0;padding: 0; border: 0; overflow: auto;} /* ---- BREADCRUMB ---- */ -div.crumb { float:left; display:block; background:url('../img/breadcrumb.svg') no-repeat right 0; padding:.75em 1.5em 0 1em; height:2.9em; -moz-box-sizing:border-box; box-sizing:border-box; } -div.crumb:first-child { padding:10px 20px 10px 5px; } -div.crumb.last { font-weight:bold; background:none; padding-right:10px; } -div.crumb a{ padding: 0.9em 0 0.7em 0; } +div.crumb { + float: left; + display: block; + background: url('../img/breadcrumb.svg') no-repeat right center; + height: 44px; +} +div.crumb a { + position: relative; + top: 12px; + padding: 14px 24px 14px 17px; + color: #555; +} +div.crumb:first-child a { + position: relative; + top: 13px; +} +div.crumb.last { + font-weight: bold; + margin-right: 10px; +} /* some feedback for hover/tap on breadcrumbs */ div.crumb:hover, diff --git a/core/img/breadcrumb-start.png b/core/img/breadcrumb-start.png Binary files differdeleted file mode 100644 index b0df5f44037..00000000000 --- a/core/img/breadcrumb-start.png +++ /dev/null diff --git a/core/img/breadcrumb-start.svg b/core/img/breadcrumb-start.svg deleted file mode 100644 index 7f36231cdf8..00000000000 --- a/core/img/breadcrumb-start.svg +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="36" width="11" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"> - <g transform="translate(0 -1016.4)"> - <path d="m0 0 11 18-11 18z" transform="translate(0 1016.4)" fill="#ddd"/> - </g> -</svg> diff --git a/core/img/breadcrumb.png b/core/img/breadcrumb.png Binary files differindex 84992be0d93..7e9593a36bf 100644 --- a/core/img/breadcrumb.png +++ b/core/img/breadcrumb.png diff --git a/core/img/breadcrumb.svg b/core/img/breadcrumb.svg index 05a216e50a9..f0b5c9218d5 100644 --- a/core/img/breadcrumb.svg +++ b/core/img/breadcrumb.svg @@ -1,6 +1,12 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="36" width="11" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"> - <g transform="translate(0 -1016.4)"> - <path d="m0.5 0 10 18-10 18 10-18z" transform="translate(0 1016.4)" stroke="#ddd" stroke-linecap="round" stroke-miterlimit="31.2" stroke-width="0.9" fill="#ddd"/> - </g> +<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="44" width="14" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"> + <metadata> + <rdf:RDF> + <cc:Work rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> + <dc:title/> + </cc:Work> + </rdf:RDF> + </metadata> + <path d="M0.54879,0.047777,12.744,22,0.54879,43.951,12.744,22z" stroke="#d7d7d7" stroke-linecap="round" stroke-miterlimit="31.20000076000000178" stroke-width="1.09758711000000009" fill="#F00"/> </svg> diff --git a/core/img/places/link.png b/core/img/places/link.png Binary files differnew file mode 100644 index 00000000000..44b7e199a72 --- /dev/null +++ b/core/img/places/link.png diff --git a/core/img/places/link.svg b/core/img/places/link.svg new file mode 100644 index 00000000000..8784ebc1456 --- /dev/null +++ b/core/img/places/link.svg @@ -0,0 +1,12 @@ +<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="32" width="32" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"> + <metadata> + <rdf:RDF> + <cc:Work rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> + <dc:title/> + </cc:Work> + </rdf:RDF> + </metadata> + <path fill="#333" d="M16,4c-6.6274,0-12,5.3726-12,12,0,6.627,5.3726,12,12,12,6.627,0,12-5.373,12-12,0-6.6274-5.373-12-12-12zm1.375,1.5313c2.059,0.0457,3.879,1.2826,5.719,2.0938l2.9691,4.1093-0.46971,1.7657,0.90686,0.56246-0.01543,2.0937c-0.02074,0.59892,0.0086,1.1986-0.0156,1.7969-0.28517,1.1355-0.94394,2.1713-1.5,3.2031-0.37695,0.18585,0.03437-1.2317-0.20313-1.6719,0.05486-1.0173-0.80743-0.97029-1.3903-0.40526-0.72172,0.42068-2.3074,0.54754-2.3589-0.59383-0.40972-1.3716-0.06-2.833,0.49886-4.1093l-0.921-1.125,0.327-2.891-1.469-1.4839,0.345-1.6252-1.719-0.9687c-0.339-0.2661-0.984-0.3713-1.125-0.7344,0.13954-0.00789,0.28457-0.018686,0.42189-0.0156zm-4.2187,0.015634c0.0539,0.00789,0.11999,0.045309,0.21874,0.125,0.57943,0.31834-0.14143,0.67954-0.31251,1.0157-0.92537,0.62589,0.28457,1.1385,0.68743,1.6406,0.64577-0.18549,1.2917-1.1086,2.2344-0.828,1.2058-0.37629,1.0137,1.0099,1.7031,1.625,0.08948,0.28954,1.5086,1.2317,0.65623,0.92177-0.702-0.54411-1.4827-0.50314-1.9845,0.28131-1.355,0.735-0.552-1.4144-1.202-1.9373-0.982-1.0957-0.57,0.8186-0.687,1.3907-0.639-0.0139-1.831-0.4913-2.485,0.2816l0.64046,1.0467,0.76577-1.1719c0.186-0.42411,0.41949,0.32966,0.62486,0.46886,0.24531,0.47297,1.4109,1.2744,0.53126,1.5-1.3039,0.72326-2.3295,1.8202-3.4375,2.7969-0.37371,0.78857-1.1366,0.6984-1.6094,0.0468-1.1438-0.70372-1.0589,1.1256-0.99994,1.8125l1.0013-0.626v1.0312c-0.028286,0.19509-0.00411,0.39806-0.0156,0.59383-0.70063,0.732-1.4069-1.0277-2.0157-1.422l-0.0468-2.5781c0.022114-0.72429-0.1308-1.4659,0.0156-2.1718,1.3779-1.4789,2.7775-3.0107,3.5935-4.891h1.3437c0.93909,0.45497,0.40406-1.0082,0.7812-0.95314zm-1.984,13.406c0.16303-0.01739,0.34848,0.01984,0.54688,0.12501,1.265,0.18106,2.2109,1.0987,3.2187,1.7969,0.80352,0.79632,2.5419,0.54134,2.7345,1.8907-0.29248,1.4636-1.7323,2.2495-3,2.7657-0.31646,0.17657-0.65657,0.31714-1.0157,0.37543-1.1753,0.29314-1.6834-0.912-1.9219-1.8137-0.53212-1.1143-1.8621-1.9577-1.6718-3.3274,0.0312-0.68057,0.40286-1.7373,1.1093-1.8125z"/> +</svg> diff --git a/core/js/avatar.js b/core/js/avatar.js index 57e6daa0930..c54c4068768 100644 --- a/core/js/avatar.js +++ b/core/js/avatar.js @@ -1,6 +1,6 @@ $(document).ready(function(){ if (OC.currentUser) { - $('#header .avatardiv').avatar(OC.currentUser, 32); + $('#header .avatardiv').avatar(OC.currentUser, 32, undefined, true); // Personal settings $('#avatar .avatardiv').avatar(OC.currentUser, 128); } diff --git a/core/js/jquery.avatar.js b/core/js/jquery.avatar.js index 88a4c25d1ee..00068101726 100644 --- a/core/js/jquery.avatar.js +++ b/core/js/jquery.avatar.js @@ -15,7 +15,7 @@ * You may use this on any <div></div> * Here I'm using <div class="avatardiv"></div> as an example. * - * There are 4 ways to call this: + * There are 5 ways to call this: * * 1. $('.avatardiv').avatar('jdoe', 128); * This will make the div to jdoe's fitting avatar, with a size of 128px. @@ -34,10 +34,15 @@ * 4. $('.avatardiv').avatar('jdoe', 128, true); * This will behave like the first example, except it will also append random * hashes to the custom avatar images, to force image reloading in IE8. + * + * 5. $('.avatardiv').avatar('jdoe', 128, undefined, true); + * This will behave like the first example, but it will hide the avatardiv, if + * it will display the default placeholder. undefined is the ie8fix from + * example 4 and can be either true, or false/undefined, to be ignored. */ (function ($) { - $.fn.avatar = function(user, size, ie8fix) { + $.fn.avatar = function(user, size, ie8fix, hidedefault) { if (typeof(size) === 'undefined') { if (this.height() > 0) { size = this.height(); @@ -69,12 +74,17 @@ var url = OC.Router.generate('core_avatar_get', {user: user, size: size})+'?requesttoken='+oc_requesttoken; $.get(url, function(result) { if (typeof(result) === 'object') { - if (result.data && result.data.displayname) { - $div.placeholder(user, result.data.displayname); + if (!hidedefault) { + if (result.data && result.data.displayname) { + $div.placeholder(user, result.data.displayname); + } else { + $div.placeholder(user); + } } else { - $div.placeholder(user); + $div.hide(); } } else { + $div.show(); if (ie8fix === true) { $div.html('<img src="'+url+'#'+Math.floor(Math.random()*1000)+'">'); } else { diff --git a/core/js/share.js b/core/js/share.js index 82f5da0baea..8d14520cd74 100644 --- a/core/js/share.js +++ b/core/js/share.js @@ -114,6 +114,7 @@ OC.Share={ data = false; } }}); + return data; }, share:function(itemType, itemSource, shareType, shareWith, permissions, callback) { @@ -217,9 +218,9 @@ OC.Share={ OC.Share.showLink(share.token, share.share_with, itemSource); } else { if (share.collection) { - OC.Share.addShareWith(share.share_type, share.share_with, share.share_with_displayname, share.permissions, possiblePermissions, share.collection); + OC.Share.addShareWith(share.share_type, share.share_with, share.share_with_displayname, share.permissions, possiblePermissions, share.mail_send, share.collection); } else { - OC.Share.addShareWith(share.share_type, share.share_with, share.share_with_displayname, share.permissions, possiblePermissions, false); + OC.Share.addShareWith(share.share_type, share.share_with, share.share_with_displayname, share.permissions, possiblePermissions, share.mail_send, false); } } if (share.expiration != null) { @@ -301,7 +302,7 @@ OC.Share={ } }); }, - addShareWith:function(shareType, shareWith, shareWithDisplayName, permissions, possiblePermissions, collection) { + addShareWith:function(shareType, shareWith, shareWithDisplayName, permissions, possiblePermissions, mailSend, collection) { if (!OC.Share.itemShares[shareType]) { OC.Share.itemShares[shareType] = []; } @@ -343,6 +344,14 @@ OC.Share={ }else{ html += escapeHTML(shareWithDisplayName); } + var mailNotificationEnabled = $('input:hidden[name=mailNotificationEnabled]').val(); + if (mailNotificationEnabled === 'yes') { + var checked = ''; + if (mailSend === '1') { + checked = 'checked'; + } + html += '<input type="checkbox" name="mailNotification" class="mailNotification" ' + checked + ' />'+t('core', 'notify user by email')+'</label>'; + } if (possiblePermissions & OC.PERMISSION_CREATE || possiblePermissions & OC.PERMISSION_UPDATE || possiblePermissions & OC.PERMISSION_DELETE) { if (editChecked == '') { html += '<label style="display:none;">'; @@ -699,5 +708,27 @@ $(document).ready(function() { } }); + $(document).on('click', '#dropdown input[name=mailNotification]', function() { + var li = $(this).parent(); + var itemType = $('#dropdown').data('item-type'); + var itemSource = $('#dropdown').data('item-source'); + var action = ''; + if (this.checked) { + action = 'informRecipients'; + } else { + action = 'informRecipientsDisabled'; + } + + var shareType = $(li).data('share-type'); + var shareWith = $(li).data('share-with'); + + $.post(OC.filePath('core', 'ajax', 'share.php'), {action: action, recipient: shareWith, shareType: shareType, itemSource: itemSource, itemType: itemType}, function(result) { + if (result.status !== 'success') { + OC.dialogs.alert(t('core', result.data.message), t('core', 'Warning')); + } + }); + +}); + }); diff --git a/core/l10n/cs_CZ.php b/core/l10n/cs_CZ.php index abed4a0fdac..8b63079c87a 100644 --- a/core/l10n/cs_CZ.php +++ b/core/l10n/cs_CZ.php @@ -60,7 +60,9 @@ $TRANSLATIONS = array( "Error loading message template: {error}" => "Chyba při nahrávání šablony zprávy: {error}", "_{count} file conflict_::_{count} file conflicts_" => array("","",""), "One file conflict" => "Jeden konflikt souboru", +"Which files do you want to keep?" => "Které soubory chcete ponechat?", "Cancel" => "Zrušit", +"Continue" => "Pokračovat", "The object type is not specified." => "Není určen typ objektu.", "Error" => "Chyba", "The app name is not specified." => "Není určen název aplikace.", diff --git a/core/l10n/hu_HU.php b/core/l10n/hu_HU.php index d893269ee81..107a5f04c05 100644 --- a/core/l10n/hu_HU.php +++ b/core/l10n/hu_HU.php @@ -2,6 +2,12 @@ $TRANSLATIONS = array( "%s shared »%s« with you" => "%s megosztotta Önnel ezt: »%s«", "group" => "csoport", +"Turned on maintenance mode" => "A karbantartási mód bekapcsolva", +"Turned off maintenance mode" => "A karbantartási mód kikapcsolva", +"Updated database" => "Frissítet adatbázis", +"Updating filecache, this may take really long..." => "A filecache frissítése folyamatban, ez a folyamat hosszabb ideig is eltarthat...", +"Updated filecache" => "Filecache frissítve", +"... %d%% done ..." => "... %d%% kész ...", "Category type not provided." => "Nincs megadva a kategória típusa.", "No category to add?" => "Nincs hozzáadandó kategória?", "This category already exists: %s" => "Ez a kategória már létezik: %s", @@ -10,6 +16,11 @@ $TRANSLATIONS = array( "Error adding %s to favorites." => "Nem sikerült a kedvencekhez adni ezt: %s", "No categories selected for deletion." => "Nincs törlésre jelölt kategória", "Error removing %s from favorites." => "Nem sikerült a kedvencekből törölni ezt: %s", +"No image or file provided" => "Nincs kép vagy file megadva", +"Unknown filetype" => "Ismeretlen file tipús", +"Invalid image" => "Hibás kép", +"No temporary profile picture available, try again" => "Az átmeneti profil kép nem elérhető, próbáld újra", +"No crop data provided" => "Vágáshoz nincs adat megadva", "Sunday" => "vasárnap", "Monday" => "hétfő", "Tuesday" => "kedd", @@ -42,11 +53,20 @@ $TRANSLATIONS = array( "last year" => "tavaly", "years ago" => "több éve", "Choose" => "Válasszon", +"Error loading file picker template: {error}" => "Nem sikerült betölteni a fájlkiválasztó sablont: {error}", "Yes" => "Igen", "No" => "Nem", "Ok" => "Ok", +"Error loading message template: {error}" => "Nem sikerült betölteni az üzenet sablont: {error}", "_{count} file conflict_::_{count} file conflicts_" => array("",""), +"One file conflict" => "Egy file ütközik", +"Which files do you want to keep?" => "Melyik file-okat akarod megtartani?", +"If you select both versions, the copied file will have a number added to its name." => "Ha kiválasztod mindazokaz a verziókat, a másolt fileok neve sorszámozva lesz.", "Cancel" => "Mégsem", +"Continue" => "Folytatás", +"(all selected)" => "(all selected)", +"({count} selected)" => "({count} kiválasztva)", +"Error loading file exists template" => "Hiba a létező sablon betöltésekor", "The object type is not specified." => "Az objektum típusa nincs megadva.", "Error" => "Hiba", "The app name is not specified." => "Az alkalmazás neve nincs megadva.", @@ -85,6 +105,7 @@ $TRANSLATIONS = array( "Email sent" => "Az emailt elküldtük", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>." => "A frissítés nem sikerült. Kérem értesítse erről a problémáról az <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud közösséget</a>.", "The update was successful. Redirecting you to ownCloud now." => "A frissítés sikeres volt. Visszairányítjuk az ownCloud szolgáltatáshoz.", +"%s password reset" => "%s jelszó visszaállítás", "Use the following link to reset your password: {link}" => "Használja ezt a linket a jelszó ismételt beállításához: {link}", "The link to reset your password has been sent to your email.<br>If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator ." => "Emailben fog kapni egy linket, amivel új jelszót tud majd beállítani magának. <br>Ha a levél nem jött meg, holott úgy érzi, hogy már meg kellett volna érkeznie, akkor ellenőrizze a spam/levélszemét mappáját. <br>Ha ott sincsen, akkor érdeklődjön a rendszergazdánál.", "Request failed!<br>Did you make sure your email/username was right?" => "A kérést nem sikerült teljesíteni! <br>Biztos, hogy jó emailcímet/felhasználónevet adott meg?", diff --git a/core/l10n/ja_JP.php b/core/l10n/ja_JP.php index 0baab441f95..110e5b21201 100644 --- a/core/l10n/ja_JP.php +++ b/core/l10n/ja_JP.php @@ -20,6 +20,7 @@ $TRANSLATIONS = array( "Unknown filetype" => "不明なファイルタイプ", "Invalid image" => "無効な画像", "No temporary profile picture available, try again" => "一時的なプロファイル用画像が利用できません。もう一度試して下さい", +"No crop data provided" => "クロップデータは提供されません", "Sunday" => "日", "Monday" => "月", "Tuesday" => "火", @@ -57,8 +58,15 @@ $TRANSLATIONS = array( "No" => "いいえ", "Ok" => "OK", "Error loading message template: {error}" => "メッセージテンプレートの読み込みエラー: {error}", -"_{count} file conflict_::_{count} file conflicts_" => array(""), +"_{count} file conflict_::_{count} file conflicts_" => array("{count} ファイルが競合"), +"One file conflict" => "1ファイルが競合", +"Which files do you want to keep?" => "どちらのファイルを保持したいですか?", +"If you select both versions, the copied file will have a number added to its name." => "両方のバージョンを選択した場合は、ファイル名の後ろに数字を追加したファイルのコピーを作成します。", "Cancel" => "キャンセル", +"Continue" => "続ける", +"(all selected)" => "(全て選択)", +"({count} selected)" => "({count} 選択)", +"Error loading file exists template" => "既存ファイルのテンプレートの読み込みエラー", "The object type is not specified." => "オブジェクタイプが指定されていません。", "Error" => "エラー", "The app name is not specified." => "アプリ名がしていされていません。", diff --git a/core/l10n/lt_LT.php b/core/l10n/lt_LT.php index 492aee12c1d..610e7aeadeb 100644 --- a/core/l10n/lt_LT.php +++ b/core/l10n/lt_LT.php @@ -58,8 +58,15 @@ $TRANSLATIONS = array( "No" => "Ne", "Ok" => "Gerai", "Error loading message template: {error}" => "Klaida įkeliant žinutės ruošinį: {error}", -"_{count} file conflict_::_{count} file conflicts_" => array("","",""), +"_{count} file conflict_::_{count} file conflicts_" => array("{count} failas konfliktuoja","{count} failai konfliktuoja","{count} failų konfliktų"), +"One file conflict" => "Vienas failo konfliktas", +"Which files do you want to keep?" => "Kuriuos failus norite laikyti?", +"If you select both versions, the copied file will have a number added to its name." => "Jei pasirenkate abi versijas, nukopijuotas failas turės pridėtą numerį pavadinime.", "Cancel" => "Atšaukti", +"Continue" => "Tęsti", +"(all selected)" => "(visi pažymėti)", +"({count} selected)" => "({count} pažymėtų)", +"Error loading file exists template" => "Klaida įkeliant esančių failų ruošinį", "The object type is not specified." => "Objekto tipas nenurodytas.", "Error" => "Klaida", "The app name is not specified." => "Nenurodytas programos pavadinimas.", diff --git a/core/l10n/pl.php b/core/l10n/pl.php index 621038f79f7..ad467fe100e 100644 --- a/core/l10n/pl.php +++ b/core/l10n/pl.php @@ -16,6 +16,8 @@ $TRANSLATIONS = array( "Error adding %s to favorites." => "Błąd podczas dodawania %s do ulubionych.", "No categories selected for deletion." => "Nie zaznaczono kategorii do usunięcia.", "Error removing %s from favorites." => "Błąd podczas usuwania %s z ulubionych.", +"Unknown filetype" => "Nieznany typ pliku", +"Invalid image" => "Nieprawidłowe zdjęcie", "Sunday" => "Niedziela", "Monday" => "Poniedziałek", "Tuesday" => "Wtorek", @@ -51,8 +53,12 @@ $TRANSLATIONS = array( "Yes" => "Tak", "No" => "Nie", "Ok" => "OK", -"_{count} file conflict_::_{count} file conflicts_" => array("","",""), +"_{count} file conflict_::_{count} file conflicts_" => array("{count} konfliktów plików","{count} konfliktów plików","{count} konfliktów plików"), +"One file conflict" => "Konflikt pliku", "Cancel" => "Anuluj", +"Continue" => "Kontynuuj ", +"(all selected)" => "(wszystkie zaznaczone)", +"({count} selected)" => "({count} zaznaczonych)", "The object type is not specified." => "Nie określono typu obiektu.", "Error" => "Błąd", "The app name is not specified." => "Nie określono nazwy aplikacji.", diff --git a/core/skeleton/welcome.txt b/core/skeleton/welcome.txt new file mode 100644 index 00000000000..c86eaf91bbe --- /dev/null +++ b/core/skeleton/welcome.txt @@ -0,0 +1,5 @@ +Welcome to your ownCloud account! + +This is just an example file for developers and git users. +The packaged and released versions will come with better examples. + diff --git a/core/templates/altmail.php b/core/templates/altmail.php index 2551473c6f0..00b67bee456 100644 --- a/core/templates/altmail.php +++ b/core/templates/altmail.php @@ -1,5 +1,9 @@ <?php -print_unescaped($l->t("Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\nCheers!", array($_['user_displayname'], $_['filename'], $_['link']))); +print_unescaped($l->t("Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n", array($_['user_displayname'], $_['filename'], $_['link']))); +if ( isset($_['expiration']) ) { + print_unescaped($l->t("The share will expire on %s.\n\n", array($_['expiration']))); +} +p($l->t("Cheers!")); ?> -- diff --git a/core/templates/login.php b/core/templates/login.php index ee761f0aa52..06f64d41e39 100644 --- a/core/templates/login.php +++ b/core/templates/login.php @@ -32,9 +32,10 @@ <?php p($l->t('Lost your password?')); ?> </a> <?php endif; ?> - + <?php if ($_['rememberLoginAllowed'] === true) : ?> <input type="checkbox" name="remember_login" value="1" id="remember_login" checked /> <label for="remember_login"><?php p($l->t('remember')); ?></label> + <?php endif; ?> <input type="hidden" name="timezone-offset" id="timezone-offset"/> <input type="submit" id="submit" class="login primary" value="<?php p($l->t('Log in')); ?>"/> </fieldset> diff --git a/core/templates/mail.php b/core/templates/mail.php index de72b136b13..40092f5491f 100644 --- a/core/templates/mail.php +++ b/core/templates/mail.php @@ -12,7 +12,11 @@ <td bgcolor="#f8f8f8" width="20px"> </td> <td bgcolor="#f8f8f8" style="font-weight:normal; font-size:0.8em; line-height:1.2em; font-family:verdana,'arial',sans;"> <?php -print_unescaped($l->t('Hey there,<br><br>just letting you know that %s shared »%s« with you.<br><a href="%s">View it!</a><br><br>Cheers!', array($_['user_displayname'], $_['filename'], $_['link']))); +print_unescaped($l->t('Hey there,<br><br>just letting you know that %s shared »%s« with you.<br><a href="%s">View it!</a><br><br>', array($_['user_displayname'], $_['filename'], $_['link']))); +if ( isset($_['expiration']) ) { + print_unescaped($l->t("The share will expire on %s.<br><br>", array($_['expiration']))); +} +p($l->t('Cheers!')); ?> </td> </tr> @@ -22,7 +26,8 @@ print_unescaped($l->t('Hey there,<br><br>just letting you know that %s shared » <td bgcolor="#f8f8f8" style="font-weight:normal; font-size:0.8em; line-height:1.2em; font-family:verdana,'arial',sans;">--<br> <?php p($theme->getName()); ?> - <?php p($theme->getSlogan()); ?> -<br><a href="<?php print_unescaped($theme->getBaseUrl()); ?>"><?php print_unescaped($theme->getBaseUrl());?></a></td> +<br><a href="<?php print_unescaped($theme->getBaseUrl()); ?>"><?php print_unescaped($theme->getBaseUrl());?></a> +</td> </tr> <tr> <td bgcolor="#f8f8f8" colspan="2"> </td> |